付録

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

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

本記事について

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

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

flowchart TB
    SYM([症状を感じたら<br/>下記から逆引き])
    A[アーキ全般<br/>過剰設計/Big Bang書き直し]
    I[インフラ<br/>手動デプロイ/単一AZ]
    D[データ<br/>NoSQL万能/正規化崩し]
    APP[アプリ<br/>God Class/貧血モデル]
    F[フロント<br/>SPA万能/CSS-in-JS濫用]
    S[セキュリティ<br/>JWT in localStorage]
    O[監視・運用<br/>計器なし飛行]
    P[プロセス<br/>大PR/長寿命ブランチ]
    AI[AI時代<br/>独自言語/生成丸投げ]
    SYM --> A
    SYM --> I
    SYM --> D
    SYM --> APP
    SYM --> F
    SYM --> S
    SYM --> O
    SYM --> P
    SYM --> AI
    classDef root fill:#fef3c7,stroke:#d97706;
    classDef bad fill:#fee2e2,stroke:#dc2626;
    class SYM root;
    class A,I,D,APP,F,S,O,P,AI bad;

このカテゴリの他の記事

アーキテクチャ全般の罠

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

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

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

インフラ・デプロイの罠

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

アンチパターン症状処方箋
無意味なマルチクラウド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(JSON Web Token=認証情報を含む署名付きトークン)保存XSS一発でトークン流出HttpOnly Cookie + BFF(Backend for Frontend)
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年経っても淡々と動き続ける事例が多数報告されています。アーキテクトの仕事の半分は欲望との戦いで、もう半分は退屈さを受け入れる勇気かもしれません。

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

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(アーキテクチャ決定記録)を書いていない

最終的な判断の仕方

アンチパターン集の核心は致命的な間違いを先に潰してから、最適化を考えるという発想です。多くの選択肢で優劣の差は小さくても、踏んではいけない地雷を踏めば取り返しがつきません。「過剰設計」「最新技術への飛びつき」「自前実装の温床」「規模に合わない構成」「文書化の放棄」──この5本がアンチパターンの本丸で、9割の事故はこの5本のどれかに由来します。Stack Overflow の9台運用や Basecamp のモノリス継続が示すように、退屈な技術を貫く勇気こそが、5年後も淡々と動くシステムを生みます。

もう一つの決定的な軸は数百億円規模の失敗が業界の相場感を作っているという現実認識です。Knight Capital の45分4.4億ドル、Equifax の和解金7億ドル、Meta の GDPR 制裁金2,000億円──これらは「アンチパターンを踏むとどれだけの損害が出るか」を、業界がコストを払って学習してきた結果です。標準に寄せる選択は地味ですが、これが最強の防御になります。

選定の優先順位

  1. 致命的な地雷を先に潰す — セキュリティ・データ・運用の取り返しがつかない領域
  2. 規模とフェーズに合わせる — 大企業の真似もスタートアップの真似も両方危険
  3. 退屈な技術を選ぶ勇気 — 5年運用実績のある選択肢を優先
  4. 判断理由を文書化するADR でなぜそれを選んだかを残す

地雷を避けて、退屈に貫くこれがアンチパターンを踏まないための鉄則です。

まとめ

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

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

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

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

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