Database.comの魅力に迫る – Salesforce.comとAWSによるECO-SYSTEM
Salesforce.comとAWSの連携といえば、Force.comからS3を拡張ストレージとして使うようなインテグレーションはしばしば用いられてきました。
しかしDatabase.comの登場により、それとはまったく逆の方向で両クラウドサービスをインテグレートする用法が見えてきています。ここではその連携アーキテクチャについてお話します。
Salesforce.comはApex、Visualforceという独自言語を提供しながらも、Open Developmentというエリアを真剣に考えており、その最たるアプローチがDatabase.comです。
Database.comはForce.comのハートであるデータベース機能だけを切り出して単独で提供しているものです。課金体系もForce.comのユーザー単位に加え、データ容量やトランザクション量での従量課金を取り入れています。
Database.comはSalesforce.comが十年以上にもわたって磨き上げてきたデータベースプラットフォームをOpen Developerに開放するものです。Open DeveloperはRuby, PHP, Python, Java, Node.js, Clojure等、各々が得意なプログラミング言語からDatabase.comを利用することができます。
AWSではEC2という仮想マシンサービスが長らく提供されており、ユーザーはクラウド上で即座にOS環境を整え、任意のプログラミング言語の実行環境を自由に構築できます。このような環境で利用するデータベースとして、Database.comというのは魅力的な選択肢となるはずです。
では、Open DeveloperがDatabase.comを利用するメリットとはどのようなものなのか? 僕は次の2点にそのメリットを集約してみます。
メリット1:データベース運用からおさらば
データベースはほぼすべてのアプリケーションに必須のコンポーネントです。Open Developerの中には自身でアプリケーションに必要なデータベースを構築、運用することができる人たちがいるでしょう。あるいはアプリケーション開発会社であればデータベースを担当するインフラ部門があるかもしれません。
ただし、僕が思うにデータベースの独自運用は価値を生みません。
データベースの仕事は、常に十分な速度で安定してアプリケーションからの問い合わせに応答する、というシンプルなものです。しかし、この要件を満たすために必要な労力は一体どれほどのものでしょうか。データベースの設定項目はそれだけで辞書にできるほど多く、スケーラビリティや耐障害性を確保するのに極めて複雑な実装が余儀なくされます。
世の中には様々なスキルレベルのデータベースエンジニアが日々データベースに向き合っています。その中には上記の要件をかなり高いレベルで実装できるエンジニアもいるでしょう。
ただし、上には上がいます。
この「上」の最たる例が「クラウド」だと思います。僕の定義ではクラウドというのはノウハウの共有であり、ノウハウの開放です。
参考:オレ流クラウドの定義
自社サービスを長年に渡り提供し続けてきたサービスプロバイダーは、その歴史が長いほど、ビジネスボリュームが大きいほど、重要な経験、つまりノウハウを蓄積しており、そのインフラに研究と改善を重ねています。
この長年の経験に裏打ちされたインフラのレベルは一朝一夕で到達できるようなものではなく、かつ、大きな投資をおこなってデータベースプラットフォームを独自に構築したとしても、それはアプリケーションから見れば「当たり前の仕事をしている」に過ぎません。いくらこのレイヤーに投資しても決して自社のアプリケーション、サービスに差別化要素をもたらすことはできないでしょう。それより、磨き上げられたデータベースサービスがオンラインでサインアップするだけで使える時代なのです。これを利用しない手はないでしょう。
Database.comは誰でもすぐにサインアップして利用することができます。無料枠があるので、試用するのに費用はかかりません。
今すぐサインップするにはこちらから。
メリット2:REST API
単にマネージド・データベースというくくりであればまだDatabase.comでなければならない理由にはなりません。マネージド・データベースはDatabase.com以外にも存在します。その中でもDatabase.comをユニークにする要素は何なのか。
僕はその要素にREST APIを挙げたい。
データベースはForce.comのハートだと書きました。それは何故か?Force.comまたはDatabase.comではデータモデル(つまりテーブル。Force.com用語ではオブジェクト)を定義するだけでプログラミングの基礎部分が終わってしまうという特徴があります。テーブルを作成するとそのテーブルに対するデータの挿入、更新、削除を行うメソッドは自動的に作成され、開発者がテーブル毎にメソッドをコーディングする必要はありません。それだけでなく、テーブルを作成しただけでそのテーブルに対するREST APIまでもが自動的に生成されます。つまり、テーブルを作成した時点で、そしてまたカラムを追加した時点で、そのデータ構造に対するデータ挿入、更新、削除、検索がREST APIを通じておこなえるのです。
このことは特にHTML5アプリを開発する上で大きなアドバンテージになるでしょう。
HTML5アプリとはHTML5規格にのっとってコーディングされたHTML, CSS, JavaScriptによるユーザーインターフェースを持つアプリを指すアプリの緩い定義。一般的にHTML5アプリはWebサーバーからダウンロードしたHTMLでダイナミックなユーザーインターフェースを表現し、Ajaxによってサーバーと通信を行います。
AjaxはサーバーからダウンロードされたローカルのJavaScriptによってキックされます。JavaScriptはユーザーの操作によって特定のイベントで発火し、バックグラウンドでサーバーへリクエスト・データを送る、またはサーバーからデータを取得します。
このHTML5アプリの構造で必要になるプログラムコンポーネントは一般的なWeb/データベースサーバーのアーキテクチャでは下図のようになるでしょう。
- HTML – ユーザーインターフェースを構成するのに必要
- Web API Class – JavaScriptからのAjaxリクエストを受け付けるのに必要
- DB Class – AjaxリクエストをDBへのリクエストへ変換しSQLを発行するのに必要
一方、Database.comを擁するHTML5アプリに必要なプログラムコンポーネントは下図のようになります。
HTMLは依然としてコーディングする必要があるものの、JavaScriptから発行されるAjaxリクエストはDatabase.comが直接受け付けて処理できるため、Web API ClassとDB Classが不要になります。したがって開発者は基本的なメソッドを自身でコーディングする必要がなく、ユーザーの使い勝手を向上させるためのインターフェースやアプリの差別化に直結するコア機能の開発に集中して時間を費やすことができます。
さらにDatabase.comにアクセスするJavaScriptのコードも、いちから書き上げる必要はありません。Salesforce.comではForce.com JavaScript REST Toolkitなるものを提供しています。このJavaScriptライブラリをロードすれば、create(), update(), delete()といったより抽象化された手続きでDatabase.comにアクセスすることができます。
なお、Database.comではデータモデルを作成した際に自動生成されるAPIのほか、より複雑な処理が必要な場合は独自にAPIを拡張することも可能です。
したがってDatabase.comではデータモデルを定義するだけで多くの開発タスクが自動的に完了してしまいます。データモデルを定義するのが数少ない作業ではありますが、実はこのデータモデル定義作業もDatabase.comでは楽しい。
新機能のスキーマビルダーを使えばドラッグ&ドロップでテーブルを作成し、同様にドラッグ&ドロップで適宜カラムを追加することができます。未だPilot扱いの機能なのでページレイアウトが自動更新されない等、まだ至らない点はあるのですが、直感的な操作でデータモデル定義をEnjoyできます。
リレーションを張った場合はそのつながりも視覚的に確認することができ、手作業でER図を作成する必要はもうありません。
このDatabase.com、先日開通した東京データセンターでも稼働しているためAWSの東京リージョンとも極めて低いレイテンシーで通信できます。まさに今すぐ利用できる環境にありますゆえ、一度サインアップして操作画面だけでものぞいてみてみてはどうでしょうか。今回ご紹介したメリット2点以外にも、地味に便利な機能がふんだんに搭載されていますよ。
まとめ
Database.comを利用することで開発者は、
- 厄介なわりに差別化要素とならないデータベース運用から解放される。
- REST APIの自動生成により(特に)HTML5アプリ開発が加速する。
- 美しいUIで作業がなんだか楽しくなってくる。
*ちなみに、現在Salesforce.comではDeveloper Communityをすごい勢いでつなげ、技術情報を交換する環境を広げていきたいと考えています。まずはFacebookページをLike! オンラインで、オフラインでつながりましょう。近々オフラインで集会(飲み会)したいと思っています。