マイクロソフトは、2024年5月21日にSharePoint Embeddedをリリースした。SharePoint Embeddedは、Microsoft 365のコラボレーション機能をフルに活用するアプリを構築するためのヘッドレスAPIである。この機能は、特にアプリを構築する独立系ソフトウェアベンダー(ISV)をターゲットにしている。
長年、開発者が豊富なSharePointのエンタープライズコンテンツ管理(ECM)機能を使用するソリューションを構築したい場合、SharePointでホストするか(SPFxのようなクライアント側のコードフレームワークを使用する)、GraphのようなM365 APIを使用し、どこか別の場所、例えばAzure Cloudでソリューションをホストする必要があった。しかし、後者のアプローチであっても、十分な権限を持つユーザーはSharePoint UIでソリューションドキュメントにアクセスでき、意図した機能を壊してしまう可能性がある。
SharePoint Embeddedは、M365テナント内の隔離されたドキュメントストレージパーティションであり、レート制限されたGraph APIコールによってのみアクセスできる。それは、顧客またはアプリプロバイダのテナントの残りの部分から独立した構成を持っている。通常のMicrosoft Entra ID認証フレームワークは、セキュリティとアクセス制御を保証する。
内部では、パーティションはファイルストレージコンテナと呼ばれ、Microsoft 365の顧客テナント内で作成・管理できる新しいタイプのストレージである。SharePoint Embeddedを使用するアプリは、特定のコンテナタイプに関連付けられ、そのタイプのコンテナのみを作成・使用できるため、厳密なデータ分離が保証される。アプリのオーナーテナントはコンテナタイプを作成でき、(ドキュメントが存在する)コンシューマテナントはテナントにコンテナタイプを登録し、適切な権限を与えることができる。
SharePoint EmbeddedにはSharePoint UIがないため、アプリがUIを提供する必要がある。これにより、特定の目的に最適化された、非常に合理的なコンテンツ・インタラクション・フローを構築できる。例えば、請求書や作業明細書を送るベンダーは、SharePoint Embeddedの上に構築されたアプリを使える。実際、マイクロソフトはSharePoint Embeddedを使って、LoopやDesignerのようなM365の専門アプリを構築している。
コンテナにアクセスするコードは、fileStorage/containers
と呼ばれる新しいMicrosoft Graphエンドポイントを使用する。
const graphResponse = await graphClient.api(`storage/fileStorage/containers?$filter=containerTypeId eq ${process.env["CONTAINER_TYPE_ID"]}`).get();
コンテナIDは、Microsoft Graphが抽象化したドキュメントストレージであるドライブのIDでもある。開発者は、ドライブのコンテンツにアクセスするために、標準のGraph APIを使用できる。
const driveId = props.container.id;const driveItemId = folderId || 'root'; // フォルダを取得するか、デフォルトの 'root' フォルダを取得する。// 指定されたフォルダのコンテナの内容を取得するconst graphResponse = await graphClient.api(`/drives/${driveId}/items/${driveItemId}/children`).get();
マイクロソフトは開発者に、SharePoint Embeddedアプリを作成・管理するためのVisual Studio Code用拡張機能、Microsoft Learnのトレーニング教材、サーバーサイドとSPAアプリのコードサンプルを提供している。
SharePoint Embeddedアプリによって使用されるコンテナパーティションは、顧客のM365ライセンスにはカウントされない。これらは、所有するテナント内のコンテナタイプにリンクされた別のAzure従量課金モデルを使用する。つまり、アプリ開発者やベンダーは、顧客ではなく、SharePoint EmbeddedへのAPI呼び出しの料金を支払う。近い将来、このコストを消費テナントに渡すオプションが追加される予定だ。
消費は、ストレージ、APIトランザクション、エグレス(ダウンロード)データの3つのサービスメーターを通じて請求される。特筆すべきは、OfficeのデスクトップやウェブアプリでSharePoint Embeddedからドキュメントを開くことは、課金の対象外となることだ。マイクロソフトは、開発者がAzureの課金プロファイルなしで始められるように、試用版のコンテナタイプを提供している。