クラウド・アプリケーションの開発をスピードアップする

Rapid Application Development (RAD) のプロトタイピングを使用する

クラウドにはスケール・メリットがあるため、アプリケーション開発者は使用可能なリソースのメリットをフルに活用し、スケーラブルなアプリケーションの開発を迅速に行うことができます。この記事で著者が紹介するのは、クラウド・アプリケーションをより有効に活用するために、Web ダイアログのビジネス・ロジックを作成する開発者のプールを拡張する概念です。さらに、これらの概念を実践するツールとして Alphinat SmartGuide を使用することで、実際にどのようにしてアプリケーション開発の真の迅速化が行われるのかを紹介します。

Harold Roussel, Director of Technologies, Alphinat Inc.

Harold Roussel は Alphinat の技術担当取締役であり、McGill University で物理学の博士号を取得した後、ソフトウェア開発に転向しました。彼は 2008年に Alphinat に入社しました。



Denis Michaud, VP Research and Development, Alphinat Inc.

Denis Michaud は Alphinat の研究開発担当副社長であり、McGill University で物理学の博士号を取得した後、ソフトウェア開発に転向しました。彼は 2008年に Alphinat に入社しました。



2011年 12月 02日

「クラウド・アプリケーションの開発」や、「クラウド・アプリケーションの提供」という言葉を聞くと、何日も、何週間も、そして何ヶ月もの絶え間ないコーディングとデバッグ、そしてそれに続く統合の問題が頭に浮かびます。開発者が望むのは、既存の資産の再利用、高可用性 (HA)、任意のプラットフォームへのシームレスな統合などによって、開発とデプロイメントに要する時間を短縮することです。

この記事では、最新の Rapid Application Development (RAD) ツールを使用する一方で、従来の開発環境やコーディング手法がもたらす柔軟性も維持しつつ、クラウド・アプリケーションの開発を迅速に行う方法について説明します。まずは以下に挙げる 3 つの概念を説明し、その後でこれらの概念を説明するする良い例として実際のツールを紹介します。

  • 関心の分離: 異なるアプリケーション階層 (GUI、データ接続、ビジネス・ロジック) を並列に開発すると、どのようにクラウド・アプリケーションの開発の速さに影響するのでしょう。
  • デプロイメントの柔軟性: 開発さらにはデプロイメントの対象となる機能が実行環境と非常に密接に関係している場合、それはアプリケーションの開発にどのように影響するのでしょう。
  • アプリケーション/ソフトウェアのデプロイメントの仮想化: SaaS アプリケーションをクラウド対応のアプリケーションとしてデプロイする場合、デプロイメントのシナリオを複雑にする要素は何でしょう。

関心の分離

今日の Web アプリケーション開発の大部分には、少なくとも以下の 3 つの階層が含まれています。

  • グラフィカル・ユーザー・インターフェース (GUI): HTML、CSS、JavaScript を組み合わせてアプリケーションの視覚的な部分の表示が行われるのが GUI です。ほとんどの場合、GUI は JSP または ASPX ファイルの中に埋め込まれています。
  • ビジネス・ロジック: 妥当性検証、分岐、外部サービスの呼び出しなどのビジネス・ロジックの種類にかかわらず、各ページで使われるフィールドやコンテンツと併せてページ・フロー・モデルを構築し、ページ間の関係を構築する必要があります。
  • データ接続: エンドユーザーから収集したデータを格納、変換、転送するためのバックエンド・システム (データベース、Web サービス、他) へ接続する必要があります。

通常、これら 3 つの階層に対する作業はシーケンシャルな形で行われ、1 つの階層を終えてから次の階層に進みます。そして複雑な依存関係があると、少なくとも各階層の間を何回か行ったり来たりしながら進められます。このため、ソリューションを提供するまでに要する期間が長くなります。

ソリューションを提供するまでに要する期間を短縮するためには、すべての階層を並行して開発できる必要があり、また開発中に競合が生じないように、階層の境界を適切に定義する必要があります。しかしこのような並行した開発をすることで、複雑さが増すようであってはなりません。

