次の方法で共有


Microsoft Dynamics CRM 2015 での JavaScript の使用

 

公開日: 2016年11月

対象: Dynamics CRM 2015

Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online 2015 更新プログラム には、JavaScriptを使用する機会が多くあります。Microsoft Dynamics 365 で使用されるすべての JavaScript は、JScript Web リソースを作成することによって追加されます。 このトピックには、JavaScript を使用する開発者のための情報と、Microsoft Dynamics CRM SDK およびそのほかのソースの関連するトピックへのリンクが含まれます。

このトピックの内容

Microsoft Dynamics CRM で Javascript を使用できる領域

jQuery の使用

複数のブラウザーで Javascript を記述する

JavaScript を使用するデータ アクセス

JavaScript プログラミングのベスト プラクティス

Microsoft Dynamics CRM での JavaScript のデバッグ

Microsoft Dynamics CRM で Javascript を使用できる領域

JavaScript を使用して、フォーム スクリプト、コマンド バー (リボン) コマンド、および Web リソースでのアクションを実行できます。

フォーム スクリプト

Microsoft Dynamics 365 の JavaScript の最も一般的な用途は、エンティティ フォーム イベントのイベント ハンドラーとして関数を追加することです。 詳細については、「Microsoft Dynamics CRM 2015 フォームのコードを記述する」を参照してください。

コマンド バー (リボン) コマンド

Microsoft Dynamics 365 コマンド バーをカスタマイズすると、追加するコントロールのコマンドを構成できます。 次のコマンドには、コントロールを有効化するかどうか、コントロールが使用されたときはどのアクションを実行するかを制御するルールが含まれています。 詳細については、「コマンドおよびリボンをカスタマイズする」を参照してください。

Web リソース

Microsoft Dynamics 365 は、URL を使用してアクセスできるファイルのバイナリ表現を保管する組織所有のエンティティを提供します。 このファイルは、Web リソースと呼ばれます。 Web リソースには複数の種類があります。JavaScript ライブラリを表す Web リソースは、JScript Web リソースと呼ばれます。 Web ページ (HTML) Web リソースを使用して、Web サーバーのファイルにするように、JavaScript ライブラリを使用するユーザー インターフェイスを提供できます。 これらのファイルは Microsoft Dynamics 365の一部であるため、これらにアクセスするユーザーはすでに認証されています。 したがって、ユーザーを認証するためにコードを記述せずに Microsoft Dynamics 365 Web サービスを使用できます。 詳細については、「Microsoft Dynamics CRM 2015 の Web リソース」を参照してください。

jQuery の使用

  • HTML Web リソースで jQuery を使用する
    マイクロソフトは、jQuery は優れたクロスブラウザー ライブラリなので、HTML Web リソースとともに jQuery を使用して、ユーザー インターフェイスを提供することをお勧めします。

    HTML Web リソースで、提供されたライブラリを制御します。DOM の操作に対しての制限はありません。 HTML Web リソース内で jQuery を気軽に使用してください。

  • フォーム スクリプトまたはリボン コマンドに jQuery の使用を避ける
    フォーム スクリプトおよびリボン コマンドで jQuery を使用することをお勧めしません。

    jQuery が提供する最大の益は、DOM のクロスブラウザー操作が簡単になることです。 これにより、フォーム スクリプトとリボン コマンドは明示的にサポートされていません。 スクリプトを制限して、フォーム スクリプトとリボン コマンドで使用できる Xrm.PageXrm.Utility ライブラリを使用します。Microsoft Dynamics 365 で有用な jQuery のそのほかの機能を使用し、$.ajaxを使用する機能を含めることにした場合、次のことを考慮します。

    • 最良のパフォーマンスを得るには、必要でない場合はページで jQuery をロードしないでください

    • OData および最近のアプリの SOAP エンドポイントに対するリクエストを実行するのに $.ajax を使用することはサポートされますが、代替手段です。$.ajax を使用する代替策は、ブラウザーの XMLHttpRequest オブジェクトの直接使用することです。 jQuery $.ajax メソッドは、このオブジェクトのラッパーのみです。 ネイティブ XMLHttpRequest オブジェクトを直接使用する場合、jQuery を読み込む必要はありません。

      サンプル: OData エンドポイントと JavaScript を使用した作成、取得、更新、および削除」および「サンプル: OData エンドポイントと JavaScript および jQuery を使用した作成、取得、更新、および削除」にある SDK.REST.js および SDK.JQuery.js サンプル ライブラリを比較します。 どちらも同じ操作を行いますが、SDK.REST.js では、jQuery は必要ではありません。

    • ページに読み込まれる jQuery の各バージョンは、違うバージョンの場合があります。 jQuery のさまざまなバージョンはさまざまな動作をするので、jQuery の複数バージョンが同じページで読み込まれるときは、問題が発生する可能性があります。 これはこの問題を軽減する手法ですが、jQuery ライブラリおよび jQuery に依存する他のライブラリの編集によって異なります。詳細:「Dynamics CRM 2011 と 2013 での jQuery および jQuery UI, jQuery.noConflict()」を参照してください

      注意

      Microsoft Dynamics CRM Online 2015 更新プログラム 1 では、フォーム スクリプトは、アプリケーションによって使用される jQuery インスタンスとは異なるスコープで実行されます。 これは、コードで jQuery.noConflict が使用されようとするときに使用できる jQuery のインスタンスが存在しない場合があることを意味します。 jQuery を使用する必要がある場合は、jQuery.noConflict の使用を試みる前に、最初に、jQuery のインスタンスが存在するかどうかを検出する必要があります。

