JavaScript.2015-04-27CI用語を使わないJenkins入門JenkinsJenkinsの使い方と狙いについて話す機会があるので、自分の考えをまとめる。時間節約と内容簡素化のため、CIとJenkinsとを分けて説明するのではなく、開発者なら共感できるであろう表現によってJenkinsとCIの双方を説明することを目指す。「品質」の定義について、ここでは明確には定めない。アジェンダJenkinsはいろんなことを自動化するサービス人間に「人にしかできないこと」へ注力させるため、機械の執事を雇って自動化する。人間に「役割」へ注力させるため、Jenkinsは各種「役割」の補佐を行う。コンパイルやテスト、情報収集や統計などルーチン作業を通じて人間が思考し判断することを助ける。ゴールは「人が行うルーチン作業」と「作業完了待ちによる暇」をゼロにすること。「役割」間の連携を促すため、ハブとしてコミュニケーションを促進する。組織内での作業重複を排し、各「役割」に必要な情報を必要な形で提供する。ゴールはコミュニケーションによって価値を想像すること、そのサイクルを早めること。「ルーチン処理を」「何度も」「同じように」「速やかに」やることには、高い価値がある。品質を保つには、頻繁に現状を確認する(可視化する)のが近道。1日に1回確認するのと週に1回確認するのでは、問題発見の早さも対応工数も大きく変わってくる。理想は変更があるごとに確認すること。Gitを使っているなら、Pushがあるたびに確認すること。これを人にやらせるのは効率が悪いだけでなく、「人にしかできないこと」の邪魔になるので、省力化が必要になる。Jenkinsは機械なので、こうしたルーチン処理の実行に向いている。機械なので疲れないし教育コストが安い。指示したとおり、同じ作業を何度も間違いなく行ってくれる。人は増やすと情報を伝え教育する必要があるが、Jenkinsならサーバを追加すればそのまま性能増になる。クラウドが普通になった今、サーバを追加するのは非常に簡単で安い。変化が多く資産が積み上がる現場では、そうした手法で能力増強できるのは魅力。