例えば、コード生成開発プラットフォームはすっきりとパッケージ化された MVC アプリケーションを提供することができますが、そうしたアプリケーションのカスタマイズは悪夢です。(Model-View-Controller はソフトウェア・エンジニアリングに使用されるアーキテクチャー・パターンであり、ユーザーに対するアプリケーション・ロジックとユーザー・インターフェースとを別々に開発、テスト、保守できるように、それぞれを分離します。これは「関心の分離」です)。

以下の表は今日の Web 開発ツールの長所と短所を要約したものです。

Web 開発ツールの長所と短所
Web 開発ツールのタイプ長所短所
従来の IDE (Eclipse や Visual Studio)柔軟性が極めて高い
実行速度が速い
開発サイクルが長い
深い専門知識が必要
フォーム中心の RAD開発期間が短い
適度の専門知識があればよい
カスタマイズ可能な部分が限られる
アプリケーションのタイプが限定される
データベース中心でデータベースに依存する場合が多い
コード生成ツール開発期間が短い
適度の専門知識があればよい
カスタマイズ可能な部分が限られる

デプロイメントの柔軟性

クラウドはスケーラブルで高可用性のメリットを生かせる Web アプリケーションの開発や実行に非常に適していますが、アプリケーションを社内で開発した後にクラウドにデプロイしなければならない場合 (またはその逆の場合) もあります。

そうしたシナリオの 1 つとして、オンラインで納税申告書に記入して提出するためのソフトウェアを提供する会社を取り上げます。この会社では、確定申告の時期になるとこのソフトウェアの需要が急増するため、スケーラブルなクラウド・インフラストラクチャーにこのソフトウェアを移植して高可用性を確保する必要があります。

開発ツールがツールの実行環境の機能に依存している場合、こうした移植は不可能ではないかもしれませんが、困難であることが明らかになるかもしれません。

特定の環境にロックインされるのを避けるための重要な要素として、以下の点を考慮する必要があります。

  • プラットフォームから独立させる: 開発ツールは J2EE 環境のみならず .Net 環境でも実行できる必要があります。また、開発されたアプリケーションは、Microsoft SharePoint プラットフォームや IBM WebSphere Portal プラットフォームなど、すべてのポートレット環境で実行できる必要があります。そしてそれだけではなく、これらの環境間で移植する際にコーディングは不要でなければなりません。
  • コーディングが最小限または不要である環境を推奨する: 当然ですが、作成するコードが少なければ、環境間で移植する場合にも、変更が必要なコードは少なくなります。これはインターフェース階層にも当てはまります。純粋に HTML/JavaScript のインターフェースが利用可能でしょうか。それとも JSP または ASPX 技術を使用して開発せざるを得ないのでしょうか。
  • 階層を明確に分離する: 先ほど触れた関心の分離に従い、インターフェース、ビジネス・ロジック、データ接続を適切に分離すればするほど、変更が必要になった場合にも、アプリケーション全体に影響を与えずに個々の階層を適切に変更できるようになります。

アプリケーション/ソフトウェアのデプロイメントの仮想化

クラウドの最大のメリットの 1 つは、インフラストラクチャー (IaaS) またはミドルウェア・アプリケーション (PaaS) のプロビジョニングを抽象化できる点です。クラウド内では、ベースにある複雑な要素を深く理解しなくても、技術知識のない人が複雑な環境を数分でデプロイすることができます。

また SaaS クラウド・アプリケーションは、何も技術知識を持たない顧客でも起動することが可能です。その一方で、SaaS アプリケーション自体をクラウド対応のアプリケーションとしてデプロイするのは、容易なことではないかもしれません。そこで、その際の困難な側面のいくつかに注目し、デプロイのプロセスを容易にするためのツールをセットアップすることで、それらの困難な側面に対処する方法を説明します。

ワンクリック・デプロイメント

