CircleCIが毎年発表している「ソフトウェアデリバリーに関する現状調査」
個人の開発効率を高めるにはどうしたらいいだろうか。あくまで個人に限るのであれば、実行速度が速いPCで、可能ならモニターは広い画面のものを複数設置し、机や椅子は疲れないように自分の体格に合うものを用意して、さらに快適に過ごせるように温度や湿度を調整し、雑音が少ない環境であると望ましい。
一方でチームが継続的にデリバリーする力を向上させていくにはどうしたらいいだろうか。1人が筋トレを極めて重いダンベルを持ち上げられるようにするのと、チームで重たい御神輿を担げるようにするのでは、アプローチが異なる。
舟木氏は「べき論ではなく、データから方向性を探ります」と切り出した。開発の実態についての調査はいろいろある。例えばPuppet社は2014年以来、毎年「DevOpsの現状に関するレポート(State of DevOps Report)」を発表している。基本的にはヒアリングが元となる調査だ。2014〜2017年のレポートをまとめて翻訳したものは「LeanとDevOpsの科学」として出版されている。また2020年と2021年のレポートの日本語版はCircleCIから入手できる。
一方、CircleCIは2019年以来、毎年「ソフトウェアデリバリーに関する現状調査(State of Software Delivery Report)」を発表している。こちらは実データが元となっている。現在2022年版が最新版で、英語版は公開済み。日本語版は近日中に公開予定だ。本稿では(日本語版は未公開となる)最新版の調査結果をかいつまんで紹介する。
CircleCIは世界最大規模のクラウドCI/CD(継続的インテグレーション/継続的デプロイ)サービスを提供している企業だ。2万2000以上の組織、100万人以上の開発者が利用しており、毎月7億以上のジョブが実行されている。今回紹介する調査結果はこのCircleCI利用における統計データを元にしている。
日々あらゆる課題をデジタルで解決するようになり、アプリケーション開発ですべきことは増え続けている。一方で人材には限界があるため、可能な限り自動化を進めていく必要がある。
さて開発プロセスにおいて、CircleCIを用いて自動化できるのはどの部分か。開発サイクルにはプラン、コード、ビルド、テスト、リリース、デプロイ、運用、監視といったプロセスがある。何を作り誰に届けるかと考えるプランやコーディングそのものは人間の頭で考える必要があり、また運用開始後の非正常系(障害時)の解決も人間が関わる必要がある。そのため、自動化できるのはビルドからデプロイまでだ。
CI(継続的インテグレーション)のビルド、テスト、リリース、およびCD(継続的デプロイ)のデプロイでは、手順書があるならCircleCIが読みこめる形式で記述すれば自動実行できる。舟木氏は「(自動化できれば)担当者が不在かどうかといった状況が進行のストッパーにならないので“継続的”なのです」と説明する。
なおCircleCIでは自動化の流れを「ワークフロー」と呼んでいる。CircleCIは世界中で利用されており、ワークフローの実行回数で見ると、グローバルではアメリカ、イギリス、日本、ドイツ、カナダと続き、アジア・太平洋地域では日本、オーストラリア、シンガポール、香港、ニュージーランドと続く。また曜日別で見てみると、土日や祝日でワークフロー実行数が顕著に落ちる。祝日は国ごとに違うので世界で実行数を比べると、祝日を迎えた国だけ実行数が減るのが見えて興味深い。