分みなさんこんにちは。teratail開発チームの出川です。APIはHTTPを通じてアプリケーションを扱うことができるインターフェースです。世の中のWebサービスには,そのAPIを公開しているものが多々あります。APIが公開されていると,他のソフトウェアから二次的にそのWebサービスを利用することができます。APIを公開しているサービスは次々と増えています。APIを公開していて,サイト内の質問や回答の情報を二次利用することができます。|teratail(テラテイル)https://teratail.com/api参考:teratail-archivehttp://argius.net/teratail-archive/MicrosoftやDocomoなど,企業で積極的にWebAPIを公開している例もあります。APIを利用することは重要になっていくでしょう。APIは他のサービスで使われているものを二次利用する性質上,その使い方には少しコツがあります。APIを利用するにあたっての基礎知識をまとめていきたいと思います。APIのほとんどはHTTPによって通信を行います。そのため,HTTPの仕組みや仕様を理解しておくことはとても重要です。HTTPはWebサーバとWebブラウザがデータをやりとりするのに使われるプロトコルです。APIのレスポンスはJSONやXMLといったソフトウェアが扱いやすい構造になっています。APIへのリクエストにはURIとメソッドの2つを指定する必要があります。APIではURIのことをエンドポイントとも呼びます。OPTIONSなどがあります。GETはリソースを取得する時に用い,POSTはリソースの作成,PUTはリソースの変更,DELETEはリソースの削除など,その役割が分かれています。APIのドキュメントはこれらHTTPの仕様を大前提としているので,基礎は必ず頭に入れておく必要があります。詳しい知識はRFCにまとまっていますので,興味のある方は見てみるとよいと思います。APIを発見したら,それらを手元で試してみるのが仕様や挙動を理解するのに便利です。HTTPの仕様の基礎を理解していることが必要です。APIを利用する際には,認証を行う必要があるものもあります。その際はアクセストークンという文字列を取得し,それをリクエストに含めて利用することが多いです。Secret)を取得する必要があります。APIの動作を試すのにもっとも汎用的に利用できるのがcurlコマンドです。curlはUNIX系のOSであればほとんどの場合デフォルトでインストールされていますし,オプションにより詳細な通信が可能です。APIへのリクエストをすることが可能です。JSONの整形やリクエストの保存なども可能なので,試すには非常にオススメのツールです。単純にレスポンスとして返ってきたJSONの整形や抽出を行う場合は,jqというツールが便利です。これらのツールを使わなくても,自分の使い慣れた言語で触ることもできます。自分に合ったツールを使って試してみてください。参考:オススメのモックWEBサーバー構築方法を教えてください。APIには,時間あたりに使用できる回数が決まっています。APIではしばしばレートリミットと呼びます。APIなど特定の行為をするとクレジットが増えたりするものもあります。アクセストークンを利用することでレートリミットが緩和されるものもあり,その形態はさまざまです。利用する際には,この制限回数がどれほどかを把握しておくことが必要です。レートリミットを超えるアクセスは正しいレスポンスを返さないので,サービスが利用できない旨をユーザに伝え,これ以上リクエストを送らないようにする必要があります。レートリミットを超えてもリクエストを続けるとDoS攻撃とみなされてしまうこともあるので注意が必要です。APIからのレスポンスをキャッシュしてリクエスト回数を減らすのがもっとも基本的な対策方針になります。APIを利用したコードを書くときは,通常とは違った注意が必要です。APIは他のサービスを利用するので,レスポンスが届くまでには時間がかかります。このため待っている間のユーザのストレスを軽減する仕組みが必要です。APIへのリクエストはなるべく避けるべきです。APIからのレスポンスを待つ時間が全てユーザの待ち時間となってしまうためです。サーバサイドからリクエストをする場合は非同期通信にするか,キャッシュを用いて2回目以降のリクエストを減らすなどの工夫が必要です。非同期通信に関しては,JavaScriptであればXMLHttpRequrest,Go言語であればnet/httpパッケージを利用するなど,簡単に実現が可能な言語も多いといえます。参考:swift2でHTTP通信を行う方法|teratailhttps://teratail.com/questions/30313WebアプリケーションのフロントエンドからJavaScriptで非同期通信を行うことはよく行われます。APIのみを扱うことになります。APIへのリクエストは安全でないリクエストとしてブラウザがブロックしてしまうので利用できません。アプリケーションの通信をHTTPSで行っている場合はあらかじめ確認しておきましょう。APIを多用するスマートフォンアプリでは無線の通信状態によってアプリケーションそのものの処理時間が大きく変わります。APIのレスポンスを待ってユーザに情報を表示させるときはプログレスバーを表示したり,処理をバックグラウンドに回してユーザが操作不能な時間を減らすのが効果的です。APIがダウンしている場合なども想定する必要があります。APIが利用できずアプリケーションが正しい動作ができない場合には,その旨をユーザに伝える必要があるかもしれません。APIを利用するにあたっての基礎知識や,処理を実装する際に注意する点をまとめてきました。APIのドキュメントを読むようにしましょう。障害やメンテナンスによって使えない時間帯が発生したり,機能追加や削除によって利用しているアプリケーションのコードを変える必要が出てくる場合もあります。APIで他のWebサービスのデータや機能を二次利用することで,自分のプロダクトをよりよいものにすることができます。APIという巨人の肩の上に乗って,今までになかった価値を生み出すアプリケーションを作っていきましょう。teratail開発エンジニア。サーバサイドの開発を中心に,フロントエンドやインフラなど幅広い領域を担当。物心ついた時からのApple信者で,Appleのデバイスをそれぞれじっくり使い倒すのを至上の喜びとしている。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。