セッション:[A-0] On relentless automation in software development

スピーカー:Kosuke Kawaguchi

 

■Jenkinsの父による自動化指南

Track Aセッションの火ぶたを切ったのは、皆さんご存知、CIサーバJenkinsの父こと川口 耕介さんです。

今回の発表の主な内容は以下の2つ。

  • ソフトウェア開発でなぜ、自動化が重要なのか?
  • 世界でどのような自動化が行われているのか?

ようやくプロジェクトにJenkinsを導入し始めたレベルの筆者にとっては、なかなか高尚な話が満載でした ^^; しかし、インフラ寄りの技術的な話や、最近、自動化がもてはやされている背景などをかなり平易に解説しており、なるほど!と手を打つとともに、あらゆる分野で実現しているツールの自動化、ツール群の連携動作の例に、Jenkinsの柔軟さを思い知りました。
なんてすごいんだ!Jenkins

■Jenkinsは21世紀の牧羊犬!?

最近、継続的インテグレーションや継続的デリバリなど、自動化がかなり身近になりつつあるのを感じます。自動化が熱心に推進されている背景として川口さんが挙げたのが、以下の2つでした。

  1. シングルスレッド当たりのパフォーマンスが頭打ち
  2. コンピュータのパフォーマンス当たりのコストが低下

まず「1. シングルスレッド当たりのパフォーマンスが頭打ち」について川口さんが紹介したのが、以下のグラフ。2011年にAMDのChuck Moore氏が発表した「過去35年間のMPUに関するデータ」です。


The Salishan Conference on High Speed Computing」での発表資料『Data Processing in Exascale-Class Computing Systems』より引用

トランジスタの数は爆発的に増えているのに対し、シングルスレッド当たりのパフォーマンスは、もう頭打ちです。この状況でパフォーマンスを上げるために行われているのが、あらゆるレイヤーで多重化することです。メニーコア、仮想化、クラウドも、この流れから来ているそうです。

そして、人件費は高止まりしているのに対して、技術革新による「2. コンピュータのパフォーマンス当たりのコストの低下」が起こっているため、1人のプログラマが扱うコンピュータの数を増やす傾向に拍車がかかっているそうです。

この膨大なコンピュータを扱う上で鍵になるのが「自動化」です。川口さんいわく「プログラマは、まさに21世紀の羊飼いのよう。そんな羊飼いを助ける牧羊犬が、Jenkinsです」。コンピュータうんちくがかなり続いた後の詩的な表現。
川口さん、すてきです。

 

■Jenkinsを使ったSaaS形式のビルド・テスト支援サービス

セッションの後半は、実際にJenkinsなどを使っている自動化の例が紹介されました。ここでは、その一部をご紹介します。

SaaS形式のSelenium提供サービス

Web系の開発者であれば、ブラウザ操作を自動化するツールSeleniumを使われている方も多いと思います。このSeleniumと、テストに便利なフレームワークや各種サービスを一緒にSaaSとして提供しているサービスがあるそうです。

講演中に紹介されたサービス名は聞き漏らしてしまいましたが、後で調べたところ、sourcelabsというサイトで提供されているサービスが、川口さんの話に近そうです。

数千種類もあるモバイル機器の互換性テストをSaaS形式で提供するdeviceAnywhere


DeviceAnywhereより引用

最近、モバイル機器の画面サイズ・OS・ブラウザなどのバリエーションが増えているせいで、それらの組み合わせによりテストケースが膨大になっているというのは、よく耳にします。この状況に対抗して、企業内に実機を多数保有してテストを請け負うサービスを展示会などで見かけます。

一方、DeviceAnywhereは、クラウドの先に数千種類の実機を用意して、その画面を顧客側に転送することで、さまざまなテストを可能にしているそうです。

SaaS形式でJenkinsによるビルドサービスを提供するDev@Clound


CloudBeesより引用

Dev@Cloudは、川口さんの勤務先であるCloudBeesが提供するサービスです。クラウド上でJenkinsによるビルドが行えるとのこと。

CloundBeesのサイトを見ると、Dev@Cloud以外にも開発のライフサイクル全体を支援するサービスを提供しているようです。

 

■Jenkinsのジョブワークフローを可視化

最後に、JenkinsのジョブのワークフローをBPMN(Business Process Modeling Notation)というOMG標準の表記法で可視化し、複雑なワークフローの見通しを良くするプラグインが紹介されました。

講演の冒頭で川口さんは「自動化を行う上では、XMLやJSONのような機械処理可能なデータ形式とバッチ処理が重要」と話していましたが、複雑なプロセスを可視化したいという欲求は常にあるようです。人間にとって都合の良いグラフィカル表現と、機械にとって都合の良いテキスト表現。状況に応じて両者を使い分けるのがポイントのようです。

詳しくは、第6回Jenkins勉強会川口さんが発表した資料『Jenkins User Conference @SF』を参照してください。

 

■次は自分の仕事で実践

川口さんの講演を聞いて、再認識したのは以下です。

  • 人件費よりコンピュータの方が安い。どんどん仕事をコンピュータで自動化するべき。
  • 今後、ビジネスの目的を達成するために、どうツールを連携させるか?を考えること。あるいは、自動化できるように仕事のプロセスを組み立てていくことの重要性が増す。

日々、もやもや考えていたことでしたが、あらためてはっきりと認識しました。

もうすでに、Jenkinsという拡張性の高いツールがあるのですから、既存のプラグインを組み合わせたり、自分の仕事に合わせてプラグインを作ったりして、仕事の生産性をどんどん上げていきたいと思いました。


参考


公認レポーター 大西 洋平