0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

どこでAPIを切る?設計で迷わないための考え方

Last updated at Posted at 2025-10-02

はじめに

APIを設計するとき、「処理を1つにまとめるか」「複数のAPIに切り出すか」はよく悩むポイントかなと思います。
例えば、チーム作成と1人目のユーザー作成を同時にやるみたいな処理は、APIは2つがいいか、1つのAPIでやるかなど。
「APIの責務をどう分けるか」という設計かと思いますので、判断基準的なものを本記事にて、まとめていきます。

判断の指針

  • 外部公開かどうか
  • トランザクションの境界
  • 再利用性
  • 認可やポリシーの違い

外部公開かどうか

外部に出すAPIは粒度を小さく、リソース指向で分割した方がいい。
外部に提供するなら、責務が明確で再利用しやすい形にしておく方が扱いやすい。
逆に自社プロダクト専用で、UIの特定フローにしか使わないなら、1つにまとめても問題は少ない。

再利用性

上記と少し重なるが、、、
処理の一部が他のシナリオでもよく使われるなら、APIを1本にまとめるのは避けた方がいい。
逆に一度しか使わない専用フローなら、まとめても困らない。

トランザクションの境界

複数の処理を必ず同時に成功させたいかどうかが判断材料。
同じDB内なら1つのAPIにまとめてトランザクションで扱うのが自然。
違うDBの場合は、慎重にではあるが、1つのトランザクションにして、要件に合わせてデアはあるが、どっちかが失敗したらどっちも失敗でロールバックする仕組みが安全そう。

認可やポリシーの違い

未認証で実行できる処理と、認証や検証が必要な処理を同じAPIに押し込むと不自然になる。認可境界やポリシーが違う場合は素直に分けた方が整理しやすい。

設計スタイルについて

そもそもの設計スタイルとして、考えたのが、、、
「リソース指向で粒度を小さく切るべきか」
「ユースケースごとにまとめるべきか」
という二択の議論。

ただ結局は、実務でよく使われているのはハイブリッド。

どちらか一方ではなく、両方を組み合わせるのがバランスが良さそう!

まとめ

APIをまとめるか分けるかは「正解が一つ」ではなく、状況に応じて選ぶものだと学びました。
今回整理してみて、API設計は技術的な粒度の話だけじゃなく「誰が使うか」「どう運用するか」を含めて考えるべきものだと改めて理解できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?