大規模な組織で新しいツールを導入するのにはかなりエネルギーがいる話 - CircleCI編 -

この記事はCircleCI Advent Calendar 2015 の25日目の記事です。ちょっと遅れました。

前回は@toyo_takasingの「CircleCIを活用した歌詞添削運用フローの自動化」でした。

CircleCIを活用した歌詞添削運用フローの自動化 - とよぶろぐ

さて、ノリで作ったCircleCI Advent Calendarですが最終日を迎えました。残念ながら25日間埋まるほどではなかったですが、かつてJenkins Advent Calendarでもフルフルで埋まるほどではなかったと記憶しているので、1つのCIサービスでここまで埋まったということはCircleCIもかなりメジャーになったなと言っていいんじゃないでしょうか。

自分で作ったAdvent Calendarなので自分で〆ようと思いますが、最後なのでCircleCIの技術的な話というよりも導入する上でどのような壁を突破していったかの話です。

ちなみにJenkinsを捨ててCircleCIに走って具体的にどう変わったかは以前書いたエントリでどうぞ。

Jenkinsと完全にサヨナラして、CircleCIに移行した話 - tehepero note(・ω<)

どうやって説得すべきか

「ただ使ってみたい」だけではそれなりの規模の組織では難しいですよね。重要なのはCircleCIを使うことで従来型の開発がどう変わるかをイメージできるかどうかだなと思います。

「Amebaの開発環境改善どうするよ的MTG」にはそれを意識した提案をした記憶があります。もう結構忘れたけど↓のような感じだったかと。

  • スタートアップ時から、PRベースの開発・自動テストがすぐできるので立ち上げのスピードが早くなる
  • Jenkinsのように自分たちで面倒を見る要素が圧倒的に少ない
  • 障害を起こすこともあるが、最悪単独でdeployする仕組みが用意されていれば緊急時に致命傷になることもない

Jenkinsを完全に置き換えるものではない

良いことばかりではありません。当たり前ですがJenkinsとは思想が違うので、完全に置き換える銀の弾丸ではありません。今のプロジェクトでは完全にCircleCIに振り切ってますが、CircleCIにそぐわないようなケースではJenkinsなり他のツールを適宜併用していくのが良いでしょう。

それでも最近ホットなDockerであったりDevOpsといった開発との親和性の高さもあり、その価値で十分ペイできるくらいのものだとは思います。

叩かれてナンボ

ウチみたいにエンジニアだけで数百人っていう大きな組織になると、新しいツールを導入するというのは少なからず抵抗勢力がいます。 慣れてるツールや手法は確かに安心だけど、それに満足してたらあっという間に技術の流れからは取り残されます。

開発のレベルを上げていくには常に色んな抵抗と戦っていかなければならないし、日和ってる暇なんかないわけです。成果を出して黙らせましょう。

言い出しっぺこそ手厚くユーザーをサポートしよう

利用者が少ないうちはノウハウも少ないし、不安でしょう。そこで最初にサンプルプロジェクトを用意することにしました。

  • Java + Springのサーバサイドサンプル(Gradle)
  • AngularJSでのフロントエンドサンプル(Grunt + Bower)
  • Android(エミュレーターを使ったテスト)
  • 実プロジェクト(某ゲーム)をforkしてきてCircleCIでCI回せる状態にしたもの

また、一通り簡易的なドキュメントを用意して、導入の障壁を少しでも下げる工夫をしました。

またグループチャットも用意して(当時はHipChat)、何か質問とか困ってる人がいれば基本的に全部拾うし、PRだって出していくくらいの感じ。やっぱり言い出しっぺはこれくらいのホスピタリティでやらないと思ってて、じゃないと利用者は増えないでしょう。

あとブログでCircleCIの回し者かと思われるくらいにたくさんのエントリを書いたこともあって、その良さをわかってもらうにはそれほど時間はかからなかった気がします。

感想

  • 大規模組織で新しいツールを提案して導入するのはものすごいエネルギーがいる
  • 鬱陶しいこと言ってくる奴もいるけど気にするな
  • 自分が当初予想していたより、色んな使い方をしているプロジェクトが増えたので逆に勉強になるし、自分のプロジェクトに取り入れたりしてるし良いノウハウが溜まってきたなといった感じ

さて、そんなCircleCIのenterprise版ですが先日どうやら正式リリースされた模様です。GitHub Enterprise利用だけどCircleCI使いたいっていうケースだとオススメです。

CircleCI Enterprise on AWS - CircleCI

CircleCI Enterprise on Azure - CircleCI

それではみなさん、良い有馬記念を。