どーも!
たかぽんです!
今回はAPIについてみていこうと思います!
正直右も左もわからない人にとってはAPI???ですよね。
そもそもAPIって?
って言うのをざっくりとまとめていこうと思います!
APIとは・・・?
さて、それではAPIとは一体なんなのか、簡単に調べておきましょう。
APIとは・・・。
"Application Programming Interface"の略です。
基本的にアプリケーションやソフトウェア同士で同じ機能を共有するために使用されるので...
ぶっちゃけ、ライブラリの関数と似たような感じなんだなぁ・・・と思っていただければ大丈夫です。
ただし、気をつけていただきたいのが返される値です。
APIと呼ばれるものは値を返す場合、大抵XML形式またはJSON形式という形式で値が返されます。
現在はJSON形式が主流なので、本記事でもJSON形式を見ていきます。
値を返さずになんらかの処理だけ行うものもあります。
APIを試しに使ってみよう!
さて、簡単にお話ししてきましたが、正直よくわかんないですよね。
言葉だけで言われても・・・・って感じ・・・わかります。
僕も当時はそうだったので・・・w
っというわけで、実際に使ってみましょう!
今から触るAPIは郵便番号から住所をJSON形式で返してくれるAPIです。
以下のボタンからzipcloudのAPIのページへ飛べます。
ここに基本的なAPIの使い方が書かれていますが、念のためこちらでも基本的な部分だけ解説しておきます。
以下の<あなたの郵便番号>
の箇所に任意の郵便番号を入れてブラウザへ貼り付けてみてください。(あなたのと書いてますが、別にあなたのでなくてもOKです!)
https://zip-cloud.appspot.com/api/search?zipcode=<あなたの郵便番号>
すると・・・・。
こんな感じになりましたか・・・?
これはJSON形式(ちょっと配列っぽいですね!)で住所の詳細情報を返してくれています。
この値をあなたのサイトなんかで使うことができるわけですね!
よく、ネット通販やらアカウント登録やらで郵便番号を入力して、"住所補完"的なボタンを入力すると自動でパッ!と入力されることありませんか?
ああいう物も大抵こういったAPIを使用しているはずです。
今回試してみたのは上記サイトにあった郵便番号の例で試してみました。(筆者の住所ではないです!)
https://zip-cloud.appspot.com/api/search?zipcode=7830060
これは、apiに対して7830060
という郵便番号を渡してあげると、その値から、住所情報を導き出して返してくれるわけです。
つまり、郵便番号をあげるとその住所の詳細情報がJSON形式で返ってくるわけです。
そして、今、"郵便番号から住所情報を調べる機能"を使うことが出来ましたよね?
これ、本来のプログラムならば...
ライブラリやパッケージをインストールして、その中から使いたいファイルをインポートして〜・・・...とかしなくちゃいけないわけです。
それに、全国の郵便番号を持つDBなんかもおそらく必要なので、そんなに簡単な話ではないですね...
ただ、みなさんももうご存知ですが、APIはURLさえ知っていて、公開されていれば誰でも使うことができるんです。
こうすることで、いろんな人が使えるように機能を共有することができるわけですね。
ちなみに、APIは誰にでも使えるようなAPI(先ほどの郵便番号のものやtwitter、facebookが出している物等)もあれば...
例えば社内だけに公開をするようなAPIも作ることができるので、社内特有の機能を持つAPIなどは他社に使えないように制限しつつ使うこともできます。
正直あまり社外に公開しても意味がないものを無闇に公開するのもメンテナンスを続ける手間がかかってしまいます...
広く公開されているAPIと、その会社内等、一部でのみ公開されているAPIがあるんだなぁと思ってもらえれば大丈夫です。
広く公開することはAPIのメンテナンスがいるといいましたが、何故公開するんでしょうか・・・?
例えばtwitterのAPIなら公式のtwitterでできることは大抵可能だそうです(アカウントからのツイート、ツイートの削除、ふぁぼ、リツイート、ツイートの検索などなど...)。
例えばツイートの投稿をするなら、アカウントの情報やツイートの内容を引数として渡してあげるんですね!
そうすると、値は返ってこなくて、ツイッター側でツイートが行われるわけです。
そう言うことができるのは正直twitter社側からはあまり利点がなさそう(自社の機能を無償で提供している)ですが・・・。
様々な外部のサービスからツイート等ができるということは、それだけ多くの外部サービスがtwitterと言うサービスに関連付けられ、結果的にtwitterのユーザーが増えることに繋がるんです。
たとえば・・・twitterは公式でPCでも投稿や閲覧ができるようになっていますが、それをPCでより快適にできるようにしたtweetdeckといったサービスがあります。
このtweetdeckなんですが、今はtwitter社が買収していますが、元々twitter社とは全く関係のない企業が作成したサービスにもかかわらず、サービス自体は”twitterを使いやすく”するためのサービスだったんです。
そうすると、tweetdeckを使うことによって間接的ではありますが、より多くのユーザーがtwitterを使うことになります。
場合によってはtweetdeckすごい便利だからこれを機にtwitterをはじめよう!という新規顧客もいたでしょう。
これはtwitterの抱える自社の機能を公に無償で公開することではじめて、”もっと便利に使えるようにしよ!あわよくばそれでビジネスしよ!”と思ってくれる人が出てくるわけです。
結果的にtwitter社も無視できなくなるほどユーザをガッツリ掴んでしまい買収されましたがw
無償で公開することで、APIをメンテナンスし続ける必要はありますが、一方でいろんな人に便利ツールつくってもらって、もっとたくさんのユーザーに認知してもらおう!というメリットもあるんですね。
それが社会貢献にも繋がるならなおさらいいですしねっ!
エンドポイントって・・・?
では次に・・・。
僕がAPIを初めて知ったときにずっと謎だったこのエンドポイントについて簡単に・・・。
実はこれ、先ほどのAPIの例の中ですでに出てきています。
先ほど郵便番号のAPIを触りましたね。
そのときに使ったURLは以下でした。
https://zip-cloud.appspot.com/api/search?zipcode=7830060
じつはこれがエンドポイントなんです。
エンドポイントは"末端の点”ですが、要するに"APIの入り口(始まりの点)"と思ってもらえれば大丈夫でしょう。
このエンドポイントを指定してあげることでAPIを使えるようになるというわけですね。
ちなみに、エンドポイントは一意に決めなければいけません。
例えばツイートの追加と削除APIがあり、どちらも同じエンドポイントだとどうなります・・・?
エンドポイントを指定されてもどの処理をすればいいのかわからないですよね?
- なんらかの機能を公に公開したり、一部に公開したりしたもの
- 値を返さない場合もあるが、大抵XML、JSON形式で返す(主流はJSON)
- APIごとに決まったエンドポイントへリクエストを送ることでAPIを使用できる
まとめ
さて、ざっくりとAPIについて解説しました。
このAPI、使い方さえ知っていれば結構便利な機能が使えます。
是非基本を理解してAPIマスターになりましょう!
最後に、僕がAPIについて理解する上でとても参考になった一冊をお伝えしておきます。
基本的なAPIについての知識や、有名どころのAPIのエンドポイントを見てみたり...と、とても参考になりました。
先ほどお伝えした、エンドポイントを一意に決める際にどうすべきか?
などなど、設計に関することも深く考察されているので、是非一読してみてください!
それでわ!