さて、予告通りの Yammer API ネタを書いてみます。
何故、急に Yammer ネタなのかというと、休み中で会社に置いてある検証環境に触れないので、触らなくても書けるネタということで、これになりました・・・ (苦笑い)

- 開発者向けコミュニティ
- Yammer REST API
- ブラウザでの Yammer ページでの自分の所属するグループ一覧
昔、グローバルな開発者向けコミュニティとしては、Yammer の外部ネットワークで Yammer Developer Network (YDN) というのがあったのですが、私が前職を退職して Yammer から遠ざかっている間にクローズになっていました。
こちらによると、昨年の 9月末に終了とのこと。
・Yammer Developer Network (YDN) is shutting down
http://nubo.eu/news/yammernews/plamber/yammer-developer-network-ydn-is-shutting-down/
現在、その代わりとして、Office 365 Community という Yammer 外部ネットワークがあって、この中の「O365 Dev Yammer Apps」というグループがあります。
・Office 365 Community
https://www.yammer.com/itpronetwork
参加申請を行うと、ほどなく管理者から招待されるので、承諾すれば参加が出来ます。
私は Yammer Developer Network にて、今回書くネタでほんの少し貢献していたのですが、残念ながらそれも参照することが出来ず・・・
ここでは、特に REST API については触れません。 簡単に言えば、HTTP 仕様に準拠した Web サービスということでしょうか。
なお、Yammer の REST API については、こちらに簡単なリファレンスがあります。
・REST API
https://developer.yammer.com/restapi/
Yammer REST API では、JSON または XML 形式のエンドポイントが利用可能です。
例えば、アクセスしているユーザー (つまり、自分の情報) については、ブラウザ上で以下の URL をリクエストすると、結果が XML で返って来ます。
https://www.yammer.com/api/v1/users/current.xml

JSON 形式で返して欲しい場合は、以下のような URL になります。
https://www.yammer.com/api/v1/users/current.json
つまり、拡張子を XML にすると XML 形式で、拡張子を JSON にすると JSON 形式で返ってくる訳です。
なお、拡張子を省略すると、推奨されている JSON 形式で返されます。
こちらの結果には、/response/web-preferences/home-tabs/home-tab の 9番目のノードから、自分の所属するグループが展開されています。
但し、グループに関する情報は最低限で、名前、グループID、URL、プライベートグループかどうかのフラグ位しか含まれていません。
詳細のグループ情報が欲しい場合は、以下の URL をリクエストします。
https://www.yammer.com/api/v1/groups.xml
こちらで、グループID、名前、説明、プライベートグループかどうかのフラグ、URL、Web URL、Office 365 URL、グループアイコン、グループ作成日、グループ作成者ID、メンバー数、最終更新日などが分かります。
つまり、これらの2つのリソースを使うことで、自分の所属するグループに関する情報が得られるわけです。
ところが、実は、1つのリクエストで、自分の所属するグループに関する情報を得る方法があります。
それが、こちらの URL です。
https://www.yammer.com/api/v1/groups.xml?mine=1
ちなみに、これ、「グループを参照」で「他のグループを参照」を選択して、「グループ」ページで、「マイ グループ」タブを選択した時の内容と同じものです。
なお、前者はグループが文字コード順となっていますが、後者は、グループが参加メンバーが多い順となっています。
ところで、ブラウザで Yammer ページを参照した時に、画面左側に自分が参加しているグループの一覧が表示されていると思います。

これは、スマートフォーンでの Yammer アプリで「マイ グループ」を見た時と同じはずですが、Yammer では参照頻度に応じて、こちらのグループ一覧の順序が最適化されています。
Web ベースの場合、最大 20 グループまでが表示されていると思います。
実は、これを REST API で取得する方法があります。
それが、こちらの URL です。
https://www.yammer.com/api/v1/networks/current.json?exclude_own_messages_from_unseen=true&include_group_counts=true
残念ながら、こちらは XML 形式での取得が出来ないようで、JSON 形式でのリクエストとなります。
返って来た JSON の中で、is_primary が true のネットワーク構造の中に、group_counts の配下にグループIDと未読件数がペアで、かつ、Yammer ページでのグループ一覧の順序で展開されています。
副産物?として、グループ毎の未読件数が参照出来ます。
こちらの情報はリファレンスにも記載がありません。
では、どうやって知ったのか?
Yammer ページをアクセスした際の HTTP のリクエスト状況を IE の「F12 開発者ツール」でトレースして解析した結果です (苦笑い)
つまり、Yammer ページも REST API を利用して JavaScript コードにより表示内容を作成している訳ですね。
恐らく、Yammer アプリについても、同様に、こちらの REST API を利用していると思われます。
次回は、実際に JavaScript の中で Yammer REST API を利用する場合について、解説したいと思います。
Kokuho Hi (Sonorite / SharePoint Technology Center)