SideCIはより効率的なコードレビューのために自動化を進める手助けとなる製品です。GitHubと連携して動作し、Pull Requestが作成されると、自動で検査を行います。検査によって発見された問題を、Pull Requestで変更された部分のみにフィルタリングして、表示します。利用者は、SideCIによって発見された問題を確認し、修正の必要があるものを修正します。SideCIによってある程度の問題が検出されるため、コードレビューを効率的に進めることができます。特に、PHPやRuby、JavaScriptなどの、Webプログラミングでよく使われる言語を対象としています。
世の中には、いくつかのコードレビューの自動化に注目したサービスがあり、我々の競合となっています。典型的なコードレビュー自動化サービスは、1行が長すぎるとか、メソッド定義が長すぎるとか、定義された変数が参照されないとか、コードの重複がないかとか、そういう検査を提供しています。これらの検査によって、綺麗でメンテナンスのしやすいコードを書くように、プログラマを誘導しようというものです。
メンテナンスのしやすいコードというのは、確かに価値がありますが、しかし私たちに言わせれば本当の問題から目を背けているように思えます。
コードレビューの一番大切な役割は、実装が要件を満たしていることの確認です。プログラマが意図していない挙動によって、問題を引き起こすプログラムになっていないかの確認です。これは平たく言えばバグを見つけることで、顧客の手元でバグが発覚すると、サービスの停止や会社の倒産を含む、とても良くないことが次々に起こります。
SideCIは、「読みやすいコード」ではなく「問題の検出」を重視しています。
「SideCIを使ってプログラムを検査すると、問題がある可能性が高い部分が見つかるので、その周辺を特に丁寧に確認することで効率的にレビューができる」
これが、私たちが目指している製品です。
そのためには、ちょっと賢いプログラム解析が必要で、世の中にはそんなものがまだないので自分たちで作らなくてはいけない、そういうストーリーです。