面倒な開発作業を自動化し、スピード開発を実現する継続的インテグレーション(CI)。ただしやみくもなCIの実践では、「トロい現場」からの脱却はおぼつかない。CIの導入ではまりがちな落とし穴とその回避方法を、最新事例から解説する。

 「最近のソフトウエア開発は、驚くほどスピードを求められている。中には2週間の納期でも遅いと言われるケースがある」―。企業システムの高速開発を支援している富士通 デジタルビジネス事業部カスタマーエンゲージメントソリューション室の川上真一氏はこう漏らす。企業のデジタルトランスフォーメーション(DX)が拡大する中で、これまでにないスピードがIT現場に要求されているという。

 周囲から「トロい」と言われないためには、IT現場の抜本的な改革が必要だ。そのために重要なのは、スピード開発を阻む落とし穴にはまらないことだ。落とし穴には大きく分けて「技術的な落とし穴」と「人的な落とし穴」がある(図1)。

図1●ソフト開発の高速化手法CIを導入・活用する上での落とし穴
[画像のクリックで拡大表示]

 技術的な落とし穴は、ここにきて広がりを見せる継続的インテグレーション(CI)に起因するものが多い。CIとは、開発者が変更したソースコードをバージョン管理システムなどのリポジトリーに登録すると、自動でコンパイルやビルド(結合)、テスト環境へのデプロイ(配置)、テストを実行するための仕組みだ。

 CIに詳しいNTTデータ 生産技術部Agile Professional Centerの宮館康夫課長は「面倒な開発作業を自動化して劇的に生産性を上げるのがCIだ。しかし、導入に当たっては技術的な落とし穴が幾つかある」と指摘する。

 一方の人的な落とし穴は、開発手順の見直しやコミュニケーションの取り方などを指す。日立ソリューションズ プロセスコンサルティング部の髙月裕二グループマネージャは「CIの導入は開発プロセスの変更を迫られる。現場の開発者が新しい手順を理解しなければ、CIが無用の長物と化してしまう」と話す。

 以下では、図1に示した6つの落とし穴にはまらないためのテクニックを、実践事例とともに紹介する。

技術的落とし穴 1
ジョブがブラックボックス化

 CIツールの役割は、人間が行う面倒な作業をソフトウエアの「ロボット」に代行させること。つまりCIとは、最近注目を集めるRPA(ロボティック・プロセス・オートメーション)に他ならない。

 そのためCIの落とし穴もRPAに通じるところがある。代表的なのは、RPAで問題視される「野良ロボット」の存在だろう。誰がいつ作ったのか分からないジョブ(自動化すべき一連の作業を記述したコード)が現場にまん延し、思わぬ動作を招く。ブラックボックス化したジョブは、開発スピードを阻害する厄介な存在になりかねない。

 「ジョブの記述はできるだけシンプルにして属人性を排除し、可読性を高める必要がある」。TIS エンジニアリング推進第1部の増田俊久主査は“野良ジョブ”ともいうべき存在に危機感を募らせる。例えばJenkinsを導入すると、野良ジョブがまん延しやすいという。

 「Jenkinsには豊富なプラグインがあり、クリックしながらジョブを容易に作成できる。だが簡単にジョブを作成できるだけに、管理不能の多種多様なジョブが増える恐れがある」(増田氏)という。

Jenkinsはあえて使わない

 増田氏によれば、スクリプト言語で記述するJenkinsのジョブは比較的可読性が低く、パッと見ただけではどんな処理手順かが分からないという。「いわゆるJenkins職人がいないと、高速開発はなかなか実現できない」(増田氏)。

 もちろん、CIやツールの活用を否定しているわけではない。むしろCI導入はスピード開発の必須アイテムだと強調する。重視したのは、「ジョブの記述が簡単な上に、構造がシンプルかつ可読性が高いこと」(増田氏)。そこでたどり着いたのが、CIツール「Concourse(コンコース)」の採用だった。

 Concourseでは、簡易なデータ記述言語「YAML」でジョブを書く(図2右)。YAMLの場合、インデントで階層構造を定義できる、似たジョブをプロパティ値の変更だけで生成できる、処理をカッコやタグで囲まなくてよい、といったメリットがある。「どのメンバーでもすぐにYAMLを読み書きできるようになり、ブラックボックス化したジョブの発生を防げた」(増田氏)。

図2●簡易言語でジョブのブラックボックス化を防ぐ
[画像のクリックで拡大表示]

 ただし、いくら可読性が高くても、複雑な構造や手順のジョブだと、分かりにくいものになる。そこで増田氏は、YAMLベースのジョブのひな型を作成。手本となるインデントやコメントの入れ方、基本的な手順などを整理した。

 こうして重複したジョブや誤った記述のジョブを早期に発見しつつ、ひな型を使って記述レベルも高めた。結果、CIの導入前後で特に開発効率を圧迫していたテストの生産性が2.5倍に向上したという。

この先は有料会員の登録が必要です。「日経SYSTEMS」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら