PR

Part4 開発に不慣れでもカスタマイズ容易に、クエリー実行回数の制限に要注意

PaaSの実力を探る

SaaS型アプリケーションの開発環境をインターネット経由で提供するPaaSはどこまで実用的か。 パート4ではセールスフォース・ドットコムが提供しているForce.comを例に、 PaaSの開発技術やデータベース設計、既存システムとの接続技術、問題点についてまとめる。

ユーザー企業は、SaaS型アプリケーションを利用することで開発や保守にかかる手間やコストを減らせる。しかし、SaaSは万能ではない。自社に適したアプリケーションを探すのに時間がかかったり、ふさわしいものを見つけられないこともあるだろう。

こうした問題を解消するものとして期待されているのが、PaaS(プラットフォーム・アズ・ア・サービス)と呼ぶ新しいサービス形態である。PaaSはアプリケーションそのものではなく、アプリケーションの実行環境をインターネット経由で提供する(図4-1)。このため、PaaSのユーザーはアプリケーションを独自に開発して利用できる。

図4-1
図4-1 アプリケーション開発・実行に必要な環境や資源を提供するPaaS

さらに、サーバー環境の構築や保守といった専門的な作業はPaaSベンダーが代わりに担うため、ユーザーはアプリケーションの開発に注力すればよい。さらに、PaaSのサービスによっては、セキュリティホールを生みにくいフレームワークを提供している。こうしたサービスを利用すれば、開発そのものの複雑さを軽減できる。

パート4では、セールスフォース・ドットコムが提供するPaaSであるForce.comを例に、PaaSでの開発はいったい何をどの程度の難易度で実現できるのかを見ていく。

マスター管理画面もGUIでカスタマイズ可能

セールスフォース・ドットコムは1999年に「Salesforce CRM」をリリースして以来、バージョンアップを繰り返してきた。これは単なる機能の追加ではなく、ユーザーによるカスタマイズを可能にするための変化でもあった。そして2008年、ユーザー企業やソフトウェアベンダーがSalesforce CRMと同じ技術で独自のアプリケーションを開発できるプラットフォームであるForce.comをリリースした。

Force.comを構成する要素は、大きく6つある。「ハードウエア」「データベース機能」「データ連携・サービス統合機能」「開発ロジック」「ユーザーインタフェース作成機能」「アプリケーション共有機能」である(図4-2)。この中で開発の中核になるのは、データベース機能とユーザーインタフェース作成機能、開発ロジックである。これらはすべて、Force.com独自の技術を用いている。独自と言っても、Force.com上の開発はこれまでのやり方に比べて難しいというわけではない。むしろ、開発というものを全く知らないユーザーにも取り組みやすい環境に仕上がっている。

図4-2
図4-2 Force.comを構成する要素

まず、Force.comのデータベース機能から見ていこう。例えば、データベースにテーブルを追加するケースを考える。この場合、SQLをサポートする一般的なデータベースでは、「CREATE TABLE文」など専用の書式を用いる。一方、Force.com上でのテーブル作成はどうだろうか。Force.comではデータベースのテーブル(Force.comでは「オブジェクト」と呼ぶ)は図4-3のようにGUIによる操作で作成する。

図4-3
図4-3 データベースをGUIでカスタマイズ可能
Force.com上のデータベースにテーブルを追加する場合。GUIによる操作のため、高度な開発知識は不要

同様に、テーブルにカラム(同じく「項目」と呼ぶ)を追加・変更したり、制限を付加する場合には、一般的なデータベースでは「ALTER文」という少々高度なコマンドを利用する。しかし、Force.comではこの作業もGUIで完結できる。最近の開発現場では、スキーマの作成や、場合によってはテーブルへの直接的な操作を各種ビジュアルツールで処理するスタイルが一般的なので、違和感は少ないだろう。

では、ユーザーインタフェース作成と開発ロジックはどうだろうか? 実は、この2つはForce.comにおける簡単な開発ではほとんど利用する機会はない。例えば、作成したオブジェクトのレコードの登録や編集を行うマスター管理機能はどのWebアプリケーションにも必須だろう。通常の開発ならば、マスター管理画面は原則としてプログラマが別途作成する必要がある。しかし、Force.comではオブジェクトの作成が完了した時点で一般的なマスター管理画面で必要な一通りの機能が用意される。

また、これらのデータを集計・分析してグラフを作成したければ、「レポート」機能を使えばよい。いずれも、今までのWebアプリケーションの開発手法に比べて非常に簡単な作業であるため、開発の経験がほとんどない初心者でも取り組みやすい。

Javaライクの言語で高度な開発にも対応

このように、Force.comでは大抵のことはGUIで開発できるが、より高度で特殊な処理を行う場合には、Force.com独自のプログラム言語である「Apex」を利用することで対処する。

独自のプログラム言語と言うと、難解そうに聞こえるかもしれない。しかし、Apexは基本的な文法などは既存のJava言語を踏襲している。このため、Java言語を習得している人であれば抵抗なくなじめる。実際、セールスフォース・ドットコムの言語マニュアルにも「詳細はJavaのマニュアルを参照」と書かれている部分が何度も登場する(これ自体はやや手抜きとも言えるが)。

