corner_overlay

Apexを使ったコーディング: Salesforceのツールメーカーのバッチ処理製品をリアルタイム処理可能に

Apexコードはプレビュー中ですが、トロントのCRMfusion社のGlenn Wilson氏は、すでに業務に使っています。その業務とは、今後のプロジェクトへの道を順調に進めるアプリケーションのプロトタイプ作成です。DupeBlockerと呼ばれる、リアルタイムで重複を排除するツールは、Apexコードがリリースされ次第提供されます。

Apexコードは、世界最初のオンデマンド、マルチテナントのプログラミング言語で、現在プレビュー段階にあります。しかし、すでにコーディングを始めているApex開発者もいます。CRMfusion Inc.の設立者であるGlenn Wilson氏は、その中の一人で、developer.force.comのことを聞くと即座に参加しました。 他のプロジェクトの合間をぬって、数週間にわたりパートタイム的に作業をしたWilson氏は、DupeBlockerという製品のプロトタイプを作りました。これは、Salesforce.comにレコードを入力しながら、また、レコードを編集するたびに、重複するレコードを識別するものです。この作業を行いながら、Wilson氏は、Apexコード自体の力と可能性をデモンストレーションしました。

Wilson氏は、Dreamforce 2006で初めてApexコードのことを耳にしました。「その技術が我々の開発プロセスにとって根本的なものを提供することがすぐにわかりました。ほとんどのAppExchangeアプリケーションは、ブラウザで実行するためのJavaScriptと組み合わせてSコントロールを使用し、Salesforce.com内部のデータモデルを利用しています。しかし、我々のアプリケーションにはより多くの処理能力が必要だったので、代わりにApex APIを使用して、クライアントベースのアプリケーションを開発しています。このアプリケーションは、SOAP経由でSalesforce.comと接続します。」特に懸念されたのは、CRMfusion社の重複排除ツールに必要な処理能力でした。迅速にレコードを見つけ出し、大量の重複レコードをマージする必要があるためです。

しかし、Wilson氏は、クライアントベースのソリューションを提供するだけでは満足していませんでした。それはセールスフォース・ドットコムのオンデマンドアプローチに逆行するものだからです。さらにしっかりとした連携を実現するため、CRMfusion社は独自にサーバをホスティングすることまで考慮しましたが、そのコストでは手が出せませんでした。

Apexコードを使えば、最終的にはセールスフォース・ドットコムのマルチテナント環境で独自のコードを実行できるのです。その結果、DupeBlockerという、リアルタイムで重複チェックを行う初めての製品を作ることができました。データが入力されると同時にそのデータを点検し、許可するか、禁止するか、または警告を添えてフラグを付けるかのいずれかの対応をし、さらに、レコードをマージするための様々なオプションを指定します。

CRMfusion社では、すでにCRMfusion社の主要製品であるDemandToolsを利用している顧客に対してDupeBlockerを提供する予定です。AppExchange用のDemandToolsは、Salesforce およびAppExchangeのデータを扱う15のクライアントベースのアプリケーションモジュールから成るスイートです。CRMfusion社はこのスイートをMicrosoft .NET Framework上で開発し、これがDreamforce 2004で紹介されました。

「DemandToolsは、重複の排除、IDの付き合わせ、一括更新など、素晴らしい機能を備えています。セールスフォース・ドットコムも含めた1000社を超える企業が、現在このツールを使用しており、これまでに、数十億件のSalesforceレコードを更新してきました。DemandToolsの売上は、2005年に30万ドルだったものが2006年には120万ドルを超え、今年は少なくとも200万ドルを見込んでいます。」とWilson氏は言います。

バッチ処理からリアルタイム処理へ

DemandToolsの重複排除機能は、現在はデータ処理後のクレンジングツールとして提供されています。たとえば、Single Table Deduplicatorは、Salesforce.comデータベースを走査してリード同士、取引先責任者同士、またはその他のオブジェクト同士を比較します。他のツールでも、リードと取引先責任者、またはリードと取引先の間の重複を見つけることができます。どの場合でも、重複の排除は、レコードの一括マージによって行います。

