Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

Salesforce モバイル開発のベストプラクティス

公開日: Aug 8, 2025
説明

Salesforce モバイルアプリケーション向けのカスタムページを開発する場合は、いくつかの注意事項があります。この記事では、そのいくつかのシナリオについて説明します。ただし、これは完全なリストではありません。 

 

解決策

Salesforce モバイルアプリケーションのアーキテクチャ

Salesforce for iOS/Android は「ハイブリッド」アプリケーション、つまり、JavaScript、HTML5、Aura フレームワーク (one.app) を使用して作成されたモバイル Web アプリケーションです。このアプリケーションは Salesforce コンテナ (bridge.app) でラップされているため、アプリケーションでネイティブモバイルプラットフォーム (iOS、Android) の機能を利用したり、アプリケーションをデスクトップとモバイル Web ブラウザで提供したり、アプリケーションを App Store または Google Play Store からダウンロードしたりできます。ネイティブアプリケーションと HTML5 アプリケーションの違いについての詳細は、Trailhead の「Get Started with Salesforce Mobile SDK」を参照してください。 

Visualforce のベストプラクティス

1.Visualforce ランディングページおよびパフォーマンス
Visualforce ページをモバイルアプリケーションのナビゲーションメニューの最初のタブとして使用しないようにしてください。複雑なビジネスロジックがアプリケーションのランディングページで実行されると、アプリケーションの読み込み時間が長くなる可能性があります。Visualforce ページをランディングページとして使用する必要がある場合は、次のガイドラインに従ってください。
  • ビジネスロジックの複雑さを最小限に抑えて、より複雑な Visualforce ページへのリンクにはボタンのクリックを使用します。
  • すべての CSS および JavaScript ライブラリを最小化し、ページの遅延読み込みを使用して基本 HTML を最初に読み込んでから追加のカスタムライブラリを読み込みます。
  • モバイルアプリケーションの Visualforce ページのパフォーマンスを改善する方法として、JavaScript Remoting を使用する方法もあります。 
2.Visualforce ページとの間の移動
フルサイトで Visualforce ページとの間を移動する場合、PageReference クラスを使用して、更新された Visualforce ページの新しい URL をインスタンス化するか、2 番目の Visualforce ページに移動できます。Salesforce モバイルアプリケーションでは、新しい URL または 2 番目の Visualforce ページに移動するための PageReference クラスを返すことはサポートされていません。回避策として、 PageReference クラスを使用して「null」を返す return ステートメントを関数に設定し、モバイル対応の sforce.one JavaScript ライブラリ に条件ロジックを追加して、そのロジックを使用して新しいページに移動します。Visualforce ページでナビゲーションの条件ロジックを作成する方法の例は、「モバイルとデスクトップでの Visualforce ページの共有」を参照してください。 
3.Visualforce ページから PDF または Excel ドキュメントを開く
PDF または Excel ドキュメントが組織の [ファイル] タブにすでに保存されている場合、そのファイルを Visualforce ページから開くことができます。ただし、動的に生成される PDF または Excel ファイルは、Visualforce ページに表示できないことがあります。モバイルアプリケーションの WebView にはカスタムコンテンツタイプが表示されないためです。回避策として、Salesforce 組織の [ファイル] タブに PDF または Excel ファイルのコピーを保存するようにコントローラコードをリファクタリングすることをお勧めします。これにより、Visualforce ページで sforce.one ナビゲーションコールを使用し、ファイルのレコード ID を sforce.one.navigateToSObject() コールのパラメータとして使用してファイルに移動できます。詳細は、ナレッジ記事「Develop code to open a PDF with Salesforce for Android and iOS app (Salesforce for Android/iOS アプリケーションを使用して PDF を開くコードを開発する)」を参照してください。 

4.新しい Visualforce ページを開く Window.open コール
フルサイトブラウザでは、新しい Visualforce ページを開く window.open コールがサポートされますが、Salesforce モバイルアプリケーション環境ではこのコールはサポートされません。このコールによりコードが Salesforce モバイルアプリケーションのメインコンテナから離れるためです。これはセキュリティ上の理由で許可されません。ユーザが Salesforce モバイルアプリケーションから Visualforce ページにアクセスする場合は、回避策として、条件ロジックを使用して sforce.one ナビゲーションライブラリ を利用することをお勧めします。Visualforce ページでナビゲーションの条件ロジックを作成する方法の例は、「モバイルとデスクトップでの Visualforce ページの共有」を参照してください。

5.サポートされない Visualforce コンポーネント
Salesforce モバイルアプリケーションでは使用できない Visualforce コンポーネントがいくつかあります。たとえば、<apex> 名前空間を持たない Visualforce タグはサポートされません。サポートはこの問題のトラブルシューティングを行いません。開発者はモバイルアプリケーションのベストプラクティスに一致するようにコードをリファクタリングすることをお勧めします。
 

Lightning コンポーネントのベストプラクティス

