
t0mmy
2020年12月30日に参加
学習履歴詳細
API デザインパターン 1章読了
やったこと
- API デザインパターン 1章読了
学んだこと
ポイント
- インターフェースとは?
- APIとは何か?
- リソース指向とは?
- 良いAPIの要因は何か?
学び
- ライブラリやパッケージもAPI
気づき
Web APIは、機能に必要な特定の実装や計算要件を隠ぺいする
- 言い換えると、利用者は、これらを気にすることなく使用できる。
RPCもAPIの一つであり、リソース指向とは別物
![[Drawing 2023-05-25 21.20.57.excalidraw]]予測可能なAPI
- あるAPIを一つ学ぶと、他のAPIの使い方も何となくわかる(≒予測できる)、そんなAPI
「表現力があること」と「シンプルであること」は、近い概念のように思う
- なぜそう思うかは、うまく言葉にできなかった
メモ
- APIは、システムとやり取りする方法を定義したもの
- ライブラリやパッケージもAPI
Web APIも、APIの一種であり、以下の特徴を持つ
- 開発者側が大部分をコントロールできる
- 利用者がコントロールできる箇所は少ない
- 利用者は、APIの変更の影響をもろに受ける
APIはコンピュータと相性が良い
- 人間用はGUIであり、GUIはコンピュータと相性が悪い
- 特に、自動化にはAPIが重要な役割を担う
色々なAPIがある
- RPC 指向
- 実行される処理に重点を置く考え方
- リモートのプログラムを、メソッドのように呼び出す
- ステートレスな処理には強いが、ステートフルな処理に弱く、メソッド名の丸暗記が必要という欠点がある
- リソース指向
- 操作 × リソース で、APIを定義
- 6つの操作と5つのリソースの場合、操作名とリソース名の計11個を覚えておくことで、 最大30種類の処理を実現できる
- RPC 指向
APIを開発する目的
- ユーザが必要とする機能がある
- ユーザは、その機能をプログラムから使用したい
上記目的から、APIが持つべき性質を挙げる
- 実行可能であること
- レイテンシーや正確さなど、ユーザの要件を満たしつつ、問題を解決できること
- 表現力があること
- ユーザが必要とする処理を、明確かつ簡単に表現できること
- 処理内容と戻り値が容易に予測できる名前
- 分かりやすい名前の引数でオプションを指定できる
- ユーザが必要とする処理を、明確かつ簡単に表現できること
- シンプルであること
- 利用者が求める機能を、最も簡単な方法で公開すること
- よく利用される機能は単純にする一方で、上級者向けに複雑なAPIも用意する
- 境界がはっきりしている
- 予測可能であること
- 一例としては、名前に一貫性があること
- 実行可能であること
まとめ
- インターフェースとは、二つのシステムがどのようにやり取りをするかを定義した契約書
- APIは、二つのシステムのやり取り方法を定義した特殊なインターフェース
- ダウンロード可能なライブラリ、Web APIなど、様々な形態で提供される
- Web APIは、以下の点が特殊
- 機能をネットワーク上に公開する
- 機能に必要な特定の実装や計算要件を隠ぺいする
- 言い換えると、利用者は、これらを気にすることなく使用できる
- リソース指向APIは、API設計手法の一つ
- 限られたリソースに対して、標準的なアクション群(メソッド)を定義することで、複雑さを軽減する
- 良いAPIの要因は明白ではないが、少なくとも以下は当てはまる
- 実行可能であること
- 表現力があること
- シンプルであること
- 予測可能であること
WebAPI
2023年05月25日(木)
1.0時間