モバイル開発のための DevOps

開発と運用を統合し、多様なプラットフォームに対する品質と継続的なデリバリーを実現する

開発チームや運用チームにとって、モバイル・コンピューティングは現在おそらく最もホットなトピックです。大企業の従業員も中小企業の従業員も、さまざまなモバイル機器を持ち、それらの多くは個人の所有物ですが、彼らはそれらの機器を業務に使用しています。モバイル・コンピューティングを容易にするアプリケーションを顧客やユーザーに提供することにより、モバイル市場でのシェアを高めたいと考えている企業は世界中に存在します。そのため企業にとって重要なのは、モバイル機能の開発について十分に検討する一方で、それらの機能のデプロイ方法、そして (それらの機能が時間の経過と共に変わることを考慮し) それらの機能の継続性を保証する方法についても十分に検討することです。この記事では、アプリケーションのさまざまなバージョンを多様な機器にデプロイするという問題に取り組む上で、DevOps (Development & Operations) がどのように役立つかを説明します。

Michael Rowe, Rational Strategist, IBM

Michael Rowe は IBM Rational ビジネス戦略チームに所属し、Rational ベースの開発と運用との統合を 4 年以上にわたって担当しています。最近数年は、既存の IT インフラストラクチャーでモバイル・アプリケーションの開発とデプロイメントをどのように管理するかという観点から、モバイル・アプリケーションという現象と既存の IT インフラストラクチャーとの接点を検証しています。



2014年 2月 13日 (初版 2012年 9月 06日)

著者の紹介

Michael Rowe の動画を見てください。この動画では、Michael Rowe が自分の経歴や、この記事を書くに至った動機を紹介しています。

Video: DevOps for mobile development
Transcript

モバイル・アプリケーション: 新しい思考プロセス、そして新しい手法

モバイル分野には、デプロイメント・プラットフォームの候補が大量にあります。これはある意味で、いくつもの標準が競合していた何年も前の従来のデスクトップ・アプリケーションの開発と似ています。モバイルの場合に異なる点は、競合するオペレーティング・システムがいくつもある (Android、iOS、BlackBerry、Windows など) だけではなく、機器の特性も多種多様であることです (画面解像度、プロセッサー、グラフィック機能、ネットワーク機能など)。これらの各要素により、モバイル環境へのデプロイという複雑な作業に対し、潜在的なレイヤーが追加されます。

そのため、企業はモバイル向けの開発や設計を行う際には、デスクトップの場合とは異なる思考プロセス、そして異なる手法を採用する必要があります。例えば、現在多くの企業が採用している 1 つの手法は、Web 対応のモバイル・アプリケーションにフォーカスするというものです。この手法では、既に Web ポータルや Web 機能の作業をしている開発チームが、単純に HTML5 を使用してそれらの機能をモバイルに拡張しています。

ただしこの手法には、多種多様なモバイル・プラットフォームの強力さと機能のすべてを活用することはできないという欠点があります。ユーザーは必然的に、モバイル機器上に最初から存在している機能 (カレンダー・アプリケーションなど) との適切な統合を要求します。こうした要求に応えるには、これらの機能にアクセスするための API をプラットフォームが公開していない場合は、ネイティブ・アプリケーションが必要になります。しかしそうなると、どのプラットフォームをサポートするのか、またどれほど多くのプラットフォームをサポートするのかを確認しなければなりません。さらにそのプラットフォームのどれだけのバージョンをサポートするのでしょう。大半の顧客が 1 つの機器を数年間しか使用しないことを考えると、1 つのバージョンを除外し、そのバージョンを使用している顧客をサポートしないという選択をした場合に、どれほどのリスクがあるのでしょう。1 つのプラットフォーム (例えば iOS など) 全体をサポートあるいは除外するのでしょうか。Android の 1 つのバージョン (例えば 3.2 など) をサポートまたは除外するのでしょうか。Android の最新バージョンである Jelly Bean のフル機能にまでサポートを拡大するのでしょうか。

