付録

アンチパターン集 ― 詰む前に気づく逆引きカタログ ― 生成AI時代のアーキテクチャ超入門

アンチパターン集 ― 詰む前に気づく逆引きカタログ ― 生成AI時代のアーキテクチャ超入門

本記事について

当サイトを閲覧いただきありがとうございます。 本記事はシリーズ『生成AI時代のアーキテクチャ超入門』の「付録」カテゴリ第1弾として、アンチパターン集を解説する記事です。

各記事の「よくある勘違い」「よくある失敗」分野横断の逆引きカタログとして再編成しました。アーキテクトの仕事は致命的な間違いを避けることの方が重要で、本記事は「詰む前に気づく」早期警戒装置として使えます。「あれ、これ大丈夫かな?」のときに該当分類を引いてください。

付録カテゴリの全記事一覧は以下のページにまとめています。

付録 記事一覧 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-index-appendix/

本記事のテーマについてさらに詳しく知りたい方は『ソフトウェアアーキテクチャの基礎』も参考にしてみてください。

そもそもアンチパターンとは何か

交通事故の原因パターンを思い浮かべてください。「脇見運転」「スピード超過」「一時停止無視」──事故の原因は毎回新しいものではなく、同じパターンが繰り返し発生しています。パターンを知っていれば、危険な状況に気づいて事前に回避できます。

アンチパターンはアーキテクチャ版の事故原因カタログです。過去のプロジェクトで繰り返し見られた「やってはいけない設計判断」を類型化したもので、同じ失敗を繰り返さないための知恵の集積です。

もしアンチパターンを知らなければ、先人が既に踏んだ地雷を自分も踏むことになります。致命的な間違いを避けることは、正しい設計を追求することと同じくらい重要です。

なぜアンチパターンを学ぶ必要があるのか

正しい選択を覚えるより「致命的な間違い」を避ける方が効果的だから

アーキテクチャの選択肢は無数にありますが、致命的な間違いのパターンは有限で、しかも繰り返し現れます。全ての正解を覚えるのは不可能ですが、「これだけはやってはいけない」を押さえておけば、設計レビューの品質が劇的に上がります。

「一見もっともらしい判断」が一番危険だから

アンチパターンの多くは初見では合理的に見えますマイクロサービスの方がスケールする」NoSQLの方が速い」「最新技術の方が生産性が高い」──いずれも文脈次第で正解にも不正解にもなります。アンチパターンを学ぶことで、前提条件を確認する習慣が身につきます。

チームの共通語彙として機能するから

「それはGolden Hammerだね」「Big Ball of Mudになりかけている」とパターン名で指摘できると、設計レビューや議論の効率が格段に上がります。抽象的な懸念を具体的な類型で共有できるのは、チーム全体の設計力の底上げになります。

アンチパターンの主要類型 交通事故と同じ。原因パターンは有限で繰り返す。知っていれば避けられる 1 アーキテクチャ全般 過剰設計(YAGNI 違反) 最新技術への飛びつき 車輪の再発明 意思決定の文書化なし ベンチマークなしの結論 設計の姿勢の誤りが根本原因 2 インフラ・デプロイ 無意味なマルチクラウド 必要もない K8s 採用 早すぎるマイクロサービス IaC なしの手動構築 RDS をパブリックサブネットに配置 大企業の真似が根本原因 3 データ 本番 DB で分析クエリ実行 スキーマレス DB への逃げ マスタデータ部門別バラバラ 履歴を残さず上書き更新 バックアップ復旧の未検証 アプリの失敗より5倍重い 4 アプリケーション God クラス・God 関数 ビジネスロジックをストアドプロシージャに エラー握りつぶし(catch {}) 意味のない命名(data・util) null を返すメソッド 動くが保守不能なコードが最大の負債 5 フロントエンド localStorage に JWT 保存 CSR で SEO 重要サイト 自前認証 Cookie 実装 独自 CSS 設計システム 素の React で自前ルーティング ユーザーの目に直接触れるため代償大 6 セキュリティ 自前認証の実装 MFA を任意設定 秘密情報を Git にコミット VPN 内を信頼(境界型モデル) ログに個人情報を生で出力 取り返しがつかないのが最大の特徴 共通根本原因: 規模の見誤り・前提条件の未確認・「一見もっともらしい」判断 パターン名で指摘できると設計レビューの効率が格段に上がる

