JP:An Introduction to Force IDE

Force.com IDE の概要

摘要

Force.com IDE は Force.com アプリケーションの開発、変更、展開に使用できる強力なクライアントアプリケーションです。Eclipse プラットフォームをベースとしたこの IDE では、コーディング、コンパイル、テスト、パッケージ化、展開を実行でき、統合開発環境を使い慣れたプログラマにとって快適な環境が実現されています。コンパイルなどの処理は、ほとんどの場合 Force.com プラットフォームで行われ、Force.com IDE ではその結果をシームレスに受け取り解析します。

Force.com IDE には、Force.com 組織の項目やオブジェクトを参照できる Schema Explorer というツールが用意されており、データベースやメタデータコンポーネントをリアルタイムに確認できます。また、同期機能が標準で提供されているため、共有のソースコードリポジトリを使用して複数の開発者による共同作業が可能なプロジェクトを推進することも可能です。 このドキュメントでは、Force.com の統合開発環境である Force.com IDE を紹介し、その主な機能を解説します。

Force.com IDE の入手方法

Force.com IDE を入手するには、まず developer.force.com にアクセスし、同サイトで案内されている手順に従って Force.com IDE をインストールします。インストールが完了したら Force.com IDE を起動し、[Window]、[Open Perspective]、[Other]、[Force.com] の順にクリックして Force.com IDE のメインインターフェースを開きます。次のような画面が表示されます。

image:ide_front.jpg

ただちにプロジェクトを作成するには、[File]、[New]、[Force.com Project] の順にクリックします。続いて、使用している Force.com 組織の認証情報を入力します。ここでは、Force.com IDE で作業対象にするメタデータコンポーネント (オブジェクト、クラス、ページなど) を選択することも可能です。

後続のセクションでは、このメインインターフェースを使って、コーディング、テスト、展開といった標準的な開発作業を行う方法について説明します。

Force.com IDE でのコーディング

このセクションでは、開発でのコーディング作業を支援するさまざまな機能を順番にご紹介します。

プロジェクト構造の参照

多くの統合開発環境と同様、Force.com IDE では、アプリケーションのリソースを「プロジェクト」という単位で管理します。ただし、ソースコードをコンパイルして実行可能なバイナリファイルを生成する従来のソフトウェア開発プロジェクトとは異なり、Force.com IDE の場合は、ローカルのプロジェクトに Force.com 組織内のリソースをコピーして編集します。 Force.com IDE で作成する Force.com プロジェクトには、次のフォルダとファイルが必ず含まれます。

  • src/ - プロジェクト内のすべてのメタデータコンポーネントが、このフォルダ内の [classes]、[objects]、[pages] といったサブフォルダに種類別に格納されます。
  • src/package.xml - プロジェクトのマニフェストであるこの制御ファイルには、プロジェクトの対象組織との同期処理時に Force.com プラットフォームから取得するメタデータコンポーネントがリストされています。
  • salesforce.schema - このファイルを開くと、プロジェクトの対象組織の Schema Explorer が起動します。
  • Referenced Packages - プロジェクトの対象組織にインストールされているすべての管理パッケージが格納されます。なお、インストール済みの管理パッケージの編集は Force.com IDE ではサポートされておらず、参照のみ可能です。

次の図は、Force.com IDE の Package Explorer の画面です。標準的な Force.com プロジェクトが表示されています。

image:ide_pkgexplorer.jpg

Apex コードの編集

Force.com IDE には Apex コードを追加、変更、テストできるコードエディタが用意されています。このコードエディタでは、データベーストリガの作成が可能であるほか、Visualforce コントローラ、電子メールハンドラ、ビジネスロジックを含むクラスなど、あらゆる種類の Apex クラスを作成できます。

このエディタは次のような多彩な機能を備えています。

  • 構文強調表示で Apex キーワードをサポート
  • Apex のシステムクラス、ユーザ定義クラス、スキーマオブジェクトのコード作成を支援
  • エラー発生時やテスト時に、クリックで問題のある行にジャンプできる
  • 取り消し、やり直しの操作を無制限に行える
  • ソースコードと XML メタデータ定義をタブで切り替えて表示できる

次の図は、Force.com IDE で作成したシンプルなトリガの例です。

image:ide_trigger.jpg

