ハウツーガイド インデックス
NENE2 で構築するためのタスク指向ガイド集。各ガイドは自己完結しており、関連トピックへのリンクを含みます。
100 件以上のガイドがこのディレクトリにあります(このインデックスを除く)。VitePress サイドバーには主なエントリポイントが一覧されます。全カタログはこのページで確認してください。
構築したいものから探す
技術名でガイドが見つからない場合はこちらから。
| やりたいこと | ガイド |
|---|---|
オプションのクエリパラメーターでリストをフィルタリングする(?status=、?price_max=) | dynamic-filter-query.md |
| 複数のタグ/スキルでフィルタリングする(AND: すべてを持つ必要あり) | multi-value-tag-filter.md |
クエリパラメーターで安全にソートする(?sort=name&order=asc) | dynamic-sort-order-injection.md |
| リストエンドポイントにページネーションを追加する | add-pagination.md |
| 丸め誤差なしで金額を保存・計算する | money-integer-arithmetic.md |
| ステータス遷移を管理する(draft → published → archived) | state-machine-workflow-api.md |
| 階層を構築する(カテゴリ、フォルダ、組織図、地域) | hierarchical-data.md |
| イベント/履歴を保存する(追記のみ、更新しない) | event-sourcing-cqrs-api.md |
| 二重予約を防止する(ホテル、会議室、予約) | prevent-double-booking.md |
| 限られた在庫や席での競合状態を防止する | flash-sale-api.md |
| 誰が何をいつ変更したかを記録する(監査証跡) | audit-trail.md |
| 投票/いいねを実装する(ユーザーごとに 1 回) | upvote-downvote-api.md |
| スレッドコメントやネストした返信を追加する | threaded-comments-api.md |
| セキュアなトークンを生成する(招待リンク、ダウンロード URL、API キー) | api-key-management.md |
| タイムゾーンと UTC 保存を処理する | handle-timezones.md |
| JWT 認証を追加する | jwt-authentication.md |
| マルチテナント分離を追加する(テナントごとのデータ分離) | jwt-tenant-isolation.md |
| パスワードをハッシュ化してログイン時に検証する | password-auth-argon2id.md |
| リーダーボード/ランキングを追加する | game-score-leaderboard-api.md |
| ファイルを安全にアップロード・提供する | file-upload.md |
| 全文検索 | sqlite-fts5-search.md |
| データベーストランザクションを使用する(複数の書き込みをアトミックにラップ) | use-transactions.md |
| ソフト削除(完全に削除せずに非表示) | soft-delete.md |
| 何かが起きたときに Webhook を送信する | webhook-delivery-api.md |
| 承認/レビューワークフローを実装する | approval-workflow.md |
| ポイント、クレジット、残高台帳を管理する | point-ledger-api.md |
| クーポンと割引を管理する | coupon-discount-api.md |
| レートリミットを実装する | add-rate-limiting.md |
| サブスクリプション/メンバーシップを構築する | subscription-plan-management.md |
はじめる
| ガイド | 説明 |
|---|---|
| カスタムルートを追加する | 新しい GET/POST/PUT/DELETE ルートを登録する |
| データベース対応エンドポイントを追加する | Repository + executor + migration |
| 2 番目のエンティティを追加する | FK 関係、JOIN クエリ |
| ヘルスチェックを追加する | 生存確認エンドポイント |
| HTML ビューを追加する | ネイティブ PHP テンプレートによるサーバーサイドレンダリング |
| 品質ツール | PHPStan、CS Fixer、PHPUnit のセットアップ |
認証・認可
| ガイド | 説明 |
|---|---|
| JWT 認証 | LocalBearerTokenVerifier を使った Bearer トークン |
| Bearer 認証を使う | BearerTokenMiddleware を適用する |
| RBAC | JWT クレームによるロールベースアクセス制御 |
| マルチテナント分離 | テナントごとのクエリフィルタリング |
| JWT リフレッシュトークンローテーション | セキュアなトークン更新、リプレイ検出 |
| API キー管理 | SHA-256 キー保存、スコープ付きアクセス |
| OTP 認証 | 時間ベースまたは使い捨て OTP |
| パスワードレス認証(マジックリンク) | メールトークンログイン |
| パスワードハッシュ | Argon2id、タイミングセーフな比較 |
| パスワードリセット | セキュアなトークンフロー、一定時間レスポンス |
| アクセストークン管理 | スコープ付きトークン、ローテーション、失効 |
セキュリティ
| ガイド | 説明 |
|---|---|
| SQL インジェクション防止 | パラメーター化クエリ、RouterParam キャスティング |
| マスアサインメント防御 | DTO による許可リスト |
| CSRF と JSON API | CORS ≠ CSRF; Content-Type ロック |
| 冪等性 | 冪等性キー、201/200 設計 |
| Webhook 署名検証 | HMAC-SHA256、hash_equals |
| リソースオーナーシップの強制 | IDOR 防止のための 404 vs 403 |
| 署名付き URL | ステートレス HMAC トークン、有効期限 |
| アカウントロックアウト | ログイン失敗カウント、locked_until |
データベース
| ガイド | 説明 |
|---|---|
| データベーストランザクション | transactional() パターン概要 |
| データベーストランザクションを使う | ロールバックテスト付きのステップバイステップ |
| 楽観的ロック | version カラム、競合時 409 |
| ソフト削除 | deleted_at フィルター、パージガード |
| 二重予約防止 | 時間範囲重複クエリ |
| FTS5 検索を使う | SQLite 全文検索 |
| PostgreSQL を使う | アダプターを pgsql に切り替える |
| マイグレーション | Phinx マイグレーション(add-database-endpoint 参照) |
API 設計
| ガイド | 説明 |
|---|---|
| ページネーション | OFFSET とカーソルのトレードオフ |
| ページネーションを追加する | カーソルまたは OFFSET ページネーションの実装 |
| API バージョニング | URI プレフィックス、Deprecation/Sunset ヘッダー |
| コンテントネゴシエーション | Accept ヘッダー処理 |
| ETag と条件付きリクエスト | 304、412、428 |
| レートリミット | ThrottleMiddleware、ユーザーごとの制限 |
| ネストした JSON バリデーション | ドット記法エラー、深いバリデーション |
| 一括エンドポイントの実装 | バッチ作成/更新パターン |
| PATCH エンドポイントの実装 | 部分更新 |
| タイムゾーンの処理 | UTC 保存、ISO 8601 |
| Unicode 入力のバリデーション | mb_strlen、書記素クラスター |
| リクエストスコープ状態 | ミドルウェアパイプライン経由でデータを渡す |
バックグラウンド & インフラ
| ガイド | 説明 |
|---|---|
| ジョブキュー | 優先キュー、リトライ、冪等性キー |
| サーキットブレーカー | 3 状態、遅延ハーフオープン、DB 永続化 |
| Webhook 配信 | アウトバウンド SSRF セーフ、署名付き、リトライ |
| イベントソーシング | 追記のみログ、リプレイ |
| フィーチャーフラグ | ロールアウト %、ターゲティング、キルスイッチ |
| 分散ロック | オーナー強制、古いクレーム |
| 監査証跡 | 変更前後スナップショット、不変ログ |
| ファイルアップロード | Base64、MIME 検出、パストラバーサル |
| MCP ツールを追加する | API を MCP ツールとして公開する |
| 本番環境へのデプロイ | 環境、シークレット、ヘルスチェック |
プロダクト機能(レシピパターン)
| ガイド | 説明 |
|---|---|
| アクティビティフィード | フォローベースのフィード、カーソルページネーション、プライバシー |
| ユーザーフォローシステム | 冪等なフォロー/アンフォロー、相互フォロー |
| ダイレクトメッセージ | 会話モデル、参加者アクセス |
| 通知インボックス | 冪等な既読マーク、一括、IDOR |
| コメントスレッド | 親子関係、MAX_DEPTH、ソフト削除 |
| 投票システム | 賛成/反対トグル、スコア |
| 絵文字リアクション | UNIQUE 制約、GROUP BY カウント |
| ブックマークシステム | 冪等な追加、コレクションフィルター |
| ウィッシュリスト管理 | プライバシー、優先度メタデータ、IDOR |
| タグ付けシステム | M:N 結合、アトミック置換、タグ検索 |
| ユーザープロフィール | アバター URL、重複メール 409 |
| ユーザー設定 | 型付き upsert、enum キー |
| コンテンツ下書き | ステータス enum 遷移、非表示の 404 |
| コンテンツピン | 位置管理、並び替え |
| コンテンツコレクション | 冪等な追加、位置補完 |
| コンテンツモデレーション | RBAC、冪等な報告、ステートマシン |
| リーダーボード | ベストスコア、COUNT ランク、カーソル |
| ポイント/ロイヤルティシステム | 台帳モデル、reference_id 冪等性 |
| フラッシュセール | 在庫競合、UNIQUE 防止 |
| ゲスト注文 | 価格スナップショット、カート、在庫チェック |
| サブスクリプションプラン | プランライフサイクル、再サブスクリプション |
| ユーザー招待 | トークン、有効期限、キャンセルオーナーシップ |
| グループメンバーシップ | ロール、オーナー自動参加、自己退出 |
| クーポン/プロモコード | 管理者 RBAC、ユーザーごとの制限 |
| 商品レビュー | 1 ユーザー 1 商品、レーティング集計 |
| ショッピングカート | UNIQUE 制約、数量累積、quantity=0 削除 |
| ファイルメタデータ共有 | 3 層アクセス制御、IDOR 防止、可視性ガード |
| 検索 & オートコンプリート | LIKE エスケープ、関連性スコアリング、プレフィックスオートコンプリート |
| CSV 一括インポート | 部分成功、バッチ重複検出、CRLF |
| TOTP 二要素認証 | RFC 6238、Base32、リプレイ防止 |
| OAuth2 ソーシャルログイン | Authorization Code Flow、state CSRF、コードリプレイガード |
| アプリケーションキャッシング | Cache-Aside、TTL インジェクション、書き込み無効化 |
| コンテンツバージョニング | 追記のみ履歴、新バージョンとしてのロールバック |
| 決済 Webhook | HMAC 署名、event_id 冪等性、ステータスガード |
| ジオロケーション | ハーバーサイン距離、バウンディングボックス、座標バリデーション |
| A/B テスト | 実験ライフサイクル、決定論的割り当て、CVR |
| マルチステップワークフロー | 順序付きステップ、承認/拒否、アクション履歴 |
| インバウンド Webhook レシーバー | ソースごとの HMAC、署名→冪等性→永続化 |
| 管理レポート集計 | 日付バリデーション、from>to ガード、制限クランプ |
| データマスキング | デフォルトマスク、管理者アンマスク、追記のみ監査 |
| リクエスト重複排除 | Idempotency-Key、24h TTL、replayed フラグ |
| 個人データエクスポート | 不透明トークン、PII 有効期限 |
全索引(自動生成)
このディレクトリの全ガイド(ファイル名順)。composer howto:index で再生成する。