Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
ALM Essentials(2)

ALM Essentials(2)

いまさら聞けない「ALM」。3つの構成要素とは?

2014年7月8日

ALMを実践するための基礎知識として、ALMの3つの構成要素「Business(ビジネス)」「Development(開発)」「Operations(運用)」について説明する。

竹林 崇(Change the World!
  • このエントリーをはてなブックマークに追加

 前回はALM(Application Lifecycle Management)の概要とDevOps/リーンスタートアップとの違いについて説明した。今回は、ALMを実践するための基礎知識として、ALMの3つの構成要素について説明する。

ALM(Application Lifecycle Management)を構成する3つの要素

 前回のDevOpsの図1.2を見ても分かる通り、アイデアの創出(定義)をする役割が存在する。これ(=ビジネス)を明確に加えることで、ALMは「Business(ビジネス)」「Development(開発)」「Operations(運用)」という3つの要素から構成されている。次の図は、この3要素とリーンスタートアップの「構築―計測―学習(Build-Measure-Learn)のフィードバックループ」を統合したものだ。

ALM
図1.4 ALM(Biz:Business、Dev:Development、Ops:Operations)

この図は、次のリンク先ページの画像を参考に、新たに書き起こしたものです。

 アプリケーションライフサイクルの名の通り、人間の一生と同じようにアプリケーションのライフサイクルもいくつかの大きなイベントによって区切られている。最初の大きなイベントはアイデアの“構想”である。この問題を解決できるアプリケーションをユーザーに提供しよう、というビジネスニーズに対する最初のアイデアの提案が行われる。その提案に基づいて、アプリケーションが作られる。その次の大きなイベントは“デプロイ”である。ここからアプリケーションの実運用が始まる。実際にユーザーが使用し、フィードバックを得られるようになる。次々とフィードバックに基づいた新たな改善のアイデアがアプリケーションに反映されていく。最後の大きなイベントが、アプリケーションがビジネス価値を持たなくなったときに行う“廃止”である。ここでアプリケーションのライフサイクルは終了する。

 Businessは、アプリケーションに関する全ての意思決定やマネジメントを含み、アプリケーションライフサイクルの全期間にわたって行われる。

 Developmentは、アプリケーションを作るプロセスを指し、“構想”から“デプロイ”までが行われる。多くのアプリケーションにおいて、開発はアプリケーションの存続中にアップデートやバグフィックスという形で最初の“デプロイ”の後も繰り返し行われる。

 Operationsは、アプリケーションの実行やマネジメントするために必要な作業を指し、“デプロイ”の少し前から“廃止”となるまで継続する。

 これら3つの要素はいずれも重要であり、次節でより詳細に説明する。

ALMの3つの要素: Business

 Businessはアプリケーションが常にビジネスニーズを満たしている状態を維持する部分である。まずプロジェクト・ポートフォリオ・マネジメントをすることになる。最初に行うのはビジネスニーズに対する最初のアイデアの提案とそれを開発に伝えることである。アイデアを実現するアプリケーションの開発が始まり、完成してデプロイされた後は、アプリケーションを実際に使用したユーザーからの反応を基に次のアイデアの提案とそれを開発に伝えるというループを繰り返すことになる。もちろん、この間、ポートフォリオ・マネジメントも実施している。

ALMの3つの要素: Development

 Developmentはアプリケーションライフサイクルの基本部分である。開発はアプリケーションライフサイクルの初期段階のアイデアの“構想”の次の段階として、アイデアをユーザーに届けられる動くアプリケーションにする段階のアプリケーションの開発が始まる。最近のアプリケーションの開発では、一連の手順の反復(=イテレーション)になっている。1回のイテレーション中に要件定義、設計、開発、テストなどが含まれており、それを繰り返し行う。ただし、反復型の開発がどんなプロジェクトでも常に最適であるとは限らず、従来の手法を使った方がうまくいくプロジェクトもある。しかし、反復型の開発は多くの分野で標準の手法となりつつある。アプリケーションの初期バージョンに対する開発が完了すると、アプリケーションはデプロイされる。しかし、ほとんどのアプリケーションはデプロイが行われたら開発が終わるというわけではない。デプロイ以降もアプリケーションを使ったユーザーからの反応を計測したデータに基づくフィードバックに伴い、定期的に開発は行われる。

 最近のアプリケーションの開発では、このように新しいバージョンを作成する一連の手順が複数回繰り返され、これらの新バージョンの開発に費やされるコストが初回のリリースまでのコストを上回る場合が多々ある。

ALMの3つの要素: Operations

 Operationsはデプロイしたアプリケーションの監視やマネジメントをする部分である。運用は開発と密接なつながりがあり、例えば、アプリケーションのデプロイのための準備は多くの場合、アプリケーションの開発が完了する少し前に開始される。最近では、デプロイを自動的に行う継続的デプロイというプラクティスが実践されているが、アプリケーションのデプロイ自体も基本的には運用の作業の一部である。デプロイ後のアプリケーションはアプリケーションが稼働している間、継続的に監視する必要がある。そこからアプリケーションを使ったユーザーからの反応を計測し、計測したデータから有用な分析をフィードバックするのも運用の役割である。

ALMを支援するツール

 Business、Development、OperationsというALMの3つの要素はどれも重要で、非常に密接に関連し合っている。アプリケーションのビジネス価値を最大限に高めたいと考えるものにとって、これら3つの要素全てを適切に実施することは必要不可欠となる。しかしながら、これを達成するのが容易ではないことは明らかだ。3つの要素のうちいずれか1つでも適切に実施するのは難しいにも関わらず、3つ全てを適切に実施するとなると、その難易度は高く、実施ははるかに困難になるだろう。

 アイデアは自由形式であり、プロジェクト・ポートフォリオも自由形式もしくはプロジェクト・ポートフォリオ・マネジメントツールの形式に依存している。アイデアを実装する際にはフィーチャー(またはストーリー)やそれを細分化したタスクやバグは箇条書き形式になる。一方でソースコードはファイル形式で、デプロイするビルド物はバイナリ形式である。そうなると、このビルドにはどのフィーチャーやバグが対処されていて、どのタスクで対応したのか、どのテストケースとひも付いているのかなどの情報を把握するのは大変なことだ。

 もちろん、ほとんどの人がそういった情報を把握するために、ツールを使っている。ツールの活用例として例えば、ビルドは「Jenkins」でCI(継続的インテグレーション)を行っており、そのJenkinsはSCM(ソフトウェア構成管理)の「Subversion」や「Git」、「Mercurial」からソースファイルを取得しており、ITS(Issue Tracking System)/BTS(Bug Tracking System)の「Redmine」や「Trac」のチケットで管理されたタスクにひも付いていて、「Capostrano」でデプロイしているといった具合だろう。

 ここで問題になるのは、例えばデザイナーが「自分の変更したデザインは、どれに反映されているのだろう?」と思った際に情報収集する量が膨大になってしまう点だ。メンバーは“全てのツールに精通するべきだ”とうそぶく人もいるが、それぞれのメンバー、例えば開発者は開発で、デザイナーはデザインでプロジェクトに最大限に貢献しなければビジネス価値を最も高めることなどできないのは自明の理であろう。それぞれのメンバーは膨大な情報収集に関わっている余裕などないのだ。

 そこで登場するのがALMを支援するツールである。ツールを利用すれば「ALMの3つの要素全てを適切に実施する」という目標の難易度が大幅に軽減される。以下のGartnerによる調査(英語)に、ALMを支援するツールを提供しているベンダーが記載されている。

 執筆時現在はいずれのベンダーも3つの要素全てを完全に統合するALMのツールを提供できていないものの、上位のベンダーはALMを支援するツールの開発をALMで行っているので、ツールの改善の速度も早く、今後、3つの要素全てを完全に統合するALMの登場も期待できるだろう。

 今回は、ALMの構成要素であるBusiness、Development、Operationsについて説明した。3つの構成要素の全てが重要であり、そこに優劣はなく、Businessで失敗すればビジネスニーズに合致しないアプリケーションとなってしまい、Developmentで失敗すればアプリケーションとして成立せず、Operationsで失敗すればアプリケーションを実行するのに十分なリソースを確保できない、またはユーザーからのフィードバックを学ぶことができない。いずれのケースでも投資に対して本来得られるはずのビジネス価値を得られない結果となるだろう。

 アプリケーションのビジネス価値を最大限に高める際、これら3つの要素全てを適切に実施することは必要不可欠であるものの、3つの要素のうちいずれか1つでも適切に実施するのは難しいにもかかわらず、3つ全てを適切に実施するとなると、その難易度は高く、実施ははるかに困難なものになる。そこでALMを支援するツールを用いることで、この難易度が大幅に軽減され、達成が容易となる。

 次回はALMを支援するいくつかのツールそれぞれの強みを説明する。

ALM Essentials(2)
1. ALMとDevOpsとリーンスタートアップは何が違うのか?

そもそもALMって何? ALMが現れた背景や、「DevOps」や「リーンスタートアップ」との違いを説明する。

ALM Essentials(2)
2. 【現在、表示中】≫ いまさら聞けない「ALM」。3つの構成要素とは?

ALMを実践するための基礎知識として、ALMの3つの構成要素「Business(ビジネス)」「Development(開発)」「Operations(運用)」について説明する。

ALM Essentials(2)
3. Visual Studio Team Servicesの機能概要と環境構築パターン

効率的にアプリを開発・運用するには、開発ライフサイクルの流れをスムーズにするツールの活用が欠かせない。その環境の一例として、マイクロソフトが提供するSaaS型のALMツール群の全体像を解説する。

ALM Essentials(2)
4. Team Foundation Serverの機能概要と環境構築パターン

自社イントラネット内などのオンプレミス環境で、アプリ開発のライフサイクルを全体的に管理できるALMツールとして、マイクロソフトのTFS環境を導入した場合の、ALM環境の全体像について解説する。

ALM Essentials(2)
5. JIRA Software/Bitbucket/Bamboo/HipChat/Confluenceの機能概要と環境構築パターン

オープンソース・ソフトウェアも便利だけど、アプリ開発のライフサイクルを一貫して効率よく管理するには、アトラシアンが提供するツール群がもっと便利。SaaS型/オンプレミス型の両環境の全体像を解説する。

サイトからのお知らせ

Twitterでつぶやこう!