Apex コードを保存すると、そのコードは自動的に Force.com プラットフォームに送信されてコンパイルが実行されます。コンパイルの結果エラーが生じた場合は、Force.com IDE の [Problems] ビューに詳細が表示されます。

image:ide_problems.jpg

[Problems] ビューでエラーをダブルクリックすると、問題が発生したファイルの当該行にジャンプします。問題を解決してファイルを保存すると、ファイルは再び Force.com プラットフォームに送信され、[Problems] ビューが自動的に更新されます。

Force.com IDE の [Execute Anonymous] ビューも Apex での開発作業を支援するツールの 1 つです。ここでは、Force.com プラットフォーム上の Apex の匿名ブロックを実行でき、コードを迅速にチェックしたり、実行時に動的に変更されるスクリプトを作成したりすることが可能です。たとえば、名前と住所をユーザに入力してもらうクライアント Web アプリケーションを開発している場合に、匿名ブロックを使用して、入力された名前と住所を連絡先データとしてデータベースに挿入し、[Execute Anonymous] ビューを使ってそのブロックの実行やテストを迅速に行えます。

image:ide_executeanonymous.jpg

テスト

テストの自動化に対する標準のサポートは、Force.com プラットフォームでもっとも重要かつ強力な機能の 1 つです。Force.com IDE には、この機能を活用できる堅牢なテスト環境が用意されています。

Force.com では、Apex コードを使用して、アプリケーションが想定どおりに機能するかどうかを検証する単体テストを作成、実行できます。各単体テストはテストメソッドとして定義して、通常の Apex クラスや特殊な Test クラスに含めることができます。Force.com IDE には、ユーザがメソッドをテストしてその結果を確認できる [Apex Test Runner] ビューが用意されています。

image:ide_testrunner.jpg

[Apex Test Runner] ビューを起動するには、Package Explorer で 1 つまたは複数の Apex クラスを選択し、右クリックメニューで [Force.com]、[Run Tests] の順にクリックします。Apex のテストはすべて Force.com プラットフォーム上で実行されるため、[Apex Test Runner] ビューを使用するには、まず変更内容の保存を行う必要があります。

テストが完了すると、[Apex Test Runner] ビューの左ペインにテスト結果の概要が表示され、失敗したテストを参照したり、テストによって呼び出された Apex のクラスやトリガが運用環境への展開に必要なコードカバレッジ要件を満たしているかどうかを確認できます。また、実行されなかった行もリストされます。右ペインには Apex のデバッグステートメントなど、テスト実行時に検出されたシステムログイベントが表示されます。これらの情報は、コードの問題を解決したり、パフォーマンスの調整やリソース使用状況の確認などを行ったりする場合に役立ちます。 作成したコードを運用組織に展開するには、すべての Apex クラス、トリガに対して最低でも 75% のコードカバレッジを達成する必要があります (理想的としては 100% のコードカバレッジが望ましいと言えます)。なお、コードの作成、テスト向けの環境であるサンドボックス組織や Developer Edition 組織の場合は、このコードカバレッジの制限は適用されません。単体テストの作成に関する詳細は、An Introduction to Apex (Apex コードの概要) を参照してください。

その他のメタデータコンポーネントのサポート

Force.com プロジェクトでは Apex クラス、トリガのほか、Visualforce ページ、スキーマオブジェクト、ワークフロールールなど、さまざまな種類のメタデータをダウンロードできます。これらのコンポーネントは XML ドキュメントとして取得され、各コンポーネントの XML タグを認識可能なエディタを使って参照、変更することができます。

image:ide_componenttype.jpg

これらのファイルはテキストベースで作成されているため、テキスト差分表示ツールを使って内容を比較したり、CVS や Subversion のようなバージョン管理システムで管理したりできるほか、ある組織から別の組織に展開することも可能です。

Schema Explorer

Schema Explorer は、Force.com 組織の項目やオブジェクトの参照を可能にするツールです。画面にはログインしているユーザの Force.com データベースモデルが表示され、オブジェクトへのアクセス権限、データ型、参照関係を持つ値など、アプリケーション開発に役立つ情報を参照できます。

Schema Explorer では、組織のスキーマの階層がツリー形式で表示されます。情報は参照のみ可能で、Force.com IDE の他のワークスペースとは連動していません。

