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?

あなたはアーキテクチャカタログをどれだけ持っていますか?

Posted at

システム開発の現場で、こんな経験はありませんか?

  • 「とりあえずユーザー要望をそのまま実装したら、コードがどんどん複雑に…」
  • 「気づけば if 文だらけで誰も触れないコードになっていた」
  • 「案件ごとにテーブルを追加していたら、DB がカオスになった」

一見するとユーザー要望に応えているようで、実際には「その場しのぎの設計」を積み上げているだけ。
これは短期的には動いても、長期的には負債になってしまいます。


悪い例:要望直列型の実装

例えばこんなケース。

営業からの依頼:

  • A社向けに処理を追加してほしい
  • B社向けは別ルールで計算してほしい
  • C社は特殊だから例外処理を

素直に実装すると…

if (customer == "A") {
    ...
} else if (customer == "B") {
    ...
} else if (customer == "C") {
    ...
}

最初は動きますが、半年後には if 文がさらに10個増えているかもしれません。
DB も案件ごとにカスタムカラムや専用テーブルが乱立し、誰も触りたくない状態に。

これが 要望直列型の実装 です。

図解イメージ(悪い例)

  • if/else が肥大化
  • 専用処理・専用テーブルが乱立
  • 変更時の影響範囲が不明確

良い例:アーキテクチャカタログに落とし込む

優れたエンジニアは、ユーザー要望をそのまま実装するのではなく、
自分の頭の中にある「アーキテクチャカタログ」から最適な要素を選び、汎用的な設計に落とし込みます。

例えば…

  • ルールエンジン:顧客ごとの条件を if 文ではなく設定で切り替え可能にする
  • ETL パイプライン:複雑なデータ処理を流れとして整理する
  • オブジェクト指向設計:責務を分離し、再利用可能にする
  • DB 正規化/スキーマ設計パターン:スケールしやすく破綻しないデータ構造を作る
  • マイクロサービス:サービス境界を明確にし、ドメインごとに責務を分割する

これらは単なる「知識」ではなく、必要に応じて取り出せる カタログのような存在

ユーザー要望は、このカタログに照らして整理することで、汎用的で長く生きるシステム設計 に変換できます。

図解イメージ(良い例)

  • 要件をカタログの部品へマッピング
  • 再利用性・拡張しやすさを確保
  • 長期的なスケールと保守性を担保

アーキテクチャカタログとは?

「アーキテクチャカタログ」とは、エンジニアが頭の中に持っている設計パターンや構造の引き出しのことです。

  • カタログ = 知識を一覧化したもの
  • アーキテクチャ = システムを支える設計の枠組み

つまり、特定のユーザー要望に直結した一回限りの設計ではなく、
多様な要件に対応できる 再利用可能な設計のコレクション を指します。


まとめ

  • ユーザー要望をそのまま直列につなげた実装は、必ず負債になる
  • エンジニアに必要なのは「アーキテクチャカタログ」を頭の中に持つこと
  • そのカタログを使って要件を汎用的な設計に落とし込むことで、長期的に使える美しいシステムが作れる

あなたは、どれだけの アーキテクチャカタログ を持っていますか?
そして、そのカタログをどれだけ 日々の開発に活かせて いますか?

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?