ワンクリック・デプロイメントでは、技術者ではない人がアプリケーションのプロビジョニングを行えるように、クラウドに新たな抽象化層を追加するツールが必要です。ある意味、そのツールは SaaS アプリケーションを実現するアプリケーションのハイパーバイザー、または SaaS アプリケーションのように動作すると言えます。

マルチテナンシーでのリソース共有とプロビジョニング

IaaS と PaaS によってハードウェアとミドルウェアを最大限活用できるようになるのと同じように、マルチテナント・モードで開発環境を最大限活用できるツールがあると重宝します。そうしたツールの機能としては、GUI のレベル、ビジネス・ロジックのレベル、そしてデータ接続のレベルでコンポーネントを再利用する機能や、すべてのテナント間でリソースを共有する機能などが考えられます。

それぞれのアプリケーションを個別に開発する場合、それらのアプリケーションの複数のインスタンスをデプロイしようとすると、インスタンスごとにプロビジョニングのルールやテストが必要になるため、その複雑さのためにコストが高くなるかもしれません。すべてのアプリケーションを 1 回のクリックでデプロイできるプラットフォームがあれば、単にそのプラットフォームの新しいインスタンスをプロビジョニングすることによって、複数のインスタンスをプロビジョニングできるようになります。

複数のバージョンの管理

通常、1 つの Web アプリケーションの複数のバージョンをデプロイするためには、競合や予想外の副作用を避けるために、注意深い繊細な作業が必要です。理想的には、アプリケーションへの変更をテストする場合であれ、異なるバージョンを提供する場合であれ、簡単に既存のアプリケーションをコピーできるツールが欲しいものです。

また、確実にクラウドへのデプロイメントをシームレスに行えるようにする一方で、社内のサービスとのやり取りや、テストを容易に行えるように、社内でアプリケーションを開発したい場合もあります。そのまま社内にもクラウド環境にもデプロイできる RAD プラットフォームがあると、そうしたことを容易に実現することができます。

では、こうした概念を説明する良い例として著者らが開発した実際のツールを見てみましょう。


SmartGuide: 実際の RAD 開発/デプロイ用ツールの一例

Alphinat SmartGuide を使用すると、困難な作業も容易になります

Alphinat SmartGuide は、アプリケーションのコンテンツとロジックをユーザーが完全に管理することができる開発プラットフォームで、ユーザーは使いやすいドラッグ・アンド・ドロップ・ツールを使用して、クラウド・アプリケーションを容易に作成、テスト、保守することができます。SmartGuide を使用すると、アプリケーションのすべての側面に対し、最初から並行して同時に作業を行えるため、開発期間を短縮することができます。また、SmartGuide は関心の分離を強力にサポートしているため、ビジネス階層やデータ階層を変更することなく、さまざまな手段で (スマートフォン、Web、タブレット PC、キオスク端末などで) アプリケーションを表示することができます。SmartGuide の使い方を説明したデモをご覧ください。

Alphinat SmartGuide のモットーは、「誰もが迅速にアプリケーション開発を行えるようにする」ことです。つまり、クラウド対応のアプリケーションを迅速に開発、デプロイするという複雑な作業を、技術者ではない人でも行えるほど容易にすることが目標です。しかしこの目標のもう 1 つの重要な側面として、SmartGuide は開発とデプロイメントのための多くの作業をより自動化された構成へと変換します。そのため、開発からデプロイメントまでのプロセスにおいて、経験豊富なクラウド開発者も生産性を高めることができます。

ここでは、実際に実績のある製品で先ほどの概念がどのように実装されているか、SmartGuide を使用して説明します。

RAD ツールとしての SmartGuide が対象とする範囲

まず、世の中にある多種多様な製品の中での SmartGuide の位置付けを理解するために、開発ツールのグラフを見てみましょう。このグラフでは x 軸が柔軟性であり、y 軸がソリューション提供までの速さを表しています。

図 1. クラウド・アプリケーション開発ツールの柔軟性とソリューション提供までの速さの関係
クラウド・アプリケーション開発ツールの柔軟性とソリューション提供までの速さの関係