サンプルプロジェクトの salesforce.schema をダブルクリックして、Schema Explorer を開いてみましょう。

Image:ide_schemaexplorer.jpg

[Schema Explorer] というタブが表示され、ツールが起動します。

image:ide_schemaexplorerdetail.jpg

右側のペインには、Force.com 組織内の全オブジェクトが階層にもとづいてツリー形式で表示されます。各オブジェクトをドリルダウンすると、そのオブジェクトに含まれる項目を選択できます。右側のペインでオブジェクトや項目を選択すると、その詳細情報を返す SOQL クエリが左側のペインに自動的に表示されます。SOQL クエリを手動で入力することもできます。この場合、[Run Me] ボタンをクリックするとクエリが実行され、下のセクションに結果が表示されます。

Schema Explorer を使用するとオブジェクトやオブジェクトのメタデータを容易に確認できます。このツールは、オブジェクトや項目のシステム名を参照する Apex コードを記述したり、SOQL クエリをテストしたり、組織で実際に使用されているデータを確認したりする場合にとても役立ちます。

プロジェクトの同期

Force.com IDE の展開機能を取り上げる前に、その基盤となる同期の仕組みについて説明しておきましょう。標準的な作業環境では、Force.com IDE と Force.com プラットフォームとの間で接続が確立されます。たとえば、Force.com IDE で Apex クラスを保存すると、その Apex クラスは Force.com プラットフォームに送信されます。その後、Force.com プラットフォームでクラスのコンパイルが行われ、結果 (解析エラー、コンパイルエラーなど) が Force.com IDE に返されます。以上が、標準的な処理モードであるオンラインモードです。それに対して、プロジェクトをオフラインモードで使用することもできます。この場合、Force.com IDE で行った変更はローカルのコンピュータに保存され、オンラインモードに切り替えた時点で同期が実行されます。

Force.com IDE は、Force.com プラットフォームとの接続をメタデータ API によって行います。Force.com IDE で開発するアプリケーションは、Force.com プラットフォームに送信するメタデータだと考えることができます。Force.com プラットフォームは受信したメタデータを使ってアプリケーションを生成して実行し、そのアプリケーションがユーザにサービスとして提供されます。コード、永続オブジェクト、トリガ、ページレイアウトなどが、このメタデータにあたります。

重要とされるメタデータは、状況によって変わります。たとえば、Visualforce ページの作成では Visualforce ページのソースと Apex コントローラが、トリガのコーディングではトリガが、それぞれ重要になります。このように、重要となるメタデータは開発プロジェクトでの作業内容によって異なってくると言えます。

この点について、もう少し詳しく説明しましょう。ユーザが Force.com IDE でプロジェクトを新規作成すると、次のような画面が表示されます。

image:ide_initialprojectcontents.jpg

Force.com IDE では非常にきめ細かな設定が可能であり、プロジェクトの作成時にユーザが必要とするメタデータを指定できます。デフォルトでは Apex のクラス、トリガ、コンポーネント、静的リソースなどが指定されています。上の図にあるように、この指定条件にもとづいて、ユーザの組織にあるメタデータが自動的に検出されます。ここでは、MileageExtension クラスなどの多数の Apex クラスのほか Visualforce ページが表示されます。

ユーザの組織にはページレイアウトやワークフローコンポーネントなどのその他のメタデータも存在しますが、これらは指定条件に該当しないため表示されません。 もしこれらを作業対象に含めたい場合は、指定条件を変更します。プロジェクトの作成時に [Selected metadata components] を選択するか (上の図を参照)、プロジェクトの作成後にプロジェクトを右クリックし、[Force.com]、[Add/Remove Metadata Components] の順にクリックして表示される画面で、対象に含めるメタデータを指定し直すことができます。

image:ide_metadatasubscribes.jpg

これは非常に重要な機能です。作業対象のメタデータ (たとえばページレイアウトなど) を登録しておけば、プロジェクトの更新を行うたびに同期が実行され、前回の更新以降 Force.com プラットフォーム上で加えられた変更内容が自動的に反映されるようになります。

次の図は、接続時に行われる処理の内容を示しています。

image:ide_savetoserver.jpg