アーキテクチャ全般の罠

全分野に共通する判断ミスのパターンです。特定の技術選定というより、設計に対する姿勢の誤りで、多くの失敗プロジェクトに共通して見られます。

アンチパターン症状処方箋
過剰設計(YAGNI違反)使わない機能・層・抽象が大量現在の要件で必要な分だけ作る
最新技術への飛びつき情報が少なく詰まりやすい2〜3年運用実績のある選択肢を優先
車輪の再発明既存品で済む機能を自作標準ライブラリ・SaaSに寄せる
意思決定の文書化なし「なぜこれに決めたか」が誰も覚えてないADRを書く
ベンチマークなしの結論「こっちの方が速い気がする」で決定必ず計測してから選ぶ

「技術的に正しい」より判断理由が文書化されているの方が、長期運用では価値があります。

インフラ・デプロイの罠

クラウド・サーバー・ネットワーク周りでの典型的な誤選定です。とりあえず大企業の真似をするが根本原因になっているケースが多く、規模とフェーズを見誤ると致命傷になります。

アンチパターン症状処方箋
無意味なマルチクラウドIAM・監視・IaCが二重化し運用倍増単一クラウドに寄せる
必要もないK8s採用運用時間が開発時間を食うECS Fargate/Cloud Run で十分
早すぎるマイクロサービス分散トランザクションとネットワーク境界で沼モノリスから始めて必要になったら分割
IaCなしの手動構築環境差分が生まれ再現不可能Terraform/CDK で全リソース管理
プライベートサブネットにRDSなしDB直接公開でセキュリティ穴必ずプライベートサブネットに配置

スタートアップで「AWS認定」レベルの設計をやると、プロダクト開発の時間が溶けます

データの罠

データストア選定・データベース運用での典型的な誤選定です。データはアプリと違って作り直せないため、ここでの失敗は5年後まで尾を引きます。

アンチパターン症状処方箋
本番DBで分析クエリ実行顧客の体感速度が劣化OLTP/OLAPを早期分離(DWH=Data Warehouse構築)
スキーマレスDBへの逃げ後のAI活用・分析で詰むPostgreSQL + スキーマ定義
マスタデータ部門別バラバラ顧客重複・統合不可能MDM整備
履歴を残さず上書き更新監査証跡なし・機械学習で困る履歴テーブル or イベントソーシング
データ品質チェックなし不整合データが分析を汚染dbt tests/Great Expectations を自動化
バックアップからの復旧未検証実際の災害時に復旧失敗四半期に1回はリストア演習

データアーキテクチャの失敗は、アプリケーションアーキテクチャの失敗より5倍重い。作り直しが効かないためです。

アプリケーションの罠

コード設計・モジュール化・エラーハンドリング周りの典型的な誤りです。短期的には動くため気づきにくく、数か月〜数年かけて保守不能に追い込まれるパターンが多いのが特徴です。

