SharePoint でのソーシャル フィードの操作
SharePoint のソーシャル フィードとミニブログの投稿を操作する一般的なプログラミング作業について説明します。
SharePoint のソーシャル フィード操作用の API
SharePoint オンプレミス ファームの場合、対話型のソーシャル フィードは、ユーザーが情報を共有して、ユーザーやコンテンツとのつながりを維持するように設計されています。 ユーザーの個人用サイトの ニュースフィード ページでフィード機能の多くを見ることができます。 フィードには、ミニブログの投稿、会話、最新状況、およびその他の通知を表すスレッドのコレクションが含まれます。
SharePoint は次のような API を提供し、ソーシャル フィードを操作するプログラミングに使用することができます。
マネージ コード用のクライアント オブジェクト モデル
.NET クライアント オブジェクト モデル
Silverlight クライアント オブジェクト モデル
モバイル クライアント オブジェクト モデル
JavaScript オブジェクト モデル
REST (Representational State Transfer) サービス
サーバー オブジェクト モデル
SharePoint 開発のベスト プラクティスとして、できるだけクライアント API を使用してください。 クライアント API にはクライアント オブジェクト モデル、JavaScript オブジェクト モデル、REST サービスが含まれます。 SharePoint の API と使用するタイミングの詳細については、「 SharePoint で適切な API セットを選択する」を参照してください。
各 API にはマネージャー オブジェクトが含まれ、コアのフィード関連作業の実施に使用します。 表 1 は、API のマネージャー オブジェクトとその他の主要なオブジェクト (または REST リソース) および API があるクラス ライブラリ (またはエンドポイント URI) を示します。
注:
Silverlight およびモバイル クライアント オブジェクト モデルは、.NET クライアント オブジェクト モデルと中核的な機能が同じであり、同じ署名を使用するので、テーブル 1 やテーブル 2 には明示されていません。 Silverlight クライアント オブジェクト モデルは、Microsoft.SharePoint.Client.UserProfiles.Silverlight.dll で定義され、モバイル クライアント オブジェクト モデルは、Microsoft.SharePoint.Client.UserProfiles.Phone.dll で定義されています。
表 1. プログラムによるソーシャル フィードの操作に使用される SharePoint API
サーバー オブジェクト モデルを使用してフィード コンテンツにアクセスしていて、コードが SharePoint インスタンスで実行されていない場合 (つまり、拡張機能がアプリケーション サーバーの LAYOUTS フォルダーにインストールされていない場合)、コードで SPServiceContextScope オブジェクトを使用します。 以下のコード例は SPServiceContextScope オブジェクトをコードに組み込む 1 つの例を示します。
using (SPSite site = new SPSite(<siteURL>))
{
using (new Microsoft.SharePoint.SPServiceContextScope(SPServiceContext.GetContext(site)))
{
// code
}
}
SharePoint のソーシャル フィードを操作する一般的なプログラミング作業
表 2 はソーシャル フィードとそれを実行するメンバーを操作する一般的なプログラミング作業を示します。 メンバーは .NET クライアント オブジェクト モデル (CSOM)、JavaScript オブジェクト モデル (JSOM)、REST サービス、サーバー オブジェクト モデル (SSOM) です。
表 2. SharePoint でソーシャル フィードを操作するための一般的なプログラミング タスク用 API
タスク | メンバー |
---|---|
現在のユーザーのコンテキスト内にマネージャー オブジェクトのインスタンスを作成する | CSOM: SocialFeedManager JSOM: SocialFeedManager REST: GET <siteUri>/_api/social.feed SSOM: SPSocialFeedManager |
特定のユーザーのコンテキスト内にマネージャー オブジェクトのインスタンスを作成する | CSOM: 実装されていません JSOM: 実装されていません REST: 実装されていません SSOM: SPSocialFeedManager |
現在のコンテキストのユーザーを取得する | CSOM: 所有者 JSOM: owner REST: GET <siteUri>/_api/social.feed/my SSOM: 所有者 |
現在のユーザーのフィードを取得する (フィードの種類を指定します) |
CSOM: GetFeed JSOM: getFeed REST: GET <siteUri>/_api/social.feed/my/Feed (個人用 feed.md)、 <siteUri>/_api/social.feed/my/News 、 <siteUri>/_api/social.feed/my/TimelineFeed 、または <siteUri>/_api/social.feed/my/Likes SSOM: GetFeed |
特定のユーザーの個人用フィードを取得する | CSOM: GetFeedFor JSOM: getFeedFor REST: GET <siteUri>/_api/social.feed/actor(item='domain\\user')/Feed SSOM: GetFeedFor |
チーム サイトのサイト フィードを取得する (サイト フィードの URL をアクターとして指定します (例: http://<siteCollection>/<teamSite>/newsfeed.aspx)) |
CSOM: GetFeedFor JSOM: getFeedFor REST: GET <siteUri>/_api/social.feed/actor(item=@v)/Feed?@v='http://<siteCollection>/<teamSite>/newsfeed.aspx' SSOM: GetFeedFor |
ルートの投稿を現在のユーザーのフィードに公開する (ターゲットに null を指定します) |
CSOM: CreatePost JSOM: createPost REST: POST <siteUri>/_api/social.feed/my/Feed/Post および要求本文で restCreationData パラメーターを渡すSSOM: CreatePost |
投稿をサイト フィードに公開する (ターゲットとしてサイト フィードの URL を指定します (例: http://<siteCollection>/teamSite>/newsfeed.aspx)) |
CSOM: CreatePost JSOM: createPost REST: POST <siteUri>/_api/social.feed/actor(item=@av)/feed/post/?@av='<teamSiteUri>/newsfeed.aspx' および要求本文で restCreationData パラメーターを渡す (ID パラメーターに null 値を指定)SSOM: CreatePost |
投稿への返信を公開する (対象スレッドの ID を指定) |
CSOM: CreatePost JSOM: createPost REST: POST <siteUri>/_api/social.feed/Post/Reply および要求本文で restCreationData パラメーターを渡すSSOM: CreatePost |
現在のユーザーのフィード内の投稿、返信、スレッドを削除する (ルートの投稿を削除すると、すべてのスレッドが削除されます) | CSOM: DeletePost JSOM: deletePost REST: POST <siteUri>/_api/social.feed/Post/Delete および要求本文で ID パラメーターを渡すSSOM: DeletePost |
ユーザーのフィードからスレッド (ルートの投稿とそれに対するすべての返信) を取得する | CSOM: GetFullThread JSOM: getFullThread REST: POST <siteUri>/_api/social.feed/Post および要求本文で ID パラメーターを渡すSSOM: GetFullThread |
ユーザーに投稿や返信を like (unlike) してもらう | CSOM: LikePost ( UnlikePost ) JSOM: likePost ( unlikePost) REST: POST <siteUri>/_api/social.feed/Post/Like ( <siteUri>/_api/social.feed/Post/Unlike ) と要求本文に ID パラメーターを渡しますSSOM: LikePost ( UnlikePost ) |
投稿の liker をすべて取得する | CSOM: GetAllLikers JSOM: getAllLikers REST: POST <siteUri>/_api/social.feed/Post/Likers および要求本文で ID パラメーターを渡すSSOM: GetAllLikers |
注意しているユーザーの投稿を取得する | CSOM: GetMentions JSOM: getMentions REST: GET <siteUri>/_api/social.feed/my/MentionFeed SSOM: GetMentions |
現在のユーザーの未読注意数を取得する | CSOM: GetUnreadMentionCount JSOM: getUnreadMentionCount REST: GET <siteUri>/_api/social.feed/my/UnreadMentionCount SSOM: GetUnreadMentionCount |
現在のユーザーのフィード内スレッドをロック (ロック解除) する | CSOM: LockThread ( UnlockThread ) JSOM: lockThread ( unlockThread) REST: POST <siteUri>/_api/social.feed/Post/Lock ( <siteUri>/_api/social.feed/Post/Unlock ) と要求本文に ID パラメーターを渡しますSSOM: LockThread ( UnlockThread .md) |
注:
REST の例の domain\user プレースホルダー値は、実際のユーザーのアカウント名に置き換える必要があります。 要求本文で REST パラメーターを渡す方法は、ソーシャル フィード REST API リファレンスの「例」を参照してください。
SharePoint では、ミニブログ投稿のレイアウトやレンダリングを直接カスタマイズする API は提供されません。 SharePoint はデータを提供するのみで、クロスプラットフォームやクロスデバイスのクライアント アプリケーションが、フォーム要素とニーズに適したレイアウトを定義するのを許可します。 SharePoint 開発では、「クライアント側レンダリングを使用して SharePoint アドインのリスト ビューをカスタマイズする」で説明されているように、クライアント側レンダリングで JavaScript オーバーライドを使用できます。
個人用サイト ソーシャル API のフィード タイプの概要
フィード タイプはフィード データのスライスを表します。 現在のユーザーのフィードを取得するとき、次のフィード タイプの 1 つを指定できます。
Personal: ユーザーが作成した投稿や更新が格納されます。 個人用サイトでは、このフィードがユーザーの [ 自己紹介] ページに表示されます。
News: 現在のユーザーや他のユーザーによって生成された投稿や更新情報、ユーザーがフォローしているコンテンツが格納されます。 News フィード タイプを取得する際には、 ByModifiedTime の並べ替え順序オプションを使用して、ユーザーがフォローしている他のユーザーの最新の (キャッシュされた) アクティビティを取得します。 個人用サイトでは、このフィードがユーザーの [ ニュースフィード] ページに表示されます。
Timeline: 現在のユーザーや人々によって作成された投稿や更新、またユーザーがフォローしているコンテンツが格納されます。 Timeline は特定の期間のフィードデータを取得したり、 ByCreatedTime オプション (人々の最大サンプリングを含む) で並べ替えるときに特に有用です。
Likes には、現在のユーザーが [ Like] 属性のフラグを付けた投稿を表す PostReference プロパティのある参照スレッドが含まれます。
Everyone: 現在のユーザーの組織全体から取得したスレッドを格納します。
サーバー、クライアント、および JavaScript オブジェクト モデルには、現在のユーザーのフィードの種類を取得するために使用できる GetFeed メソッドと、指定したユーザーの個人用フィードの種類 (のみ) を取得するために使用できる GetFeedFor メソッドが用意されています。 どちらのメソッドも SocialFeedOptions オブジェクトをパラメーターとして受け取ります。これは、時間ベースの並べ替え順序、日付範囲、および返すスレッドの最大数を指定するために使用します。
注:
REST サービスは、表 2 で示されているような各フィード タイプを取得するための別のリソースを提供します。
スレッドに 2 つ以上の返信がある場合、サーバーは最新の 2 つの返信だけが含まれたスレッドの要約を返します。 (スレッドの要約には IsDigest スレッド属性が適用されています) スレッド内のすべての返信を取得する場合は、フィード マネージャー オブジェクトの GetFullThread メソッドを呼び出し、スレッド識別子を渡します。
関連項目
概念と方法に関する記事
[方法] SharePoint で .NET クライアント オブジェクト モデルを使用して投稿の作成と削除、およびソーシャル フィードの取得を行う
[方法] SharePoint で JavaScript オブジェクト モデルを使用して投稿の作成と削除、およびソーシャル フィードの取得を行う
API リファレンス ドキュメント
Microsoft.SharePoint.Client.Social (クライアント オブジェクト モデル)
SP.Social namespace (JavaScript オブジェクト モデル)
Microsoft.Office.Server.Social (サーバー オブジェクト モデル)