書籍

認証・権限

  • セキュリティ ベストプラクティス — 最小権限・多層防御・デフォルトで安全・フェイルセーフ・ゼロトラスト、MFA とパスキー、Argon2id でのパスワード保存と漏洩済みパスワードとの照合、ログイン試行のレート制限、認可はサーバー側で所有者まで確認し IDOR を防ぐ、デフォルト拒否、許可リストでの入力検証と出力先に応じたエスケープ、SQLインジェクション・XSS・SSRF・CSRF などの対策、シークレットはハードコードせず管理サービスとスキャン、漏洩したら即ローテーション、TLS 1.3 と HSTS、推奨アルゴリズムと CSPRNG、セッション ID の再生成と Cookie 属性、JWT の注意、セキュリティヘッダーと CORS、API のレート制限と Mass Assignment、プロンプトインジェクションと LLM 出力の扱い、ロックファイルと脆弱性スキャン・SHA 固定・SBOM、IAM の最小権限とパブリックアクセスブロック、ログのマスキングと監視、DevSecOps、インシデント対応と 3-2-1 バックアップ・リストア訓練、個人・組織の基本対策
  • 脆弱性一覧とセキュリティ対策ベストプラクティス — OWASP Top 10:2025 の10カテゴリ(アクセス制御の不備・設定ミス・サプライチェーン・暗号化・インジェクション・安全でない設計・認証・完全性・ログとアラート・例外処理)ごとの典型例と対策、SQLインジェクション・XSS・CSRF・SSRF・IDOR・JWT・マスアサインメント・プロンプトインジェクションなど個別脆弱性の一覧、最小権限・多層防御・デフォルト拒否などの基本原則、推奨 HTTP セキュリティヘッダーと __Host- Cookie、要件定義からデプロイ・運用までのチェックリスト
  • OAuth / OIDC / SAML の使い分け — ログインは OIDC、API の保護と委譲は OAuth 2.0、M2M は Client Credentials、SAML は相手が求めるときに使う。役割と比較表、判断フロー、B2B SaaS は両対応を IdP ブローカーで吸収し SCIM を組み合わせる、ID トークンを API に使わない、Implicit と ROPC は使わない、SAML の署名検証とリプレイ・XXE 対策、組み合わせ方
  • OAuth — フローは Authorization Code + PKCE(S256)で Implicit と ROPC は使わない、リダイレクト URI は完全一致、state と iss を検証、アクセストークンは短命・最小スコープ・オーディエンス制限、リフレッシュトークンはローテーションか送信者制約、SPA は BFF、ログインには OpenID Connect
  • OpenID Connect — Authorization Code + PKCE、state と nonce は暗号論的乱数、ID トークンは署名・iss・aud・exp・nonce をすべて検証、ユーザーは iss + sub で識別、SPA は BFF、ログアウトは OP 側のセッションも考える
  • JWT ベストプラクティス — 単一アプリのセッションには使わずサーバー側セッションを検討、EdDSA / ES256 / PS256 / RS256 を使い alg: none を拒否して許可アルゴリズムを固定、署名・exp・nbf・iss・aud・トークン種別をすべて検証、ペイロードに機密情報を入れない、アクセストークンは 5〜15 分でリフレッシュトークンはローテーションと再利用検知、kid と JWKS で鍵ローテーション、ブラウザでは HttpOnly Cookie か BFF、URL にトークンを載せない、アルゴリズム混同・kid インジェクション・jku の悪用への対策
  • 権限管理 — 最小権限、認可モデル、入社・異動・退職、特権と非人間アカウント、アプリの認可、棚卸し
  • セッション管理 — セッション ID の作り方、Cookie の属性と __Host-、ログイン時の作り直し、タイムアウト、ログアウトと失効、JWT の注意

Web・API 設計

  • Web API 設計 — URL・メソッド・ステータスコード、Problem Details、ページネーション、バージョニング、認可
  • REST API — 名詞と複数形の URI、メソッドとステータスコードの意味、RFC 9457 のエラー、カーソル方式、Deprecation と Sunset、BOLA と一括代入、冪等性キーと ETag、レート制限、非同期ジョブと Webhook、チェックリスト
  • OpenAPI — spec を正本にする作り方、版の選び方、スキーマとエラーの書き方、CI での破壊的変更の検知
  • APIエラーレスポンス設計 — RFC 9457 と拡張フィールド、安定した文字列のエラーコード、開発者向けのメッセージ、内部情報と存在を漏らさない、Retry-After とレート制限ヘッダー、request_id とトレース、未知のコードへのフォールバック、一括・非同期・GraphQL、チェックリスト
  • マルチテナントアプリケーション — 分離モデルの選び方、tenant_id と RLS、テナントの持ち回り、Noisy Neighbor
  • SaaS — 構成・データ・可用性・観測・リリース・課金・オンボーディング・コンプライアンス・コストの全体像
  • 外部SaaS連携 — 外部は必ず失敗する前提、腐敗防止層で SaaS の概念を境界で変換、同期と非同期の使い分け、Outbox と ID マッピング、シークレットの環境分離とローテーション、OAuth トークンの期限前更新とロック、タイムアウトと指数バックオフ+ジッター、冪等キー、自社側のレート制限、サーキットブレーカーとバルクヘッド、Webhook の署名・タイムスタンプ検証と即 2xx、重複と順序逆転、突合バッチ、ハイブリッド同期、DLQ とフォールバック、送信データの最小化、連携先別のメトリクス、障害注入テスト、API バージョン固定、ロックイン対策、連携台帳と Runbook、チェックリスト
  • Web アプリケーション — フレームワークを問わない原則の入口。詳しいページへの道案内と、HTTP ヘッダー、アップロード、SSRF、配信、リリース前のチェックリスト
  • フロントエンド — 機能ごとのディレクトリ、合成で作るコンポーネント、状態の種類、境界での検証、デザイントークン、Core Web Vitals、データ取得の競合、振る舞いのテスト
  • BFF(Backend for Frontend) — 体験ごとに1つでフロントのチームが持つ、ビジネスロジックを入れず薄く保つ、画面単位の API、並列取得と縮退、トークンはサーバー側と CSRF、タイムアウト・サーキットブレーカー、分散トレーシング、アンチパターン、チェックリスト