この図の 3 つの楕円は、最初のセクションの表で概要を説明した大まかな 3 つのカテゴリーを示しています。SmartGuide は可能な限りネイティブ・コードの柔軟性に近づく一方、可能な限り開発とデプロイメントの速さを高めています。

以下のセクションでは、先ほど説明した概念に対応する SmartGuide の機能を調べていきます。

速さとカスタマイズしやすさとのバランス

SmartGuide は、Web 用の高速開発プラットフォームを提供する一方、カスタム・コードに見られるような柔軟なカスタマイズも行えるように、ゼロから設計されています。図 2 は SmartGuide のアーキテクチャーの概略図です。

図 2. SmartGuide のアーキテクチャーの概略図
SmartGuide のアーキテクチャーの概略図

重要な点は以下のとおりです。

  • アプリケーションのビジネス・ロジックは XML 表現として格納されます。
  • その XML 表現は、アプリケーションが最初に呼び出された時に、最適化されたビジネス・ルール・エンジンによってコンパイルされます。
  • アプリケーションの視覚要素は JSP (または ASPX) ファイルによって描画されます。描画には、ビジネス・ロジックを描画するためのカスタム・タグ・ライブラリーを使用する場合や、REST Web サービス・インターフェースを介してビジネス・ロジック・エンジンに接続する HTML/JavaScript を使用する場合もあります。
  • データ接続は、カスタムのクラス・ローダーによって拡張機能をロードすることにより行われるか、ネイティブでサポートされている REST/SOAP Web サービスにより行われます。

開発されたコンポーネントがサービス (Web サービスまたは拡張機能) の場合も、テーマの場合も、あるいはフィールドなどのビジネス・ロジック・コンポーネントの場合も、すべてのコンポーネントを再利用することができます。第 2 のアプリケーションを開発する場合、単純に最初のアプリケーションの GUI 階層を再利用するだけで、第 2 のアプリケーションの描画コードをデプロイせずに第 2 のアプリケーションを開発できることを考えてみてください。アップロードする必要があるのは、アプリケーションの XML 表現のみです。

ワンクリックでのアプリケーションの作成

SmartGuide は対話型の Web ダイアログを短時間で作成するための多くの機能を備えています。例えば、以下のように単純にチェックボックスにチェックを入れるだけで、既存の PDF フォームからアプリケーションのフィールドを自動的に作成することができます。

図 3. PDF/XML ファイルから自動的にフィールドを作成する
PDF/XML ファイルから自動的にフィールドを作成する

同様に、XML スキーマ (XSD) をインポートする場合や、Web サービスや拡張機能に接続する場合にも、ワンクリックで行うことができます。接続を行う場合には、呼び出されるメソッドの入力と出力を使用してフィールドが作成されます。

ビジュアル・デザイン・ツール

SmartGuide Designer を使用すると、アプリケーションのコンテンツやビジネス・ロジック全体を視覚的なドラッグ・アンド・ドロップ・インターフェースによって容易に操作することができます。例えば、以下のようにフィールドをページ上にドラッグまたはダブルクリックすることにより、アプリケーションにフィールドを追加することができます。

図 4. フィールドをドラッグ・アンド・ドロップする
フィールドをドラッグ・アンド・ドロップする

また、フィールドのプロパティー、値、ヘルプ、妥当性検証、外観、アクションも以下のように容易に定義することができます。

図 5. フィールドのプロパティーを編集する
フィールドのプロパティーを編集する

視覚的なページ・フロー

SmartGuide はアプリケーションのページの視覚表現を自動的に作成し、またページ同士の関係も分岐ルールを含めて自動的に作成します。統合されているエディターにより、ユーザーが特定のページにナビゲートされる条件を容易に定義することができます。

図 6. アプリケーションのページ・フローのビュー
アプリケーションのページ・フローのビュー

ビジュアル関数エディター

ビジュアル関数エディターを使用すると、1 行もコードを作成せずにフィールドの値を操作することができます。ポイント・アンド・クリック機能を適用できる対象は、ストリング (大/小文字、サブストリング、文字置換)、数値 (数字のフォーマット設定、丸め処理、合計)、日付 (現在の日付、2 つの日付の間の差) です。複合関数や複合計算は最初からサポートされています。

