search
LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

Web APIについて個人的まとめ

そもそもWebAPIとは何か?

機能を外部から呼び出すための仕様。
つまり外部インタフェース。

なおWebAPIはプロトコルとしてHTTPを使用するので、エンドポイントはURIによって指定される。

WebAPIの例)
・Twitterの特定ユーザのタイムラインを提供するAPI
・Amazonの商品を購入するためのリンクを他のWebページに貼りつけるAPI
・FaceBookのいいね!を外部のページから直接できるAPI

APIを公開するにあたって心がけること

まず第三者が利用することが前提となるからきちんとしたドキュメントを公開すること。
だれでも分かりやすいように使いやすい設計を心がけること。(⇐これが一番、大変かもしれんが・・・)

WebAPI公開のメリット

APIを公開することで、要は外部に向けて入口が開かれるわけなので、他のサービスと連携するなどして、サービスの利便性、拡張性を高め、しいてはサービス自体の価値を高めていくことになる。
またあるサービスに機能を追加したいと思ったとき、そのほしいサービスが既に存在していて、しかもそれがAPIで公開している場合にはそこにつなぎこんだりできる。

API公開のリスク

運用方法による。
「APIを公開すること=情報へのアクセスを無限に受け付けること」ではないので、ユーザーごとのアクセス制限を設けたり、その制限を超えて大量のアクセスを行う場合は提携関係を結んで利用料を払うようになっていたり、そもそも一定以上のアクセスができない仕組みになっていたりする。

APIエコノミー

Web APIを公開することで外部サービスとの連携を容易にして、新たな価値が生まれ、ビジネスが発展していくこと。

APIでは何を公開すべきなのか

そのサービスに存在する機能すべて
もう少し限定するならば、サービスのコアとなる部分
例)ECサイトなら購入、検索

API公開で得られるもの

公開したAPIを企業や個人が他のサービスに紐づけたり活用してくれることでサービスの価値や情報の質が上がる可能性がある。
またAPIを公開すれば、欲しかった機能やまったく思いつきもしなかった機能を誰かが作ってみてくれるかもしれない。
結果としてサービスの価値を上げていってくれる(はず)。

そうして、もしそうした機能がサービスに大きな価値を与えているのであれば、同等の機能を自ら提供することもできる。
例)Titterで写真を公開するTwitpicや公開されているTweetをまとめてカスタムインラインを作るTogetterなどの登場の後に、同等の機能をTwitterは本家の機能として公開している。

逆にサービスの質を著しく下げているものがあればAPIの提供を止めるなどして対応すべき
(もちろんただ気にくわないとかいう、差別的な理由だけで提供を止めるのは、サービス自体の評判が下がるのよくないが・・・)

そういった対応をきちんと行えるようにAPI公開時には利用規約を公開し、問題となる行動をとった場合の対処を明記する。

APIを美しく設計する

重要な原則は以下の二点

・仕様が決まっているものは仕様に従う
・仕様が存在していないならデファクトスタンダードに従う

仕様は、これまでにたくさんの人が、いろいろな視点からの検討を経て決まっている。
したがってそうした仕様に従うことを理にかなっている。

デファクトスタンダードについても同様。
これまでの歴史の中で現在、スタンダートなっているものにはそれなりの理由があるのだから。

こうしたルールに従うことには大きなメリットがある。
それはこれまで他のAPIを開発してきた人があなたのAPIを見たときにも、利用方法が簡単に推測できたり、既存のクライアントライブラリの流用ができる

APIの設計思想

以下二つは、APIがターゲットとする開発者がなにかを表すために使われる

LSUDs(large set of unknown developers)

意味:未知のたくさんの開発者
ターゲットとするAPIは公にAPIをドキュメントともに公開し、だれでも登録して使えるようにしたもの。
多くの人に使われる分、あらゆるユースケースを想定して汎用的にしてかなければならない

SSKDs(small set of known developers)

意味:既存の小数の開発者
ターゲットは例えば、自社サービスのスマホクライアント向けのAPIなど、APIを利用する開発者が限られている場合に使用する
特定の開発者やエンドユーザにとって利便性が高いものしなければいけないはずなので、「美しい設計」の定義がときどきによって大きく違う。

APIを利用したサービス

様々なAPIを集めてその情報を公開しているAPIディレクトリサービス
Programming Web

参考書籍

Web API: The Good Parts

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0