Web API
について厳格な定義はないが、広義にはHTTPプロトコルを用いてネットワーク越しに呼び出すアプリケーション間、システム間のインターフェースのこと。
APIの機能はわかっているけれども、その中身の実際の動作は詳しくわからない(知らなくてもよい)機能の塊を、外部から呼び出す仕様のことを指す。また、上記図の右側の「呼ばれる側のシステム」そのものをWeb APIと呼ぶこともある。
※APIとはApplication Programming Interfaceの略。
Web APIの重要性は年々高まっている。
※以下の図は
オージス総研グループ
のもの
Web APIの歴史
古くから知られており非常に普及したWeb APIとして、2003年に公開されたAmazonの
Product Advertising API
がある。
※ちなみに、当時はAWS(Amazon Web Service)という言葉そのものがProduct Advertising APIのことを意味していた。
このAPIはアフィリエイトと結び付けられており、これを使うことで誰もが簡単にAmazonの商品を自分のサイトから販売し、その収益の一部を得ることができたという点からインターネットの世界に大きなインパクトを与えた。これは企業や個人の開発者が簡単に収益を上げる方法として非常に注目されて普及し、更にブログの普及と相まってAmazonで商品を購入するためのリンクがいたるところで貼られるようになり、結果としてAmazonの収益を大きく押し上げる結果になった。
もう1つの歴史としてTwitterがある。Twitterは2006年からAPIを公開していた。Twitterはかなりシンプルなサービスだったため、APIを使うことでほとんどの操作を行うことができた。例えば、開発者がより使いやすさを追求したTwitterクライアントを作ったり、Twitterに投稿されたデータを使って分析を行うサービスや、botと呼ばれる機械的に生成したメッセージを投稿するシステムなど、さまざまな周辺サービスが開発された。それにより、Twitterはほとんどの情報が集まる場になっていき、巨大なエコシステムができあがった。
Amazon、Twitterともに、自分たちのデータをAPI経由で無料で提供しているので損しているようにも見えるが、新しいシステム、サービスを公開する力を持った開発者にAPIを公開することで、彼らがサービスに付加価値を与えてくれて、コアとなる自分たちのサービスがより発展する力をもらうことが出来た。
Web APIでの利用を前提としたサービスの登場
Twilio
のようなAPIの利用を前提としたサービスも数多く登場している。コストだけを見るとこうしたサービスは自前で運用するよりも割高に見えるが、自前で運用した場合に発生する人件費や開発にかかる時間等を考えると割安であり、急速に利用されるようになってきている。その一翼をWeb APIが担っているわけである。
スマホアプリの登場
スマホアプリがサーバと通信をする場合、Web APIを利用するケースが最も一般的である。この場合、APIは自分たちが公開するスマホアプリとサーバを繋ぐためのもので一般には公開されないものも多いが、HTTPを利用してインターネット経由でアクセス可能なAPIを作るという意味では、一般公開されるWeb APIとなんら違いはない。このようにスマホアプリの登場もWeb APIの重要性の一因となっている。
APIエコノミーという考え方の登場
Web APIを公開することで外部サービスとの連携を容易にして新たな価値が生まれ、サービスやビジネスが発展していくことは「APIエコノミー」と呼ばれ、近年非常に注目されている。APIエコノミーの急速な広がりにより、APIそのものに注目したサービスも登場している。
今、起こりつつあるAPIエコノミーとか何か?
繋ぐことで生まれる「APIエコノミー」の衝撃
IBM - API エコノミー - Japan
また、Apigeeの戦略担当副社長であるSam Ramjiによると、今や自らのWebサイトで直接サービスを行う「直接販売」から、Web APIを公開しそれを複数組み合わせたアプリケーションがユーザーにサービスを行う「間接販売」モデルになったと述べている。つまり、サービスの価値を直営店(自分のサービス)で提供するだけでなく、小売店(他のアプリケーション)で利用できるようにしなければ、自社のサービスを拡販していくことは難しい世の中になってきているということ。そういったことからも、サービスを活性化させていくにはAPIの公開は非常に重要である。
ただ、日本ではまだAPIを公開するという潮流は本格化はしていない。
マイクロサービスアーキテクチャという考え方の登場
マイクロサービスアーキテクチャ
の台頭により、モノリシックなシステムをマイクロサービス化し、各マイクロサービスをWeb APIで連携させるようなリプレイスが近年増えている。こういった流れもWeb APIの重要性の一因となっている。
Web APIで何を公開するべきか
何を公開するかの考え方の軸として、APIを公開することで自らの利益に貢献できるものは何か?を軸にすると良い。何らかのサービスを運営しているなら、そのサービスのコアとなっている価値ある部分を全て公開するべきである。例えば、ECサイトを運営している場合、商品の検索、購入、不動産情報サイトを運営している場合、物件検索、絞り込み、間取りの情報取得等がそれらにあたると思う。このようにそのサービスが価値を生み出している部分を公開するべきである。ただし、個人情報の類や業務上守秘義務があるような情報は当然ながら公開は控えるべきである。
Web APIを公開することのリスク
APIに対して一定時間内に多くのアクセスがあると、負荷がかかり過ぎてサーバがダウンしてしまう可能性がある。サーバがダウンしAPIが利用できなくなるということは
可用性
の観点から避けるべきである。こういったリスクに対して、多くのAPIがレートリミット(一定時間あたりにAPIを使用できる回数)を設けている。その制限を超えてAPIを利用する場合には、提携関係を結んで利用料を払うことで制限なく利用させたりしている。
Web APIを公開することで得られるもの
Web APIを公開することで、様々な付加価値を他の企業や個人が提供してくれるようになり、運営しているサービスの価値や情報の質が上がる可能性が十分にある。例えば、個人や企業で何らかのサービスを運営していると、新しい機能等のアイデアが色々と出てくるが、工数や予算の関係上、必ずしもそれらの機能を全部実装できるわけではない。しかしAPIを公開すれば、思いついてはいたが優先順位を下げていた機能や、全く思いつきもしなかった新しい発想の機能を、他の誰かがAPIを利用して作ってみてくれる可能性がある。
Web APIを美しく設計する重要性
設計の美しいWeb APIは使いやすい
APIを作り公開する場合、そのAPIを利用するのは自分ではないケースが多い。APIを設計するからには多くの人に利用してもらいたいので、そのためにもAPIを利用する側にはストレスなく使ってもらえるよう、使いやすさを意識する必要がある。
設計の美しいWeb APIは変更しやすい
Webサービスやシステムはどんどん進化していく。公開した当時と同じ状態のまま2年も3年も運用が続けられるケースは少ない。進化していけばインターフェースであるAPIも変化を余儀なくされる。ただ、APIは自分たちと関係ない第三者が使っている場合も多く、その場合いきなりAPIの仕様が変わってしまうと、そうした人たちの作ったシステムやサービスがいきなり動かなくなる、といったことも考えられる。こうした事態はAPIを提供する側としては避けなければならない。そのためにもAPIの変更をいかに利用者に影響なく変更できるかを意識する必要がある。
設計の美しいWeb APIは頑強である
Web APIはインターネットを通じて提供するため、誰でもアクセス可能になってしまう。そのため、セキュリティの問題が必ず発生する。APIといえど、ウェブサイトと同じHTTPを利用している以上、ほぼ同等のセキュリティの問題を意識する必要がある。
設計の美しいWeb APIは恥ずかしくない
Web APIは通常のウェブサイト等とは異なり、主に開発者が目にするものである。開発者は他の開発者を、開発したコードやインターフェース等の成果物で判断する。そのため、開発者目線で美しくない、センスの疑われるAPIを公開してしまうと、そのサービスの開発者の技術レベル、そのサービス、APIを提供している会社そのものが疑われる。そういった意味で恥ずかしくないAPIを意識する必要がある。
Web APIの種類
XML-RPC
SOAP
2000年代前半まで主流だったWeb API。SOAPのようなXMLベースで仕様が複雑なものは近年ではあまり使われなくなってきている(最近はLL(Lightweight Language)が主流となってきており、その潮流もある)
REST
最近ではWeb API = REST、なくらい現在主流なWeb API。
関連
リソース指向アーキテクチャ(ROA)とは何なのか
Web API: The Good Parts
APIファーストで開発する7つのメリット
株式会社アルス・ウェアー
受託開発とシステムエンジニアリングサービス(SES)を中心とした少数精鋭エンジニアチームです
http://www.arsware.co.jp/
Web APIで何を公開するべきか
Web APIを公開することのリスク
Web APIを公開することで得られるもの
Web APIを美しく設計する重要性
Web APIの種類
Google Developers
提供:GoogleAndroid、iOS、Web環境での開発キットを提供。Google Play、Google+、Maps、YouTube、Books、Gmail、Cloud などのAPIも多数公開
Google Cloud
提供:Googleコンピューティング、ストレージ・データベース、ネットワークといったインフラから機械学習による分析まで様々な機能を提供
Microsoft Azure
提供:Microsoftコンピューティング、ストレージ・データベース、ネットワークといったインフラから機械学習による分析まで様々な機能を提供
Bing for partners
提供:Microsoft地図、音声、翻訳、検索、Web管理、広告などのAPIを公開
Amazon Developer
提供:Amazonアプリ&ゲーム、AWS、サービス&API、デバイスなどアマゾン関連の開発をするための機能・サービスを公開している
Amazon Web Services
提供:Amazonコンピューティング、ストレージ・データベース、ネットワークといったインフラから機械学習による分析まで様々な機能を提供
IBM Marketplace
提供:IBMコンピューティング、ストレージ・データベース、ネットワークといったインフラから機械学習による分析まで様々な機能を提供
docomo Developer support
提供:NTT docomo画像認識や音声認識、文字認識、シナリオ対話、知識Q&A、トレンド記事抽出、地図、決済など様々なAPIを公開
gooラボ
提供:NTTレゾナント形態素解析、キーワード・固有表現の抽出、ひらがな化、時刻情報正規化など様々なAPIを公開
Yahoo! デベロッパーネットワーク
提供:Yahoo Japan検索、地図、オークション、ショッピング、知恵袋などYahoo! Japanが提供するサービスに関連するAPIを公開
Rakuten Developers
提供:楽天楽天市場、ブックス、オークション、トラベル、ブックマーク、レシピ、GORAなどのサービスに関連するAPIを公開
Recruit Web Service
提供:リクルートケイコとマナブ、R25、エイビーロード、ホットペッパー、カーセンサーなどリクルートが提供するサービスに関連するAPIを公開
Hatena Developer Center
提供:はてなはてなが提供するブックマーク、ダイアリー、ココ、スター、フォトライフ、キーワード、ハイク、グラフ、人力検索などのサービスに関連するAPIを公開
facebook for developers
(英語) 提供:Facebookフェイスブック上に公開されているユーザーのコメントやいいね!、写真、動画、位置情報、友人との繋がりなどをパーミッションを得ることで利用できるGraph APIを公開
Linkedin Developers
(英語) 提供:Linkedinリンクトインで公開されているユーザーのプロフィールやコネクション、企業情報、仕事情報、メッセージ・コメント・Likeなどの情報が利用できるAPIやシェアボタン、プロフィールなどのプラグインを提供
mixi Developer Center
提供:mixiミクシー上に公開されている日記やボイス、フォト、チェック、友人リストなどをパーミッションを得ることで利用できるmixi Graph APIを公開
Ameba Developer Center
提供:サイバーエージェントソーシャルグラフ、ゲーム、ブログ、サークル、掲示板などのサービスやコミュニケーション機能も提供している
Watson API
(英語) 提供:IBMテキストデータの分析、画像データの認識、音声データの認識、データの洞察などワトソンの機能を提供するAPI
Cloud Machine Learning
提供:Google音声の認識、動画・テキストの分析、高度な機械学習モデルを構築する機能を提供するAPI
Cloud Vision API
提供:Google画像を素早く分類する、画像内の個々の物体や人の顔を検出する、不適切な画像を検出するなどの機能を提供するAPI
Azure AI
提供:Microsoft画像・音声データの認識、言語の分析、機械学習の構築や運用などの機能を提供している
Azure Cognitive Services
提供:Microsoft画像データの認識、音声データの認識、テキストデータの分析などの機能をAPIで提供している
AWS 機械学習
提供:Amazon画像・音声データの認識、言語の分析、機械学習の構築や運用、データの分析などの機能を提供している
Dialogflow
(英語) 提供:Dialogflow顧客からの予約・オーダーの受付や問い合わせに自然言語プロセッサ(チャットボット)で対応をするAPI
wit.ai API
(英語) 提供:wit.ai音声を認識し音声データからプログラムに渡すべきデータ(意図・時間・場所・数・言語・温度・状態など)を抽出してくれるAPI
Text Analysis API
(英語) 提供:AYLIEN文字を認識しテキストデータから内容のカテゴリや感情を判断したり要約をしてくれるAPI
Web Speech API
(英語) 提供:W3C音声を認識しテキストに変換する、テキストを認識し音声に変換するAPI
Twitter Developers
(英語) 提供:Twitterツイッター上で公開されているツイートやユーザー、フォロー、お気に入り、リスト、位置などの情報が利用できるAPIを公開
facebook Graph API
(英語) 提供:FacebookFacebookに公開されている Users、Pages、Events、Groups、Applications、Photos、Videos、Notes、Checkins、などのデータを操作・参照する機能を提供
Google+ API
(英語) 提供:Googleグーグル+ で公開されている People、Activities、Comments、Momentsなどの情報を利用できる
Linkedin APIs
(英語) 提供:Linkedinリンクトインで公開されている Member Profile、Connections、People Search、Companies(Search、Follow and Suggestions、Products and Recommendations)、Jobs(Search、Bookmark and Suggestions)、Messaging、Network Updates(Shares、Comments and Likes)などの情報をREST・JavaScriptで利用できる
Pinterest API
(英語) 提供:PinterestUsersの情報の取得や、Boards、Pins、followの追加・編集・削除ができるAPI
mixi Graph API
提供:miximixiに公開されている People、Groups、Voice、Check、Photo、Message、Diary、Check-in、更新情報などのデータを操作・参照する機能を提供
Foursquare API
(英語) 提供:Foursquareフォースクエアーでのチェックインやユーザー、お店、Tipsなどの情報が利用できるAPI
Instagram API
(英語) 提供:Instagramインスタグラムで公開されている写真、コメント、タグ、LIKES、ロケーションやユーザー、ユーザーのリレーションなどの情報が利用できるAPI
flicker APP Garden
(英語) 提供:Flickerフリッカーへの写真のアップロードや公開されている写真、コメント、タグ、ロケーションやユーザー、グループ、ギャラリーなどの情報が利用できるAPI
YouTube Data API
提供:Googleユーチューブに公開されている動画の再生、検索、アップロード、再生リストの作成や動画に関連する情報の利用などができるAPI
ツイキャス API
提供:モイツイキャスのユーザー、サムネイル、ムービー、コメント、サポーター、カテゴリなどの情報を取得できるAPI
デ辞蔵Webサービス
提供:イースト英和、和英、独和、和独、仏和、和仏、露和、和露辞典やWikipedia日本語版などが実験的に利用できるサービス。有料版は同じインターフェイスで100以上のを辞書を備え商用利用ができる
Apple Search API
(英語) 提供:AppleiTunes Store や App Store、iBookstore、Mac App Store で取り扱っている apps や ebooks、movies、podcasts、music、music videos、audiobooks、TV shows などの様々なアイテムを検索できるAPI
Delicious API
(英語) 提供:Delicious Mediaデリシャスへのブックマークやタグの追加や削除、検索の機能や最新、人気、おススメのブックマークなどのデータが利用できるAPI
Google+ Hangouts API
(英語) 提供:Googleビデオ通話 Googleハングアウトに関連する機能を提供するAPI
Google Maps API
提供:GoogleAndroid、iOS、Web環境での高機能のマップやルート、高度、場所、ジオコーディングなど情報を操作するためのAPIなどが公開されている
Gmail API
提供:GoogleGmailでのメールの作成・送信、メールボックスの管理などの機能を提供するAPI
Google Books API
(英語) 提供:GoogleGoogle Booksに登録されている本に関する情報(メタデータを含む)を取得できるAPI。自分のbookshelvesも管理できる
Google Calendar API
提供:Googleカレンダーや予定の情報の取得、作成・修正・削除などの機能を提供するAPI
Google Charts
(英語) 提供:Googleサイトに円グラフ、折れ線グラフ、棒グラフなど様々なチャートをデータ(ライブデータでも)を使い表示してくれるAPI
Google Drive API
(英語) 提供:GoogleGoogle Driveにあるファイルを読み込む、書き込む、同期するなどの機能を提供するAPI
Picasa Web Albums Data API
提供:GooglePicasa Web アルバムで、アルバムの作成、写真のアップロード、表示、検索、コメント追加などができる機能を提供するAPI
Amazon Product Advertising API
提供:AmazonAmazon で取り扱っている商品の情報や関連するコンテンツ・アイテムなどの情報を利用できるAPI
Yahoo! Open Local Platform
提供:Yahoo JapanYahoo! Open Local Platform(YOLP)は、地図や地域情報を提供するAPI。JavaScriptマップの表示や、ジオコーディング、ルート、高度、場所、全国の店舗、イベント、クチコミなどの情報が利用できる
Yahoo!ショッピングWeb API
提供:Yahoo JapanYahoo!ショッピングで取り扱っている商品の情報やその商品のレビュー、販促情報などが利用できるAPI
Yahoo!オークションWeb API
提供:Yahoo JapanYahoo!オークションの商品リストや出品リスト、商品の詳細、評価、マイ・オークション関連といった各種情報を利用できる
電力使用状況API
提供:Yahoo Japan北海道電力、東北電力、東京電力、中部電力、関西電力、九州電力管轄内の電力の最大供給量と使用量を取得できるAPI
楽天商品検索API
提供:楽天楽天市場の商品(共同購入・オークション・フリマを除く)の情報を利用できるAPI。検索はキーワード、ショップ、ジャンル、価格、販売可能などの条件で検索できる
楽天オークション商品検索API
提供:楽天楽天オークションの商品情報をキーワード、ジャンル、商品の状態などの条件で取得できるAPI
楽天トラベル施設検索API
提供:楽天楽天トラベルから利用できる施設を施設番号、緯度経度、区分コードなどで検索し、施設の情報を利用できるAPI
楽天GORAゴルフ場検索API
提供:楽天楽天GORAに公開されているゴルフ場をキーワード、エリア、緯度経度などで検索し、ゴルフ場の情報を利用できるAPI
ケイコとマナブ Webサービス
提供:リクルートケイコとマナブ.net 資格と仕事.net で公開されているスクール、イベント、講座、資格などの情報を利用できる
web R25 WEBサービス
提供:リクルートweb R25で公開されている記事のタイトル、本文、関連リンク、画像などの情報が取得できるAPI
エイビーロード Webサービス
提供:リクルートエイビーロード(AB-ROAD)に掲載されている、海外旅行ツアー情報を国、都市、ホテル、航空会社で検索し、情報を利用できる
じゃらんWebサービス
提供:リクルートじゃらんに登録されている温泉、宿、空室の情報が取得できるAPI
ホットペッパー Webサービス
提供:リクルートホットペッパー.jpの提供する日本全国の飲食店情報を店名や予算、料理、クーポン、様々な条件などで検索し、その情報を利用できる
カーセンサーnet Webサービス
提供:リクルートカーセンサーnetに掲載されている中古車情報や新車カタログ情報を様々な条件で検索・利用できるAPI
リクナビ進学 Webサービス
提供:リクルートリクナビ進学に掲載されている学校情報を学問、仕事、資格から検索し取得できるAPI
音声認識API
提供:NTT docomo端末などで入力・収集した音声のデータをテキストに変換するAPI
はてなブックマーク Web API
提供:はてなはてなブックマークへの登録、削除の機能提供やタイトル、ブックマーク数、イベントなどのデータを利用できるAPI
はてなダイアリーAPI
提供:はてなはてなダイアリーへの投稿、編集、削除の機能提供やダイアリーやコメント数、更新情報などの参照ができる
はてなフォトライフAPI
提供:はてなはてなフォトライフへの写真の投稿、編集、削除の機能と写真の参照ができる
はてなキーワードAPI
提供:はてなはてなキーワードに登録されているキーワードに関する説明文を取得できるAPI
SimpleAPI 最寄り駅Webサービス
提供:ユーザーローカル緯度・経度を指定すると、その付近にある最寄り駅のデータや最寄り駅の地図を利用できる
SimpleAPI Wikipedia API
提供:ユーザーローカルキーワードを指定すると、そのキーワードに関するwikipediaの記述を取得できる
Google Translation API
提供:Google【有料】テキスト、翻訳後の言語、フォーマットなどを指定すると指定した言語に翻訳されたテキストを返してくれる
Microsoft Translator API
提供:Microsoft【有料】テキスト、翻訳後の言語、コンテンツタイプなどを指定すると指定した言語に翻訳されたテキストを返してくれる
Amazon Translate
提供:Amazon【有料】テキスト、翻訳後の言語、フォーマットなどを指定すると指定した言語に翻訳されたテキストを返してくれる
Watson Language Translator
提供:IBM【有料】テキスト、翻訳後の言語、フォーマットなどを指定すると指定した言語に翻訳されたテキストを返してくれる
Gengo API
提供:Gengo【有料】人力の翻訳の依頼、翻訳結果の受け取りができるAPI
トレンド記事抽出API
提供:NTT docomo独自のトレンド解析エンジンにより抽出された注目度の高い記事の一覧が取得できるAPI
日テレアプリ Web API
提供:日本テレビ日テレ系の番組を出演者で検索するAPIと日テレ系のニュースをフリーワードで検索するAPIを公開
NHK番組表API
提供:NHKNHKが放送する番組のリストや詳細が取得できるAPIを提供。地域や日付、ジャンルなどで絞り込みができる
Last.fm Web Services
(英語) 提供:Last.fmLast.fmが保有するアーチスト、曲、アルバム、ライブ、チャート、タグの情報やユーザー、グループなどのデータを利用できるAPI
チケットぴあ WEB API
提供:ぴあ【有料】公演情報、アーティスト情報、会場情報やコンテンツの検索、チケット販売などの機能を提供するAPI
hon.jp Webサービス
提供:hon.jp出版社、本のカテゴリ、ISBN、対応ビューワー、対応決済方法などを指定すると該当する電子書籍の情報を返してくれる
国立国会図書館サーチ API
提供:国立国会図書館国立国会図書館が所蔵する図書や国立国会図書館デジタルアーカイブポータル(PORTA)が収録している各種のデジタル情報の検索やメタデータを利用できるAPI
図書館API
提供:カーリルISBNから指定した図書館での蔵書・貸出状況を取得できるAPI。地名か緯度経度から最寄りの図書館情報を取得できるAPI
openBD
提供:カーリル書籍・雑誌のタイトル、著者、目次、内容、出版社などの書誌情報や書影の画像を取得できるAPI
Vimeo API
(英語) 提供:Vimeovideos、users、groups、channels、albumsの情報を取得、ビデオの投稿・削除の操作ができるAPI
USTREAM Developers
(英語) 提供:Ustreamユーストリームで公開されているストリームやビデオ、チャンネルのユーザー名、タイトル、開始時間、視聴者数、レイティングなどの情報が利用できるAPI
ニコニコ動画API
提供:ドワンゴニコニコ動画に登録されている動画、ニコ割ゲーム、ニワニュース情報局のニュースインデックスなどの情報が取得できるAPI
Mapion Android Maps API
提供:マピオンAndroid開発環境で利用できるマップAPI
MapionMaps.framework
提供:マピオンiOS開発環境で利用できるマップAPI
HeartRails Geo API
提供:HeartRails郵便番号による住所検索、緯度経度による住所検索ができるAPI。都道府県、市区町村、エリア、路線、最寄り駅の情報が利用でき、これらの情報を連結して条件を絞り込む機能も提供している
HeartRails Express
提供:HeartRails都道府県、エリア、路線、駅の情報を利用できるAPI。これらの情報を連結して条件を絞り込む機能や、緯度・経度を指定して最寄り駅の情報を取得する機能を提供している
駅データ.jp API
提供:CodePlus都道府県の路線一覧、路線の駅一覧、駅の詳細などの情報を取得できるAPI
kosoku API (高速.jp ウェブサービス)
提供:GOGA高速道路の経路や料金を検索することができるAPI。出発IC、到着IC、車両種類を指定すると複数の経路、料金を返してくれる
標高API
提供:国土地理院緯度・経度から標高を取得するAPI
NAVITIME API
提供:NAVITIME JAPAN【有料】スポット、最適ルート・巡回ルート、移動所要時間、最寄り駅などの検索・情報を取得できるAPI
いつもNAVI API
提供:ゼンリンデータコム【有料】住所・郵便番号検索、施設検索、ルート検索、路線情報検索、天気検索などの機能を提供するAPI
駅すぱあとWebサービス
提供:ヴァル研究所【一部無料】経路探索、駅情報、路線情報、時刻表情報、鉄道運行情報など利用できるAPI
ジオターゲティングAPI
提供:アルファブレンド【有料】ユーザーのIPアドレスから都道府県単位の位置情報を取得できるAPI
郵便番号検索API
提供:zip.cgis.biz郵便番号を指定すると都道府県、市町村、住所、事業所名(いずれも該当がある場合)のデータを返してくれる
全国郵便番号一覧 WEBサービスAPI
提供:Fabrice郵便番号を指定すると都道府県、市町村、住所、事業所名(いずれも該当がある場合)のデータを返してくれる
ZIP SEARCH API SERVICE
提供:IW3 PROJECT郵便番号から住所を住所から郵便番号を都道府県・市区町村の単位で取得できるAPI
お天気Webサービス
提供:livedoor全国140カ所以上の今日・明日・あさっての天気予報・予想気温と都道府県の天気概況情報を利用できるAPI
Weather API
(英語) 提供:OpenWeatherMap世界の1000万地区の天気予報の情報を取得できるAPI(1分当り60回/1日当り5万回以上の呼出は有料)
天気予報API
提供:日本気象協会【有料】天気予報や紫外線・花粉情報に加え洗濯・傘・不快などの指数情報が利用できるAPI
Contents pocket 天気API
提供:Craid【有料】全国142地点の天気、気温、時間別降水確率、風や波の状態などの情報を取得できるAPI
Contents pocket 指数API
提供:Craid【有料】全国142地点の雨傘指数、日傘指数、洗濯指数、ドリンク指数、快眠指数、プール指数、凍結指数の情報を取得できるAPI
ぐるなびWebサービス
提供:ぐるなびぐるなび掲載店舗の情報をはじめとして、それに関連する地域情報や業種情報が利用できるAPI
BAR-NAVI Web API
提供:サントリー日本最大級のバー検索サイトBAR-NAVIに掲載されているバーに関する情報を利用できるAPI
サイボウズLive データAPI
提供:サイボウズコラボレーションツール サイボウズLiveでのグループの情報、カレンダー、掲示板、ToDo、共有ファイルなどのデータが利用できるAPI
ATND API
提供:リクルートキャリアATNDに登録されたイベントの情報やイベントに参加するユーザーのIDを取得できるAPI
connpass API
提供:ビープラウドconnpassに登録されたイベントの情報を取得できるAPI
お見合いパーティーAPI
提供:オミカレ全国各地で開催される婚活イベントやお見合いパーティーの情報を開催場所や日時順で取得できるAPI
お仕事検索webサービス
提供:リクルートジョブズフロム・エー ナビ上に登録されているお仕事情報を取得できるAPI
しごとナビ求人検索API
提供:LISしごとナビに登録されている求人情報を取得できるAPI
indeed Web Services
(英語) 提供:indeedindeedに登録されている求人情報を取得できるAPI
apicos
提供:istyle@cosmeに登録されているユーザ、商品、口コミなどの情報を取得できるAPI
バリューコマース・ウェブサービス
提供:バリューコマースバリューコマースが提携しているショップの商品情報やトラベル情報を利用できるAPI
オールクーポンWebサービス(API)
提供:オールクーポンジャパンAll Coupon Japan に掲載されている共同購入クーポンに関するデータをジャンル、カテゴリ、位置情報などの条件で利用できるAPI
GROUPON API
提供:グルーポンジャパンGROUPONに登録されている地域毎の最新クーポン情報を取得できるAPI
くまポンAPI
提供:GMOくまポンくまポンに登録されているクーポン情報を取得できるAPI
ポンパレWebサービス
提供:リクルートライフスタイルポンパレに登録されている割引チケットや割引チケットの販売状況の情報を取得できるAPI
施設検索API
提供:JTBJTBが取り扱う宿泊施設の情報を取得できる
FlightAware API
提供:FlightAware【有料】便名、機種、出発地・到着地、最終位置の時刻・緯度経度・速度・高度のフライト情報や、離陸済み・到着済みなど空港の情報が取得できるAPI
プーペガール API
提供:サイバーエージェントプーペガールに登録されているアイテムの情報をブランド、カテゴリ、サイズで取得できるAPI
フォト蔵API
提供:OFF Lineフォト蔵への写真のアップロードやアルバム、コメントの追加や公開されているフォト、タグ、アクセス数、コメント数やユーザー、グループなどの情報が利用できるAPI
Panoramio API
提供:GooglePanoramioに登録された写真のデータを取得できるAPI
Panoramio Widget API
提供:GooglePanoramioに登録された写真をウェブサイトで表示できるAPI
fotochan API
提供:fotochan写真をアップロードするときれいに補正をしてくれるAPI
Zaim API
提供:Zaim家計簿アプリZaimへお金の項目を登録したり、Zaimに登録されている項目一覧を取得できるAPI
About.me API
(英語) 提供:about.meabout.meのユーザ・ページの情報の取得やユーザ・ページを操作する機能を提供するAPI
KizAPI(キザッピ)
提供:きざしカンパニーkizasi.jpが収集・索引化しているブログエントリーの関連語や文脈によるデータやランキング、チャンネル共起の情報が利用できる
Evernote API
提供:Evernoteエバーノートのクライアントが利用しているノートやタグの作成や操作、検索などの機能を提供するAPI
SlideShare API
(英語) 提供:LinkedInスライドの投稿・編集・編集の操作、スライドやグループ、タグ情報の取得、スライドの検索ができるAPI
Yammer REST API
(英語) 提供:YammerグループマイクロブログYammerの Messages、Users、Groups、Topics、Likes、Threads、Invitations、Search などを操作する機能を提供するAPI
youRoom API
(英語) 提供:SonicGardenグループマイクロブログyouRoomの TimeLine、Entry、Attachment、Group、User、Picture などを操作する機能や管理機能を提供するAPI
Cacoo API
提供:ヌーラボサイトマップ図などグループで使えるドローツールCaccoの 図、画像、チャット、フォルダー、ユーザー、コメントなどを操作する機能を提供
Dropbox API
(英語) 提供:DropboxDropboxへのファイルのアップロード、読み込み、書き込み、移動、削除などの機能を提供するAPI
AWS クラウド
提供:Amazonコンピューティング、ストレージ、データベース、ネットワークなどの機能を提供するWebサービス
ニフティクラウドAPI
提供:ニフティニフティクラウドの操作(サーバー・ディスク・イメージ・ロードバランサーなど)ができるAPI
さくらのクラウドAPI
提供:さくらインターネットさくらのクラウドの操作(サーバやディスクの作成や削除など)ができるAPI
SimpleAPI ウェブサイトサムネイル作成API
提供:ユーザーローカルURLを指定すると、そのサイトのサムネイル画像を生成するAPI
HeartRails Capture
提供:HeartRailsURLやサイズを指定しサムネイル画像(jpegやpdf)を取得できるAPI
Thumbalizr API
(英語) 提供:ThumbalizrURLやサイズを指定しサムネイル画像を取得できるAPI
bitly API
(英語) 提供:BitlyURLを短縮する、短縮されたURLを戻す機能や、短縮URLに対するクリック数、リファラー、国情報などのデータが利用できる
p.tl Web API
提供:pixivURLを指定すると短縮URLを返してくれるAPI
- Web サービス (Web Service) とは、クライアントアプリケーション(ソフトウェア)とサーバが情報の受け渡しをする仕組みのことをいう。Web API とも呼ばれる。
- Webメールなど、人間がWebブラウザで閲覧するものを Webサービスと呼ぶのは誤用。それはWebアプリケーションによるサービスの一種。
- 仕様
- SOAP, REST(XML) -> サーバからの応答が XML なので Java で扱いやすい。
- JSON, JSONP -> サーバからの応答が JavaScript用なので、Java から直接には扱いにくい。
複数のプロトコルで提供されている場合には、問い合わせが簡単なREST を選ぶとよい。 また、レスポンスが XML のものを選ぶと Java 標準のライブラリのみで処理ができる。
- 複数のWebサービスを組み合わせてシステムを構築することをマッシュアップと呼ぶ。 マッシュアップで検索してみるとよい。
Webサービスの利用においては、ユーザ登録やアプリケーションの登録を求められることが多い。アプリケーションの URL を尋ねられる場合には、開発するアプリケーションの公式Webページを用意することが望ましい。自分の個人的なサイトがない場合には、earth に置くことのできる自分のページの一部として用意することもできる。
プログラミング
REST(XML) の場合、リクエスト(問い合わせ)の方法が HTTP の GET であり、レスポンス(応答)の形式が XML である点で RSS と似ている。ただし、応答の XML のスキーマは Webサービスの提供者独自のものであるため、必要な情報を取り出すためのプログラムは Webサービスごとに作成する必要がある。
サーバのレスポンスの形式が XML の場合には、
DocumentViewer
など、サーバの応答を DOM で解析するプログラムをベースにするとよい。REST では HTTP の GET を使うため、パラメータを URL に含めることができる (baseurl?key1=value1&key2=value2...)。このとき、全角文字などURLに使ってはいけない文字を使う場合には、
URLEncoder.encode メソッド
を使って URL エンコードをすること(文字コードは utf-8 が多いが、文字化けする場合は euc-jp, shift_jis を試してみるとよい)。
さらに、検索の Webサービスの場合には検索結果が複数件並ぶため、item要素が複数並ぶ RSS と構造が似ている。前述の DocumentViewer を参考に、複数並ぶ要素を getElementsByTagName を用いてリストとして得るようにするのも1つの方法である。また、RSS の item要素を表示する
FeedViewer
を参考にしてもよい。
JSON の場合
Java で JSON (JavaScript Object Notation) を扱うライブラリが公開されているので、それを用いるとよい。
動作確認用のツール/サイト
Web サービスの例
データを持っている企業が、検索のWebサービスを提供していることが多い。機械学習の広まりにより、データを送ると処理結果を返してくれる API が増えている。
リンク集・ポータルサイト
無料で使えるとは限らないので、利用条件を確認すること。
機械学習・AI
リクルートテクノロジーズ
-
A3RT (アート)
機械学習やディープラーニングを用いたソリューションAPI群。画像解析や文章分類モデル作成など。
NTTドコモ
検索 (総合)
Google
-
YouTube Data API の利用方法
updated
-
Google が提供している開発ツール
- Google Web 検索
- 現在では Web検索の API が提供されていないため、 Web検索をしたい場合には Microsoft Bing Search などを代替として利用する必要がある。
- プログラムからアクセスできる
Google SOAP Search API
は廃止。
- SearchMash に JSON API があったが、現在は SearchMash 自体がサービスを終了。
- 指定サイト内検索をする Custom Search しか提供されていない。
- Google ブログ検索
- フィード(RSSまたはATOM)により検索結果一覧やヒット数が取得できたが、サービス終了。
https://www.google.com/search?hl=ja&q=
検索語
&tbm=blg&output=rss
- Google Blog Search API (JavaScript) は廃止された。
Yahoo! JAPAN
Yahoo! Inc. (US)
Microsoft
-
Cognitive Services
- Microsoft が提供している画像認識、音声認識、言語処理、知識処理、検索のサービス。 Web検索である Bing API が含まれる。
-
登録
が必要。 無料枠がある。
- 検索のAPI:
- Bing Autosuggest
- Bing Image Search
- Bing News Search
- Bing Video Search
- Bing Web Search
-
Bing Web Search API
レスポンスの形式が JSON であることに注意。
- Bing Search API
- Microsoft の検索エンジン bing の API。以下の6つの検索対象の種類(Source Type)がある。
- Web: Web search results
- Images: Image search results
- News: News search results
- Videos: Video search results
- Related Search: Related search suggestions based on the query entered
- Spelling Suggestions: Spelling suggestions based on the query entered
- 月に5,000アクセス(transactions)までは無料だが登録は必要。仕様等は以下のページより。
- 登録手順
- Microsoft アカウント [旧 Windows Live ID] を登録 (持っていなければ)
- 上記のアカウントで、さらに Windows Azure Marketplace アカウントを登録
- 検索対象を6つにするかWeb検索だけにするか決めて、サインアップ
- サインアップすると、アカウント キーが1つ発行される(プライマリ アカウント キー)。これをアプリケーションで用いる。
- アカウント キーは「マイ アカウント」から確認することができる。
- プライマリ アカウント キーは変更することができる。
- 上記ページよりリンクのある「Bing Search API - Quick Start and Code Samples」には、プライマリアカウントキーは変更したり削除したりすることができないため、追加のアカウントキーを作成することが推奨されているが、実際には変更できる。
- 使い方
- Synonyms API from Bing
- 商品などの別名(同義語)を返す API。
- 月に5,000アクセス(transactions)までは無料だが登録は必要。仕様等は以下のページより。
チームラボ
ソーシャルメディア
LINE
情報を集めるのには向かないが、BOTをつくることもできる。
はてな
mixi
「mixi Graph API」が Webサービス。パートナー登録が必要。
-
mixi Developer Center
mixi OpenID とは
pixiv は公開されている API がない。非公開のものを利用する方法が公開されている (未確認)。
Spotify
検索、アルバムを指定してトラックを取得、プレイリストを指定してトラックを取得、などの API がある。アプリケーションの登録は必要だが、ユーザ固有の情報を使用しない場合はユーザ認証を必要としない。レスポンスはJSONだが、Javaのラッパーがある。
SoundCloud
プレイヤー向けの API が多いが、コメントを取得したりもできる。
last.fm は誰が何を再生しているか公開されており、活用の幅が広い。
商品一般の検索
Amazon が全世界で扱っている商品の情報などが得られる。開発者としてのアカウント登録が必要。
楽天市場、楽天ブックス、楽天オークション、楽天トラベルなどの API がある。利用するには楽天の会員になり、デベロッパーID を取得する(無料)。デベロッパーID を URL に埋め込むだけでよいので Amazon よりも簡単。
価格.com
新規受付は終了しているので、過去に登録している人しか利用できない。
飲食店検索
エリアを指定して飲食店を検索することが可能。エリア以外の検索条件を指定できるかはサイトごとに異なる。
例えば安い店を探したい場合、ほとんどのサイトでは予算で検索することができないので、エリアのみで検索した結果を予算でソートするといった処理が必要となる。
ホットペッパー
料理や予算など、かなり細かい条件での検索が可能。
地域の指定は、ホットペッパーのエリアが最小単位なので駅名での指定はできないが、住所の部分一致で絞り込むことは可能。
ぐるなび
レストラン検索のみ。地域を指定できるが都道府県が最小単位。業態(懐石、定食など)の指定も可能。料理名での指定はできない。フリーワード検索が可能。
各レストランの平均予算は検索結果には含まれるが、予算を指定してレストランを検索することはできない。
食べログ
最寄り駅、緯度・経度からレストランを検索することが可能。価格は検索結果には含まれるが、価格で検索することはできない。
新規登録の受付を停止しているため、利用できない。
livedoor グルメ
お店検索では、都道府県、駅、カテゴリ(例: ラーメン一般)で絞り込むことが可能。
平均予算やお店の評価は検索結果には含まれるが、検索条件にはできない。
旅行・宿検索
じゃらん
楽天トラベル
その他
Annict
アニメの視聴記録ができるサイト。有志が入力したメタデータが充実。
Cookpad の API は外部に公開されていない。以前は非公式なものが動作していたが、いまは結果を返さない。
-
cookpad API
(非公式;現在は動作していない)
レシピの内容までは取得できないので、材料で検索して、レシピのページへ誘導するといった使い方になる。
クライアントの位置情報
HTML5 では、Webサービスを明示的に用いなくても、クライアントの位置情報を JavaScript で取得することができる (ユーザが許可した場合に限る)。この位置情報をサーバ側で使いたい場合には、クライアントから JavaScript を使ってサーバに送る必要がある。
参考サイト