サンドボックス ソリューションを SharePoint アドイン モデルに変換する
サンドボックス ソリューションの SharePoint アドイン モデルへの変換には、既存の拡張機能の分析、新しい SharePoint アドインの設計と開発、および運用環境でのアドインのテストと展開が含まれます。
注:
コードベースのサンドボックス ソリューションは、2014 年以降、非推奨となっています。また、SharePoint Online では、この機能を完全に削除するためのプロセスが始まっています。 コードベースのサンドボックス ソリューションは、SharePoint 2013 および SharePoint 2016 でも非推奨になっています。
SharePoint のコードベースのサンドボックス ソリューション
サンドボックス ソリューションとは、サイト コレクション レベルで SharePoint にカスタマイズを展開するために使用できる、カスタマイズ パッケージのことです。 サンドボックス ソリューションにコードが含まれている場合、そのコードは、SharePoint のサービスとコンテンツにアクセスする API の限定されたセットを使用して、特別に分離されたプロセスで実行されます。
サンドボックス ソリューションには、2 つの種類があります。
- コードベースのサンドボックス ソリューション (パッケージ内にカスタム アセンブリが含まれているもの)
- 宣言的なサンドボックス ソリューション (XML ベースの構成と関連アセットのみが含まれているもの)
宣言的な (XML ベースの) サンドボックス ソリューションは、ユース ケースに応じて、次の種類にさらに分割できます。
- サイト テンプレート: 「テンプレートとしてサイトを保存」機能を使用して既存のサイトから生成されます。
- デザイン パッケージ: デザイン マネージャーを使用して、発行サイトから生成されます。
- カスタム サンドボックス ソリューション: アセットのブランド化などを目的として、Visual Studio で作成されます (アセンブリは含まれていません)。
コードベースのサンドボックス ソリューションは、ユース ケースに応じて、次の種類にさらに分割できます。
- 空のアセンブリを含む宣言型サンドボックス ソリューション
- コード使用した InfoPath フォームを含むサンドボックス ソリューション
- Web パーツ、イベント レシーバー、フィーチャー レシーバーなどのカスタマイズを含むコードベースのサンドボックス ソリューション
- カスタム ワークフロー アクションを含むサンドボックス ソリューション
サンドボックス ソリューションからの移行を計画している場合は、特定のソリューションの機能要件とビジネス要件を評価し、その評価に基づいて今後の設計方針を決定する必要があります。
変換プロセスの計画
サンドボックス ソリューションを SharePoint アドイン モデルに変換する場合は、ユーザーへの影響が最小限に抑えられるようにします。 現在のサンドボックス ソリューションを慎重に分析してから、組織のニーズを満たすように新しい SharePoint 用アドインを設計します。 次に示すプロセスで、変換が成功したことを確認するようお勧めします。
準備状況
以下について調べます。
- SharePoint アドイン モデル、さまざまな種類のアドイン、およびホスティング オプション。 詳細については、「SharePoint アドイン」および「Office 365開発」および「SharePoint PnP ソリューションのガイダンス」を参照してください。
ソリューションの評価
以下のようにして、機能要件とビジネス要件を分析します。
現在の環境に展開済みのサンドボックス ソリューションを特定します。SharePoint PnP チームからオープン ソースとして提供されている次のツールのいずれかを使用することができます。
- SharePoint サンドボックス ソリューション スキャナーまたはビデオ: さまざまなオプションと詳細なインベントリを提供するツール。
- 特定のサンド ボックス ソリューションのインベントリ スクリプト: 基本的なインベントリを提供する PowerShell スクリプト。
ユーザーとともに要件を確認します。 日常業務を実行するために、既存のサンドボックス ソリューションをどのように使用しているかについて、ユーザーに示してもらうことを検討します。
Identifying, documenting, and designing new functionality to include in the new SharePoint アドイン . Consider reviewing your list of new feature requests from your users for additional ideas.
未使用の機能を特定し、新しい SharePoint アドインではその機能を省略することをユーザーと合意します。
ソリューションごとに、SharePoint アドインに置き換えるか、すぐに使用できる機能または代替ソリューションを使用して実装するかを決定します。
ソリューションの計画
以下に基づき、SharePoint アドイン モデルを使用して新しいアプリケーションを設計します。
ソリューションの評価手順で収集した要件。
既存コードの分析。 コード分析の実行中に、削除可能なコード部分を特定することを検討します (コードが使用されなくなった、または要件が変更されたなど)。
アプリケーションの SharePoint アドイン モデル バージョンの開発とテスト
これは通常、変換プロセスにおいて最も時間のかかる手順です。
新しいアドインの展開
展開が安定していることを確認し、適切な情報をユーザーに送信します。
サンドボックス ソリューションのカスタマイズを置き換える
サンドボックス ソリューションに含まれている一般的なカスタマイズと、使用可能な変換オプションを以下に示します。 変換オプションの実例を確認できるように、カスタマイズの種類ごとに詳細が追加されています。
カスタマイズ | 変換オプション |
---|---|
空のアセンブリを含む宣言型のソリューション | Visual Studio のソリューション プロジェクトのプロパティで、アセンブリの作成を制御できます。 詳細については、「Visual Studio で作成したサンドボックス ソリューションからアセンブリ参照を削除する」を参照してください。 重要: SharePoint サンドボックス ソリューション スキャナーを使用すると、スキャン出力に、空のアセンブリが含まれているソリューションが一覧表示され、空のアセンブリが削除された新しいサンドボックス ソリューション パッケージが作成されます。 それで、既存のサンドボックス ソリューションを更新されたソリューションに置き換えるだけで済みます。 |
コードを使用した InfoPath フォーム | InfoPath クライアントからコードが含まれている InfoPath フォームを発行した場合は、実際には、そのフォームがサンドボックス ソリューションとして SharePoint に発行されます。 つまり、フォームのコードは実際には SharePoint のサンドボックス エンジンによって実行されるということです。 コードベースの InfoPath フォームから移行する方法は、実際のビジネスでのユース ケースによって異なります。 アドインとしてのカスタム UI の生成から別のフォーム手法の利用まで、さまざまなオプションがあります。 詳細については、「サンドボックス ソリューションで InfoPath を修正する」を参照してください。 |
Web パーツ | 通常、Web パーツは、アドイン パーツに変換するか、JavaScript 埋め込みパターンを使用して、完全にクライアント側のテクノロジで実装します。 詳細については、以下を参照してください: |
視覚的 Web パーツ | 視覚的 Web パーツは、通常の Web パーツと同様の方法で変換します。 視覚的 Web パーツで使用されているユーザー コントロールを置き換える必要があります。これは、サンドボックス ソリューションのケースでは、ユーザー コントロールがアセンブリの内部に組み込まれているためです。 |
イベント レシーバー | 多くの場合、イベント レシーバーはリモート イベント レシーバーの実装に置き換えることができます。 ただし、リモート イベント レシーバーは、なんらかのプラットフォーム上 (一般的には、特定のプロバイダー ホスト型アドイン上) でホストする必要があります。 詳細については、以下を参照してください: |
フィーチャー レシーバー | 通常、フィーチャー レシーバーは、リモート API ベースの操作 (CSOM または REST を使用して必要なカスタマイズや構成をサイト レベルで適用するなど) に置き換えられます。 必要な API がリモート API (CSOM/REST) に含まれていない場合は、SharePoint UserVoice を使用して、このギャップについて報告してください。 フィーチャー レシーバーは、アクティブ化されたときに、カスタムのマスター ページまたはテーマをサイトに設定するためなどに使用されます。 このような操作は、簡単にリモート コードベースのソリューションに置き換えることができます。また、サイトの構成を制御するための簡単なコマンドを提供する、PnP PowerShell を使用して置き換えることもできます。 |
カスタム ワークフロー アクション | この種のカスタマイズの一般的なコード移行パスは、SharePoint のワークフローを使用するか、Microsoft Flow やサード パーティ製ソリューションなどの代替ソリューションを使用することです。 |
サイトからサンドボックス コードを削除する
既存のサンドボックス ソリューションをサイトで非アクティブにしても、宣言オプションを使用して展開されたアセットやファイルは削除されません。 サンドボックス ソリューションを使用して新しいコードベースの Web パーツを導入した場合、該当する機能はサイトから無効にされます。 つまり、ページは通常どおりに表示されます。そのため、ソリューションを非アクティブにしても、Web パーツなどのコードベースの機能を削除しなければ、エンド ユーザーに直接的な影響はありません。
コードベースのサンドボックス ソリューションのサポートを削除する
コードベースのサンドボックス ソリューションのサポートは、サンド ボックス ソリューション ベースのコードから実行するコードベースの操作を無効にすることにより、SharePoint Online から削除されます。 つまり、ご使用のサンドボックス ソリューションがソリューション ストアで明示的に非アクティブになるわけではありませんが、コードベースの操作すべてが実行できなくなります。 サンドボックス ソリューションは、ソリューション ギャラリーでは引き続きアクティブな状態のままです。 サンドボックス ソリューションを使用して展開された機能は自動的に非アクティブになります。つまり、機能の非アクティブ化やアンインストール ハンドラーに関連付けられたコードが動作しない可能性があります。
サンドボックス ソリューション内のすべての宣言型定義は、SharePoint Online にこの変更が適用された後も引き続き動作します。