言語・フレームワーク

  • TypeScript — 型を厳しくする tsconfig、不正な状態を作れない型設計、境界での実行時検証
  • TypeScript × Jest — テストと型チェックを分けて @swc/jest と tsc —noEmit、jest.config.ts と paths の同期、テスト用 tsconfig、コロケーションと AAA、jest.mocked と jest.Mocked で型を保つモック、spyOn と clearMocks・restoreMocks、モックは外部境界だけ、ファクトリと satisfies、as any を避ける、resolves・rejects に await、expect.assertions、フェイクタイマー、目的に合ったマッチャー、スナップショットは控えめに、型付きのカスタムマッチャー、it.each、後片付けと —detectOpenHandles、eslint-plugin-jest、CI での並列・キャッシュ・シャーディング、アンチパターン、チェックリスト
  • TypeScript × Vitest — Vitest 5 前提、globals を使わず明示 import、型チェックは tsc —noEmit と —typecheck で別に、clearMocks の既定化と restoreMocks・unstubEnvs、AAA と振る舞いのテスト、it.each・it.for、目的に合ったマッチャー、resolves・rejects に await と expect.poll、vi.fn の型付け、vi.hoisted と vi.mocked、vi.when、フェイクタイマー、MSW、ファクトリと test.extend のフィクスチャ、projects で環境を分ける、expectTypeOf で型のテスト、スナップショットは小さく、独立性と shuffle、プールと concurrent・shard、v8 カバレッジ、CI と .vitest/、@vitest/eslint-plugin、移行チェックリスト
  • Node.js (TypeScript) — LTS と ESM、機能単位の構成と app.ts・server.ts の分離、厳格な tsconfig(strict・noUncheckedIndexedAccess・verbatimModuleSyntax)、any でなく unknown、判別可能なユニオンと網羅性チェック、satisfies とブランド型、floating promise を出さず Promise.all で並列化、AbortSignal.timeout、イベントループをブロックしない、cause で連鎖するエラーと unhandledRejection・グレースフルシャットダウン、起動時に検証する設定と —env-file、境界でのスキーマ検証、構造化ログと AsyncLocalStorage、セキュリティ、ストリームと pipeline、テスト、typescript-eslint、依存は最小限に、マルチステージビルドと node で直接起動、チェックリスト
  • Ruby — 命名とスタイル、Enumerable とガード節、Data とパターンマッチ、例外、依存とセキュリティ
  • Rails — 規約どおりに作り、整合性は DB で守り、副作用は明示した場所に置き、計測してから速くする
  • Rails の DB 設計 — 整合性はバリデーションと DB 制約の両方で守る、後から変えにくい主キーの型・テーブル分割・関連の向きは最初に慎重に、命名規約と真偽値より日時カラム、bigint 自動採番を基本に外部公開なら UUID v7・ULID か public_id、金額に float を使わない、真偽値は null: false と default、jsonb に検索・JOIN の値を入れない、timestamptz、原則 null: false、外部キー制約と on_delete・dependent の対応、uniqueness はユニークインデックスと組み合わせ citext や lower で大文字小文字、チェック制約、外部キーと頻出条件にインデックスを付け複合は等価条件の列を先に、部分インデックス、付けすぎない、多対多は has_many :through、inverse_of と dependent、STI と delegated_type、ポリモーフィック関連は外部キー制約が張れない、enum はハッシュで値を明示し validate: true、論理削除は本当に必要か問い default_scope を避ける、第 3 正規形を基本に counter_cache とスナップショット、トランザクション内は例外を出すメソッドで外部 API を呼ばない、楽観ロックと悲観ロック、create_or_find_by、update_counters でアトミックに、ロールバックできるマイグレーションとモデルクラスを使わない、スキーマ変更とデータ移行を分ける、strong_migrations と concurrently・ignored_columns・validate: false による安全な手順、N+1 と strict_loading、find_each と insert_all、explain、マルチ DB、structure.sql と comment:、設計レビューのチェックリスト
  • Rails × RSpec — 振る舞いをテストし実装をテストしない、読みやすさは DRY より優先、ロジックは Model・Service で網羅し System Spec は主要導線に絞る、ランダム順と verify_partial_doubles、describe は対象で context は条件、let を基本に let! は必要なときだけ、名前付き subject、Mystery Guest を避ける、ファクトリは最小限で trait と sequence、build_stubbed・build・create の使い分け、shoulda-matchers、Controller Spec でなく Request Spec で認証・認可の境界を必ず、System Spec は rack_test を既定に JS だけ Playwright、sleep を使わず待機マッチャ、モックは外部境界だけで instance_double と have_received、allow_any_instance_of を避ける、travel_to と freeze_time、WebMock で外部通信を禁止、shared_examples は共通化しすぎない、build と test-prof で速くする、Flaky を retry で隠さない、rubocop-rspec と SimpleCov のブランチカバレッジ、アンチパターン、チェックリスト
  • Rails × Vue — 迷ったら Inertia で既存アプリにはアイランド型、完全分離は API を他クライアントと共有するときだけ、Hotwire で足りる画面は Vue にしない、vite_rails で importmap は SFC を扱えない、entrypoints にはエントリーだけ、data-props は to_json で渡し Turbo では unmount、Inertia の props は必要なカラムだけで inertia_share と useForm・lazy props、API 分離は rack-cors と Cookie セッションで localStorage にトークンを置かない、script setup と TypeScript、composable、サーバーの状態は props が持ち Pinia に複製しない、CSRF トークン、シリアライザーとキー名の規約、js-routes、バリデーションの正はサーバー、N+1 と bullet、Vitest と request spec、vue-tsc を CI に、assets:precompile と Node.js、アンチパターン
  • Stimulus — 状態は DOM に持たせサーバー描画が主役、Progressive Enhancement、ページ単位でなく振る舞い単位の小さなコントローラと kebab-case の識別子、querySelector でなく Targets と has で存在確認・Target callbacks、設定と状態は Values で xxxValueChanged で UI を更新、クラス名は CSS Classes、Action Options・キーボードフィルタ・@window と @document で解除も自動・Action Parameters、connect で始めたものは disconnect で片付け冪等に、連携は dispatch のイベント優先で Outlets は次善、Turbo のキャッシュと before-cache・再接続、eagerLoad と lazyLoad、TypeScript の declare、システムテスト中心、アンチパターン、チェックリスト
  • PHP — PHP 8.4・8.5 前提、strict_types と全箇所の型、配列より readonly の DTO、コンストラクタプロモーション・Enum・match・プロパティフックと非対称可視性・パイプ演算子と clone with、DI とデフォルト final、イミュータブルと DateTimeImmutable・PSR-20、ドメイン例外と previous、@ を使わない、プリペアドステートメントとホワイトリスト、出力エスケープ、password_hash、random_bytes・CSRF・セッション、composer.lock と composer audit、PHPUnit・Pest と PHPStan の baseline、OPcache とジェネレーター、本番の php.ini、アンチパターン、チェックリスト
  • Laravel — 規約に従い Fat Controller を避ける、コントローラーは HTTP の入出力だけで Form Request・Action・Policy・API Resource に分ける、Repository は必要なときだけ、リソースルートと名前付きルート・ルートモデルバインディング、ルートにクロージャを書かない、validated() だけを保存に渡す、$fillable、N+1 と shouldBeStrict、chunkById と lazy、スコープとキャスト・Enum、生 SQL はバインディング、本番適用後のマイグレーションは編集しない、Policy をコントローラー・ルート・Blade で一貫して使う、Sanctum とレートリミット、env() は config の中だけ、キューは冪等に tries・backoff と afterCommit、Horizon、キャッシュコマンドと OPcache、セキュリティ、Pest の Feature Test と Fake、Pint・Larastan・Rector、命名規則、デプロイと /up、チェックリスト
  • Rails vs Laravel — 機能の有無の差はほぼなく、違いは置き場所・設計思想・公式エコシステムの広さ・フロントエンドの方向性、Rails 8.1 と Laravel 13 を分野ごとに本体・公式・3rd・有償で比較、Rails が本体で持つ Action Text・Action Mailbox・Active Storage・Job Continuations・複合主キー・Kamal、Laravel が本体・公式で持つ Notifications・ジョブのバッチ・Gate と Policy・パスキー・AI SDK・JSON:API・Telescope と Pulse、バリデーションはモデルか Form Request か、DI コンテナの有無、常駐プロセスか share-nothing か、選定はフロントエンド・デプロイの方針とチームの言語スキルで決まる
  • Go — シンプルさと明示性、ゼロ値を有用に、早期リターン、gofmt・go vet・staticcheck・golangci-lint・govulncheck、MixedCaps と頭字語・stutter を避ける・Get を付けない、機能単位のパッケージと internal/、小さく始めるプロジェクト構成、エラーは %w でラップし errors.Is・errors.As で判定、ログか return のどちらか一方、panic はバグだけ、インターフェースは使う側で小さく定義し Accept interfaces, return structs、Functional Options とフィールド名付きリテラル、レシーバを混在させない、防御的コピー、goroutine の終了手段と errgroup、Mutex と atomic、チャネルは送信側が close し ctx.Done() を監視、context は第1引数で構造体に保持しない、ジェネリクスはまず slices・maps・cmp、テーブル駆動テストと t.Helper・t.Cleanup、pprof で計測してから最適化、log/slog、go mod tidy と tool ディレクティブ、アンチパターン、チェックリスト
  • Python — PEP 8 と ruff format・ruff check、絶対 import と import の順序、snake_case・PascalCase・is_ で始める真偽値・組み込み名を使わない、list[str] と X | None のモダンな型ヒントと Protocol・Literal・Final、引数は抽象型で戻り値は具体型、mypy・pyright を CI で、小さな関数、ミュータブルなデフォルト引数を使わない、キーワード専用引数、dataclass の frozen と slots、継承よりコンポジション、内包表記とジェネレータ、enumerate と zip(strict=True)、f-string と pathlib、構造的パターンマッチ、EAFP、具体的な例外と raise from、独自例外の階層、with と encoding の明示、src レイアウトと pyproject.toml、uv とロックファイル、pytest の parametrize とフィクスチャ、logging は %s で渡しライブラリでハンドラを設定しない、cProfile で計測してから最適化とデータ構造の選択、eval・pickle・shell=True を避けプレースホルダ・yaml.safe_load・secrets、docstring とコメントは「なぜ」、pre-commit と pip-audit、アンチパターン
  • Vue — Composition API と script setup、型付きの props と defineModel、ref と computed、composable、Pinia と Vue Router、セキュリティ、テスト
  • React — React 19 系と React Compiler 前提、Create React App でなくフレームワークか Vite、純粋なコンポーネントと合成、コンポーネント内で定義しない、安定した key と key でのリセット、ref は props で Context は value 直書き、state は最小限で派生値はレンダー中に計算、置き場所は状態の種類で選ぶ、イミュータブルな更新、矛盾しない status、useEffect は外部システムとの同期だけでクリーンアップと依存配列を偽らず useEffectEvent、useSyncExternalStore、useEffect で fetch せず TanStack Query や Server Components、use client は葉、Suspense と use、ウォーターフォールを避ける、Error Boundary、useActionState・useFormStatus・useOptimistic とサーバー側バリデーション、計測してから最適化し手動メモ化は React Compiler に任せる、Activity、ComponentProps と判別可能なユニオン、スタイリングの統一とヘッドレスコンポーネント、アクセシビリティ、振る舞いのテストと getByRole・userEvent、feature 単位の構成、eslint-plugin-react-hooks と StrictMode、アンチパターン
  • Next.js — Next.js 16 の App Router。use client は葉だけ、Server Component での取得、use cache、Server Action を公開 API として守る、proxy.ts、パッチの適用
  • Rails vs Next.js — 作れるものはほぼ同じで出発点が逆、Rails はバックエンドの部品が公式で揃い Next.js は UI とレンダリングが強くバックエンドはライブラリを組み合わせる、Rails 8.1 と Next.js 16 の機能ごとの対応表、ジョブ・WebSocket など常駐処理は Rails・リッチな UI と SSG・型安全・React Native は Next.js が有利、開発速度と一貫性・人材・ベンダー依存、ユースケース別のおすすめと Rails(API)+ Next.js や Inertia.js の組み合わせ
  • Stimulus / Vue / React の使い分け — 「HTML をどこで作るか」で決め、サーバーが作るなら Stimulus・ブラウザが作るなら Vue か React、早見表と判断軸ごとの比較、向き不向きと「コントローラ間で状態を同期し始めたら島を検討」のサイン、Stimulus 単体から始め複雑なウィジェットだけ Vue・React のアイランドにして connect でマウント・disconnect でアンマウント、同じ画面に Vue と React を混ぜない、とりあえず React で CRUD 画面まで SPA 化しない、選定フローチャートとチェックリスト

