読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

無料かつサーバー不要でライブタイルをアップデートできるAPI Rss2LivetileAPI公開しました

MicrosoftAzure 自作ソフト

Windowsストアアプリから、ライブタイルはアプリが立ち上がってない状態でのユーザーとの対話画面として登場しており、新着の通知などはすべてライブタイルで通知を行うこととなっています。
みなさんも朝Windows8を立ち上げて、スタート画面で、様々なコンテンツの新着通知を見ることができたみたいな経験はされたことがあると思います。
また、IE11からスタートにピン止め機能が追加され、metaタグを編集するだけでWebサイトをスタート画面にピン止めする機能もできました。ただピン止めするだけではなく、ライブタイル機能も備わっています。

しかし、両者の欠点として、新着通知には定期的にタイルテンプレート用xmlを更新するサーバーが必要であるという欠点があります。
現時点では、サーバ管理のリスクが高すぎて、Windowsストアアプリもほとんどがアプリ立ち上げた時などにタイルを更新するという形をとっているかと思います。
IE11のスタートにピン止めが普及しないのもこの原因が一旦を担っていると思います。

ライブタイルは本来、アプリを立ちあげなくてもユーザーがスタート画面でコンテンツに関する新着通知を得る必要があるものです。

そこで、サーバ不要でライブタイルを更新することができるWebAPIであるRss2LivetileAPIを公開しました。



開発は@imanyuと2人で3時間ぐらいで行いました。
開発にはWindowsAzure MobileService CustomAPIを用いています。

API概要としては、「WordPressもしくははてなブログRSS情報を、ライブタイル形式のxmlで返してくれる」ってことだけ。

というわけで使い方

準備編

APIのURLの、クエリ引数「?url=」以降にご自身のブログ(WordPressはてなブログ)のRSSのURLをつけるだけです。

https://rss2livetile.azure-mobile.net/api/rss2livetile?url=

https://rss2livetile.azure-mobile.net/api/rss2livetile?url=http://garicchi.hatenablog.jp/feed

RSSのURLは殆どの場合

//はてなブログ
[ブログURL]/feed

//WordPress
[ブログURL]/?feed=rss2

で取得できると思います。

この形式でURLにGetリクエストを送ると、
f:id:garicchi:20140204082734p:plain

このようにRSSの新着情報がタイル形式のxmlで取得できれば大丈夫です。
(Chromeの場合はxmlがきちんと表示できないのでIEで開いてみてください)

Windowsストアアプリの場合

C#コードは一切不要です。
Package.appxmanifestファイルを開いて、タイルの更新の項目にて、
定期的:を30分、
URLテンプレート:を先ほどのAPIにクエリ引数を載せたURLを貼り付けるだけです。

f:id:garicchi:20140204083527p:plain

たったこれだけでライブタイルに対応するアプリを作成することができました。

f:id:garicchi:20140204083623p:plain

ストアアプリの新着通知はそこまでの頻度を求めないと思うので更新間隔は毎日ぐらいがいいと思います。

もちろんタイルサイズを変更しても、ライブタイルは存続します。

Webサイトの場合

Webサイトの場合、Webサイトのメタタグを編集する必要性があります。
はてなブログの場合、確かめてはいませんがproの場合metaタグを編集できるらしいです。
WordPressの場合はちょっとわかんないんで調べてください。
通常のWebサイトの場合はheadタグ内に記述してください。

まずは、スタート画面にピン止めした時のタイルサイズを様々なものを用意しましょう。

garicchi.comのメタタグ編集の一例です。
msapplication-TileColorのcontentで背景色を指定します。
その下のcontentはすべてタイルサイズごとのタイル画像です。

<meta name="msapplication-TileColor" content="#34495e"/>
        <meta name="msapplication-TileImage" content="/image/tile144.png"/>
        <meta name="application-name" content="garicchi.com"/>
        <meta name="msapplication-square70x70logo" content="/image/tile128.png"/>
        <meta name="msapplication-square150x150logo" content="/image/tile270.png"/>
        <meta name="msapplication-wide310x150logo" content="/image/tile558×270.png"/>
        <meta name="msapplication-square310x310logo" content="/image/tile558.png"/>

次に同じ所にポーリング用のメタタグ記述を書きましょう。

<meta name="msapplication-notification" content="frequency=1440; polling-uri=https://ielivetileapi.azure-mobile.net/api/ielivetileapi?url=http://gariben.org/?feed=rss; polling-uri2=sample.xml; polling-uri3=sample.xml; cycle=1"/>

frequencyは更新間隔です。これで確か1日ごとに更新するはずです。
polling-uriで先ほどのAPIURLのクエリ引数urlを追加したものを指定します。
polling-uri2と3はダミーです。

これができたら、Webサイトを公開して、
ストアアプリ版IEからスタート画面にピン止めしましょう。
f:id:garicchi:20140204084640p:plain

正しく設定できれいればこのようにライブタイルが表示できるはずです。
f:id:garicchi:20140204084853p:plain

もしライブタイルが表示できない場合は、
スタート画面からピン止めを外す→Webサイトの再読み込み→スタートにピン止めを再度実行すると反映されます。

それでもうまくいかない場合は上記の手順でなにかが間違っています。

このAPIの有用性

先程も言いましたが、このAPIのすごいところは、ユーザーはサーバー不要でライブタイルの新着通知を利用することができるという点です。

従来の状態では、個人がサーバーを持ち、サーバーないでWebサイトの更新情報をxmlにパースして出すか、新着情報のxmlを生成して返すかをしないとリモートでライブタイルを更新することができませんでした。
f:id:garicchi:20140204085344p:plain

しかし、rss2livetileapiを用いることによって、サーバー自体は私のAzureを、そこからRSSの更新情報をxmlにパースしてユーザーに提供するので、ユーザーにとってはサーバーの管理コスト不要、用意する必要もないという状態になり、
実質、ユーザー自体はブログとライブタイルのアプリを作るだけです。

f:id:garicchi:20140204090146p:plain

さらにすごいところは、ライブタイルの更新情報を生成する仕組みを作らなくても、ユーザは上記の設定を行うだけで、あとはブログを更新し続けていればライブタイルの更新が可能となるわけです。
これはライブタイルで新着通知を出したい開発者にとっては大きな負担軽減になるのではないでしょうか。

また、はてなブログを使った場合、このAPIも無料で利用できるので完全に無料です。

結局何?

結局、このAPIは、
ストアアプリやIEの新着通知機能(ライブタイル機能)を無料で、かつサーバー不要で設定でき、
あとはユーザーははてなブログを更新し続けていくだけで、アプリを利用しているユーザーに新着通知を届けることができるすごいAPIなんですよってこと。

Windows開発者の人たちは多くの人がはてなブログを利用しておられ、はてなブログを利用してなくてもWordPressはりようしているかと思います。
そんな人達に、簡単にスタート画面にピン止めライブタイル機能を提供して、すごい仕組みなのにあまり普及していないIE11スタート画面ピン止め機能が流行って、Windows8のスタート画面を利用する人がふえるといいと思います。
また、ストアアプリで、ユーザに新着通知を送りたくてもサーバが面倒な人たちが簡単にライブタイルを利用できればいいなと思いました。

最後に、このAPIは完全無料で@garicchiがAzureで運営しているので可能な限り続けますが続行不可能な状態になった場合、問答無用で停止する可能性があります。
もしご自身のAzureで利用したい場合は連絡をいただければソースを差し上げます。