図 7. 関数エディター
関数エディター

コーディングの知識のあるユーザーであれば、ソース・モードに切り換え、beanshell コードを直接入力することもできます。

ゼロコーディングによる Web サービスとの統合

SmartGuide は SOAP Web サービスと REST Web サービスを最初からサポートしています。Web サービスへの接続を追加するために必要なものは、定義ファイル (WSDL または WADL) またはサンプル呼び出しのみです。Web サービスへの接続が追加されると、利用可能な操作が自動的に抽出され、使いやすいインターフェースを介して利用できるようになります。また、定義されたサービスを使用してアプリケーションのフィールドを自動的に作成することもできます。

ドキュメントの自動生成

アプリケーションを作成する際、そのアプリケーションのドキュメントをオンデマンドで生成することができます。SmartGuide は、アプリケーションの詳細な説明 (すべてのページ、フィールド、サービス、ファイル、アクションなど) を含む、カスタマイズ可能な Word 文書を自動で生成します。

PDF への事前入力と PDF の作成

SmartGuide を使用すると、コーディングをしなくても、収集されたデータを PDF フォームに事前に入力することができます。この機能により、複雑なフォームへの入力を一連の論理ステップによる入力に分割することができます。そのためデータの収集が容易になる一方、完成したフォームを分割前と同じように PDF で表示し、ピクセル単位の精度で印刷または保存することができます。

また、SmartGuide はアプリケーションから動的に PDF ファイルを生成することもできます。カスタマイズ可能なテンプレートにより、生成される PDF 文書の表示内容を完全に制御することができます。

XML 文書の生成

SmartGuide はデータ中心に設計されているため、収集された同じデータを使用してスキーマ準拠の XML ストリームを生成することができます。この XML ストリームは、外部システムでさらなる処理をすることができます。アプリケーションのフィールドをスキーマ (XSD) から自動生成するように選択すると、スキーマ定義ファイルに定義されたすべての妥当性検証ルールが XML ストリームに自動的に継承されます。

組み込みの高度な妥当性検証

SmartGuide に組み込みの高度な妥当性検証により、マウスを 1 回クリックするだけで構文の妥当性検証を行うことができます。

SmartGuide には多種多様な妥当性検証が用意されており、それらは対象とするフィールド・タイプによって異なります。例えばテキスト・フィールドを作成する場合には、そのフィールドに許容される長さの最小値と最大値を指定し、定義済みの妥当性検証 (英語、英数字、e-メール・アドレス、電話番号、FAX 番号、郵便番号など) の中から該当するものを選択し、外部サービスを使用してそのフィールドの妥当性検証を行います。また、カスタムの妥当性検証ルールを作成し、それを再利用することもできます。

さらに、SmartGuide Designer を使用して、セマンティックな妥当性検証を行うこともできます。これにより、要求されるビジネス・ルールにデータが適合していることを確認することができます。

再利用可能なコンポーネント

フィールドを 1 度定義すると、そのフィールドをさまざまなアプリケーションで何度でも使用することができ、作成するフィールドの数を減らすことができます。再利用可能なフィールドをライブラリーからインポートすると、そのフィールドのデフォルト設定に影響を与えることなく、そのフィールドのプロパティーを変更することができます。

例えば、あるアプリケーションでは必須フィールドにしたフィールドを別のアプリケーションではオプション・フィールドにすることができます。また、フィールドの値を複数のアプリケーションの間で容易に共有することができるため、エンドユーザーが同じ情報を何度も入力する必要がありません。

Web サービス、拡張機能、ナレッジ・ベース、プレゼンテーションのテーマやテンプレートの場合にも、同じようにコンポーネントを再利用することができます。

利用しやすいプレゼンテーション・テンプレート

