ビルドのランプ

コードのコミットごとに自動ビルドを走らせるのはもはや常識ですが、ビルド結果はメールで流すだけではなくて緑や赤のランブで一目でわかるようにしておくことが大事です。今日は Trema で実際に動かしている仕組みを説明しましょう。

ランプを使おう

ランプには次の長所があり、どちらもソースコードの改善に役立ちます。

  1. 結果の視認性
  2. 心理的な効果

まず、メールを開くまでもなくビルド結果を一目で確認できるのでとても楽になります。開発チームの真ん中にランプを置いておけば自然とビルド結果を共有できます。

また、ランプはいろんな人の目にさらされるので「テキトーなコードをコミットしちゃいけない」「失敗を放置しちゃいけない」という心理的効果がでかいです。実際に、Trema とはまったく関係のない別の部署の人に「ランプが赤くなってるよ」と話しかけられることもしょっちゅうで、「常に緑をキープしよう」という心理効果は絶大です。

それでは Trema でやっている方法についてです。

ランプを買おう

何はともあれ始めるにはランプが必要です。ビルド結果をランプで表現するためには、ビルドマシンから rsh などでランプを制御できる必要があります。

Trema ではランプには patlite 社のコレを使っています。rsh に対応しているので要件を満たしていますが、残念ながら生産中止のようです。

後継機としてこういうのもあるみたいです。スペックを見ると rsh に対応してるようなのでこれでも大丈夫でしょう。

自動テスト界隈ではこういうデバイスを XFD (eXtreme Feedback Devices) と呼ぶらしく、XFD で検索するといろんなランプが出てきます。電子工作が得意な人は作っちゃうのも手かもしれません。

ランプのセットアップ

次に、ランプを自動ビルドとつなぎます。Trema では ccrb という自動ビルドツールを使っていて、ccrb のプラグインからランプを制御しています。プラグインのコードは次のような感じ。ビルドの状態に応じて green/yellow/red というランプを光らせるプライベートメソッドを呼んでるだけです。めちゃくちゃ簡単ですね。

class Patlite
  def initialize project
    # do nothing here.
  end

  def build_started build
    yellow
  end

  def build_finished build
    if build.failed?
      red
    else
      green
    end
  end

  def build_fixed build, previous_build
    green
  end

  private

  def red
    system "rsh patlite -l username alert 100000"
  end

  def yellow
    system "rsh patlite -l username alert 020000"
  end

  def green
    system "rsh patlite -l username alert 001000"
  end
end

Project.plugin :patlite

 まとめ

自動ビルドするときは、ランプのような物理的デバイスを組み合わせると効果絶大です。

 

Tagged , ,

Leave a Reply