クラウドコンピューティングという概念が提唱され,SaaS(Software as a Service),HaaS(Hardware as a Service),といったサービスと共に,自社でインフラやサーバーを持たず,開発者はアプリケーションの開発といったコアな部分に集中することが出来るメリットを持つPaaS(Platform as a Service)が注目を集めています。

 この連載では,米Salesforce.com社のPaaS「Force.com」上における開発ノウハウ(共通点や相違点,注意点など)を,これまで従来型ソフトウエア開発を行ってきたSEやプログラマに向けて,紹介していきます。連載の後半では,実際にForce.com上でアプリケーションを開発し,クラウド上での開発の一端に触れ,そのメリットを肌で感じてもらいたいと思います。

標準的な開発プロセス

 Force.comを使用した業務システムの開発を行う場合の標準的な開発プロセスを紹介します。基本的なプロセスは,要件定義を経て,それに基づく開発・テストやデータ移行,各種トレーニングを行い,最終的に本番稼働を迎えるといったものです。この流れだけを見れば,従来と大きく変わるものではありません。ただ,Force.comでは開発ツールなどを含むプラットフォームが提供されているため,すぐに開発に取りかかれます。そのメリットを生かすために,プロトタイピングとスパイラル形式の導入が効果的です。

要件定義フェーズ

 要件定義フェーズでは,ユーザーの業務について,現状のヒアリングとシステム化の要件を確認します。実際にForce.com上にプロトタイプを作成し,ユーザーとの確認・評価を繰り返し行います(図1)。

図1●Force.comの開発プロセス
図1●Force.comの開発プロセス

 プロトタイプの作成と確認・評価を繰り返し行い,ユーザーの要件に対して,Force.com上の標準機能(Force.com Builderと呼ばれるマウス操作で行う宣言型セットアップツール)で対応可能な範囲と,個別開発(Visualforceと呼ばれるユーザー・インタフェース作成用マークアップ言語やApexコードと呼ばれるJavaに似た言語を利用した独自のビジネスロジックの作成用言語)を用いた開発の必要性の有無を定義していきます。さらに,他システムとの連携がある場合には,そのインタフェース方式も定義します。

 Force.com上でのプロトタイピングとスパイラルな確認・評価作業の準備は,インターネットにつながるパソコンとプロジェクタをユーザーに用意してもらうだけで済みます。プロトタイプとして作成した動く画面をミーティングの参加者全員で確認・評価作業を行います。その場で発生した変更要求に対しては,Force.com Builderを用いて簡単にその場で修正し,仕様として確定するといった,PaaSならではのスタイルで行います。

開発フェーズ

 開発フェーズでは,要件定義フェーズで定義されたユーザー要件に基づく開発・テスト作業を行います。Force.com Builderによるカスタマイズ作業では,要件定義フェーズで作成したプロトタイプに対し,運用可能な状態までブラッシュアップします。要件定義の結果,個別開発を行う対象となった機能については,VisualforceやApexコードのコーディングを行います。

 Force.comでは,テスティングフレームワークが提供されており,テスト駆動開発が推奨されています。このテスティングフレームワークは,JUnitに似ているため,Javaの開発経験者なら自然に受け入れられるでしょう。VisualforceやApexコード開発環境は,Force.com Builderに含まれるほか,Eclipseのプラグインも提供されています。そのため,これまでの慣れ親しんだ開発環境を維持できるメリットもあります。