SmartGuide では、ユーザーはアプリケーションのロジック階層とプレゼンテーション階層とを完全に分離することができます。これはつまり、ドメイン・エキスパートはアプリケーションの外観を気にすることなく、アプリケーションのビジネス・ロジックとコンテンツに完全に集中できるということです。

それと並行して、グラフィック・デザイナーや Web デザイナーは使い慣れた技術 (JSP、ASPX、または純粋な HTML/JavaScript) で作業を行いながら、標準に準拠していて利用しやすいユーザー・フレンドリーなインターフェースの作成に集中することができます。

いったんテンプレートを作成できると、そのテンプレートをワンクリックでアプリケーションに適用することができます。さらには、複数のアプリケーションの間で、またはマルチテナント環境の複数テナントの間で、テンプレートを共有することもできます。そのため、デプロイメントに要する時間はさらに短縮され、コンテンツやフィールドの外観 (テキスト・ボックスのサイズ、ラベルの位置など) の標準化にも役立ちます。

パーソナライズ可能なナレッジ・ベース

SmartGuide では、Web ベースのインターフェースを使用してナレッジ・ベースを作成することもできます。さらに、エンドユーザーにとって 100 パーセント関係のある情報のみが表示されるように、フィルターを作成することができます。

作成できるナレッジ・ベースの数やタイプに制限はありません。そのため、同じモジュールを使用して、事務手続き、タスク、人、場所などのリストを作成することができます。

カスタム機能のための強力な API

Java 開発者や .NET 開発者は拡張機能を作成することにより、自動応答機能をセットアップしたり、あるフィールドに対して一連の高度な操作を実行したり、データベース、LDAP、バックエンド・システムと統合したりするなどのカスタム機能を追加することができます。これらの拡張機能は、単純な構成ファイルを使用することで Web サービスと同じように使用できるようになり、従って技術者ではない人も拡張機能を使用できるようになります。

その他の機能

SmartGuide を使用すると、他にも以下のことを行うことができます。

  • フィールド・グループを作成し、複数行のデータを取り込む (人の一覧など)
  • 複数の言語でアプリケーションをデプロイする
  • エンドユーザーに入力データの要約を容易に表示し、エンドユーザーは特定のページに戻って変更を行えるようにする
  • 複数の異なるアプリケーションに再利用可能なコンポーネントを作成する
  • フィールドの可視性、ページの妥当性検証とナビゲーションのルール、フィールドの値、フィールドの妥当性検証、サービスとファイルのマッピング・ルール等に条件を設定する
  • Web サービスまたは拡張機能を呼び出し、アプリケーションを初期化する (フィールドに事前に入力する、など)
  • ページのロードや、ページを終了するごとに実行する必要があるアクションを定義する
  • PDF をマージする

まとめ

この記事では、組織がアプリケーションをクラウドに移植する際に直面するさまざまな難題について取り上げ、コードの変更、再利用、デプロイメントを容易にする方法などについて説明しました。その中で、アプリケーションをクラウドに移植する際に不可欠の要素をいくつか説明しました。そして Alphinat の SmartGuide 製品の概要を紹介しました。SmartGuide は、クラウド環境を最終的なターゲットとしてアプリケーションのプロトタイピングを迅速に行うためのアジャイル開発プラットフォームであり、対話型の Web ダイアログをオンラインのマルチテナント環境で迅速に作成することができます。

皆さんが経験豊富なアプリケーション開発者である場合も、あるいはクラウド環境用に初めてアプリケーションを作成する場合も、作業を容易にする RAD ツールを検討してみてください。

参考文献

学ぶために

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

  • IBM SmartCloud Enterprise で利用可能な製品イメージを調べてみてください。
  • Alphinat SmartGuide は、アプリケーションのコンテンツとロジックをユーザーが完全に管理することができる開発プラットフォームです。ユーザーは使いやすいドラッグ・アンド・ドロップ・ツールを使用することにより、クラウド・アプリケーションを容易に作成、テスト、保守することができます。

議論するために

コメント

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=Cloud computing
ArticleID=776852
ArticleTitle=クラウド・アプリケーションの開発をスピードアップする
publish-date=12022011