継続的インテグレーションの本質
継続的インテグレーションとはアプリケーションのビルド、デプロイ、テストを自動化し、継続的にサイクルを回すことで品質を上げる取り組みです。
開発作業に特化して理解していましたが、以下の点でも応用可能かと思いました。
①コーディング規約検査
開発の規模が大きくなると、携わるメンバーも増え、コーディング規約のドキュメントだけでは統制がききません。(むしろ形骸化する一方)
最初にCIツールにコーディング規約を叩きこんでおけば、Githubなどにpushしたタイミングでコーディング規約を守っているか検査を行えます。
コーディングレビューではインデントがどうとか、この変数名が命名規約に違反しているとかについてはツールに任せて、人間ができるレビューを行えたら最高だなと思います。
②ドキュメント検査
①とほぼ同じですが、設計ドキュメントについても執筆する人によって様々な書き方となります。例えば、ある人は「繰り返し実行する」と書き、ある人は「繰返し、実施する」など送り仮名や動詞が異なるなんてことはしょっちゅうあります。
ここにもCIツールを導入してドキュメントの書きっぷりを検査してもらうとより品質の高いドキュメントができる気がします。
しかしドキュメントに関してはソースコードとは違い、バイナリ形式のファイルに書かれることがほとんどなので素の状態ではチェックできません。
理想を言えば、マークアップ言語を使ってドキュメントを作成すれば、GithubやCIツールとの親和性も高まります。
もう一つの課題は上の例のような似たような意味の日本語を使い分けられることに対する制限をどこまでかけられるかが難しいところです。
今はやりの機械学習なんか使ってドキュメント規約の精度を上げつつ、CIツールに渡すみたいなやり方ですかね?この辺はもう少し検討が必要です。
まとめると継続的インテグレーションの本質はプロセスの自動化にフォーカスしがちだけど、単純で膨大なチェックは機械に任せて人間は人間しかできない仕事に集中しようよとも捉えることができる素敵な取り組みだと思いました。