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種類の処理を実現できる
  • APIを開発する目的

    • ユーザが必要とする機能がある
    • ユーザは、その機能をプログラムから使用したい
  • 上記目的から、APIが持つべき性質を挙げる

    • 実行可能であること
      • レイテンシーや正確さなど、ユーザの要件を満たしつつ、問題を解決できること
    • 表現力があること
      • ユーザが必要とする処理を、明確かつ簡単に表現できること
        • 処理内容と戻り値が容易に予測できる名前
        • 分かりやすい名前の引数でオプションを指定できる
    • シンプルであること
      • 利用者が求める機能を、最も簡単な方法で公開すること
      • よく利用される機能は単純にする一方で、上級者向けに複雑なAPIも用意する
        • 境界がはっきりしている
    • 予測可能であること
      • 一例としては、名前に一貫性があること

まとめ

  • インターフェースとは、二つのシステムがどのようにやり取りをするかを定義した契約書
  • APIは、二つのシステムのやり取り方法を定義した特殊なインターフェース
    • ダウンロード可能なライブラリ、Web APIなど、様々な形態で提供される
  • Web APIは、以下の点が特殊
    • 機能をネットワーク上に公開する
    • 機能に必要な特定の実装や計算要件を隠ぺいする
      • 言い換えると、利用者は、これらを気にすることなく使用できる
  • リソース指向APIは、API設計手法の一つ
    • 限られたリソースに対して、標準的なアクション群(メソッド)を定義することで、複雑さを軽減する
  • 良いAPIの要因は明白ではないが、少なくとも以下は当てはまる
    • 実行可能であること
    • 表現力があること
    • シンプルであること
    • 予測可能であること
WebAPI

2023年05月25日(木)

1.0時間