2017.02.03

【R&Dアーキテクト通信】第4回 R&DのCI

Dsocの糟谷です。

今回はR&DのCI環境について話したいと思います。他社の開発とあまり変わらないかもしれませんがR&Dとしては多少進んでいるのではないでしょうか。

 
ソースコード管理はGitHub上で行い、プルリクエストベースで開発を進めています。プルリクエストのコメントからコマンドを打つことでJenkinsでビルド、テスト、デプロイするように環境を整えています。  

一つのApiにも複数のサーバーがあるため、それぞれのサーバーに一度にビルド済みのバイナリを配置し、そこからは手動でIIS上に最新のバイナリを登録します。

 
機械学習や画像処理を扱っていると難しいのはテストです。例えば、”この名刺のこのエリアは「会社名」か?”という判定をするプログラムがあったとして、旧バージョンではYesという結果を返したのに最新バージョンではNoというようなこともあります。

 
それは別に悪いことではないのですが、この画像を入れたら結果はYesと出るはずという単体テストを書いていたとしたら、プログラムと合わせて改修が必要になります。学習データを逐次更新するようなシステムの場合は結果が保証できません。

 
このため、単体テストだけで品質を担保するのは難しく、100枚から1000枚程度画像を流してみて、目視でのチェックを行ってからリリース完了となります。このようにリリース作業は人の手が介在したものになりますが、基本的にはダブルチェックで開発者がリリースする作業を週次担当者に説明しながら行うという方式を取ります。

Pickup