使える! 情シス三段用語辞典95「CI(継続的インテグレーション)ツール」

常に新しい用語が生まれてくる情報システム部門は、全ての用語を正しく理解するのも一苦労。ましてや他人に伝えるとなると更に難しくなります。『情シスNavi.』では数々のIT用語を三段階で説明します。

一段目 ITの知識がある人向けの説明
二段目 ITが苦手な経営者に理解してもらえる説明
三段目 小学生にもわかる説明

取り上げる用語を“知らない”と思った人は、小学生にもわかる説明から読んでみると、理解が深まるかもしれません!?

一段目 ITの知識がある人向け「CI(継続的インテグレーション)ツール」の意味

Webサービスやスマホのアプリなど一般ユーザー向けのシステム開発において効率的に開発運用が行える、DevOps型の開発志向が広まっています。ユーザーを飽きさせないような機能追加や移り変わる市場のニーズの取り込みなど、何度も何度も仕様変更をしていくシステムには、DevOpsを前提としたアジャイルモデルでの開発が向いています。

こうした、頻繁に変更が行われる開発の際に欠かせないのが「CI(Continuous Integration、継続的インテグレーション)ツール」になります。アジャイルモデルでは、要件を小さく分けて小規模な開発を行い、マージするというサイクルを何度も何度も回して開発が行われます。CIツールは、その際の開発物の検証とマージを助けるツールなのです。

今までは、複数のプログラマ-が同時に修正を行い、ソースコードを単体テスト後にそれぞれリポジトリにコミットし、その後に結合テストをするという流れで開発が進んでいました。しかしながら、そうしたときに修正のコンフリクトが発生するなどソースコードをマージする上での問題や、ビルドエラーとなるソースコードの残存やデグレード発生などの修正管理の甘さによる問題が多数発生していました。そうした問題に対処するため、小さい修正ごとに頻繁にリポジトリコミットを行い、そのたびにテストを行うというCIの手法が取られるようになりました。

CIツールは、バージョン管理システムや自動テストツールと連携して、ソースコードのコンパイル、ビルド、単体テスト、加えてコーティング規約に従っているかを確認する品質管理までを自動で行うことができます。これにより単体テスト時の品質を高め、結合テスト以降の工程にバグが残りにくくなります。そのメリットのため、アジャイル開発だけではなくウォーターフォールモデル開発でも使われています。

具体的には、CIツールはソースコードの更新を検知し、その契機でビルドやテストケース実行などを自動で行うことができます。また、ジョブ管理システムのようにさまざまな契機が設定でき、そのタイミングでシェルスクリプトの実行やソースコードチェックなどの処理呼び出しを行うことができます。

バージョン管理システムと連携して自動的にソースコードを集めてコンパイル・ビルドを行うことができ、もし実行結果に問題があれば、CIツールから画面での警告やメール・チャットなどで開発者へエラー情報がフィードバックされ、早急な対応につなげることができます。

CIツールの例として、オープンソースのJenkinsが筆頭に挙げられます。汎用性が高いため、自社のシステムに合わせて処理の流れを設定できます。ただし専用サーバーの用意や事前設定の手間が必要となるため、サーバーの用意をする必要がないCircle CIなどのSaaS型CIツール、GUIで設定ができるBitriseなどのより使いやすさを追求したCIツールも登場し、現場で採用され始めています。

 

二段目 ITが苦手な経営者向け

とある食品会社の社長、社内に飾ってある自社のゆるキャラのぬいぐるみを眺めていたところ、情シスの志井さんがやってきました。

社長:お疲れさん。ゆるキャラを使ったアプリの調子はどうですか?なかなか評判いいみたいですね。

志井さん:はい。アプリ運用は今のところうまく行っていますよ。月一のリリースで大忙しですけどね。

社長:そんなに頻繁にリリースしているのか。予算は大丈夫なのですか?

志井さん:リリースといっても、すごく小さなリリースを頻繁にしているという形なのです。ちゃんと予算内ですよ。

社長:へえー。そんなに小さなリリースを何度もしているその理由は?