モバイル・アプリケーションの開発およびデプロイメントにおける難題として、「IT のコンシューマー化」と言われている問題が加わります。従業員や顧客が企業の環境に、彼ら個人が所有する機器を持ち込むことがますます多くなっています。例えば、IBM 社内では 2012年 1月時点で約 1 万台の iPad と、3 万台を超える他の iOS 機器が稼働しています。これはつまり、企業はもはや社内標準として、「iOS バージョン 4 のみをサポートする」などと規定することはできないということです。消費者は新しい iPhone や Samsung 製の Galaxy に加え、タブレットや他のスマートフォンも購入するからです。従業員が個人で所有する機器を企業が使用することにメリットはありますが、コンシューマー化によって対象となる環境が膨大になり、開発と管理の両面でコストが増大します。


モバイル・アプリケーション開発の落とし穴

モバイル・アプリケーションを開発、デプロイする際の大きな落とし穴の 1 つは、あまりにも多くの変更を 1 つの巨大なデプロイメントに詰め込んでしまうことです。従来のウォーターフォール方式の開発はエンタープライズ・アプリケーション開発にも広く使用されています。この方式では、企業は要件を確定するまでに 6 ヶ月から 8 ヶ月を要し、開発に 6 ヶ月から 8 ヶ月、そしてテストに 6 ヶ月から 8 ヶ月をかけてから、巨大なアプリケーションを本番稼働させています。ここで問題となるのは、作業に携わるチームは要件定義から本番稼働までの間に、要件を見落としたり、コンポーネントを追跡し損なったり、さらにはビルドの一部に問題を発生させてしまったりしがちなことです。従って、そうしたリスクを減らすために、企業は厳格で複雑なガバナンス・プロセスを実行します。

企業は、この同じ方式をモバイル・アプリケーションの開発やデプロイメントにも持ち込むことが多々あります。なぜなら、あるモバイル機能を初めて市場にリリースする場合、(それが彼らのユーザー・ベースを対象としたものなのか、従業員を対象としたものなのかに関わらず) そのリリースを完璧なものにしたいと望むからです。実際には、そのアプリケーションは完璧である必要はなく、単に使用に耐えるレベルで直感的でありさえすればよいのです。しかし大半の企業はそれを認識しないため、結果的に高コストになる可能性がある (多くの場合、既に時機を逸した) 機能のために大量の時間と労力をかけています。ウォーターフォール方式で開発されたアプリケーションの大部分は、市場への導入が遅れ、多くの場合はユーザーのニーズに応えることができません。

DevOps は、アジャイル開発手法を拡張してモバイル・アプリケーションの成功に必要な機能を迅速にデプロイすることで、多種多様なオペレーティング・システム、多種多様な機器、コンシューマー化などに対応する上での難題に対処する 1 つの手段となります。


DevOps の強力さ

DevOps は基本的に、指定された時点で、実行中のアプリケーションに最新の機能を実装して本番環境にデプロイする、というニーズに対応するものです。これはウォーターフォール方式の開発が通用しない、アジャイル手法です。DevOps で重要なことは、ビジネスの価値を実現する小規模な機能部分に関して要件を定義し、開発を行うことです。毎晩または 15 分ごと、あるいはソース・コード管理システムに変更がチェックインされるごとに、製品またはビジネス機能を確実にビルドできるようにする必要があります。これが DevOps の継続的インテグレーション機能です。また、エンタープライズ・モバイル・アプリケーションは複雑であることから、この機能の目的はモバイル機器のコードをコンパイルすることのみにとどまりません。エンタープライズ・アプリケーションはバックエンド・システムを使用するので、バックエンド・システムにも新しい機能を含める必要があるかもしれません。

ビルドを取得して多様な環境にデプロイするためには、一連の堅牢な継続的デリバリー機能が必要です。具体的な機能は以下のとおりです。

  • Android、iOS、その他のモバイル・プラットフォームをシミュレーターで実行する開発者のデスクトップから、アプリケーションをプッシュすることができる
  • 異なる端末をテストするサードパーティーが関係しうるテスト環境に対し、アプリケーションをプッシュすることができる
  • モバイル機器で使用されるサービスを公開するバックエンド・システムに対し、アプリケーションをプッシュすることができる
  • 多様な機器に提供される本番環境に対し、アプリケーションをプッシュすることができる

