API(アプリケーション・プログラミング・インターフェース)とは、あるソフトウェアが別のソフトウェアと通信するためのルール群です。メニューのようなものと考えてください:アプリがデータやアクションを「注文」すると、APIが厨房(サービス)に何を調理すべきか、そしてどのように提供されるかを正確に伝えます。
APIはリクエストの送信方法とレスポンスの返却方法を標準化するため、異なるチームや企業によって構築されたシステムや、異なるプログラミング言語で書かれたシステムであっても、確実に連携して動作できます。
技術的な観点から見ると、APIはエンドポイント(呼び出し可能なアドレス)、使用可能なメソッド(データの取得にはGET、送信にはPOSTなど)、送信データの形式(多くの場合JSON)、そして返される内容(データとステータスコード、例えば「OK」を示す200や「Not Found」を示す404など)を定義します。この予測可能性こそがAPIの本質なのです。
厳密に言えば、SDKなしでAPIを利用することは可能ですが、SDKを使用することで時間を節約し、ミスを減らせます。
はい、いくつかのスタイルがあり、それぞれにトレードオフがあります:
通常はそうです。すべてを自社で構築する代わりに、APIを活用すれば決済、地図、メール、検索、分析、AIなどの機能を簡単に組み込めます。これによりエンジニアリング時間を節約でき、信頼性が向上します(プロバイダーがサービスを更新し続けるため)。そしてチームは自社製品の独自性を高めることに集中できます。
トレードオフ:プロバイダーからレート制限、価格設定、稼働時間の依存関係を継承します。そのAPIなしでは製品が機能しない場合、冗長性を計画してください。
多くの場合。多くのAPIでは認証が必要であり、これによりプロバイダーは利用者を識別し、権限やレート制限を適用できます。一般的な手法には以下が含まれます:
可能な限り、鍵やトークンをパブリックリポジトリやクライアントサイドコードに含めないでください。
そうでもない。多くのAPIでは、ウェブブラウザやcurl、その他のHTTPクライアントが使える。開発者はよくPostmanのようなツールや言語固有の組み込みライブラリを使ってリクエストを送信し、レスポンスを検査し、例を保存する。本番環境のアプリでは、使用する言語のHTTPライブラリやプロバイダーのSDKを使うことになる。
現代のほぼ全て:プロフィールを取得するモバイルアプリ、「Google/Appleでログイン」、決済処理を行うオンラインストア、同期するスマートホームデバイス、分析データを取得するダッシュボード、天気ウィジェットでさえも。ソフトウェアがデータをやり取りしているなら、裏側にはAPIが存在する可能性が高い。