none
サイト テンプレートの代替機能 RRS feed

  • 全般的な情報交換

  • サイト プロビジョニングは SharePoint Online を運用する中で、重要な考慮事項となっており、特にカスタマイズに関する要望も多い機能となります。

    サイト プロビジョニングのカスタマイズは、カスタマイズしたサイト テンプレート (wsp ファイル) をご利用いただいていることが多いと思いますが、サイト テンプレートは元々 SharePoint オンプレミス向けに開発された機能であり、SharePoint Online で利用するとこれまでに利用できていたテンプレートが突然利用できなる問題が発生することがあります。

    サイト テンプレートは、テンプレートを作成した時点におけるサイトのサイト コレクション機能、サイト機能、コンテンツ タイプ、サイト列等に大きく依存しますが、SharePoint オンプレミスとは異なり、SharePoint Online は継続的に動作が更新されているため、これらの要素は常に変更される可能性があります。

    データセンターでこれらの要素が変更されると、これまで利用できていたテンプレートからサイトを作成する場合に、テンプレートが保持する情報とデータセンターの情報に不整合が生じ、エラーが発生することがあります。

     

    SharePoint Online はマルチテナント型の SaaS であり、インフラが複数のテナントで共有されているため、データセンターの変更がサイト テンプレートに影響しても、特定のテナントにだけ変更をロールバックすることはできません。

    このため、テンプレートが利用できない状況が発生すると、テンプレートを再作成することや、問題の発生状況に応じたトラブルシュートが必要になりますが、SharePoint Online の運用の性質上、避けられない問題となります。

     

    SharePoint Online ではデータセンターの変更の影響を受けにくいサイト プロビジョニングが推奨されており、以下の様な方法がサイト テンプレートの代替機能として提供されています。

     

    ・サイト デザイン

    PnP プロビジョニング エンジン

    ・リモートプロビジョニング

    公開情報
    サイト プロビジョニング


    サイト デザイン

    サイト デザインはサイトの構成要素を JSON 形式で記述したサイト スクリプトを作成し、テンプレートとして利用する機能であり、データセンターの変更の影響を受け難い様に設計されています。

    詳細は、以下の公開情報をご確認ください。

    公開情報
    SharePoint サイト デザインとサイト スクリプトの概要


    簡単にですが、以下にサイト デザインを利用する手順、動作イメージを紹介します。

    事前準備

    SharePoint Online Management Shell を作業端末にインストールします。インストーラーは以下から入手可能です。

    https://www.microsoft.com/ja-jp/download/details.aspx?id=35588

     

    サイト スクリプトの作成

    JSON 形式でサイトの構成要素を記述し、端末にテキスト ファイルとして保存ます。利用可能なスキーマは以下の公開情報をご確認ください。

    公開情報
    サイト デザイン JSON スキーマ

    以下の例では、”Test Custom List” という名前のカスタム リストを作成し、”Custom Field” という列を追加しています。

    {
        "$schema": "schema.json",
        "actions": [
            {
                "verb": "createSPList",
                "listName": "Test Custom List",
                "templateType": 100,
                "subactions": [
                    {
                        "verb": "SetDescription",
                        "description": "List for Testing"
                    },
                    {
                        "verb": "addSPField",
                        "fieldType": "Text",
                        "displayName": "Custom Field",
                        "isRequired": false,
                        "addToDefaultView": true
                    }
                ]
            }
        ],
        "version": 1
    }

    サイト スクリプト、サイト デザインの登録

    SharePoint Online 管理シェルを起動し、以下のコマンドを実行します。

    # テナントに接続します。
    Connect-SPOService -Url https://contoso-admin.sharepoint.com/
    
    # "C:\work\sitescript.json" に作成したサイト スクリプトをロードし、SharePoint Online に登録します。
    $SiteScript = Get-Content "C:\work\sitescript.json" -Raw
    Add-SPOSiteScript -Title "Test Site Script" -Content $SiteScript -Description "Test Site Script"
    
    # 以下のような結果が返ってきます。Id が登録したサイト スクリプトを識別するための情報となります。
    Id          : 9800aa76-91a6-4b17-9d71-017c14940289
    Title       : Test Site Script
    Description : Test Site Script
    Content     :
    Version     : 0
    
    # 登録したサイト スクリプトをサイト デザインに登録します。
    # SiteScripts パラメータには Add-SPOSiteScript の結果に表示される Id を使用します。
    Add-SPOSiteDesign -Title "Test Site Design" -WebTemplate 64 -SiteScripts "9800aa76-91a6-4b17-9d71-017c14940289"  -Description "Test Site Design"
    
    Id                  : 4e91a661-c718-4d51-8d83-04cef75a1640
    Title               : Test Site Design
    WebTemplate         : 64
    SiteScriptIds       : {9800aa76-91a6-4b17-9d71-017c14940289}
    Description         : Test Site Design
    PreviewImageUrl     :
    PreviewImageAltText :
    IsDefault           : False
    Version             : 1
    DesignPackageId     : 00000000-0000-0000-0000-000000000000

    登録したサイト デザインでサイトを作成する

    以下の様に、サイトの作成時に登録したサイト デザインが選択できることが確認できます。

    作成したサイト デザイン (Test Site Design) でサイトコレクションを作成すると、サイト スクリプトで定義した “Test Custom List” が作成されている様子が確認できます。


    サイト デザインは、以下のサイトで利用が可能ですが、現時点ではクラシック チーム サイト、クラシック発行サイトについては、サイトの作成後に Invoke-SPOSiteDesign コマンドでデザインを適用する方法のみが提供されています。

    •  グループに接続されたチームサイト
    • Office 365 グループに接続されていないチーム サイト
    • コミュニケーションサイト
    • クラシックチーム サイト
    • クラシック発行サイト

    PnP プロビジョニング エンジン

    PnP プロビジョニング エンジンは マイクロソフトが主導するコミュニティで開発されている、オープンソースのサービスです。

    PnP プロビジョニング エンジンは、既存のサイトから構成情報 (サイトの機能、リスト、コンテンツタイプ等) をエクスポートし、対象のサイトにエクスポートされた情報に含まれる情報を適用する動作となります。

    PnP プロビジョニング エンジンはデータセンターの影響を受け難い様に設計されており、 PowerShell.NET Framework 向けに提供されています。複雑なプログラムは不要なため、強力なソリューションとなっています。

    以下に、簡単にですが PowerShell PnP プロビジョニング エンジンを利用する方法を紹介します。

    インストール

    1. Windows PowerShell を管理者権限で実行します。
    2. Install-Module SharePointPnPPowerShellOnline を実行します。
    3. 既にインストールされているモジュールのバージョンアップは Update-Module SharePointPnPPowerShellOnline で可能です。 PnP は積極的に開発されており、モジュールは定期的に更新されているため、定期的に最新版をインストールすることもご検討ください。

    サイトの構成情報をエクスポート

    Windows PowerShell を起動して、以下のコマンドを実行します。本例では、https://contoso.sharepoint.com/sites/export の構成情報が、template.xml に出力されます。

    # 構成をエクスポートするサイトに接続するアカウントの資格情報を入力します。
    $cred = Get-Credential
    
    # サイトに接続します
    Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/export -Credential $cred
    
    # サイトの構成情報を XML ファイルにエクスポートします
    Get-PnPProvisioningTemplate -Out template.xml

    エクスポートした構成情報を別のサイトに適用

    Windows PowerShell を起動して、以下のコマンドを実行します。本例では、https://contoso.sharepoint.com/sites/export からエクスポートした構成情報を https://contoso.sharepoint.com/sites/import に適用します。

    # テンプレートを適用するサイトに接続するアカウントの資格情報を入力します。
    $cred = Get-Credential
    
    # サイトに接続します
    Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/import -Credential $cred
    
    # エクスポートした構成情報をサイトに適用します
    Apply-PnPProvisioningTemplate -Path template.xml

    エクスポートされるサイトの構成情報のスキーマは公開されているため、エクスポートされた情報を元に要素の追加削除を実施することも可能です。

    公開情報
    PnP プロビジョニング スキーマ

    PnP プロビジョニングエンジンは他にも様々なオプションが提供されているので、詳細は公式ページをご確認ください

    公開情報: PnP プロビジョニング エンジンの紹介

    なお、PnP はオープンソース プロジェクトのため、プレミア サポートやその他マイクロソフトのサポートチャネルではサポート サービスがされておりません。他のオープンソース プロジェクトと同様に、コミュニティにてサポートが提供されます。

    PnP の位置付けについては、以下の公開情報をご確認ください。

    公開情報
    SharePoint PnPの位置付け

    リモート プロビジョニング

    リモート プロビジョニングは、SharePoint Online が公開する CSOMREST API などのリモート テクノロジーを利用してサイトのプロビジョニング、カスタマイズの適用を実施する方法です。

    要件に応じたプログラムを開発する必要がありますが、リモート テクノロジーの API が変更されない限りはデータセンターの変更の影響を受け難い方法となります。
    * リモート テクノロジーの API が変更されることは稀です。

    リモート プロビジョニングは Azure WebJob、アドインモデル等、様々な方法を検討することができるため、詳細は割愛させていただきますが、ご参考にしていただける公開情報を幾つか紹介します。

    Asynchronous site collection creation with WebJob

    Provision sites in batches with the add-in model

    まとめ

    現時点においてはサイト テンプレートの廃止予定は無く、今後も当面はご利用いただける予定ですが、本稿でご案内したプロビジョニング方法は SharePoint Online でのご利用において、より安定した方法となります。
    クラウドサービスに適した方法で実装されているため、長期的により安定してご利用いただける方法となりますので、是非ご検討ください。



    2019年4月12日 11:21
    モデレータ