1.ランディングページとしての Lightning コンポーネントおよびパフォーマンス
Salesforce モバイルアプリケーションのナビゲーションメニューに特定の Lightning コンポーネントのランディングページがあると、アプリケーション読み込み時間の遅延が長くなることが確認されています。このため、可能であれば Lightning コンポーネントを Salesforce モバイルアプリケーションのランディングページとして使用しないようにしてください。Lightning コンポーネントをランディングページとして使用する必要がある場合は、次のガイドラインに従ってください。

  • ビジネスロジックの複雑さを最小限に抑えて、より複雑な Lightning コンポーネントへのリンクにはボタンクリックを使用することで、アプリケーションへの最初のユーザログイン時に Lightning コンポーネントが読み込まれないようにします。
  • すべての CSS および JavaScript ライブラリを最小化し、ページの遅延読み込みを使用して基本 HTML を最初に読み込んでから追加のカスタムライブラリを読み込みます。

2.Salesforce モバイルアプリケーションでの Lightning ページ
Lightning *アプリケーション* ページは、Salesforce モバイルアプリケーションで唯一サポートされている Lightning ページです。また、Lightning レコードページがモバイルアプリケーションでサポートされるようになりました。モバイルアプリケーションで Lightning コンポーネントの機能を活用する場合は、2 つのオプションを使用できます。

  • Lightning アプリケーションページを作成して、そのページに Lightning コンポーネントを追加します。この種類のページは Lightning Experience フルサイトだけでなく Salesforce モバイルアプリケーションでも機能します。 
  • Lightning コンポーネントをカスタムアクション上書きとして目的のオブジェクトのレコードページに追加します。これにより、レコードページでカスタムアクションをタップできるようになり、そのアクションで Lightning コンポーネントを開始します。この手順は、「アクション上書きとして使用する Aura コンポーネントの作成」を参照してください。 

3.Lightning コンポーネント間を移動するための Force:NavigateToComponent
force:navigateToComponent コールは Summer '18 の時点で廃止され、lightning:navigation イベントに置き換えられました。ユーザが lightning:navigation コールを使用しているシナリオでは、開発者は最初の Lightning コンポーネント内で追加の Lightning コンポーネントを子としてネストすることを強くお勧めします。これにより、子の Lightning コンポーネントが動的に生成されます。手順は、こちらを参照してください。  

4.Lightning Out
Lightning Out  は、Lightning コンポーネントを Visualforce ページの内部に埋め込む方法です。これは、「Lightning.use」ステートメントを Visualforce ページに追加するときに確認できます。開発者は、Salesforce Classic フルサイトの UI で Lightning コンポーネントにアクセスできるようにこの機能を設定することができます。Lightning Out はベータ機能のため、Salesforce モバイルアプリケーションでは使用できません。サポートはベータ機能のデバッグを提供できません。そのため、ユーザは Lightning Out コードを Visualforce ページから削除して、Lightning コンポーネントタブまたはレコードアクション上書きから Lightning コンポーネントを開始するようにコードをリファクタリングすることを強くお勧めします。 

5.サポートされる Lighting コンポーネントおよび SLDS スタイル
モバイル対応のデバイスまたは Salesforce のモバイルアプリケーションからコンポーネントを利用する場合、フルサイト開発で使用可能な一部のコンポーネントはサポートされません。各コンポーネントについての詳細は、「Lighting Component Developer Guide (Lighting コンポーネント開発者ガイド) : Component Reference (コンポーネントリファレンス)」を参照してください。

また、一部の Lightning コンポーネントのドキュメントでは、コンポーネントがモバイルでサポートされないことが明記されません。このドキュメントでは、「 This component inherits styling from ... in the Lightning Design System 」のように記述されている場合があります。このメッセージがある場合は、必ず Lightning Design System ドキュメントへのリンクを確認してください。スタイル設定には、使用する機能に応じて独自の注意事項がある可能性があります。Lightning Design System のドキュメントで「Desktop Only (デスクトップのみ)」と記述されていないことを確認してください。記述されている場合、このスタイルは Salesforce モバイルアプリケーションで使用できないことを意味します。 

Salesforce はこの 2 つのドキュメントを一致させるように取り組んでおり、この「Desktop Only (デスクトップのみ)」の文言をコンポーネントリファレンスにも加えるように推し進めていますが、当面、異なる環境間で表示の問題や異常な動作が発生した場合は、利用しているすべてのコンポーネントおよび継承されたスタイル設定がモバイル環境でサポートされていることが文書化されていることを確認してください。 

6.サポートされない Window.open、window.location、location.href メソッド
この document ベースのコールは、Salesforce モバイルアプリケーション環境の Lightning コンポーネント内では使用できません。コードが Salesforce モバイルアプリケーションのメインコンテナから離れるためです。これは、セキュリティ上の理由で許可されません。これらのコールは当面は機能する場合がありますが、製品チームがこれらを Salesforce モバイルアプリケーションでテストしていないため、アプリケーションが更新されると機能しなくなる可能性があります。代わりに、URL に移動するには、lightning:navigation を standard__webPage 属性と共に使用してください。

関連資料: Salesforce モバイルアプリケーション

ナレッジ記事番号

000384134

 
読み込み中
Salesforce Help | Article