データベース・キャッシュ

  • MySQL — 8.4 / 9.7 LTS、主キーと型、複合インデックスと EXPLAIN、トランザクション、utf8mb4、8.4 の既定、権限と TLS、バックアップ、レプリケーション、オンライン DDL
  • PostgreSQL — 18 の変更、主キーと制約、インデックスと EXPLAIN、タイムアウト、autovacuum と XID、接続プーラー、権限、PITR、ロックを取らないマイグレーション
  • Redis — Redis と Valkey の違い、キーと型、maxmemory と退避、TTL とジッター、避けるコマンド、キャッシュの型、永続化、高可用性、ACL
  • memcached — いつ消えてもよいキャッシュとして使う、キーと TTL と 30 日の境界、delete での無効化、スタンピード、コンシステントハッシュ、メタプロトコル
  • Redis か memcached か — 迷えば Redis、memcached を選ぶとき、機能の違い、判断の流れ、ライセンス、終了が決まったマネージドサービス
  • RDB 設計 — 製品を問わない原則。正規化、名前、型、キーと制約、インデックス、分離レベルとロック、マイグレーション、アンチパターン
  • SQLチューニング — 計測してからボトルネックを潰す、実行計画の読み方、複合・カバリング・部分・式インデックスと使われなくなるパターン、SELECT * を避け SARGable な条件、EXISTS と NOT EXISTS、UNION ALL、OR の分割、JOIN の方式、相関サブクエリの書き換え、CTE の実体化、ウィンドウ関数、キーセットページング、バルク処理と分割 DELETE、UPSERT、統計情報とヒント句、スキーマ設計、N+1 とコネクションプール、ロックと SKIP LOCKED、進め方、チェックリスト
  • 論理削除と再登録 — 論理削除した行と一意制約を両立させる。UNIQUE(email, deleted_at) が NULL で素通りする理由、PostgreSQL の部分一意インデックス、MySQL の NULL になる生成列と関数インデックス、再登録は新しい行か復活か、検索漏れ、外部キー、個人情報とアーカイブ
  • MySQL か PostgreSQL か — 白紙なら PostgreSQL、資産と慣れがあればそちら。設計の違い、向く場面、落とし穴、マネージドサービス

