SharePoint Server 2013 の個人用サイトを管理者が作成する方法

こんにちは。
SharePoint サポート チームの成田です。

SharePoint Server 2013 ではソーシャル機能が大幅に強化されていますが、本ブログではソーシャル機能を利用する上で前提となる個人用サイトの作成について触れたいと思います。
個人用サイトが作成されるタイミングは、ユーザーがサイトページ上の [ニュース フィード] やユーザー名のドロップダウンの [プロファイル] をクリックした場合など、初めて個人用サイトのホスト サイトコレクションにアクセスしたときです。

個人用サイトの作成がリクエストされると、毎分実行されるタイマージョブ [個人用サイト インスタンス化のインタラクティブな要求のキュー] によってリクエストされたユーザーの個人用サイトが作成され始めます。
この時、ユーザーは個人用サイトの作成が完了するまで下記のような画面が表示されます。

数分待ち、個人用サイトの作成が完了すると、下記のようにニュースフィードなどの機能が使用可能になります。

個人用サイトは、上記のように、ユーザーが個人用サイトのホストサイトコレクションに最初にアクセスしたタイミングで作成されることが基本となりますが、本ブログでは管理者があらかじめ個人用サイトを作成する方法を紹介します。あらかじめ個人用サイトを作成しておくことで、ユーザーが初めて個人用サイトのホストサイト コレクションにアクセスした瞬間からニュース フィードなどの機能を利用できるようになります。

管理者が個人用サイトを作成する方法
============================
管理者が個人用サイトを作成するには以下のメソッドを利用します。

UserProfile.CreatePersonalSite メソッド (Microsoft.Office.Server.UserProfiles)
https://msdn.microsoft.com/ja-jp/library/microsoft.office.server.userprofiles.userprofile.createpersonalsite.aspx

上記のメソッドを、Visual Studio や PowerShell から実行できます。
※個人用サイトを作成する前に、ユーザーのプロファイルが事前に作成されている必要がありますので、手動でプロファイルを追加するか、プロファイル同期によってあらかじめプロファイルが存在することを確認してください。
※以下に紹介するコードやスクリプトはサンプルですので、実行環境に合わせて作成し、実行前に十分検証してください。

1. Visual Studio を使用してプログラムを記述する場合は、以下のようなコードを記述します。
-----
SPSite site = new SPSite(https://sharepoint/mysitehost);
SPServiceContext serviceContext = SPServiceContext.GetContext(site);
UserProfileManager profileManager = new UserProfileManager(serviceContext);
UserProfile profile = profileManager.GetUserProfile("domain\\username");
profile.CreatePersonalSite();
-----
https://sharepoint/mysitehost は個人用サイトのホスト サイト コレクションを指定します
※domain\\username は個人用サイトを作成するユーザー名を指定します

2. PowerShell から UserProfile.CreatePersonalSite メソッドを利用するには以下の手順を実施します。

1) 任意の SharePoint サーバーに管理者アカウントでログオンします。
2) [スタート] メニューから [SharePoint 2013 管理シェル] を管理者モードで起動します。
3) 以下のようにコマンドを実行します。
-----
$mysite = Get-SPSite https://sharepoint/mysitehost
$user = "domain\username"
$context = [Microsoft.Office.Server.ServerContext]::GetContext($mysite)
$upm =  New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$prof = $upm.GetUserProfile($user)
$prof.CreatePersonalSite()
-----
https://sharepoint/mysitehost は個人用サイトのホスト サイト コレクションを指定します
※domain\username は個人用サイトを作成するユーザー名を指定します

上記の例では個人用サイトを 1 ユーザーずつ作成していますが、必要に応じてユーザー プロファイルを列挙して複数のプロファイルを作成することも可能です。
例えば以下のブログでは複数の個人用サイトを一気に作成する方法が紹介されています。
https://msftplayground.com/2010/09/provisioning-my-sites-sharepoint-2010/

全プロファイルの個人用サイトを作成するということは、プロファイル数分のサイトコレクションを作成するということになるので、作成時には WFE や DB サーバーにある程度の負荷をかけることにご注意ください。(実際の負荷についてはいくつかの個人用サイトを作成してご確認ください)
大量のプロファイルが存在する場合には複数回に分けて計画的に作成する工夫も必要になるかもしれません。

いかがでしたでしょうか。
ソーシャル機能が大幅に向上した SharePoint 2013 をぜひお試しください!