志井さん:アプリではユーザーの意見やバグの報告がすぐに上がってくるので、それを取り入れるためにこまめなリリースすると、ユーザーがついてきてくれるんです。

社長:なるほど、なるほど。でも、そんなに何度も修正するのは大変じゃなのかな?

志井さん:ええ。でもCIツールなどのDevOpsツールを使っているから、だいぶ効率化されていますよ。

社長:ん? CIツールって何ですか?

志井さん:CIツールというのは、例えばプログラムを修正したときに自動でテストしてくれるツールのことです。プログラムには原本があって、それをコピーして修正して原本に戻すというようにして開発をするんですけど、原本に戻すときに正しく修正されているかどうかを自動でテストできるんですよ。

社長:そうなんですね。でも、そもそもDevOpsツールって何ですか?

志井さん:DevOpsというのはキャラアプリみたいに頻繁にリリースするシステムで採用されるシステム開発手法の一つで、運用しながら開発もしていくっていう、運用と開発が一体となって進めていくやり方なんです。DevOpsツールはそれをやりやすくするための管理ツールや自動化ツール、コミュニケーションツールを指します。CIツールもその一つです。

社長:そうですか。そういうツールで開発を効率化しているってことなんですね。

志井さん:はい。CIツールは、効率化もできるしプログラムの品質に直結するものなんです。あっ、エラー報告が上がってきました! このメールもCIツールが出してくれているんですけど、社長、ここで失礼します!

社長:へえー、メールでエラーを教えてくれるのか。志井さんとCIツール、お疲れ様!

 

三段目 小学生向け

ある日曜日のこと。ショウ君とアイちゃんは、お父さんといっしょに犬のシロの新しい犬小屋を作ることにしました。
3人でデザインを考え、それを作るための設計図を書きました。材料や道具をそろえて、さあやるぞ!
3人で手分けをして作業を進めます。木の板の長さを図り、のこぎりで切るショウ君。ドア板を作るアイちゃんと、地面に杭を打ち込むお父さん。シロもわくわくしながら見ています。

そして、手分けをして作った部品を組み立てていきます。みんなで板を支えて釘を打ち、最後に屋根を乗せて……アレ!? 屋根がはまらない!!
なぜか屋根がうまくはまらず、乗せることができませんでした。作る途中のどこかでまちがってしまったみたいです。

「屋根を作ったのはアイちゃんでしょ。」とショウ君。
「いや、屋根は設計図通りにできているみたいだよ。」とお父さん。
まごまごする3人をしり目に、シロが「もう見ていられないワン!」と一声ほえて立ち上がり、組み立てた犬小屋をバラバラに戻しました。
「やり直しだワン!」

そして、3人はもう一度作り始めました。シロは巻き尺を取り出して、みんなが部品を作るたびにその一つ一つが設計図通りにできているか測り直していきました――。

さて、3人はどうすればよかったのでしょうか? 犬小屋の部品を作ったとき、組み立てる前に部品ごとにきちんと設計図通りになっているか確認をしておけばよかったですね。

実は、プログラムの世界でも同じことがいえるのです。プログラムは、たくさんの人が作ったプログラムコードを集めて作られています。そのため、たくさんの人が作ったプログラムをしっかり確認しないままいっぺんに集めて組み立ててしまうと、もしも誰かのプログラムに間違いがあったときに間違いの場所がわかりにくくなってしまうのです。

そうならないように、実際はプログラムを一つ一つ確認してから集めて組み立てるようにします。そして、部品ができるごとにシロが一つ一つサイズを測ってくれたように、誰かが作った部品を自動で確認してくれるツールがあるのです。

その自動で確認してくれるツールを「CIツール」といいます。Cツールは、プログラムの部品に間違いが入っていないかを部品ごとに確認します。そして、正しくできていることが確認できたら、他の正しいプログラムといっしょに集めて組み立ててくれるのです。

 

さて、皆様のご理解は深まったでしょうか?

 

【執筆:編集Gp 星野 美緒】

関連記事

カテゴリー:

ナレッジ情シス用語辞典

情シス求人

  1. チームメンバーで作字やってみた#1

ページ上部へ戻る