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

API キー オブジェクト
.NET クライアント オブジェクト モデル
参照: 方法: SharePoint で .NET クライアント オブジェクト モデルを使用して投稿を作成および削除し、ソーシャル フィードを取得する
Manager オブジェクト: SocialFeedManager
プライマリ名前空間: Microsoft.SharePoint.Client.Social
その他の重要なオブジェクト: SocialFeedSocialThreadSocialPostSocialPostCreationDataSocialFeedOptionsSocialActor
クラス ライブラリ: Microsoft.SharePoint.Client.UserProfiles.dll
JavaScript オブジェクト モデル
「方法: SharePoint で JavaScript オブジェクト モデルを使用して投稿を作成および削除し、ソーシャル フィードを取得する」を参照してください
Manager オブジェクト: SocialFeedManager
プライマリ名前空間: SP。社会
その他の重要なオブジェクト: SocialFeedSocialThreadSocialPostSocialPostCreationDataSocialFeedOptionsSocialActor
クラス ライブラリ: SP.UserProfiles.js
REST サービス
SharePoint の REST サービスを使用してソーシャル フィードの読み取りと書き込みを行う方法に関するページを参照してください
マネージャー リソース: social.feed (SocialRestFeedManager)
プライマリ名前空間 (OData): SP。社会
その他の重要なリソース: SocialFeed、SocialRestFeed、SocialThread、 SocialRestThread、SocialPost、SocialPostCreationData、 SocialRestPostCreationDataSocialFeedOptions、SocialActor、 SociaRestActor
アクセス ポイント: <siteUri>/_api/social.feed
サーバー オブジェクト モデル
注: サーバー オブジェクト モデルを使用してフィード データにアクセスし、リモートで実行するコードでは、 SPServiceContextScope オブジェクトを使用する必要があります。
Manager オブジェクト: SPSocialFeedManager
プライマリ名前空間: Microsoft.Office.Server.Social
その他のキー オブジェクト: SPSocialFeedSPSocialThreadSPSocialPostSPSocialFeedOptionsSPSocialActor
クラス ライブラリ: Microsoft.Office.Server.UserProfiles.dll

サーバー オブジェクト モデルを使用してフィード コンテンツにアクセスしていて、コードが 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 メソッドを呼び出し、スレッド識別子を渡します。

関連項目