Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Web サービスの利用
Web サービス (Web Service) とは
Web サービス (Web Service) / Web API とは、
クライアントアプリケーション(ソフトウェア)とサーバが情報の受け渡しをする仕組みのことをいう。
Webアプリケーションとして構築される人間向けのサービスが Webサービスと呼称されることがある(もともとは誤用)。
それとは異なる。
仕様
SOAP(Simple Object Access Protocol): XMLでデータのやり取り。
REST(REpresentational State Transfer): HTTP の GET などでリクエスト。レスポンスの形式は XML, JSON, JSONPなど。
一般に公開されている Webサービスは REST の枠組みで提供されている。
レスポンス(サーバからの応答)の形式は XML か JSON で提供されていることが多い。
XML は Java の標準ライブラリで扱うことができるが、
JSON は JavaScript用なので Java で扱う場合は外部ライブラリを利用するのが一般的。
複数のWebサービスを組み合わせてシステムを構築することをマッシュアップ と呼ぶ。
マッシュアップで検索してみるとよい。
利用登録
Webサービスの利用においては、ユーザ登録やアプリケーションの登録を求められることが多い。
アプリケーションの URL を尋ねられる場合には、
開発するアプリケーションの公式Webページを用意することが望ましい。
自分の個人的なサイトがない場合には、
earth に置くことのできる自分のページの一部として用意することもできる。
登録により発行される ID とは別に、アクセストークンを取得する必要があるタイプもある。
提供側が用意しているドキュメントやサンプルプログラムを参考にすること。
プログラミング
Webサービスは提供者側が独自に仕様や利用規約を決めている。
RSS のように標準化されていないため、
提供者側によるドキュメントに沿ったプログラムを作成する。
仕様と実装方法の確認
ドキュメントの場所:
仕様を記述したドキュメントのありかを確認する。
開発者用のサイトが用意されていることもある。
リクエストの種類とレスポンスの内容:
目的の情報を含んだレスポンスを得ることのできるリクエストが存在するか確認する。
Webサイト上の検索と Webサービスで提供される検索が同じ仕様とは限らない。
ユーザ/アプリケーション登録の形態:
登録の対象が開発者のみなのかアプリケーション単位の登録もあるのか確認する。
ライブラリの有無: 提供されている公式のライブラリがないか確認する。
認証の必要性と方式:
認証の必要性と認証方式について確認する。
提供元が同じ Webサービスでも、取得する情報によって必要となる認証方式が異なることがある。
SNS などユーザがサインインして利用するサービスの場合、
サインインしないと見られないユーザ固有の情報 (例: Twitter のタイムライン) については、
ユーザの権限が必要となる。認証方式として OAuth 2.0 が用いられることが多い。
OAuth 2.0 ではアクセストークンが必要となるが、その取得方法も Webサービスによって異なる。
開発者用サイト上で生成できる場合もあれば、取得するプログラムが提供されている場合もある。
リクエストの方法:
通常は REST で HTTP の GETプロトコルであるが、URL(エンドポイント)とパラメータを確認する。
一般に、パラメータには必須のものと任意のものがある。
パラメータの値に URL では使えない文字(空白や全角文字など)を指定したい場合には URL エンコードが必要となる。
レスポンスの形式:
フォーマット(XML/JSON)と構造を確認する。
検索結果一覧など繰り返しの構造を持つ場合は、繰り返されている要素を確認する。
エラーの際に正常時とは異なる構造のレスポンスを返す場合があるので注意する。
実装
レスポンスの形式が XML の場合
REST でレスポンスの形式が XML の場合、
リクエスト(問い合わせ)の方法が HTTP の GET であり、
レスポンス(応答)の形式が XML である点で RSS と似ている。
ただし、応答の XML のスキーマは Webサービスの提供者独自のものであるため、
必要な情報を取り出すためのプログラムは Webサービスごとに作成する必要がある。
サーバのレスポンスの形式が XML の場合には、
サンプルプログラムの Feed.java, Item.java など、
サーバの応答を DOM で解析するプログラムをベースにするとよい。
REST では HTTP の GET を使うため、
パラメータを URL に含めることができる (baseurl?key1=value1&key2=value2...)。
このとき、全角文字などURLに使ってはいけない文字を使う場合には、
URL エンコード をすること。
レスポンスの形式が JSON の場合
Java で JSON (JavaScript Object Notation) を扱うライブラリが公開されているので、それを用いるとよい。
動作確認用のツール/サイト
Web サービスの例
データを持っている企業が、検索のWebサービスを提供していることが多い。
機械学習の広まりにより、データを送ると処理結果を返してくれる API が増えている。
リンク集・ポータルサイト
無料で使えるとは限らないので、利用条件を確認すること。
機械学習・AI
Open AI
検索 (総合)
Google
Yahoo! JAPAN
Microsoft
Azure AI サービス
Microsoft が提供している AI 関連のサービス。検索も含まれる。有料だが無料枠があるものが多い。
ソーシャルメディア
有料化され、授業での利用は現実的ではない。
Instagram
Instagramビジネスアカウントかクリエイターアカウントが必要。
LINE
情報を集めるのには向かないが、BOTをつくることもできる。
はてな
pixiv
pixiv は公開されている API がない。
非公開のものを利用する方法が公開されている (未確認)。
Spotify
検索、アルバムを指定してトラックを取得、プレイリストを指定してトラックを取得、などの API がある。
アプリケーションの登録は必要だが、ユーザ固有の情報を使用しない場合はユーザ認証を必要としない。
レスポンスはJSONだが、Javaのラッパーがある。
SoundCloud
プレイヤー向けの API が多いが、コメントを取得したりもできる。
last.fm
last.fm は誰が何を再生しているか公開されており、活用の幅が広い。
商品一般の検索
Amazon
Amazon が全世界で扱っている商品の情報などが得られる。
開発者としてのアカウント登録が必要。
楽天
楽天市場、楽天ブックス、楽天オークション、楽天トラベルなどの API がある。
利用するには楽天の会員になり、デベロッパーID を取得する(無料)。
デベロッパーID を URL に埋め込むだけでよいので Amazon よりも簡単。
飲食店検索
エリアを指定して飲食店を検索することが可能。
エリア以外の検索条件を指定できるかはサイトごとに異なる。
例えば安い店を探したい場合、
ほとんどのサイトでは予算で検索することができないので、
エリアのみで検索した結果を予算でソートするといった処理が必要となる。
ホットペッパー
料理や予算など、かなり細かい条件での検索が可能。
地域の指定は、ホットペッパーのエリアが最小単位なので駅名での指定はできないが、
住所の部分一致で絞り込むことは可能。
旅行・宿検索
楽天トラベル
じゃらん
じゃらんWebサービスは 2020年2月25日にアカウント登録の新規受付を終了。
その他
Geocoding.jp
住所やランドマーク名を与えると経度・緯度が得られる。
内部で Google と Yahoo! の API が使われているが、こちらは登録の必要がない。
Annict
アニメの視聴記録ができるサイト。有志が入力したメタデータが充実。
クライアントの位置情報
HTML5 では、Webサービスを明示的に用いなくても、
クライアントの位置情報を JavaScript で取得することができる (ユーザが許可した場合に限る)。
この位置情報をサーバ側で使いたい場合には、クライアントから JavaScript を使ってサーバに送る必要がある。
参考サイト