デプロイメントの観点で見ると、プラットフォームの特性はそれぞれに異なります。しかしどのようなプラットフォームであっても、デリバリーを成功させるためには、変更をすべて特定し、追跡して取り込み、テストする必要があります。そのためには、統制のとれた手法で開発チームと運用チームを 1 つにまとめ、信頼性の高い高品質のソフトウェアを頻繁かつ確実に提供できるようにする必要があります。つまり、開発チームと運用チームの誰もが、責任を追及したり、言い訳したりすることなく、実際に機能するモバイル・アプリケーションの継続的デリバリーという共通の目的のために協力して作業を行うのです。そこで自動化が不可欠になります。

それだからこそ、DevOps はモバイル・アプリケーションの開発とデプロイメントにとって強力なのです。DevOps により、以下のことを実現することができます。

  • 変更を取り込む
  • これらの変更が自動的に適用されるようにする
  • テストを自動化する
  • 変更を十分小規模な範囲に収め、変更を本番環境に適用した場合にビジネスに生じるリスクを減らす
  • 開発からデプロイメントまでのあらゆる段階で、適切にパッケージ化されたビジネス機能が確実に複製、実現されるようにする

DevOps では、統制のとれた手法を使用し、実際に機能する小規模な機能強化をデプロイしますが、それらの機能強化は時間の経過と共に非常に大規模で複雑なものになるかもしれません。DevOps はモバイル・エコシステムのさまざまなエンドポイント機器に対し、プロビジョニング機能を通じてアプリケーションや更新をプッシュします。また DevOps は変更が透過的になることも意味します。そのため、すべての利害関係者が新しい機能の進捗状況を知ることができ、従ってビジネス・リスクを減らすことができます。メトリクスや測定要素は取り込まれてダッシュボードに公開されるため、透明性とアカウンタビリティーが高まります。

モバイル・アプリケーションを提供するまでに要する期間はエンタープライズ・アプリケーションの場合よりも大幅に短いことも考慮すると、DevOps は理想的な手法です。企業は即座に作業を開始したいと望むものです。そのため、少し時間をかけてモバイル・アプリケーションのリリースと更新においてチームとプロセスを統合し、完璧さが目的ではなく、改善することが目標であることを全員が理解できるようにすることが重要です。こうすることで、すべてを即座に開始することができ、順調に進捗するようになります。また、効率化が実現され、プロセスが自動化されると同時に改善されます。


まとめ

世界中の企業は、モバイル・コンピューティングを容易にするアプリケーションを顧客やユーザーに提供することにより、モバイル市場を活用しようとしています。そのためには、機能の開発、機能のデプロイ方法、そして (機能は時間の経過に伴い変更されるため) 機能の継続性を保証する方法、という全体を考えることが重要です。DevOps により、それらのすべてを考慮し、モバイル・アプリケーションのライフサイクルを適切なものにすることができます。DevOps によって開発チームと運用チームの間でのフィードバック・ループが緊密になるため、自動化のみならず、ビジネスの成果も実現されます。開発者はより迅速に変更を行うことができ、また組織もアプリケーションの改善や更新に要する時間を短縮することができます。

参考文献

学ぶために

  • Michael は The Mobile Frontier ブログに積極的に寄稿しています。
  • DevOps の展望を知るために、Enterprise DevOps のブログを読んでください。
  • モバイル・ソリューションを迅速に開発するための手法」(developerWorks) は、たとえ小規模な社内チームであっても、多様なプラットフォームを対象に、適切にターゲットを絞った従業員向けアプリケーションを迅速に開発、デプロイできること、そしてその方法を具体的に説明しています。
  • developerWorks の DevOps ゾーンで、継続的なソフトウェア・リリースと持続的なイノベーションに対する IBM DevOps のアプローチを、開発者、テスター、IT 製品および運用チームが理解して採用できるように支援するための、ハウツー記事、技術的な展望、評価コードを調べてください。

製品や技術を入手するために

  • 皆さんに最適な方法で IBM 製品を評価してください。製品の試用版をダウンロードする方法、オンラインで製品を試す方法、クラウド環境で製品を使う方法、あるいは SOA Sandbox で数時間を費やし、サービス指向アーキテクチャーの効率的な実装方法を学ぶ方法などがあります。

議論するために

  • DevOps community では、開発者とその組織が、アジャイル開発の原則とそれに関連する DevOps の動向を基にした基礎を構築するのを支援するために、ニュース、ディスカッション、トレーニングを提供しています。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。プロフィールで選択した情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Mobile development, DevOps
ArticleID=832816
ArticleTitle=モバイル開発のための DevOps
publish-date=02132014