Apexコードを使うことで、データベースに入れる前に、リアルタイムで重複を検出できるとWilson氏は見なしました。「バッチ処理ということで、我々はセールスフォース・ドットコムの世界の厄介ものになりました。」とCRMfusion社のビジネス開発担当副社長、Mark Esdale氏は言います。「Apex codeを使って、我々はデータ品質界では第4世代ソリューションと呼ばれるところに到達しました。ユーザがレコードに触れるたびに行われる、あらゆるフィルタリング、正規化、その他のデータに関連するQA処理を備えています。データベースをクレンジングする、という時間のかかる処理を続ける日々は終わりつつあります。」

CRMfusion社は、Apexで開発したDupeBlockerについてブログで発表しました。4分間のオンラインデモにリンクされています。

「Apexコードが正式リリースされたらすぐに提供する予定です。お客様がDupeBlockerを一度インストールすれば、重複が発生することはおそらく皆無となるでしょう。」とWilson氏は言います。

 

Apexコード: 120時間ちょうどでアイデアがプロトタイプに

DupeBlockerのプロトタイプの開発にWilson氏が費やした時間はおよそ120時間です。トロントのオフィスを出て一人で作業し、$200万ドル規模の企業を経営しながらも、Apexコードが発表されてからわずか1ヶ月のうちに仕上げました。「コードの習得は簡単でした。実際にはSOQLを組み合わせたJavaと同じだからです。つまり、Salesforce.comのオブジェクトを更新するためのJavaコードとSOQLクエリを作成できれば、Apexコードは作成できます。当社の商用製品の既存のビジネスロジックを活用したので、ことはすぐに進み、使えるプロトタイプを示すことができました。」

そのビジネスロジックがDupeBlockerの中心に据えられています。「重複排除ツールの開発には、注意が必要です。利用者によって重複の判断が異なるからです。どの会社もそれぞれ重複の定義が異なります。いったい何をもってレコードが重複しているというのでしょう?すべてのフィールドが同一のときでしょうか?会社名が違っても、住所が同じならどうでしょう?その逆の場合はどうでしょう。我々のアプローチは、あいまいなロジックを組み合わせ、ユーザが定義をカスタマイズできるようにすることです。」とWilson氏は言います。

しかし、ビジネスロジックがすでに出来上がっていたので、開発自体は一直線に進みました。「Apex開発者アカウントを手に入れると、Eclipseプラグインをダウンロードし、作業する開発環境を手に入れました。そして、C#からコードを変換しました。非常に単純でした。もちろん、微妙な違いもありました。Apexには、組み込み式のガバナーが含まれており、それによりコードの塊が無限ループに陥らないようにしています。そのため、ガバナーの周辺でコーディングする方法を学ぶ必要がありました。そして、Apexコードは解釈的なので、特定のオブジェクトを更新しなければならなくなる前に、いくつのスクリプト文を実行できるかを学ぶ必要がありました。しかし、実際には、.NETからApexへコードを移植するときには、Java風の構文に書き直すだけでした。SOQLクエリについては、何も変える必要がありませんでした。」

DupeBlocker開発は今も、Apexコードの最終仕様と並行して進められています。「まだ埋めなければいけない穴がいくつかあります。たとえば、未だに正規表現を待っているところです。しかしApexコードが整えば、我々も出荷できます。」

 

「これまでに下した最高の意思決定」

Wilson氏のプログラミングのキャリアは、通常のスタートとは異なりました。鉱山工学の学位を持つ彼は、その業界で働いた後、PCコンピュータ支援のデザイン会社Autodeskで、9年間セールスエンジニアとして働きました。プログラミングを趣味として熱中した彼は、2001年専門家に転向し、CRMfusion社を起こしました。Wilson氏の経験は、最初はCと.NETでしたが、JavaScriptで作業しながらJavaにも触れました。

Wilson氏が初めてsalesforce.comに出会ったのは、後にSiebel社(これはやがてOracle社により買収される)が買い取った不振なオンラインCRMシステムのためのツールを開発した後のことでした。「この出来事に、別の馬に賭ける時が来たと思いました。そして、Salesforceはすでに先頭を疾走していました。これは、私がこれまでに下した最高の意思決定でした。まもなく、APIがすぐに改良されていくことがわかりました。数ヶ月ごとに、より早く、より良いものが手に入り、強力なサポートチームがあり、開発者仲間のエコシステムが育ちつつありました。小さな会社のオーナーとして、こんな大会社が支援してくれるということに驚きました。『これがSDKです。技術的な問題をお手伝いしましょうか?ところで、展示会があるのですが、弊社のお客様への顔見せになりますよ。』と言われたのです。 実に印象的でした。」