このApexで作成されたプログラムは、例えば「トリガ」と呼ぶ機能で利用する。これは、任意のオブジェクトにレコードが追加される際に、指定したApexを実行する機能である。これにより、任意のレコードに連動したレコードの操作や、入力値のバリデーション(入力審査)などを行える。

また、Force.comではユーザーインタフェースをGUIで自由に作成できるが、この作業で画面のレイアウトを変更できる範囲には限界がある。そこで、より自由度の高い画面を構築するには、「Visualforce」と呼ぶ機能を利用する(図4-4)。このVisualforceにおいて、画面デザインを自由にレイアウトするプログラムを「ページ」と呼び、Force.com独自のマークアップ言語 である「コンポーネントタグ」を利用して記述する。コンポーネントタグはHTML(ハイパー・テキスト・マークアップ・ランゲージ)に埋め込む形の言語で、使いこなしのハードルは決して高くない。

図4-4
図4-4 Visualforceの編集画面例

一方、コンポーネントタグで記述したページのバックグラウンドでは、ページの要求に応じて表示データを渡したり、ボタンを押された際に動作する内容を記述したりするプログラムが動く。このプログラムを「コントローラ」と呼び、Apexで記述する。

Visualforceは、アプリケーションを「Model」「View」「Controller」の3つに分けて開発するMVCフレームワークに準拠した構造になっている。とりわけ、ページとコントローラのこうした関係は、Webアプリケーション・フレームワークの「Teeda」などで利用されるページモデルと同じである。これらの点からも、Visualforceは従来からのWeb技術者にとって親しみやすい開発環境といえるだろう。

SOAPを使って外部システムと接続

Force.comは、開発環境だけでなく外部システムとの連携を行うための機能も提供している。具体的には、SOAP(シンプル・オブジェクト・アクセス・プロトコル)による通信をサポートしており、レコードの取得や作成・更新といったWebサービスを公開している(図4-5)。これらを用いることで、Force.comを外部システムのデータベースのように扱えるというわけだ。Apexを使って、Webサービスを独自に作成することもできる。

図4-5
図4-5 外部システムとの接続イメージ

公開されたWebサービスを外部のプログラムから利用するのも非常に簡単だ。というのも、Force.comではWSDLファイル(Webサービス・ディスクリプション・ランゲージ:Webサービスの場所や機能、メッセージフォーマットなどを記述したデータファイル)はもとより、各プログラム言語用の接続ライブラリも提供しているからである。

もちろん、CSVファイルやExcelのデータとしてレコードを書き出したり、これらのデータを基にレコードを更新・作成するという基本的な機能も備えている。これらにより、Force.com上のアプリケーションと外部システムとのデータ連携が不可能な事態に陥ることは事実上ないと言ってよいだろう。

様々な制約に要注意
日本語化の不備も

このように、Force.comを使った開発は敷居が比較的低く、外部システムともデータ連携しやすい。初心者でもカスタマイズできるように発展してきたSalesforce CRMの実績が生かされているということだ。

しかし、新しい技術ならではの問題点もいくつかある。

例えば、データベースの問い合わせにはSOQLと呼ぶSQL言語によく似た独自のクエリー言語を用いる。しかし、このSOQLはSQL言語の機能限定版といった趣で様々な制限があり、複雑な問い合わせには向かない。このため、データベースの構造によってはSOQLを何度も実行しなければ結果を得られないケースがある。

その一方で、SOQLを何度も実行すると今度は、Force.comの制限に抵触する場合がある。Force.comは1つのサーバーを複数の会社が同時に利用するため、重い処理が行われないようにSOQLの実行回数はもちろん、プログラム実行に利用できるメモリー量にも細かい制限を設けている。こうした制限に抵触しないようにSOQLを使うには、オブジェクト(テーブル)設計のノウハウが不可欠だろう。

米国発のサービスだけに、Force.comには日本語移植時の不備もある。例えば、今は解決しているが、日本語には「複数形」というものが存在しないにもかかわらず「複数形のラベル名は必須です」と言う意味のエラーが英文で表示されるというような場面に遭遇したこともあった。

ただし、このような問題に遭遇するのは大抵、リリースされたばかりの機能を利用した場合だ。Force.comの中でも多数のユーザーに使い込まれて「枯れた」技術を使って開発すれば、上で述べたような問題の大半は避けられるだろう。

加えて、Force.comは各種制限を解除したり不具合を解消するなど、ユーザーの使い勝手を高めるため常に進化している。新機能の追加にも積極的だ。2008年11月には、一般に公開可能なWebサイトをForce.com上で作成する「Force.com Sites」と呼ぶ機能を発表。現在、開発者向けプレビューを実施しているところで、2009年中に一般公開する予定という。

木村 貴昭

ウェブインパクト プロダクト開発部 エンジニア

IT Leaders 毎月無料でお届けいたします

本誌は、読者登録いただくことにより、毎月無料でみなさまのお手元まで直接お届けいたします(書店などでは販売していません)。

企業の情報システムを担当する方々や事業部門のIT担当の方々、およびIT関連プロフェッショナルの方々を対象に、実践的に役立つ情報を掲載、幅広く業務にご活用いただけます。

IT Leaders新規購読お申し込みはこちらから
Ads by Google