同じ処理を部品として再利用するライブラリ
プログラムには、文字列の整形、日付の計算、画像の読み込み、グラフの描画など、別の目的のソフトウェアでも繰り返し必要になる処理があります。それらを毎回すべて書くのではなく、利用しやすい部品としてまとめたものがライブラリです。必要なライブラリをプログラムに読み込み、用意された関数などを呼び出して使います。
例えば、数値の一覧からグラフを作る場合、点や線を画面のどこに描くかを一つずつ計算する方法もあります。しかし、グラフ描画のライブラリがあれば、データ、グラフの種類、表示する文字などを指定して描画を任せられます。利用者は部品の内部をすべて理解していなくても、その使い方を理解すれば目的の処理を組み込めます。
ただし、ライブラリを使えば常に正しい結果になるわけではありません。渡すデータや設定が誤っていれば、出力も意図と異なります。また、利用できる条件を定めたライセンス、対応する実行環境、更新状況などの確認も必要です。再利用は作業を減らしますが、何を任せ、どんな結果が返ったかを確かめる責任までなくすものではありません。
APIは「中身」ではなく「呼び出し方」の約束
APIは Application Programming Interface の略です。ここでいうインタフェースとは、異なるプログラム同士が機能やデータを受け渡すための接点を意味します。どの機能を、どの名前で、どのようなデータを渡して呼び出し、どのような結果を受け取るかという約束がAPIです。
ライブラリとAPIは関係しますが、同じものではありません。ライブラリは実際に処理を行うプログラム部品の集まりであり、その部品を外部から使う入口としてAPIが示されます。建物にたとえるなら、設備を備えた建物がライブラリで、利用できる入口、受付方法、受け取れるサービスを定めた案内がAPIに当たります。利用側は公開された入口を使うため、内部の実装が変更されてもAPIの約束が保たれていれば、同じ呼び出し方を続けられる場合があります。
オペレーティングシステムもAPIを提供します。アプリケーションはそれを通して、ファイルの読み書き、画面への表示、ネットワーク通信などをOSへ依頼します。機器ごとの細かな制御をすべてアプリケーション側に書かずに済むのは、こうした役割分担があるためです。
Web APIでは要求と応答が往復する
インターネット上のサービスが公開するWeb APIでは、多くの場合、利用するプログラムがサーバへ要求を送り、サーバが処理結果を応答として返します。これはクライアントサーバモデルに沿ったやり取りです。要求には、呼び出したい機能、検索条件、送信するデータなどを含めます。応答には、結果のデータに加えて、成功したか、要求に誤りがあったかなどを表す情報が含まれます。
天気情報を表示するアプリを例にすると、アプリが地域などの条件をWeb APIへ送り、サービス側が条件に合うデータを返し、アプリが画面向けに整えて表示します。このとき、通信方法やデータ形式などの共通規則が必要です。プロトコルは通信全体の規則を指し、APIはその通信を使ってどの機能をどう利用するかを定めます。
サービスによっては、利用者やプログラムを識別するための認証情報が必要です。認証情報を公開場所へ書いたり、他人と共有したりすると、第三者に機能を使われるおそれがあります。また、一定時間内に呼び出せる回数、利用できるデータ、料金、データの保存方法などに条件が設けられることもあります。APIの説明書を読み、エラー時の処理や仕様変更への備えを含めて設計することが大切です。
部品を借りても設計と検証は残る
ライブラリやAPIを選ぶときは、「目的の機能があるか」だけでなく、入力と出力、利用条件、安全性、保守の状況を確認します。同じ名前の機能でも、受け付ける値や失敗時の動作が異なることがあるからです。公式の説明書には、利用できる機能、引数、戻り値、エラー、使用例などが示されます。
動作を確かめる際は、通常のデータだけでなく、空のデータ、非常に長い文字列、範囲外の数値なども試します。外部サービスのAPIなら、通信できない場合や応答が遅い場合も考えます。高度な人工知能の機能をAPIで利用する場合も、返された内容が正確か、目的に適しているかを利用側で検討する必要があります。呼び出せることと、結果をそのまま信頼できることは別です。
「API=インターネット上のサービス」ではない
APIという言葉は地図や生成AIなどのWeb APIで目にすることが増えましたが、APIはインターネット専用の仕組みではありません。同じコンピュータ内で、アプリケーションがOSの機能を呼び出す接点もAPIです。ライブラリが公開する関数の名前や渡す値の決まりも、そのライブラリのAPIに含まれます。
さらに、画面上の操作部分を指すUI(ユーザーインタフェース)との対比も役立ちます。UIは主に人とソフトウェアの接点、APIは主にソフトウェア同士の接点です。どちらも、利用する側が内部構造のすべてを知らなくても扱えるように、使える操作と受け渡し方を表に出す役割を持っています。この共通点を押さえると、APIを単なる通信先ではなく、複雑な仕組みを安全に分担するための境界として捉えられます。