複数のブラウザーで Javascript を記述する

どのブラウザーが使用されるかわからないので、使用するスクリプトはサポートされているすべてのブラウザーで動作することを確認してください。Internet Explorer と他のブラウザーの重要な違いのほとんどは、HTML および XML DOM の操作と関係しています。 HTML DOM の操作がサポートされていないため、スクリプト ロジックだけがサポートされる操作を実行し、Xrm.Page API を使用している場合、他のブラウザーをサポートするために大きな変更は必要ではありません。Custom Code Validation Tool を使用して、Internet Explorerでのみ動作するコードを識別します。

jQuery などのクロスマッピング ライブラリは、Web リソース開発のための良いソリューションですが、フォーム スクリプトまたはリボン コマンドに必要ありません。詳細:jQuery の使用

そのほかのブラウザーのサポート

Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online 2015 更新プログラムは W3C 標準をサポートするため、アプリケーションは最近のブラウザーを使用したり、それらの標準をサポートする任意のプラットフォームからアクセスできます。 ただし、Microsoft Dynamics 365 は特定のブラウザー セットおよびプラットフォームを使用してのみテストされます。 サポートされるプラットフォームとブラウザーの一覧については、「TechNet: サポートされる Web ブラウザー」を参照してください。

サポートされていないブラウザーまたはブラウザー バージョンを使用しており、サーバー名または URL として組織のサーバー名を入力している場合、電話用 Microsoft Dynamics CRM ページにリダイレクトされます。電話用の CRM ページは、モバイル デバイスで使用できる機能が制限されているブラウザーなどほとんどのブラウザーで適切に動作するはずです。

組織またはソリューションのブラウザーのサポートを制御する

公開されている Web サイトの作成には現代ほとんどのブラウザーをサポートできるようすることが必要ですが、いままで存在したすべてのブラウザーをサポートしている公開されている Web サイトはほとんどありません。 どのブラウザーをサポートできるかを確立する必要があります。 開発とテストのコストを節約するには、多くのビジネス アプリケーションでは、ユーザーが特定のブラウザーを使用していることが必要になります。

Microsoft Dynamics 365 を使用する組織にソリューションを準備している ISV の場合、組織が Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online 2015 更新プログラム でサポートされるブラウザーの 1 つを使用していることを想定します。 ただし、ユーザーが特定のブラウザーを使用する必要がある組織に対してのカスタマイズのみを準備している場合、組織がサポートしていないブラウザーのカスタマイズを開発およびテストする理由はありません。

ネットワーク管理者は、TechNet: ソフトウェア制限ポリシーTechNet: AppLocker の両方またはいずれかを使用して、どのアプリケーションのドメインでの実行またはインストールを許可するかを実施できます。

XML の解析

