キャッシングの適切なコントロールでAPIを高速化
(5)よく使うデータをキャッシュしてAPIを高速化する
APIを高速化しつつ、正確なデータを、意図したタイミングで確実に届けるためには、キャッシングの適切なコントロールが欠かせない。データの鮮度が重要か否か、更新頻度の多寡など、APIが提供するデータの性質に応じて、Cache-Controlヘッダのパラメータを適切に設定する必要がある。ケースに応じたパラメータ設定は下記のフローチャートを参考にしてほしい。

またAPIから大量のデータを返す際は、クエリパラメータによるページネーションで、レスポンスを分割して返す。逆にAPIが大量のデータを受け取る場合は、バッチ処理用のエンドポイントを用意する。項目ごとに都度APIを呼び出すとオーバーヘッドが増えるので、配列としてまとめてデータを渡すのが定石だ。またバッチ処理やアップロードなど時間がかかる処理には、ロングランオペレーションという実装が必要になる。具体的には処理の開始、状態の確認、キャンセル用など、複数のエンドポイントを用意し、クライアントがそのURLを定期的にポーリングして状態を確認する方法。あるいは処理が完了した際にWebhookコールバックを通じて通知を受け取る方法がある。
(6)目的にあった認証・認可方式を選定
パブリックAPIにおいて、認証と認可は必要不可欠だ。APIの呼び出しごとに認可サーバへ問い合わせを行うと、オーバーヘッドが増加してしまうことがある。トークンの有効期限、トークンの長さをどうするか、毎回権限をチェックする必要があるのかといった点を、セキュリティ面と利便性の両面から総合的に判断し、最適な認可方法を選ぶことが必要だ。他にも、異なるオリジンにリクエストが必要な場合のCORS関連ヘッダによるアクセス制御、APIへの一定時間内の大量アクセスを制限するためのレートリミットなど、APIセキュリティを担保するためのさまざまな仕組みがある。
(7)APIの使い方を明確かつ詳細に説明するドキュメントを作る
草薙氏が最後に強調した重要なポイントは、APIドキュメントをしっかり作成することだ。現在は、OpenAPI仕様に従って、API仕様書とドキュメントを作成する方法が一般的だ。この仕様に従うことで、人間と機械の双方が理解しやすくなり、テスト、モックの自動生成も容易になる。
ただし、OpenAPI仕様だけでは開発者にとって十分な情報を集約するには限界がある。そこで草薙氏が紹介したのが、API管理プラットフォーム「Postman」のコレクション機能だ。これは、APIの仕様書と実行可能なAPIを一体化した、いわば実行可能なAPIドキュメントのようなものだ。これらのツールを活用することで、API開発者の作業負担を大幅に軽減できると、草薙氏は言う。

最後に草薙氏は、成長を続けるPostmanコミュニティの活動を紹介して、講演を終えた。
「私たちは、Postmanのユーザーコミュニティによる勉強会やワークショップを頻繁に開催している。connpassページでのイベント情報に加え、XやDiscordでも情報発信をしている。Postmanコミュニティに、ぜひ足を運んでみてほしい」
Postmanコミュニティに参加しよう!
Postman Connpassグループでは、Postman主催のイベント・オンラインワークショップ情報の配信と参加登録を受け付けています。また、Postman JapanコミュニティDiscordでは、プロダクト・イベント情報や、Q&A、ユーザー同士の交流が行われています。ぜひご参加ください。