はじめに
前回 から少し間が空いてしまいましたが、前回の直後にWindows 8 Consumer Preview、Visual Studio 11 Betaなどが公開されています。新しいWindowsと開発環境はもう体験しましたか? SkyDriveのMetro style appなどLiveサービスと連携したアプリや機能も使えるようになっています。
先月にアナウンスのあったエクスプローラと統合したSkyDriveのクライアントアプリは、まだ公開されていません。楽しみにもう少し待っていましょう。
さて、これらのリリースに併せてLive SDKも新しく、Version 5.1のPreview版が公開されています。今回は、前回に引き続いてSkyDriveの操作と、新しいSDKの内容を簡単に紹介します。Live SDKやWindows 8などは、開発者向けダウンロード から手に入ります。
前回、予告していたアプリ開発は次回紹介します。
Live SDK 5.1 Preview
Live SDKのVersion 5.1の内容を簡単にみてみましょう。現在はまだPreview版で、REST APIの呼び出しはhttps://apis.live.net/v5.0にアクセスする代わりに、https://beta.apis.live.net/v5.0にアクセスします。また、一部の機能はまだ反映されていないようです。
REST API
REST APIで新しくサポートされた機能は次の通りです。
アプリのロゴの変更
ユーザーアカウントのメールアドレスの取得
SkyDriveの容量の取得
Audioオブジェクトの詳細な情報の取得
Photoオブジェクトの経緯度情報の取得
SkyDrive上のOffice OneNote ノートブックを開くリンクの取得
SkyDriveのドキュメントフォルダなど既定のフォルダーにFolder IDに代わってわかりやすいパスでのアクセス
SkyDriveのファイルのコメントやタグの作成および削除
以上のようにSkyDriveのアップデートが目立ちます。前回紹介したコメントとタグは、読み取りだけでなく作成・削除ができるようになります。この後にSkyDrive関連の新しい機能をピックアップして紹介します。
Messenger
この連載では紹介していませんが、Live Messengerのインスタントメッセージング機能が、XMPPというオープンなプロトコルで使えます。そのサポートするプロトコルの内容が更新されています。
Metro style app
Live SDKでは、Windows PhoneおよびWindows 8の新しいアプリ形式「Metro style app」用のAPIが用意されています。こちらも連載では紹介していませんが、Windows 8など最新の環境に関連してアップデートがなされています。
SkyDriveの容量の取得
それでは、REST APIのうち、SkyDrive関連の内容をみてみましょう。最初は、SkyDriveの使用している・空いているサイズを取得します。
SkyDriveの容量は次のURLにHTTP GETアクセスすると取得できます。
https://beta.apis.live.net/v5.0/me/skydrive/quota?access_token=ACCESS_TOKEN
※URLのパスのmeの部分は、User IDを直接指定もできます。
結果のJSONデータは次のように合計と利用可能なサイズ(Byte単位)が含まれています。
{
"quota" : 26843545600 ,
"available" : 26602337349
}
現在は、ひとり25GB(26,843,545,600Byte)です。今後は、容量をアップするサービスも予定されています。
写真と音楽ファイル
第50回 に紹介した写真のPhoto オブジェクトと音楽のAudio オブジェクトですが、新しい属性が増えています。
経緯度の取得
写真に経緯度情報が含まれている場合、SkyDriveのサイトでは図1 のように地図上の場所が表示されます。
図1 場所の表示
Photoオブジェクトには、経緯度情報を表すlocation プロパティが追加されていますので、連携したアプリからも図のような地図上に表示するといったこともできるようになりました。
Fileオブジェクトの該当部分のJSONデータは次のようになります。
"location" : {
"latitude" : 47.92059 ,
"longitude" : - 122.2891
}
このlocationプロパティは、ファイルが共有されていない場合にのみ含まれています。
音楽情報の取得
これまでREST APIで、音楽ファイルは通常のファイルと同じ扱いでしたが、音楽特有の情報が取得できるようになっています。
追加されたAudioオブジェクトのプロパティは次の通りです。
プロパティ
型
R/W
説明
title
string
RW
タイトル
artist
string
RW
アーティスト名
album
string
RW
アルバム名
album_artist
string
RW
アルバムのアーティスト名
genre
string
RW
ジャンル
duration
integer
R
再生時間(ミリ秒)
picture
string
R
SkyDrive上のオーディオの画像のURL
※RWは読み書き可能。Rは読み取り専用のプロパティです。
残念ながら、SkyDriveのサイトで参照できる情報より、年や作曲者など取得できる内容がまだ若干少ないです。
OneNoteノートブックの参照
Office OneNoteはSkyDriveと連携し、ノートブックをSkyDriveに保存できます。またOneNote Web App(図2 )を使えば、Webブラウザーでノートブックの編集もできます。
図2 OneNote Web App
このノートブックのファイルがSkyDrive上にある場合、ファイルを参照すると少し特別扱いになっています。
Fileオブジェクトのtype プロパティの値はnotebook になり、link プロパティの値は、直接OneNote Web Appで開くURLになっています。
ノートブックの表すFileオブジェクトのJSONデータは、次のようになります。
{
"id" : "file.xxxxx" ,
"from" : {
"name" : "梓 中野" ,
"id" : "xxxxx"
},
"name" : "Notebook1" ,
"description" : null ,
"parent_id" : "folder.xxxx" ,
"size" : 10286 ,
"comments_count" : 0 ,
"comments_enabled" : false ,
"is_embeddable" : true ,
"link" : "https://skydrive.live.com/redir.aspx?..." ,
"type" : "notebook" ,
"shared_with" : {
"access" : "Just me"
},
"created_time" : "2011-05-10T15:00:00+0000" ,
"updated_time" : "2012-03-25T18:00:00+0000"
}
ほかのFileオブジェクトと異なる点は、upload_locationおよびsourceプロパティが含まれていません。
既定のフォルダーのパス
Windows Phoneで撮影した写真がアップロードされる「カメラロール」フォルダーや、ドキュメントやピクチャーフォルダーなどいくつかの既定のフォルダーに、FolderオブジェクトのIDを指定する代わりに、わかりやすいパスを指定してアクセスできるようになっています。対象のフォルダーは次の通りです。
SkyDrive camera rollフォルダー
USER_ID /skydrive/camera_roll
Documentsフォルダー
USER_ID /skydrive/my_documents
Picturesフォルダー
USER_ID /skydrive/my_photos
Publicフォルダー
USER_ID /skydrive/public_documents
USER_IDは、UserオブジェクトのIDまたはmeを指定して、たとえばカメラロールのファイル一覧を取得するには次のようなURLにアクセスします。
https://apis.live.net/v5.0/me/skydrive/camera_roll/files?access_token=ACCESS_TOKEN
フィルタリング・ページング
以上が、SkyDriveに関わる新しいREST APIの内容でした。タグとコメントの作成と削除は割愛します。最後に、これまでに紹介していなかったフィルタリングとページングについて紹介します。
filterパラメーター
フォルダー内のファイルの情報を取得する場合、me/skydrive/filesのようなファイルを表すパスにアクセスします。末尾が/filesの場合、対象のフォルダーに含まれるファイル一覧が結果として取得できます。ここまでは、前回までに紹介した内容です。
次のようにURLにfilter パラメーターを指定すると、フォルダー内の写真など特定の形式のオブジェクトだけ取得できます。
FOLDER_ID /files?fileter=photos
指定できる値は、albums、audio、folders、photos、videosです。FOLDER_ID/files?fileter=videos,audio のような記述も可能です。
limitとoffsetパラメーター
ファイル一覧など取得する個数や、取得する開始位置の指定もできます。個数を指定するには、limit パラメーターを使います。下記の場合、ひとつのファイル情報のみ取得できます。
位置を指定するには、offset パラメーターを使います。offsetは0が1番目のファイルを指します。下記の場合3〜7番目のファイル情報を取得します。
FOLDER_ID /files?limit=5&offset=2
limitとoffsetパラメーターは、フォルダーのファイル以外にも、アルバム、コメント、タグにも使えるパラメーターです。
ALBUM_ID /files?limit=2
PHOTO_ID /comments?limit=2
PHOTO_ID /tags?limit=2
limitとoffsetパラメーターを使用し、すべての情報が取得できていない場合、前後の情報へのパスが次のようにJSONデータに含まれています。
"paging" : {
"next" : "/me/skydrive/files?offset=2&limit=1" ,
"previous" : "/me/skydrive/files?offset=0&limit=1"
}
sort_byとsort_orderパラメーター
ファイルは、sort_by とsort_order パラメーターを使って、名前順などの並び順を指定できます。
FOLDER_ID /files?sort_by=name
指定できる値は、created、updated、name、size、 defaultです。
次のように昇順・降順も指定できます。
FOLDER_ID /files?sort_by=name&sort_order=descending
指定できる値は、ascendingとdescendingです。
以上が、フィルタリング・ページングに関わるURLに指定可能なパラメーターです。これらのパラメーターを活用すると、より柔軟にリソースへアクセスできますね。
おわりに
今回はここまでです。少し前回より間が空いてしまいましたが、今回は新しいLive SDKの中からSkyDriveのREST APIの紹介と、URLに指定できるパラメーターを紹介しました。次回はこれらを活用したアプリを作りたいと思います。