たつをの ChangeLog : 2009-12-24

Webサービス(Web API)とは、ユーザがウェブ経由で他の人・会社が持っているデータや処理をアクセスして使うための技術。
プログラムから呼び出して使うことが多く、それを前提としたプロトコル、データ構造となっている。

商品検索、ウェブ検索、ソーシャルブックマーク、写真サービス、ツイッター、カレンダー、番組表、天気予報情報、路線情報、漢字変換、キーワード抽出、ウェブページのサムネイル、位置情報、地図情報、認証などさまざまなサービスで Web API が提供されている。

このような Web API を組み合わせてサイトやアプリケーションを作ることをマッシュアップと呼ぶ。

プロトコル


Web API で利用されるプロトコルは大まかに下記の二つに分けられる。

(1) REST風
(2) SOAP, XML-RPC

一つ目の、REST風プロトコルを採用している Web API では、URL に必要なパラメータを埋め込んでアクセスすると(HTTPのGETメソッド)、目的のデータ獲得や処理ができる。
ブラウザで簡単に動作確認ができる。
(もちろんPOSTメソッドが使えるものもある。)

例として、日本語文を形態素解析(≒単語に分割する)する MECAPI API (MeCab Web Service, https://maapi.net/) で説明する。
この Web API を使って日本語文「ペンは走る」を形態素解析する。
まず、「ペンは走る」を URL encode する(文字コードは UTF-8)。
このような文字列になる。
%E3%83%9A%E3%83%B3%E3%81%AF%E8%B5%B0%E3%82%8B
これをパラメータ sentence の値として下記のURLを構築する。
https://maapi.net/apis/mecapi?sentence=%E3%83%9A%E3%83%B3%E3%81%AF%E8%B5%B0%E3%82%8B
このURLへブラウザでアクセスしてみると、形態素解析結果を見ることができる。

一方、二つ目の SOAP, XML-RPC では、HTTPのPOSTメソッドが必須となるためブラウザからの動作確認は難しい。
(個人的には、ブラウザから動作確認できない Web API は面倒なのでどうしてもというとき意外はなるべく使いたくない。)

利用可能なHTTPメソッド:
GETPOST
REST風
SOAP, XML-RPC×

データ構造


Web API で利用されるデータ構造は大まかに下記の二つに分けられる。

(1) XML
(2) JSON, JSONP

一つ目の XML はデータ交換用のフォーマットとして一般的なデータ構造。
たいていのプログラミング言語では、XML で記述されたデータを処理するライブラリが充実しているため、プログラムから容易に扱うことができる。

先ほどの MECAPI API での形態素解析結果のフォーマットが XML である。
解析結果 XML データを下記に示す。
<MecabResult>
<word>
<surface>ペン</surface>
<feature>名詞,一般,*,*,*,*,ペン,ペン,ペン</feature>
</word>
<word>
<surface>は</surface>
<feature>助詞,係助詞,*,*,*,*,は,ハ,ワ</feature>
</word>
<word>
<surface>走る</surface>
<feature>動詞,自立,*,*,五段・ラ行,基本形,走る,ハシル,ハシル</feature>
</word>
</MecabResult>
(https://maapi.net/apis/mecapi?sentence=%E3%83%9A%E3%83%B3%E3%81%AF%E8%B5%B0%E3%82%8B)

二つ目の JSON, JSONP はプログラム言語 JavaScript でデータを扱うための形式である。
JSON はオブジェクトの記述、JSONP は JSON をコールバック関数の引数とした JavaScript コードである。
JavaScript はブラウザ上で動かすことができるので、JSON, JSONP ならばブラウザ上でインタラクティブに処理ができる。
Ajax には必須のデータ構造である。

先ほどの MECAPI API は JSON と JSONP にも対応している。
それぞれの解析結果データを下記に示す。
見やすくするため適宜改行を挿入している。

解析結果 JSON データ:
[
{"surface":"ペン","feature":"名詞,一般,*,*,*,*,ペン,ペン,ペン"},
{"surface":"は","feature":"助詞,係助詞,*,*,*,*,は,ハ,ワ"},
{"surface":"走る","feature":"動詞,自立,*,*,五段・ラ行,基本形,走る,ハシル,ハシル"}
]
(https://maapi.net/apis/mecapi?sentence=%E3%83%9A%E3%83%B3%E3%81%AF%E8%B5%B0%E3%82%8B&format=json)

解析結果 JSONP データ:
f([
{"surface":"ペン","feature":"名詞,一般,*,*,*,*,ペン,ペン,ペン"},
{"surface":"は","feature":"助詞,係助詞,*,*,*,*,は,ハ,ワ"},
{"surface":"走る","feature":"動詞,自立,*,*,五段・ラ行,基本形,走る,ハシル,ハシル"}
]);
(https://maapi.net/apis/mecapi?sentence=%E3%83%9A%E3%83%B3%E3%81%AF%E8%B5%B0%E3%82%8B&format=json&callback=f)

参考


- Wikipedia:Webサービス
- Webサービスとは 【web service】 http://e-words.jp/w/WebE382B5E383BCE38393E382B9.html
- Web API実践リファレンスブック[2007-05-30-2]
- 秋元裕樹 / PHP×WebサービスAPIコネクションズ[2006-11-29-6]

代官山駅の駅外にある売店で本を売っているのですが、その棚に「ヨンデルとサガーデル文庫」と書いてありました。
ヘンゼルとグレーテル」をもじったのですね。
「読んでると差がー出る」のですね。
渾身のダジャレですね。
わかります。

ヨンデルとサガーデル文庫

Wikipedia:ヨンデルとサガーデル文庫
東急線の各駅で営業する、toksの書籍コーナーである。「読んでると差がでる」と「ヘンデルとグレーテル」を合成した名称で、ビジネス書・新書の売れ筋上位の商品で構成される。

無印良品のアドベントカレンダーが、
クリスマスイブの今夜、
ついに感動のフィナーレです!!!

メリークリスマス!!!!

無印良品のアドベントカレンダー

最後の引き出しは、今まで出てこなかった金色の星でした。
ラッキー!
ハッピー!
ラッキースター!

無印良品のアドベントカレンダー

これまでの軌跡:

- [を] 無印良品の直角くつ下のアドベントカレンダー[2009-11-24-5]
Advent Calendar - 無印良品の直角くつ下のアドベントカレンダー

- [を] 無印良品のアドベントカレンダーの引き出しを開け始めましたよ![2009-12-02-5]
無印良品のアドベントカレンダー

- [を] 無印良品のアドベントカレンダーがあと数日で[2009-12-20-2]
アドベントカレンダー 12/19

クリスマスイブの今夜、東京は六本木の東京ミッドタウンはイルミネーションを見に来る人でいっぱい。
と思いきや、地下鉄日比谷線の調子が悪かったりして、早い時間帯はそれほど大混雑ではなかったです。

東京ミッドタウン クリスマスイブ イルミネーション

それはそれとして、淡々と今日のイルミネーションの様子をムービーでご報告。

まずは庭のイルミネーション。
ときどきチカチカとフラッシュが光っていて、人がいっぱいいるんだなあ、
というのを感じます。



これは入口にあるオブジェ。
光の蛇がジャジャジャジャっと走ります。



(Photo and Movies by iPhone 3GS)

休日だった昨日。
夕方に散歩。
陽がかなり落ちていて影がすごく長くなってた。
ついつい遊んで撮影しちゃった。

長い影 影夫婦

(Photos by iPhone 3GS)

たつをの ChangeLog
Powered by chalow