【本書の内容】
本書は
Arnaud Lauret, "The Design of Web APIs",
Manning Publications, 2019
の邦訳版です。
SNSはもちろん動画システムや決済システムなど、いまやAPI(アプリケーション・プログラミング・インターフェイス)を使用しないWeb上のシステムはありません。
データを簡便にリクエストでき、使いやすいデータを返す。そういうAPIが求められています。
とはいえ、データをリクエストしてくるのは一か所ではありません。カスタマーがいてコンシューマーがいてデベロッパーがいて、そしてそれぞれがそれぞれの都合に合わせた使えるデータを要求してきます。
本書はこういった複雑な要望に対して、可能な限り応ええる柔軟性を備え、堅牢でシンプルなAPIを作る方策を示します。
コマース系のサイトをベースに、データの配置方法や拡張性を維持し続ける方法などを、実装ありきではないスタイルで、APIのすべてを語り尽くしています。また、メンテナンス性や、より多くのユーザーを獲得するためのドキュメントの記述・完備方法なども詳解します。
突貫で作りがちなAPIを、その使い勝手にフォーカスしながら正しく作り込んでいくための視点と姿勢を体得できる一冊です。
本書は、著者Arnaud Lauretの長年のAPI設計経験を利用し、
要件を収集する方法、ビジネス目標と技術目標のバランスを取る方法、
および消費者第一の考え方を採用する方法について、仔細に検討し、
より使いやすく可用性に富み、拡張性と堅牢性をもつAPI構築への道を詳解してくれます。
【本書のポイント】
・使うだけではなく使えるAPIを理解できる
・API設計の勘所がつかめるようになる
・実世界におけるユーザー指向APIを学べる
・手書き風の概念図がかわいい
【読者が得られること】
・APIの成り立ち
・使いやすいAPIの作り方
・可用性・発展性のあるAPIの設計方法
本書はArnaud Lauret著『The Design of Web APIs』(Manning Publications, 2019)の邦訳です。
コマース系のサイトをベースに、データの配置方法や拡張性を維持し続ける方法などを、実装ありきではないスタイルで、APIのすべてを語り尽くしています。また、メンテナンス性や、より多くのユーザーを獲得するためのドキュメントの記述・完備方法なども詳解します。突貫で作りがちなAPIを、その使い勝手にフォーカスしながら正しく作り込んでいくための視点と姿勢を体得できる一冊です。
第1部では、APIの設計に必要な、最も基本的な概念とスキルを取り上げます。
第2部では、「考えさせない」APIの設計方法に着目します。考えさせないAPIとは、理解しやすく使いやすいAPIのことです。
第3部では、「APIを取り巻くコンテキスト全体」および「APIの設計プロセスそのものを取り巻くコンテキスト全体」など、APIの設計者が考慮に入れなければならないことを示します。
複雑な事柄は図表付き解説。明確なイメージが理解を助けます。
覚えておきたいことを「コラム」や「Note」などで補足解説しています。プラスαの知識が身につきます。
コードのポイントとなる部分には注釈コメントを載せています。より理解が深まります。
■第1部 APIデザインの基礎
第1章 APIデザインとは何か
1.1 APIとは何か
1.2 APIの設計はなぜ重要か
1.3 APIの設計を構成する要素
1.4 まとめ
第2章 ユーザーを意識したAPIを設計する
2.1 身近なユーザーインターフェイスを設計するための正しい視点
2.2 ソフトウェアのインターフェイスを設計する
2.3 APIのゴールを洗い出す
2.4 APIの設計時にプロバイダの視点を回避する
2.5 まとめ
第3章 プログラミングインターフェイスを設計する
3.1 REST API
3.2 APIのゴールをREST APIに置き換える
3.3 APIのデータを設計する
3.4 設計上の課題に直面したときは妥協点を探る
3.5 RESTはなぜどのAPIの設計にとっても重要なのか
3.6 まとめ
第4章 API記述フォーマットを使ってAPIを記述する
4.1 API記述フォーマットとは何か
4.2 APIのリソースとアクションをOASで記述する
4.3 OASとJSON Schemaを使ってAPIデータを記述する
4.4 OASを使ってAPIを効率よく記述する
4.5 まとめ
■第2部 ユーザブルなAPIの設計
第5章 単純明快なAPIを設計する
5.1 単純明快な表現を設計する
5.2 単純明快なインタラクションを設計する
5.3 単純明快なフローを設計する
5.4 まとめ
第6章 予測可能なAPIを設計する
6.1 一貫性
6.2 適応性
6.3 発見可能性
6.4 まとめ
第7章 うまく整理された簡潔なAPIを設計する
7.1 APIを整理する
7.2 APIのサイジング
7.3 まとめ
■第3部 コンテキストに応じたAPIデザイン
第8章 セキュアなAPIを設計する
8.1 APIのセキュリティ
8.2 アクセス制御を可能にするためにAPIを分割する
8.3 アクセス制御を念頭に置いて設計する
8.4 センシティブな内容に対処する
8.5 まとめ
第9章 APIの設計を進化させる
9.1 APIの進化を設計する
9.2 APIのバージョニング
9.3 拡張性を念頭に置いてAPIを設計する
9.4 まとめ
第10章 ネットワーク効率のよいAPIを設計する
10.1 ネットワーク通信の懸案事項
10.2 プロトコルレベルでのネットワーク通信の効率化
10.3 設計レベルでのネットワーク通信の効率化
10.4 まとめ
第11章 コンテキストに基づいてAPIを設計する
11.1 ゴールとデータの性質に通信を適応させる
11.2 完全なコンテキストを観察する
11.3 コンテキストに従ってAPIスタイルを選ぶ
11.4 まとめ
第12章 APIを文書化する
12.1 リファレンスマニュアルを作成する
12.2 ユーザーガイドを作成する
12.3 実装者に適切な情報を提供する
12.4 進化と終了を文書化する
12.5 まとめ
第13章 APIを成長させる
13.1 APIのライフサイクル
13.2 APIの設計ガイドラインを作成する
13.3 APIのレビュー
13.4 情報提供と共有
13.5 まとめ
kannkyo さん
2021-05-21
Web APIの”設計”の入門書。具体的な事例を挙げて、設計の流れを豊富な図とコードで解説。API の設計者と利用者 の双方の視点を踏まえつつ、APIライフサイクルを通じて発生するタスクを具体的に説明。特に、APIの変更容易性を実現するアーキテクチャに関する検討は、実務的視点に富んでおり、一見の価値有。
iwtn_ さん
2021-12-30
タイトルの通りの内容が、包括的に記述されている良書。手法としてはRESTを中心にしているが、GraphQLやgRPCにも言及している。文書化の重要性も説いており、WebAPIとしてサービスを設計するのであれば、読んでおいて間違いのない本。 あるサービスは社会の一部であり、他のサービスと連携することによって、更に力を発揮できる。そして人間だけでなく、コンピュータによって連携できるようになることが、昨今よく言われるDXだと思う。民間のサービスだけでなく行政なんかもWebAPIを作っていくようになって欲しい。
ミ酉 さん
2021-11-21
なんだかんだ買ってから一年くらいかかってしまったがようやく読了。API設計の基礎が一本にまとまっていて、非常にわかりやすい。アプリエラーをステータスコード200で返すような現場に一冊。