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?

[SaaS開発日記] 3日目 詳細設計の前にC4モデルで全体像を整理した

0
Last updated at Posted at 2026-08-09

前回は、技術選定と画面設計を進めました。

ただ、そこで少し手を動かしてみて感じたのが、
詳細設計に入る前に、そもそもこのアプリケーション全体がどう動くのかを整理しておいたほうがよさそう ということでした。

順番としては少し前後しているのですが、今回はその整理のために C4モデル を使って、システムの全体像をまとめてみました。

🧭 今回やったこと

今回は、C4モデルのうち

  • Context
  • Container

の2つを作成しました。

逆に、Component まではまだやっていません。

理由としては、Component のレベルまで入ると、API設計やバックエンドの詳細な責務分割にかなり関わってくるからです。
現状、バックエンドのアーキテクチャはまだ設計中なので、今回はまず 全体像を整理するところまで に留めました。

🤔 なぜこのタイミングでC4モデルを作ったのか

前回、技術選定や画面設計を進めていたのですが、
その一方で「このアプリケーションが外部システムとどう関わって、内部でどう構成されるのか」をまだはっきり言語化できていませんでした。

画面は見えていても、

  • 認証はどう通るのか
  • フロントとバックエンドはどうつながるのか
  • コスト情報はどこからどう取得するのか
  • データベースはどこで責任を持つのか

みたいな、システムとしての流れが曖昧なままだったんですよね。

そこで、一度詳細から少し離れて、全体像を見直す意味で C4モデル を作ることにしました。

📌 Context図を作ってみた

まずは Context 図です。

image.png

Context図では、このサービスが外部のどんなシステムやユーザーと関わるのかを整理しました。

今回の図では、

  • 利用者である Developer
  • 認証を担当する Login System
  • コスト情報を収集する Cost Information Collect System
  • そして中心となる Dev Cost Simulator

の関係を表しています。

ここを描いてみると、
「このサービス単体で完結しているわけではなく、認証やコスト情報取得の仕組みと接続して初めて成立するんだな」ということが改めて見えやすくなりました。

🏗️ Container図も作成した

次に、Container図も作りました。

image.png

Container図では、システム内部をもう少し具体化して、

  • Web Application(Next.js)
  • API Application(FastAPI)
  • Database(PostgreSQL)

という形で整理しています。

前回技術選定の記事でも書いた構成ですが、
図として落としてみると、単に技術スタックを並べるだけよりも、それぞれがどういう責務を持つのか が見えやすくなった気がします。

たとえば、

  • Web Application はブラウザに機能を提供する
  • API Application はコスト管理のロジックを担う
  • Database はコスト情報やユーザー情報を保持する

という役割分担を、視覚的に確認できるようになりました。

✋ Component図まではまだ作っていない

今回は C4モデル の Context と Container までに留めました。

Component図まで行くと、たとえば

  • APIの責務をどう分割するか
  • バックエンドの内部モジュールをどう切るか
  • 認証やコスト取得処理をどこに持たせるか

といった、かなり詳細な設計に入ってきます。

でもそこは、まだバックエンドアーキテクチャの検討が途中なので、今の段階で無理に決めきるより、
まずは システム全体の輪郭を揃えること を優先しました。

このあたりは、今後実装を進めながら詰めていくことになりそうです。

🎥 C4モデルを学びながら、draw.ioテンプレも作った

今回 C4モデル を作るにあたって、公式の動画も見ながら学び直しました。

正直、名前だけ聞いたことはあっても、実際に自分のプロダクトに当てはめて描いてみるのは今回がかなり大きかったです。

特に、

  • まず Context で外との関係を整理する
  • 次に Container で内部の大きな構成を分ける
  • さらに必要なら Component に進む

という粒度の切り方は、かなり分かりやすいなと思いました。

また、動画内で使われていた図のマテリアルも参考にしながら、draw.io 用のテンプレートも作ってみました。
今後また別の図を書くときにも使い回せそうなので、これも地味に収穫でした。

もし使えそうなら、テンプレートも自由に使ってもらえたらうれしいです。

📝 3日目のまとめ

今回は、順番としては少し前後しつつも、詳細設計に入る前に C4モデル を使ってシステムの全体像を整理しました。

作成したのは、

  • Context図
  • Container図

の2つです。

派手な進捗ではないかもしれませんが、
技術選定や画面設計だけでは見えにくかった「このアプリケーションがどう成立するのか」を、一度整理できたのはかなりよかったと思っています。

次は、この整理をもとにしながら、バックエンドのアーキテクチャや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?