アンチパターン症状処方箋
Godクラス・God関数1ファイル数千行・責務不明単一責任原則で分割
ビジネスロジックをストアドプロシージャにDB移行不能・テスト困難アプリ側にロジックを寄せる
エラー握りつぶし(catch { }障害が表面化せず深刻化ログ出力 + 再スロー or 明示的処理
意味のない命名(datautilmanagerコードの意図が読めないドメイン用語で命名
全部staticメソッドテスト不能・依存注入不能DIコンテナ or コンストラクタ注入
nullを返すメソッド呼び出し側でnullチェック漏れOptional/Result型で表現

「動くが保守不能なコード」は、書いた本人以外に技術的負債を押し付ける行為です。

フロントエンドの罠

フロント特有の誤選定・実装ミスです。セキュリティと性能に直結するパターンが多く、ユーザーからの信頼に影響します。

アンチパターン症状処方箋
localStorageにJWT保存XSS一発でトークン流出HttpOnly Cookie + BFF
CSRでSEO重要サイト検索に載らないSSR/SSG/ISR を使う
自前認証Cookie実装脆弱性作り込みの温床Clerk/Auth.js/Auth0 に委譲
独自CSS設計システム人材確保困難・学習コスト無駄Tailwind + shadcn/ui
画像を最適化せず配信LCP壊滅・Core Web Vitals低下CDN変換 + WebP/AVIF
メタFWを使わず素のReactルーティング・SSR・ビルドを自作Next.js/Astro を使う

フロントエンドのアンチパターンは、ユーザーの目に直接触れるため代償が大きいです。

セキュリティの罠

セキュリティアーキテクチャでの典型的な誤りは、取り返しがつかないのが最大の特徴です。漏洩が起きてから対策しても、流出したデータは戻りません。

アンチパターン症状処方箋
自前認証の実装パスワードリセット・MFA等で穴Auth0/Cognito/Clerk に委譲
MFAを任意設定パスワード漏洩時に即突破全ユーザー必須化
パスワード認証のみフィッシングで一撃Passkey対応を標準化
ログに個人情報を生で出力個人情報保護法違反リスクPIIマスキング + 監査
秘密情報をGitにコミット流出 → 高額請求・法的リスクVault/Secret Manager + pre-commit hook
TLS1.0/1.1をまだ許容監査で不適合TLS1.3必須・1.2最低限
VPN内を信頼(境界型モデル)内部侵入で全体崩壊ゼロトラスト・全リクエスト認証

セキュリティは「事故ってから」ではコストが100倍になります。最初に標準装備する分野です。

監視・運用の罠

運用フェーズで発覚するアンチパターンです。「動いているように見える」状態が続くため、表面化しないまま障害時に全てが噴出します。

アンチパターン症状処方箋
アラートが鳴っても誰も見ない重大障害の発見遅延PagerDuty + オンコール体制
SLOなしで運用品質を数値で議論できない可用性99.9%等を明示
ログが構造化されていない検索・集計が不可能JSON構造化ログ標準化
ランブック(手順書)なし夜間障害で新人が詰む主要障害の対応手順を文書化
ポストモーテムをやらない同じ障害が繰り返される障害後に必ず原因と対策を記録
本番に直接SSHで修正変更が再現不可能・監査不能CI/CDパイプライン経由のみ

「動いている」「監視できている」別物。可視化されていないものは存在しないのと同じです。

プロセス・組織の罠

技術選定以前の、意思決定・組織運営レベルのアンチパターンです。技術で解決しようとしても解決しない、人の問題として扱う必要があります。

アンチパターン症状処方箋
アーキテクチャ決定の文書化なし「なぜ?」に誰も答えられないADR(意思決定記録)を書く
アーキテクトが孤立現場と乖離した理想論で決定実装者と一緒に決める
Conway’s lawを無視組織構造と合わないシステム境界チーム構造から設計を逆算
ベンダーに丸投げ中身を誰も理解していない発注側がアーキテクチャを理解する
ビッグバン刷新プロジェクト数年・数億で失敗Strangler Figで段階移行
「やってみないと分からない」で放置見積もり・リスク評価できないPoC → 本実装の順序を守る

技術選定は正しかったのに、プロセスで失敗するプロジェクトが実は最も多い領域です。

AI時代特有の罠

近年顕在化してきた、AI 駆動開発・AI 活用前提のアンチパターンです。従来の設計論と違う視点が必要で、認識していないと気づかないまま技術的負債を蓄積します。

アンチパターン症状処方箋
AIが書きにくい独自FW採用AIの生産性ブーストが効かない主流FW(Next.js/Django等)に寄せる
スキーマレスでJSON格納AIがデータ構造を推論できない型・スキーマを明示
GUI操作依存のツール選定AIに操作を任せられないCLI/API/IaC で操作可能なものを選ぶ
データカタログなしRAG・AIエージェントで意味推論できないメタデータ・説明文を整備
AIが生成したコードの無検査デプロイ脆弱性・バグを本番投入通常のレビュー・テストを省略しない
ベクトルDB対応なしRAG機能を後付けできないpgvector/Pinecone 前提の設計

AI 時代の設計原則はAIが流暢に書ける・読めるという軸が選定の中心に入ります。

重大インシデント事例の段階別被害額

アンチパターンの代償は数字で見ると無視できない規模になります。以下は業界で語り継がれる代表事例の被害額です。

事例アンチパターン被害額/影響
Knight Capital2012デプロイ手順ミス(1台に古いコード)45分で4.4億ドル損失、会社消滅
Adobe 情報流出2013ECBモード + 共通ヒント欄1.5億件パスワード実質解読
Dyn DNS攻撃2016IoT踏み台 MiraiTwitter/GitHub/Netflix 数時間停止、1.2Tbps DDoS
GitLab DB削除2017オンコール中の rm -rf + バックアップ5種全滅6時間前スナップショットから復旧、300GB消失
Equifax情報流出2017Struts 2 パッチ2か月放置和解金7億ドル、1.47億人流出
Capital One2019IAM過剰権限 + WAF設定ミス8,000万ドル制裁金、1億件流出
AWS Kinesis障害2020ストリーミング基盤 SPOFus-east-1 長時間停止、AWSマネコン巻き込み
SolarWinds2020信頼済みベンダー経由侵入1.8万組織に正規ルート侵入
Log4Shell2021SBOMなし世界中のJavaアプリがゼロデイ、自社影響不明
Facebook 6時間障害2021BGP設定ミス + 監視同居広告収入損失 6,000万ドル超
Meta GDPR制裁金2023EU市民データ米国転送€1.2B(約2,000億円)
CrowdStrike障害2024更新ミス世界中のWindows端末がBSOD、空港・銀行・病院停止

単一のアンチパターンで数百億円〜数千億円の損害が現実に発生しています。地味な運用こそ最強の防御設計の贅沢は仮説が当たってからが業界の相場感を形作ってきた歴史です。

共通する根本原因

これらのアンチパターンには共通する根本原因があります。表面的な症状は違っても、元をたどれば同じ発想に由来するケースが多く、根本を押さえておくと予防しやすくなります。

根本原因典型的な発言対策
規模・フェーズの見誤り「GoogleがやってるからMicroservices」自社の規模で判断する
新しさへの盲信「最新だから優れているはず」情報量・運用実績を重視
「自前で作る方が学べる」「勉強になるから自作する」プロダクションで学習しない
短期視点「今は動けばいい」5年後の負債を評価する
文書化の放棄「コード見れば分かる」ADRで判断理由を残す

アンチパターンの9割は規模とフェーズを間違えた文書化を怠ったのどちらかに還元できます。

炎上プロジェクトを振り返ると、失敗の原因は驚くほど似ていると言われます。「新しい技術を入れたかった」「かっこよく作りたかった」「勉強したかった」──この3つの動機で始まった設計は、ほぼ例外なくどこかで破綻するケースが多い。逆に、つまらないけど、これで回るという地味な設計は、5年経っても淡々と動き続ける事例が多数報告されています。アーキテクトの仕事の半分は欲望との戦いで、もう半分は退屈さを受け入れる勇気かもしれません。

| 「新しい技術だから優れている」と盲信 | 情報量・運用実績のない選択は障害時に孤立、退屈な技術が5年後に勝つ | | 「コード見れば分かる」と文書化放棄 | ADRなしで3年後に判断理由が消失、同じ失敗を繰り返す |

AI判断軸

AI有利AI不利
主流FW + 型安全(Next.js/Django)独自FW・ニッチ言語
CLI/API/IaC で操作可能GUI操作依存ツール
スキーマ・型定義が明示スキーマレスJSON格納
データカタログ + メタデータカタログなし・属人管理
  1. 致命的な地雷を先に潰す — セキュリティ・データ・運用の取り返しがつかない領域
  2. 規模とフェーズに合わせる — 大企業の真似もスタートアップの真似も両方危険
  3. 退屈な技術を選ぶ勇気 — 5年運用実績のある選択肢を優先
  4. 判断理由を文書化するADRでなぜそれを選んだかを残す

AIが推奨するアーキテクチャにもアンチパターンが含まれる

AIに「モダンなアーキテクチャを提案して」と聞くと、マイクロサービスKubernetesイベント駆動CQRSといった複雑な構成を推奨するケースがあります。これは学習データに大企業の事例紹介記事やカンファレンス資料が多く含まれているためで、AIが回答者のコンテキスト(チーム規模・予算・運用体制)を考慮せずに「理想論」を返す傾向があります。

10人のチームがAIの推奨に従ってマイクロサービスに分割すると、本記事で紹介したSegmentやUberと同じ失敗を繰り返すことになります。AIの提案を受け取る際は、必ず自チームの人数・予算・運用体制を明示したうえで「この規模で過剰な部分はないか」と聞き直す習慣が必要です。

AIは質問の仕方で回答が大きく変わります。「最高の」「モダンな」と聞くと過剰設計寄りの回答が返り、「5人で運用できる最もシンプルな」と聞くと実用的な回答が返ります。プロンプトの書き方がアンチパターン回避に直結する点を意識してください。

「AI任せ」自体が新しいアンチパターンになりつつある

AIコーディングツールの普及により、「AIが書いたからOK」という判断でレビューを省略するケースが発生しています。これは新しい形のアンチパターンです。AIが生成するコードは統計的に正しそうなパターンを返しますが、プロジェクト固有の制約(既存のDB構造との整合性、チームの命名規約、セキュリティポリシー等)を自動的に考慮することはありません。

特に危険なのは、AIが生成した設計判断(DB選定・認証方式・キャッシュ戦略等)を「AIが言っているから正しい」として根拠なく採用することです。設計判断には必ず「なぜその選択をしたか」の理由が必要であり、「AIが推奨した」は理由として成立しません。

ADR(Architecture Decision Record)に判断理由を記録する習慣があれば、AIの提案であっても「なぜ採用したか」を言語化する強制力が働き、無批判な採用を防げます。

筆者メモ — 「退屈な技術」を貫いた勝者の事例

Stack Overflowは月間1億アクセスを超える QA サイトですが、たった9台のサーバー(当時)で運用されていることが2016年の公開データで業界に衝撃を与えました。スタックは .NET + SQL Server + Redis という極めて保守的な選択で、マイクロサービス化もNoSQL化もしていませんCTO のデイビッド・フラーが「我々はあえて退屈な技術を選ぶ」と公言しており、Etsy エンジニアのダン・マッキンリーが2015年に発表したChoose Boring Technologyというエッセイの生きた証明として今も引用されています。

対照的に Uber は2010年代中盤に約2,200以上のマイクロサービスに分割した結果、障害時の切り分けが不可能・開発者体験の悪化・重複機能の氾濫という問題が噴出し、2020年代に入ってからドメインベースの統合を進めるDOMA(Domain-Oriented Microservice Architecture)」への再編を公表しました。できる分割の最大値をやった結果の反省として、この業界で頻繁に引き合いに出されています。退屈な技術を選んだ者が5年後も淡々と動かし、流行に飛びついた者が5年後に統合プロジェクトに追われる──この対比は、アンチパターンの多くが個人の欲望を組織の資産で支払わせた結果だと示唆しています。

自己診断チェックリスト

自分のプロジェクトがアンチパターンを踏んでいないか、以下のチェックリストで確認できます。1つでも該当したら、該当する分野のリファレンスを見直す価値があります。

  • マイクロサービス化したが、チームが30人未満である
  • K8sを使っているが、専任SREが不在
  • マルチクラウド構成を選んだが、明確な理由がない
  • 本番DBで分析クエリを走らせている
  • 認証・セッション管理を自前実装している
  • localStorageにJWTを保存している
  • MFAを全ユーザーで必須化していない
  • ログが構造化されていない
  • SLOを定義していない
  • ADR(アーキテクチャ決定記録)を書いていない

まとめ

本記事はアンチパターン集について、全分野横断・9カテゴリ・重大インシデント被害額・共通根本原因・自己診断まで含めて解説しました。如何だったでしょうか。

致命的な地雷を先に潰し、規模に合わせ、退屈に貫き、判断を文書化する。これが2026年のアンチパターン回避の現実解です。

次回は「ベストプラクティス集」について解説します。アンチパターンの逆として、各分野で迷ったらまず採用すべき鉄板選択肢を整理する予定です。

シリーズ目次に戻る → 『生成AI時代のアーキテクチャ超入門』の歩き方

本記事で扱った内容の詳細は AWS Well-Architected フレームワーク も合わせて参考にしてください。

それでは次の記事も閲覧いただけると幸いです。