UI・UX

  • UI デザイン — ユーザビリティの原則、余白と文字、コントラスト、ボタンの状態、フォーム、状態の表示、WCAG 2.2 の AA、モバイル、UI の文言
  • UX — 観察するリサーチ、メンタルモデルに合わせた情報設計、UX ライティング、エラー、オンボーディング、ダークパターンと法令、テストと指標
  • エラー画面設計 — 何が起きたか・次に何をするかを伝える、影響範囲と原因での分類、メッセージの型、ステータス別のエラーページ、空状態との区別、バリデーションのタイミング、アクセシビリティ、静的な 500・503 ページ、二重処理の防止、チェックリスト

AI

  • MCP — 2026-07-28 版の変更、ツールの設計、ステートレスな運用、認可とプロンプトインジェクションへの備え
  • Claude Code — 見えないことを伝える、合否が返るチェック、フックと deny での強制、権限モードと effort、セッションの舵取り、無人での実行
  • RAG — 素朴に作って評価から直す、文脈を付けたチャンク、ハイブリッド検索とリランキング、出典と「分からない」、検索と生成を分けた評価、検索の段階での権限
  • AI 駆動開発 — 人が責任を持つ、検証できる形、指示ファイルとガードレール、依頼の渡し方、小さく回す流れ、AI のコードのレビュー、権限と slopsquatting、効果の測り方
  • AI活用のチーム展開 — 目的から始める、パイロットから型にして広げる、データ区分と出力確認のルール、ユースケースの選び方、育成とチャンピオン、体制と役割、効果測定、よくある失敗