JavaScript を使用して XML を解析する必要があるさまざまな機会があります。Internet Explorer と他のブラウザを使用して XML を解析する方法に大きな違いがあることに注意してください。Internet Explorer では、Microsoft XML Core Services (MSXML) APIs が使用され、XML ドキュメント オブジェクトと対話します。 これらの APIs は、他のブラウザーでは利用できない W3C DOM へのいくつかの拡張機能が含まれています。 以下は、2 つの例です。

  • Internet Explorer を使用して XML ドキュメントのデータを抽出するのに使用される 2 件の一般的なメソッドは、selectNodesおよび selectSingleNodeです。 これら両方のメソッドは、パラメーターとして XPath 式を使用し、ノードまたはノードの一覧を返します。 他のブラウザーでは、XPath 式を使用する場合、evaluate メソッドを使用します。 代わりに、ドキュメント階層に移動し getElementsByTagNameNS メソッドを使用するのにコードをリファクターできます。

  • Internet Explorer は、text プロパティを使用して、要素のテキストにアクセスします。 他のブラウザーでは、textContent プロパティを使用します。

これらの違いに対処できるようなさまざまな方法があります。 使用する方法は、コードの参照および条件によって異なります。

サンプル: JavaScript を使用したエンティティ メタデータの取得 にある SDK.MetaData.js ライブラリは、helper 関数を使用します。 このライブラリは Web リソース のSOAP エンドポイントを使用して、エンティティおよび属性メタデータを取得します。 このライブラリは、 XMLHttpRequest.responseXML として返される XML ドキュメントからの解析データによって異なります。 このライブラリで、次の helper 関数がライブラリの他の関数全体で追加され使用されました。

これらの helper 関数を使用して、Internet Explorer 専用に記述された既存コードは、次に示すように更新されました。

Internet Explorer 専用の元のコード

複数のブラウザーをサポートできる新しい関数

node.selectNodes(XPathExpr);

SDK.MetaData._selectNodes(node,XpathExpr);

node.selectSingleNode(XPathExpr);

SDK.MetaData._selectSingleNode(node, XPathExpr);

node.selectSingleNode(ElementName).text;

SDK.MetaData._selectSingleNodeText(node, ElementName);

node.text

SDK.MetaData._getNodeText(node);

JavaScript を使用するデータ アクセス

JavaScript を使用してデータにアクセスするアプリケーションで使用する 2 の Web サービスがあります。

OData (REST) エンドポイント

以前は "Web リソース用 REST エンドポイント" として知られていました。OData エンドポイントを使用すると、URI (Uniform Resource Identifier) ベースの Web サービスで HTTP リクエストを実行できます。 "RESTful" Web サービスは、プログラミングが簡単なので人気があります。

OData エンドポイントの現在の実装は、操作の作成、取得、更新、および削除に制限されています。サンプル: OData エンドポイントと JavaScript を使用した作成、取得、更新、および削除 には、OData エンドポイントの使用をさらに簡単にする再利用可能ライブラリの例を提供する SDK.REST.js ライブラリが含まれています。

OData エンドポイントの利点の 1 つは、OData プロトコル を実装していることで、データをクエリおよび更新する方法を提供します。JavaScriptを使用する場合、通常 JavaScript Object Notation (JSON) 形式のオブジェクトを取得します。 これにより結果が扱いやすくなります。OData エンドポイントの主な制限は、IOrganizationService.Execute メソットを使用してメッセージ(RequestResponse クラス) を実行できないことです。 Web リソースの SOAP エンドポイントを使用して、メッセージを実行します。

詳細については、「Web リソースで OData エンドポイントを使用する」を参照してください。

SOAP エンドポイント

SOAP エンドポイントによりメッセージを実行できます。REST エンドポイントでは実行できません。 この Web サービスの Create、Retrieve、Update、Delete および RetrieveMultiple メソッドを呼び出すこともできますが、REST エンドポイントを使用するほど簡単ではありません。

Microsoft Dynamics 365 は SOAP エンドポイントの使用を容易にする JavaScript ライブラリを提供していません。SOAP エンドポイントを使用すると、リクエストを定義する XML を含む http リクエストを投稿する必要があり、応答で返された XML を解析する必要があります。

Sdk.Soap.js サンプル ライブラリと他の関連のサンプルでは、SOAP エンドポイントを使用するライブラリの例を示します。

SDK は、SoapLogger と呼ばれるMicrosoft Visual C# のソリューションを提供します。それにより、Visual C# を使って Microsoft Dynamics 365 Web サービスで操作を実行する際に送受信される XML をキャプチャできます。 この情報を使用して、自分自身の JavaScript ライブラリを作成することができます。

詳細については、「Web リソースで最近のアプリケーションのための最近のアプリの SOAP エンドポイントを使用する」を参照してください。