「セールスフォース・ドットコムのDeveloper Forceを使用すれば、常に最新バージョンで実行することができ、テストのためにプレビュー版にアクセスすることもできます。疑問があれば、フォーラムの1つに挙げることができ、セールスフォース・ドットコムのエンジニアからも、他の開発者からも答えが得られます。あちこち探し回る必要があり、複数の答えがある.NETとはこの点が大きく違います。こちらは一括管理され、緊密な連携した成長途上のコミュニティです。みな喜んで助けてくれます。」

Developer Forceは開発者に対し、全機能が使えるSalesforce.com Developer Editionアカウント、コードサンプル、ディスカッションボード、ウェビナー、その他のリソースなど、オンデマンドアプリケーションの開発、コーディング、統合および共有に関するすべてを提供します。

 

Apexコードが開くさまざまな扉

Wilson氏は、いずれ、新しいApexアップデートとともにDupeBlockerプロトタイプを軌道に乗せることを計画しています。「Apexコードが正式に発表されたときに、我々は取引先、取引先責任者、およびリードの重複排除をリアルタイム環境で行えるようになるツールとともに進む準備が整います。」それ以外にも、Apexを使った他の多くのチャンスを視界に入れていますが、まだ明らかにはされていません。

Apexを使ってできることはあまりに多くあります。なぜなら、最初から、セールスフォース・ドットコムのサーバ上でリアルタイム機能を扱えるからです。それはつまり、1個のコードストリームを作れば、それが数百、数千もの組織に役に立つよう拡張される可能性があるということです。Apexは、オンラインCRMソリューションの開発方法を根本から変えていく強力な開発環境です。

Wilson氏は、ApexがSalesforce.comも変えると信じています。「2年後のApexの可能性を考えれば、Salesforce.comはいきなりビジネスインフラストラクチャの大半にかかわることになります。Salesforce.comはすでに優れたCRMシステムであり、優れたPRM (partner relationship management) システムであり、また、優れたカスタマーサポートシステムでもあります。信じられないほど迅速、柔軟で、マルチテナントです。さらに、強力なプログラミング言語をもって、Salesforce.comはより大きく広がる新たな役割を担うのです。開発者に必要なインフラストラクチャを提供してくれました。膨大なリソースを安価で利用でき、なりたいものに何でもなれるのです。セールスフォース・ドットコムは電力会社のように、数百万ものクリエイティブなアプリケーションに利用できる基本的な要素を提供できるようになりました。

「将来、たとえばApexで金融アプリケーションやMRPシステムを作成すれば、世界中のどこからでもブラウザ経由でアクセスできるのです。アプリケーション開発を始めるプラットフォームとして、これ以上のものは思いつきません。」

Apexコードを考えている他のアプリケーション開発者に対し、Wilson氏は、基本的な市場調査から始めることを勧めます。「まず、セールスフォース・ドットコムの管理者と話をしてみると、その弱点と課題がわかってきます。その中のいずれかが市場価値のある製品になる可能性があります。次に、ideas.salesforce.comで、Salesforce.comユーザがシステムの機能向上を求める上でのさまざまな提案をチェックします。メインのSalesforceアプリケーションの一部として含めるには複雑すぎるものや特殊過ぎると思われるアイデアを1つか2つピックアップして、コーディングを開始するのです。

開発の立場から見ても、始めるのは簡単です。Developer Forceアカウントをセットアップし、Eclipseおよび関連するApexプラグインをダウンロードし、コーディングを開始するだけです。開発者フォーラムは、他の開発者から助言を得たり、アイデアをぶつけることができる素晴らしい場所です。ほとんどの場合、数時間のうちに答えが得られるでしょう。

 

もっと知りたいですか?

Force.comクイックスタートの手順に従って開発をはじめてください。

 

Force.comのお客様導入事例をすべて見る >