Boost Your Development Team’s Performance with Continuous Integration

時代は変化した

 かつてWebサイト作成は大聖堂や記念碑を建立のように道のりの長いものでした。そのプロセスは長く困難の多いものでした。

 しかし近年、Webサイト開発は進化を遂げ大きく様変わりしました。開発時間は短縮されました。コストは削減され、開始から完了までの全プロセスが一変しました。

 かつてのプロセスは次のようなものでした: 仕様 > プロトタイプ > 開発 > テスト > 納品。多くの開発者は従来型の「ウォーターフォール開発」手法を用いていました。

 現在の急速に変化し続けるデジタル界の影響で、作業はペースの速いよりアジャイルなものへ転換することを余儀なくされています。かつてプロジェクトのランウェイはかなり長いものでした。デジタル要件の変化への適応により長い時間をかけたものです。今ではそのような時間の余裕はありません。

 継続的開発プラクティスが時間短縮の解決策となってきました。継続的開発プラクティスはプロジェクトオーナーに多大な価値をもたらします。プロジェクトマネージャーはプロダクトマネージャーの立場で考えざるを得なくなり、長期的成功を見つける機会を得ます。

 その一方で、同時にプロジェクトのあらゆる側面のバランスを取ることがプロジェクトマネージャーにとっての新しい課題となります。この新しい課題に早いうちに取り組まないと、積もり積もって面倒な技術的負債を大量に抱えることになります。

 この点は、eZ Publishインテグレーター、デジタルエージェンシー、その他のeZソリューションパートナーにどのような影響を与えるのでしょうか?

期待できる利点

 eZベースの製品を届けるサービスプロバイダーにとっては、プロジェクト開発に継続的手法を導入することで享受できる利益は巨大なものです。適切に導入すれば次のことが可能となります:

  • 生産性の大幅向上
  • より早い段階での失敗によるリスク最小化
  • 全面的な工業化により人的要因への依存が減少、結果としてリスク最小化と成長促進
  • より短期間でより高い品質を届け、カスタマーの満足度向上

 しかし、異なる特質による欠点もあり損害をもたらすかもしれません。アジャイル手法を導入しようとしているサービスプロバイダーは特に注意が必要です。まず、カスタマーにアジャイル製品を「売り込む」知識と技を身につける必要があります。多くのサービスプロバイダーは時間の見積もり、スコープ定義などに基づいて価格を決定しています。ビジネス利害関係者にそのような要因をあらかじめ同意させてからアジャイル手法を取るのは容易ではありません。「アジャイル」方式に基づいた成果を売り込むことは非常に困難になりえます。

 その他にも大きな欠点として人、方法論、文化に関連するものがあります。アジャイル環境での成功にはかなり優れたソフトスキルが必要となります。プロセスを設定するためにはその作業に適切な人々の関与が必要となります。

ツールとサービス VS プロセスと方法論

 アジャイル手法が最適だとチームを説得するだけではなく、その方法論を適切に利用するためには然るべきツールとサービスが必要です。

 まず最初に、利用する方式がかんば方式スクラム方式、その他のお気に入りの方式に関わらず、継続的に開発するためにはソフトウェアを (毎日か2週間毎に関わらず) 継続的にリリースするスキルを学習し身につける必要があります。開発環境の枠を越えて実際に展開できる「製品」として届けることが可能なソフトウェアを継続的に出荷できる必要があります。

 そのためには、頻繁または継続的なインテグレーションプラクティスの原則を採用する必要があります。その中心的な考えのひとつは、絶えずインテグレーションを実行することで開発アセットのインテグレーションの手間を可能な限り小さくして、残業時間を増やすことになる大規模なインテグレーション問題を踏み越えることができることです。

 頻繁なインテグレーションと継続的インテグレーションはやや異なるものですが、単純化のため継続的インテグレーションについてのみ説明します。この手段は大量のエンジニアに絶えず展開とテスト作業を行わせるという意味ではなく、そのプロセスを自動化するチャンスを得るという意味です。プロジェクトの定義に基づいて、このプロセスを便利に自動化してくれるシステムを使うことができます。その他の数あるソリューションの中で人気の高い継続的インテグレーションサーバーはTravisJenkinsです。

 インテグレーションとリリースは単なる展開とインストールとは異なるものです。テスト関連を中心にその他にも自動化を試すことができるアクティビティがあります。例えば、コードのユニットテスト、機能のエンド・ツー・エンドとインテグレーションのテスト、負荷とパフォーマンスのテスト、多種多様のハードウェアやソフトウェアのスタックに対するプラットフォームテストなどです。

 この種のテスト作業はすべて自動化できます。その後、継続的インテグレーションサーバーは伝導機能を果たすだけとなります。したがって、ユニットテスト、インテグレーションテスト、負荷テスト、その他を適切に実施する方法を知っている必要もあるということです。この原則はそれぞれ複数のツールに依存することになり、チームはそのツールを使いこなす必要があります。

 したがって、ソフトウェアプラットフォームを選択する時、それがCMSであろうと何であろうと、現代の展開プラクティスに関係するので上記の例を検討する必要があります。成功するためにはツールを使う能力が必要になりますので、それらのツールについて詳しく学ぶことが重要です!

 エクスペリエンスを共有するしっかりとしたユーザーコミュニティを有することも自己啓発にとても重要になります。これがオープンソースが特に優れている理由のひとつです。

eZでの実践方法

 eZでは、極めて標準的なツールとサービス一式を使用しています。主要な継続的インテグレーションシステムとしてTravis、ソース管理にGitHub、ユニットテストにPHPUnitフレームワークを使っています。

 eZでは「ビヘイビア駆動開発」手法を用い、その開発のためにBehatフレームワーク (これはかなり新しいフレームワークですがeZではこれまで数年間展開しています) とSeleniumを利用しています。

 Ansibleやさらに新しいものではDockerなどのツールをeZのビルドのクラウド展開の自動化と様々なプラットフォームでのビルドのテストに役立ています。

 もちろん、これがeZ PlatformとeZ Studioの開発に使用しているツールのすべてではありません。share.ez.noへの参加、または、eZのGitHubレポジトリに目を通してより多くの情報を得てください。

 eZが使っているという理由だけで、これらのツールを使わなければならないということはありません。おそらく独自ニーズに合う独自の方法で作業を行う必要があるでしょう。しかし、この原則に不慣れな方は、堅固な出発基盤として一部を再利用すれば大きな利益を得られることを覚えておいてください。

 eZパートナープログラムに参加しているシステムインテグレーターやデジタルエージェンシーなどにとっては、継続的インテグレーションは非常に大きなアセットとなっています。作業しているプロジェクトの数が増えるほど、より多くの原則が価値をもたらします。一度限りのプロジェクトであろうと長期間担当することになるプロジェクトであろうと、継続的インテグレーションは個人への依存削減に役立ち、プロジェクトの作業を効率良く工業化するのに役立ちます!

Insights and news