開発・運用

  • Docker — ベースイメージの固定、マルチステージビルド、キャッシュの効く順、非 root と秘密情報、シグナルとヘルスチェック、Compose、CI
  • 業務・運用の自動化 — toil の見分け方、業務を直してから自動にする、冪等と失敗の前提、暴走の防ぎ方、動かなかったことの検知、オーナーと棚卸し、LLM を組み込むとき
  • IaC — 宣言的・冪等・すべてをコードに、ルートモジュールとステートはライフサイクルで分割、リモートバックエンドとロック・暗号化・バージョニング、moved / import / removed ブロック、環境ごとにステートを分け同じモジュールを変数で、バージョン固定とロックファイル、シークレットはコードの外で ephemeral を活用、CI は OIDC で plan 用と apply 用のロールを分ける、保存した plan を CI から apply、Policy as Code、for_each を優先、定期的なドリフト検知
  • CI/CD — 小さな変更を頻繁に自動で検証、トランクベース開発と短命なブランチ、メインブランチの保護と Stop the line、速いチェックを先に置く Fail Fast と並列化・冪等性・ローカルと同じコマンド、PR の CI は10分以内、Build Once, Deploy Many、ロックファイルとダイジェスト固定、テストピラミッドとフレーキーテストの隔離、契約テスト、シークレット管理と OIDC の短期トークン、最小権限、SAST・SCA・コンテナ・IaC・DAST のスキャン、アクションの SHA 固定・SBOM・署名・SLSA、不変でコミットまで辿れるアーティファクト、ローリング・ブルー/グリーン・カナリア・フィーチャーフラグ、デプロイとリリースの分離、ロールバックの自動化と訓練、Expand/Contract、プレビュー環境と GitOps、デプロイマーカーと自動判定、キャッシュ・差分実行・シャーディング、DORA メトリクス、アンチパターン、チェックリスト
  • アジャイル開発 — アジャイル宣言と経験主義、3〜9人のクロスファンクショナルなチームと意思決定できる PO、DEEP なバックログと INVEST なストーリー、縦に分割する、スプリントの長さを固定してゴールは1文、デイリーは作戦会議、レトロのアクションは1〜3個、ベロシティは比較・評価に使わない、CI/CD・トランクベース・TDD、DoD、DORA メトリクス、アンチパターン、導入の手順とチェックリスト
  • スクラム開発 — スクラムは10人以下、PO は1人で決定権を持つ、SM はサーバントリーダー、5つのイベントとタイムボックス、スプリントゴールは1文、デイリーは人ではなく作業の流れを見る、レビューはデモ会でなくワーキングセッション、レトロのアクションは1〜3個、INVEST と縦分割、DoD と DoR、ストーリーポイントとプランニングポーカー、ベロシティは評価に使わない、技術的負債の管理、5つの価値基準、アンチパターン、導入と健康診断のチェックリスト
  • PdM・企画との連携 — Why を先に共有する、PdM は決める人・開発は選択肢と判断材料を出す人、Tシャツサイズ見積もりと代替案、Must / Should / Could、仕様レビューは質問で返す、進捗は3段階で悪いニュースほど早く、選択肢+推奨案+影響で相談、スコープ追加はトレードオフを可視化、計測は開発と同時に、見積もりは幅と前提で、言い換えの例、会議体と決定ログ、「作らない」提案、アンチパターン、チェックリスト
  • 要件定義 — 目的から逆算し Why を残す、What と How を分ける、検証可能に書く、スコープ外を明記、As-Is を先に把握し要望の裏の課題を「なぜ?」で掘る、最終決定者を決める、業務・機能・非機能要件と制約条件、非機能要求グレードの6分類、曖昧な表現と要注意ワード、ユーザーストーリーと Given / When / Then、例外フローの網羅、MoSCoW で Must は6割以下、要件定義書のテンプレート、よくある失敗と対策、合意形成のコツ、品質チェックリスト
  • アジャイルの要件定義 — 価値の高いものから少しずつ具体化し要件を育てる、Just-in-Time で詳細化、ビジョン→ゴール→エピック→ストーリー→受け入れ条件→タスクの階層、エレベーターピッチ・アウトカム・ペルソナ・インセプションデッキ、ストーリーの書式と3つのC、INVEST、受け入れ条件は3〜7個で例外も書く、Given / When / Then、ユーザーストーリーマッピングで MVP を切る、価値を保ったまま縦に分割する9パターン、非機能要件は DoD・受け入れ条件・独立ストーリーで管理、DoR と DoD、DEEP なバックログと WSJF、リファインメント、実例マッピングと Three Amigos、よくある失敗と対策、ストーリーのテンプレート
  • アーキテクチャ設計 ベストプラクティス — 後から変えにくい重要な決定の集合、KISS・YAGNI・関心の分離・高凝集疎結合・依存性逆転・トレードオフの記録、品質特性は上位3〜5個を測定可能な形と品質特性シナリオで、境界づけられたコンテキストとコンウェイの法則、循環依存の禁止と依存ルールの自動検証、迷ったらモジュラーモノリスでマイクロサービスは組織の理由で選ぶ、データの所有者は1つで共有データベースを避ける、強い整合性は小さく保ち Saga、Expand → Migrate → Contract、同期と非同期の使い分け、API の冪等性とバージョニング、イベントは過去形で受信側を冪等に、タイムアウト・リトライ・サーキットブレーカー・バルクヘッド、復元できるバックアップ、ステートレス化とキャッシュの無効化、計測してから最適化、セキュリティ・バイ・デザインとゼロトラスト・脅威モデリング、ログ・メトリクス・トレースと SLO、IaC と段階的リリース・ロールバック、ADR と C4 モデル、適応度関数とストラングラーフィグ、アンチパターン、設計レビューのチェックリスト
  • 技術選定のベストプラクティス — チームと事業にとっていま妥当な技術を説明できる形で選ぶ、課題から始める、退屈な技術を優先しイノベーショントークンは差別化領域に、可逆性で慎重さを変える、運用し続けられるか、決定を記録する、要件は Must / Should / Could、候補は2〜4案で「何もしない」「既存技術で頑張る」も入れ Build・OSS・Buy で幅を持たせる、評価軸と重みは候補を見る前に決める、PoC は合格基準と期間を事前に決めつまずいた点も記録、最終決定者を明確にし全員一致を待たない、見直しのトリガー、適合性・成熟度・エコシステム・チーム・運用・コスト・リスクの評価観点チェックリスト、重み付きスコアは議論の材料で Must を満たさない案は除外、言語・DB・フレームワーク・クラウド・ライブラリ・SaaS の領域別のポイント、履歴書駆動・ハイプ駆動などのアンチパターン、ADR テンプレート、小さく始め振り返り出口を用意し Tech Radar で管理、判断に迷ったときの6つの問い
  • 基本設計 — 要件を外から見た振る舞いに落とし、発注者の合意と詳細設計への橋渡しを両立する、要件ID ⇔ 機能ID ⇔ 画面ID のトレーサビリティで漏れと過剰設計を検出、確認事項一覧で期限と担当者、方式設計から画面へトップダウン、モックアップで早く見せて合意、TBD は放置しない、選定理由と ADR、状態遷移、画面設計のよくある漏れ、外部IFは異常系と責任分界点を書き最優先で着手、メッセージは次の行動が分かる文言に、非機能は数値で書く、「など」「適宜」を避けデシジョンテーブルと境界値、同じことを二か所に書かない、ID体系と記載例、変更管理、レビューのチェックリスト、よくある失敗と対策、アジャイルでも早く決めること
  • 詳細設計 — 基本設計を実装者が迷わず作れる「どう作るか」に落とす、実装者・テスト担当・保守担当が質問せずに使えることがゴール、書くのは判断と約束事でコードの日本語訳にしない、粒度はサンプル1機能で合意、要件ID → 基本設計ID → 詳細設計ID → テストケースID、ADR で不採用案も残す、共通定義は1か所に集約、モジュールの責務と依存方向、関数の入出力・例外・前提、異常系と境界条件、表現手段の使い分けとデシジョンテーブル、データ設計、機械可読な IF 定義、エラーハンドリングとリトライ・冪等性、トランザクション境界と排他制御・Saga・Outbox、非機能の具体化、テスト観点、設計書のテンプレートと文章のルール、Mermaid で図を書く、Docs as Code、構成が固まった段階でレビュー、チェックリスト、よくある失敗と対策、アジャイルでは必要な部分を軽量に、10か条
  • 実装 — 基本設計と詳細設計で決めたことをコードに落とす、言語やフレームワークに依存しない原則、要件を1〜2文で言語化し完了条件と受け入れ基準を先に書く、既存コードと慣習を読む、1つの変更は1つの目的、KISS・YAGNI・DRY は3回目で共通化・単一責任・疎結合と高凝集・依存の方向、意図が伝わる命名と is / has / can、引数は3つ以内、早期リターン、マジックナンバーは定数、副作用と純粋な計算を分ける、コメントは「なぜ」を書く、Fail Fast と例外を握りつぶさない、エラーメッセージに文脈、リソースの解放、テストピラミッドと Arrange / Act / Assert、境界値と異常系、バグ修正は再現テストから、外部入力を信用しない・パラメータ化クエリ・出力時のエスケープ・秘密情報と最小権限、計測してから最適化と N+1、ログレベルと構造化ログ・相関ID、小さなコミットと短命なブランチ、PR は400行以内でレビューは正しさから、must と nit、フォーマッタ・リンター・CI・型、README と ADR、ボーイスカウトルール、PR前のチェックリスト
    • 実装の補足 — 言語ページに共通して書かれ実装のページにない原則、エラーは文脈を足して包み処理は1か所で、想定内の失敗は Result 型、外部データは境界でスキーマに通す、フラグ引数を避ける、不変と依存の注入、null の表し方、タイムアウトと並行処理の止め方、起動時の設定検証とグレースフルシャットダウン、ロックファイル、アンチパターン
  • テストコードのベストプラクティス — 基本設計・詳細設計・実装に続くテストコードの書き方、テストは回帰防止・仕様の文書化・設計の改善・安心してリファクタリングするため、テストピラミッドはユニットを厚く E2E は重要なフローに絞る、FIRST原則、Arrange / Act / Assert で Act は原則1行、テスト名だけで原因の見当がつく命名、1テスト1関心事、private や呼び出し回数でなく公開された振る舞いを検証、Dummy・Stub・Spy・Mock・Fake、モックは境界に限定し Fake を優先、時刻・乱数・非同期・外部サービス・共有状態・実行順序による Flaky を排除、関係する値だけを明示しファクトリを使う、境界値・異常系・同値分割とパラメタライズドテスト、DRY より DAMP でテスト内にロジックを入れない、期待値と実際の値が分かるアサーション、カバレッジは品質の保証ではなくミューテーションテストで有効性を測る、skip を放置しない、CI でマージを止めバグ修正は再現テストから、TDD の Red / Green / Refactor、チェックリスト
  • E2Eテスト ベストプラクティス — テストコードに続く E2E テストの書き方、E2E は少数精鋭でユニット 70% / 統合 20% / E2E 10% が目安、売上・認証・データ更新・過去の障害箇所のクリティカルパスを優先、バリデーションの全パターンは下層に任せる、ボタン操作でなく振る舞い単位のシナリオ、1テスト1目的、独立させ並列・ランダム順で通す、AAA、セレクタはロール + アクセシブルネーム → ラベル → テキスト → data-testid で CSS クラスや XPath は避ける、固定待機を使わず自動待機と Web-first アサーション、レスポンス待機、フレーキーの原因と対策、リトライは保険で隔離して修正、テストごとに一意なデータを API・DB で用意し後片付け、認証状態を保存して再利用、自社のバックエンドは本物で外部サービスはモックかサンドボックス、Page Object Model でアサーションはテスト側、ユーザーに見える結果を検証し API・DB で裏取り、PR 時はスモークで夜間にフルスイート、失敗時のスクリーンショット・動画・トレース、対象ブラウザはアクセス解析で決める、Playwright・Cypress・Selenium・Appium の選び方、チェックリスト
  • パフォーマンス最適化 — 計測してから最適化し目標は p95 などの数値で、最大のボトルネックから着手、Core Web Vitals、バンドル削減とクリティカルパス、画像・フォント、長いタスクの分割と仮想スクロール、I/O のバッチ化と並列化、重い処理はジョブキューへ、N+1 と EXPLAIN、キーセットページネーション、複合インデックスの順序、キャッシュの階層と無効化・スタンピード対策、CDN と HTTP/2・3、計算量とデータ構造、メモリリークとストリーム処理、並列数の上限とバックプレッシャー、パフォーマンスバジェットと CI での検知、チェックリスト
  • ログ設計 — 用途ごとに出力先と保持期間を分ける、ERROR は誰かが見るべきものだけ、メッセージは固定文字列で可変値はフィールドに、UTC・ISO 8601 のタイムスタンプと共通フィールド、trace_id を非同期処理まで伝搬、パスワード・トークンは出さず許可リストとマスキング、例外は 1 エントリに、サンプリングとレート制限、非同期出力、stdout と収集エージェント、監査ログの改ざん防止、率と継続時間でのアラート、チェックリスト
  • 新規開発・サービス立ち上げ ベストプラクティス — 新規サービスを作って終わりにせず価値を届け続けるためのフェーズごとの原則と実践、課題から始め小さく作って早く学ぶ、仮説の明文化、後で変えにくいデータモデル・認証・課金は初期に丁寧に、実在する10人を思い浮かべられるターゲットと今お金や時間を払っている課題、リーンキャンバス、作る前のユーザーインタビュー・スモークテスト・コンシェルジュ型MVP、成功基準と撤退基準をローンチ前に合意、MoSCoW で Must だけで出しコア体験を1文で、非機能要件は初期に決める、最初はモノリス・退屈な技術・マネージドサービス・ADR、最初の1〜2週間で整える開発基盤、クリティカルパスは E2E で守る、技術的負債は意図的に借りる、計測・監視・バックアップの復元テスト・法務、段階的リリースとロールバックのリハーサル、オンボーディングとサポート体制、学習ループ、継続率カーブとショーン・エリス・テストで PMF を見極め PMF 前は広告に投資しない、継続・ピボット・撤退の判断、小さく自律したチームと意思決定者は一人、よくある失敗パターン、フェーズ別チェックリスト
  • システムリプレイスのベストプラクティス — 既存システムを段階的に置き換えて旧システムの撤去まで完遂する、目的と KPI を先に決める、ビッグバンを避ける、現行仕様はコードが正、いつでも戻れる状態を保つ、移行前に現行の指標を実測、現行踏襲の罠・スコープの膨張・暗黙仕様の見落とし・データ移行の過小評価・長期間の二重開発・業務部門の不在、リプレイス・リファクタリング・リホスト・SaaS 置き換え・現状維持を比較、機能・IF・データの棚卸しと利用実績で使われていない機能を洗い出す、機能を移行・廃止・改善・新規に分類し「現行どおり」を禁止、ストラングラーパターン・段階移行・並行稼働・一括移行、ルーティング層・フィーチャーフラグ・CDC・腐敗防止層、現行側の改修は凍結か最小化、データ移行は早期着手・冪等・複数回のリハーサル・件数と合計値の照合、現新比較テストとマスキング済み本番データ、Go / No-Go 判定とロールバックの判断期限、ハイパーケアと旧システムの撤去計画、業務部門を巻き込む体制、計画・開発テスト・切替のチェックリスト
  • マイクロサービス化のベストプラクティス — 解決したい課題がスケールか組織かを先に問う、チームが小さい・ドメインが揺れる・運用基盤が未整備なら早い、モジュラーモノリスで境界を確かめてから切り出す、DDD の境界づけられたコンテキストとビジネス能力で分ける、凝集度・結合度・自律性・データ所有・チームで境界を判断、1チームが運用しきれる大きさでナノサービスに注意、ストラングラーフィグで依存が少なく影響の小さい機能から、シャドーイングで検証し旧コードの削除まで計画、Database per Service と同一DB内での段階的な分離、2フェーズコミットを避け Saga・Transactional Outbox・結果整合性、CQRS とべき等性、状態変更は非同期イベントで同期呼び出しの連鎖を避ける、スキーマを先に合意し後方互換性とトレラントリーダー、APIゲートウェイと BFF、タイムアウト・指数バックオフとジッター・サーキットブレーカー・バルクヘッド・フォールバック、可観測性は分割前に整備しログ・RED / USE・分散トレーシングと相関ID、SLO とエラーバジェット、liveness と readiness、独立デプロイとゴールデンパス、サービスメッシュはコストとのトレードオフ、ゼロトラストと mTLS、コントラクトテストで E2E を減らす、逆コンウェイ戦略と You build it, you run it、チームトポロジー、横串は標準化、アンチパターン、移行チェックリスト