JavaScript プログラミングのベスト プラクティス

以下のセクションは Microsoft Dynamics 365で JavaScript を使用する際のベスト プラクティスについて説明します。

サポートされないメソッドを使用しない

インターネットでは、サポートされていないメソッドを使用するさまざまな例や提案があります。 これらは、ページ コントロールに文書化されていない内部関数を活用するものもあります。 これらのメソッドは機能するかもしれませんが、サポートされていないため Microsoft Dynamics 365の将来のバージョンでも引き続き使用できるとは期待できません。

Custom Code Validation Tool を使用して、サポートされていないメソッドを使用しているコードを特定します。

HTML Web リソース ユーザー インターフェイスにクロスブラウザー Javascript ライブラリを使用する

jQuery などのクロスブラウザー JavaScript ライブラリには、複数のブラウザーをサポートする HTML Web リソースを開発する際は多くの利点があります。jQuery などの JavaScript ライブラリは、Microsoft Dynamics 365 でサポートされるすべてのブラウザーに統合開発環境を提供します。 これらの機能は HTML Web リソースを使用してユーザー インターフェイスを提供するのに適しています。jQuery などの JavaScript ライブラリは、ドキュメント オブジェクト モデル (DOM) と対話する一貫性のある方法を提供します。

フォーム スクリプトまたはコマンドで jQuery を使用しない

マイクロソフトはアプリケーション内のどのページでも jQuery を使用することをお勧めしませんし、サポートもしません。 これには、フォーム スクリプトおよびリボン コマンドが含まれています。詳細:jQuery の使用。

コンテンツ デリバリ ネットワーク (CDN) ライブラリの制限を認識する

コンテンツ デリバリ ネットワーク (CDN) の JavaScript ライブラリは、公開されている Web サイトに多くの利点を提供します。 これらのライブラリはインターネットでホストされるため、ライブラリのコンテンツを含む Web リソースを作成する必要はありません。Microsoft Dynamics 365 では、CDN JavaScript ライブラリを使用する前に、以下の問題を考慮する必要があります。

  • オフライン アクセス対応 Microsoft Office Outlook 用 Microsoft Dynamics CRM クライアントのユーザーは、オフライン作業中にインターネット接続がない状態で作業できます。JavaScript ライブラリにインターネット接続が必要な場合、コードは失敗します。

  • 組織によっては、従業員のインターネット アクセスを制限することがあります。 ネットワークを CDN ライブラリのサイトにアクセスできるように構成しないと、それらの組織において、コードが失敗することがあります。

CDN ライブラリの使用の代替方法は、ライブラリのコンテンツと共にスクリプト (JavaScript) Web リソースを作成することです。 Web リソースは組織所有のエンティティなので、オフライン アクセス対応 Outlook 用 Microsoft Dynamics CRM ユーザーがオフラインのときに同期されます。 これらの Web リソースはアプリケーションの一部になるため、組織がインターネットへのアクセスを制限しても妨げられません。

複数のブラウザーに関数を記述する際、機能検出を使用する

jQuery のようなクロスブラウザー ライブラリを使用する場合でも、ブラウザー間の違いを認識する必要があります。navigator.useragent プロパティのクエリに使用されるブラウザーを検出できます。 これでは、ブラウザーの検出と呼ばれます。 ブラウザーの検出は、新しいバージョンのブラウザーにどんな機能があるかを検討することはできないので、通常適切な方法ではありません。 また、一部のブラウザーには navigation.useragent プロパティを変更する機能があるので、別のブラウザーのように見えます。

機能検出が推奨されている方法です。 利用できる機能を検出することで、どのブラウザーを使用しているかわからなくても、サポートするブラウザーのコード パスを作成できます。 機能検出に関する詳細については、「ブラウザーではなく機能を検出する方法」を参照してください。

DOM にアクセスしない

JavaScript デベロッパは、コードのドキュメント オブジェクト モデル (DOM) 要素との対話に使用されます。window.getElementById メソッドまたは jQuery ライブラリを使用する場合があります。HTML Web リソースでこれらの方法を自由に使用できますが、Microsoft Dynamics 365 アプリケーション ページまたはエンティティ フォームの要素にアクセスするためにはサポートされていません。 代わりに、エンティティ フォーム要素へのアクセスは、Xrm.Page オブジェクト モデルを通して公開されます。Microsoft Dynamics 365 開発チームが、要素の ID の値を含むページの構成方法を変更する権利を保持します。それで、Xrm.Page オブジェクト モデルを使用することで、コードがページの実装方法の変更から保護されます。 詳細については、「Xrm.Page オブジェクト モデルの使用」を参照してください。