たとえば、Developer Edition 組織のトリガ、Apex クラス、Visualforce ページを Force.com IDE のプロジェクトでメタデータとして登録しているとします。ユーザがファイルを編集して保存すると、これらのコンポーネントは Developer Edition 組織との間で自動的に同期されます。ファイルを編集せずに Developer Edition 組織に送信するには、ファイルまたはフォルダを右クリックし、[Force.com]、[Save to Server] の順にクリックします。これによりファイルの内容が同期されます。ファイルまたはフォルダを右クリックして、[Force.com]、[Refresh from Server] の順にクリックすると、Developer Edition 組織の最新の情報にもとづいて Force.com IDE のプロジェクトが更新されます。さらに、同じ右クリックメニューで [Force.com]、[Synchronize with Server] の順にクリックすると、Developer Edition 組織と Force.com IDEプロジェクトの相違を 3 つの基準で比較したビューが表示され、差分を確認できます。

展開

アプリケーションコンポーネントを作成し、開発組織での単体テストが完了したら、テスト、ステージング、公開、運用環境のエンドユーザへの展開などの目的で、別の組織への移行を行うことになります。たとえば、コードの変更を Developer Edition 組織に実装し、特に問題がなければサンドボックス組織にそのコードを展開して、運用環境からコピーしたデータを使ってテストを行います。 Force.com IDE では、このような作業を効率的に進めることができ、かつ、きめ細かな設定が可能です。プロジェクトやプロジェクトのサブセットを組織に展開するには、ファイルまたはフォルダを右クリックし、[Force.com]、[Deploy to Server] の順にクリックします。 これにより、展開先の組織への接続情報を入力するプロンプトが表示されます。情報を入力後、アップロードするメタデータ (トリガとそれに関連したテストクラスなど) を選択します。その後は、展開処理の検証 (テストの実行を含む展開処理のすべてを組織で実行するが変更内容はコミットしない) を行うか、または展開処理を実行して変更を反映させます。何らかの理由で展開に失敗した場合は、エラーや失敗したテストがリスト表示されるため、この情報にもとづいてコードを修正できます。

image:ide_deploy.jpg

Force.com アプリケーションのバージョン管理

Force.com IDE は Eclipse プラットフォームを基盤としており、バージョン管理などの Eclipse の標準機能をサポートします。このバージョン管理機能では、ファイルに対する変更を時系列的に追跡できます。具体的には、Force.com アプリケーションをソースコントロールシステムに保存して、最新バージョンのファイルを過去のさまざまなバージョンと比較したり、変更内容を元に戻したり、開発チーム内でアプリケーションの定義を共有して効率的な共同作業を行ったりすることが可能になります。 Eclipse は、Subclipse というプラグインを使用して、広く普及しているオープンソースである Subversion のサポートを実現しています。Subversion をインストールすると、Subversion のリポジトリからソースコードを取得できるようになり、Force.com の開発者コミュニティが提供する Code Share プロジェクトをはじめとするさまざまな共有資産を利用できるようになります。

まとめ

このドキュメントでは、Force.com アプリケーションの開発、変更、展開に使用できる強力なツールである Force.com IDE について説明しました。Force.com IDE は、データベースやメタデータコンポーネントをリアルタイムに参照できる Schema Explorer、コードの内容の整合性を維持できる自動同期機能、Apex を活用して容易にコードを検証できるテスト環境、他組織への移行をシームレスに行える展開機能、ソースコードの構文強調表示、コード補完機能、Eclipse ベースのバージョン管理などを提供しており、Force.com プラットフォームでの開発において重要な役割を果たすツールであると言えます。

参考資料

  • Developerforce サイト: このサイトで無料の開発者用エディション Developer Edition を入手して、すぐにアプリケーション開発をスタートできます。ドキュメントやフォーラムなどへのリンクも用意されています。
  • Force.com IDE ページ: インストール方法、FAQ など、Force.com IDE に関するあらゆる情報を網羅した Developerforce ページです。
  • An Introduction to Apex (Apex コードの概要) : Apex コードに関する技術ドキュメント。このドキュメントで取り上げられていない詳細な情報が記載されています。
  • Force.com データベースの概要: このドキュメントで取り上げたデータベース、クエリ言語、永続化メカニズムに関する詳細を解説しています。

執筆者について

Jon Plax は、Force.com IDE をはじめとするプラットフォーム開発ツールを担当するセールスフォース・ドットコムのロダクトマネージャです。