AWS

  • AWS Lambda — 初期化はハンドラーの外、冪等、測って決めるメモリ、INIT の課金、同時実行で下流を守る、呼び出しの型ごとの失敗の受け皿、Managed Instances と durable functions
  • Amazon ECS — まず Fargate、SIGTERM で静かに止める、不変のタグ、プライベートサブネットと VPC エンドポイント、2つのロール、ネイティブのブルー/グリーンとカナリア、サーキットブレーカー、20 秒のメトリクスでのスケール
  • AWS Auto Scaling — 状態を持たない、複数の AZ、起動テンプレートと IMDSv2、まずターゲット追跡、予測は増やすだけ、デフォルトのウォームアップ、ウォームプール、スポットの混在、インスタンスリフレッシュ、削除保護
  • Amazon VPC — 重ならない CIDR、3つの層のサブネット、リージョン NAT ゲートウェイ、他の SG を参照する、ゲートウェイエンドポイント、Block Public Access、暗号化の強制、フローログ
  • Application Load Balancer — 2つ以上の AZ と /27、TLS のポリシーは IaC で明示する、ALB の SG を参照する、desync の緩和、浅いヘルスチェック、アプリより短いアイドルタイムアウト、JWT の検証、ログ
  • Amazon API Gateway — まず HTTP API、REST の TLS の既定は TLS_1_0 なので明示する、すべてのルートに認可、オーソライザーのキャッシュのキー、段階ごとのスロットリング、29 秒の先はストリーミングか非同期、ログ
  • Amazon CloudFront — OAC と VPC オリジンでオリジンを隠す、TLS は 2025 のポリシー、キャッシュキーは最小、ファイル名で版を分ける、無効化は /* も1パス、フェイルオーバーは GET だけ、WAF、ログ
  • Amazon Route 53 — AWS のリソースには Alias、ヘルスチェックのないレコードは健全とみなされる、全部 unhealthy なら全部に送る、切り替えはデータプレーンで、加速リカバリー、DNSSEC、DNS Firewall、ログ
  • WAF — 多層防御の一層、オリジンへの迂回を閉じる、CloudFront の後ろの ALB ではなく CloudFront に付ける、本文は先頭 8〜64 KB しか見ない、Count から始める、狭い除外、レートベースのルール、ログのリダクション
  • Amazon RDS — 本番は Multi-AZ か別の AZ のリーダー、DNS 名でつなぎキャッシュを短く、保持期間は API の既定 1 日なので明示する、暗号化は作るときに、TLS を強制、自動拡張は大量ロードに追いつかない、MySQL 8.0 はもう延長サポートの料金、Blue/Green は PITR を引き継がない
  • RDS に手元の GUI クライアントからつなぐ — SSM のポートフォワーディングで稼働中の ECS タスクのコンテナを中継にする(中継用のサーバーは要らない)、ECS Exec は有効化後にデプロイしたタスクから、target は ecs:<クラスター>_<タスクID>_<ランタイムID> で毎回組み立てる、引数で環境を渡す1本のスクリプト、ssm:SessionDocumentAccessCheck でシェルを禁じる、ローカルポートは既定と被らせない、127.0.0.1 では verify-full が通らないので hosts で、タスクが入れ替わると切れる
  • Amazon ElastiCache — まず Valkey、Multi-AZ とレプリカを別の AZ に、既定の volatile-lru は TTL のないキーを追い出さない、reserved-memory-percent は下げない、保管時の暗号化は作るときに、TLS 1.2 以上、Redis OSS 4・5 は延長サポートの料金で 6 は 2027-01 まで、Serverless はスロットの上限と最小の課金
  • Amazon DynamoDB — アクセスパターンから設計する(RDB の正規化を持ち込まない)、高カーディナリティのパーティションキーと書き込みシャーディング(1 パーティション 3,000 RCU・1,000 WCU)、ソートキーの階層とゼロ埋め、基本は GSI で射影は最小限・スパースインデックス・GSI オーバーロード、シングルテーブルは必須ではない、400KB の上限と S3 への退避、Query が基本で FilterExpression は RCU を減らさない、条件付き書き込みとトランザクション(2 倍のキャパシティ)、UnprocessedItems を必ず処理、まずオンデマンド、TTL と Streams の冪等なコンシューマ、PITR と削除保護
  • Amazon S3 — パブリックアクセスブロックは Organizations で、名前はアカウントのリージョン名前空間に、消さずに空にして残す、ACL を無効に、HTTPS を強制、SSE-C は既定で無効、MFA Delete はライフサイクルと両立しない、不完全なマルチパートアップロードと非現行の版を消す、IA と Glacier の最小期間
  • AWS IAM — メンバーアカウントのルートの認証情報は一元管理で消す、ルートの MFA は全アカウントで必須、人は Identity Center、CI は OIDC で sub を絞る、iam:PassRole を絞る、aws:MultiFactorAuthPresent は Identity Center のセッションに入らない、SCP と RCP は上限だけ、ロールのマネージドポリシーは 20 まで
  • Amazon CloudWatch — 症状でページング、TreatMissingData は既定 missing なので明示する、ロググループの保持期間は既定で無期限、Essentials はメトリクスフィルターが使えずクラスを変えられない、高カーディナリティは OTel メトリクスに、メンテナンスはミュートルール、X-Ray SDK は 2027-02 にサポート終了
  • Amazon EventBridge — 定期実行は Scheduler、1 対 1 は Pipes、全ターゲットに DLQ(既定は 24 時間・185 回で捨てる)、受け手は冪等に、FailedEntryCount を見る、パターンに source と detail-type、新しいカスタムイベントバスはリトライが既定で 5 回・300 秒
  • Amazon Bedrock — モデルは自分のデータの評価で選ぶ、max_tokens は TPM を先に食う、クロスリージョン推論は SCP とデータの所在を確かめる(jp. は東京と大阪)、本番は短期の API キーかロール、モデルを止めるのは bedrock:InvokeModel の拒否、Guardrails は組織で強制できる、呼び出しのログは既定で無効
  • Amazon Bedrock AgentCore — 入力は str で検証し toolUse を落とす、セッションとユーザーの対応は自分で持つ、Runtime の前に Gateway を置いて直接の呼び出しを塞ぐ、ツールの可否は Policy(既定は拒否)、CLI の実行ロールは全モデルを呼べる、MMDSv2 は 2026-06-30 から必須
  • Amazon SES — ドメインで検証し Easy DKIM と DMARC、カスタム MAIL FROM は MX 1 つと SPF、バウンス率 5%・苦情率 0.1% で審査、Gmail の苦情は SES に来ない、アカウントの停止は EnforcementStatus を読む(イベントは出ない)、トランザクションとマーケティングを分ける、SMTP の認証情報はロールにできない
  • Amazon SNS — 配るのは SNS で受けるのは受け手ごとの SQS、全サブスクリプションに DLQ(クライアント側のエラーはリトライされず消える)、HTTP(S) の配信のポリシーは既定だと 3 回、aws/sns で暗号化したトピックには AWS のサービスが発行できない、署名は SignatureVersion 2、データ保護は 2026-04-30 から新規不可、1 MiB まで上げられる
  • Amazon SQS — 基本は Standard で順序と重複排除が要るときだけ FIFO、受け手は業務側の冪等キーで冪等に、可視性タイムアウトは最大処理時間より十分長く(Lambda はタイムアウトの 6 倍以上)、全キューに DLQ で保持期間は元キューより長く、ロングポーリング 20 秒とバッチ API(部分失敗を見る)、Lambda は ReportBatchItemFailures と MaximumConcurrency
  • AWS CodePipeline — 新規は V2(課金はアクションの実行時間)、実行モードは SUPERSEDED・QUEUED・PARALLEL を用途で、ポーリングでなくイベント駆動でトリガーフィルタ(本番は Git タグ)、1 回だけビルドして全環境で使う、カナリアとウェーブとアラームでの自動ロールバック、手動承認は最小限、パイプラインごとの最小権限ロールとツールアカウントからのクロスアカウント、IaC で管理
  • AWS CodeBuild — buildspec はリポジトリで管理しフェーズを分けて on-failure: ABORT、post_build は失敗時も走るので CODEBUILD_BUILD_SUCCEEDING を見る、プロジェクトごとの最小権限ロール、シークレットは Secrets Manager / Parameter Store から、特権モードは必要なときだけ、フォーク PR は Webhook フィルタで制限、キャッシュとバッチビルド、タイムアウトとログ保持期間、イメージタグはコミットハッシュ
  • AWS CDK — 合成時に判断しデプロイ時に判断しない(CfnParameter / CfnCondition より if 文)、L2 / L3 Construct を優先、Construct は Props で受け取り process.env を読まない、権限は grant*、ステートフルとステートレスで Stack を分ける、物理名は自動生成、RemovalPolicy.RETAIN と論理 ID の維持(cdk diff で replace を確認)、cdk.context.json はコミット、cdk-nag、本番はパイプライン経由
  • AWS CloudFormation — ライフサイクルと所有者でスタックを分けステートフルを切り離す、連携は Export を控えて SSM Parameter Store で疎結合に、!Sub と擬似パラメータでハードコードしない、シークレットは動的参照、ステートフルには DeletionPolicy と UpdateReplacePolicy、本番は変更セットで Replacement を確認、サービスロールで最小権限、cfn-lint・cfn-guard・Hooks、ドリフト検出を定期実行、論理 ID は変えない
  • AWS SAM — Globals で共通設定、リソース名をハードコードしない、ステートフルには DeletionPolicy と UpdateReplacePolicy、権限はポリシーテンプレートと Connectors、ハンドラは薄く SDK クライアントはハンドラ外で初期化、冪等性と非同期の失敗先、sam sync --watch は開発環境だけ、統合テストはクラウドの開発用スタックで、samconfig.toml で環境を分ける、AutoPublishAlias と DeploymentPreference で Canary とアラームでの自動ロールバック、CI は OIDC、ログ保持期間を設定
  • Serverless Framework — frameworkVersion を固定(V.4 は自動で更新する)、V.4 は年間売上 200 万ドル超で有償、1 サービス = 1 つの境界づけられたコンテキストで Compose で束ねる、ステートフルは別スタックで DeletionPolicy: Retain、ステージ差分は stages と params、ステージごとにアカウントを分ける、シークレットは実行時に取得、関数ごとの最小権限ロール、ネイティブの esbuild ビルド、DLQ と ReportBatchItemFailures、本番は CI から(deploy function は dev だけ)、Prune
  • AWS IaC ツールの使い分け — 4つとも最後は CloudFormation スタック、新規で迷ったら CDK(サーバーレスだけで小規模なら SAM)、組織横断のガードレールと StackSets の配布は CloudFormation、Serverless Framework は既存資産の継続が主で v4 はライセンスを確認、基盤は CFn でアプリは CDK・CDK と SAM CLI の併用、1つのリソースは1つのツールで、スタック間は Export より SSM Parameter Store、本番は差分確認を経る