JavaScript 関数に一意の名前を指定する

HTML ページの開発者が一人しかいない場合、使用する JavaScript 関数名を簡単に管理できます。Microsoft Dynamics 365で、他のソリューションは JavaScript 関数を関数が使用されているページに追加する場合があります。

ページに同じ名前の 2 種類の JavaScript 関数がある場合は、最初に定義された関数は 2 番目の関数で上書きされます。 したがって JavaScript 関数に一意の名前を定義してください。 詳細については、「スクリプト ライブラリの作成」を参照してください。

非同期データ アクセス方法を使用する

Web リソースに REST または SOAP エンドポイントを使用する Microsoft Dynamics 365 Web サービスを使用してデータへアクセスするときに、同期的に実行するように構成されている XMLHttpRequest を常に使用します。 なぜならば、ブラウザーは単一スレッドで作動するからです。 そのスレッドが長時間のプロセスを同期して実行するのに使用されている場合、ブラウザーは応答を停止します。

Microsoft Dynamics CRM での JavaScript のデバッグ

各ブラウザーは特定の種類のデバッグ拡張機能を提供します。Internet Explorer は、Microsoft Dynamics 365 でスクリプトをデバッグするのに使用できる開発者ツールを提供します。Internet Explorerを使用してページを表示しているときに、Internet Explorer 開発者ツールは F12 を押して開くことができます。 詳細については、「F12開発者ツールの使用」を参照してください。

Google Chromeで、F12 を押して開発者ツールを開きます。Firebug は、Mozilla Firefox を使用する Web 開発の一般的なブラウザー拡張機能です。Apple Safariでは、最初に [高度な設定][メニュー バー メニューに開発メニューを表示する] を選択する必要があります。 次に [開発] メニューから [Web 検査の表示] を選択できます。

Microsoft Visual Studio を使用することもできます。 詳細については、「Microsoft Dynamics CRM 2011 での JScript のデバッグの方法」を参照してください。

Microsoft Dynamics 365で JavaScript ライブラリを使用すると、ライブラリはさまざまなライブラリを含むページに追加されます。 デバッグ環境では、自分の特定なライブラリを分離することが困難な場合があります。Internet Explorerでデバッグ ツールを使用している場合、[スクリプト] タブで、使用できるスクリプトを展開し、次に示す new_debugging_example_script.js Web リソースなど JavaScript Web リソース名に対応する名前を持つスクリプトを見つけます。

JavaScript のデバッグ

さまざまなブラウザーのデバッグ ツールは、同様の機能を備えています。 ライブラリを見つけたら、ブレーク ポイントを設定し、コードが実行する原因となるイベントを再作成します。

コンソールにメッセージを作成する

JavaScript をデバッグするときに window.alert メソッド を使用することは、アプリケーションのコードをトラブルシューティングする一般的な方法です。 最近のすべてのブラウザーでは、デバッグ ツールへ簡単にアクセスできますが、デバッグしているアプリケーションを他の人が使用している場合、ベスト プラクティスではありません。

代わりにコンソールにメッセージを記述することを検討してください。 次に、ライブラリに追加できる小さな関数を示します。それにより、コンソールを開いたときに表示するメッセージを送信するために使用できます。

function writeToConsole(message)
{
 if (typeof console != 'undefined') {
  console.log(message);
 }
}

alert メソッドとは異なり、この関数を使用するコードを削除することを忘れた場合は、アプリケーションを使用するユーザーにはメッセージが表示されません。

関連項目

クライアント アプリケーション拡張機能の記述
Web リソースでの Web サービス データの使用 (OData および最近のアプリの SOAP エンドポイント)
アプリケーションとサーバー拡張機能の作成
Microsoft Dynamics CRM 2015 フォームのコードを記述する
コマンドおよびリボンをカスタマイズする
Microsoft Dynamics CRM 2015 の Web リソース
Web リソースで OData エンドポイントを使用する
Web リソースで最近のアプリケーションのための最近のアプリの SOAP エンドポイントを使用する
Xrm.Page オブジェクト モデルの使用

© 2017 Microsoft. All rights reserved. 著作権