{
  "markdown": "# 国際貨物輸送システムのケーススタディ\n\n## 概要\n\nDDD（ドメイン駆動設計）のケーススタディとして、貨物追跡システム（Cargo Tracker）を実装するプロジェクトです。\n\n### 目的\n\n- DDD の戦略的・戦術的設計パターンを実践的に学ぶ\n- XP（エクストリームプログラミング）に基づくアジャイル開発を体験する\n- TDD（テスト駆動開発）による品質の高いソフトウェア開発を実践する\n\n### ビジネス概要\n\nある国際貨物輸送会社では、世界中の港湾を結ぶ貨物輸送サービスを提供しています。\n\n荷主が貨物の輸送を依頼すると、予約担当者が貨物の仕様（種別・重量・サイズ）と輸送要件（出発地・目的地・到着期限）を登録します。経路設計者は航海スケジュールを参照しながら最適な輸送ルートを設計し、荷主に提案します。荷主がルートを承認すると予約が確定し、貨物には追跡番号が発行されます。\n\n貨物が港湾に届くと、荷役作業員が積込・荷降し・受領・引取といった荷役作業を行い、その都度作業を記録します。記録された荷役イベントは追跡情報に即座に反映され、荷主はいつでも貨物の現在位置と状態をリアルタイムで確認できます。破損や遅延などの例外が発生した場合も、迅速に対応し荷主に通知します。\n\n貨物が荷受人に届けられると配送完了となり、輸送料金の精算が行われます。\n\n本システムでは、この一連の業務フローを DDD の境界付けられたコンテキスト（Booking・Routing・Handling・Tracking・Shared）に分割して設計・実装します。\n\n### 前提\n\n| ソフトウェア | バージョン | 備考 |\n| :----------- | :--------- | :--- |\n| nodejs       | 22.x       |      |\n\n## 構成\n\n- [構築](#構築)\n- [配置](#配置)\n- [運用](#運用)\n- [開発](#開発)\n\n## 詳細\n\n### Quick Start\n\n```bash\nnpm install\nnpm start\n```\n\n### 構築\n\n```bash\nclaude mcp add -s project memory -- npx @modelcontextprotocol/server-memory\nclaude mcp add -s project codex -- npx @openai/codex mcp-server\n```\n\n#### ralph-loopの導入\n\n- Claude Code 起動後、/plugin を実行\n\n- 検索ボックスで ralph-loop を探して選択\n\n- インストールするスコープを選ぶ（ユーザー / プロジェクト / ローカル）\n\n- Claude Code を再起動\n\n- コマンドで実行\n\n```powershell\n/ralph-loop \"<プロンプト>\" --max-iterations <数値> --completion-promise \"<完了テキスト>\"\n```\n\n#### AI アシスタント（Skills）\n\n`.claude/skills/` ディレクトリに定義された Skills により、AI アシスタントがタスクに応じた専門的な指示を自動的に読み込みます。Progressive Disclosure（段階的開示）により、必要なスキルのみがコンテキストに展開されます。\n\nSkills 一覧は [CLAUDE.md の Skills 体系](CLAUDE.md#skills-体系) を参照してください。\n\n新しいスキルの追加・改善には `/skill-creator` プラグインを使用します。テスト・評価・最適化を含むスキル作成ワークフローが自動化されます。\n\n**[⬆ back to top](#構成)**\n\n### 配置\n\n#### GitHub Pages セットアップ\n\n1. **GitHub リポジトリの Settings を開く**\n    - リポジトリページで `Settings` タブをクリック\n\n2. **Pages 設定を開く**\n    - 左サイドバーの `Pages` をクリック\n\n3. **Source を設定**\n    - `Source` で `Deploy from a branch` を選択\n    - `Branch` で `gh-pages` を選択し、フォルダは `/ (root)` を選択\n    - `Save` をクリック\n\n4. **初回デプロイ**\n    - main ブランチにプッシュすると GitHub Actions が自動実行\n    - Actions タブでデプロイ状況を確認\n\n**[⬆ back to top](#構成)**\n\n### 運用\n\n#### ドキュメントの編集\n\n1. ローカル環境でMkDocsサーバーを起動\n   ```\n   docker-compose up mkdocs\n   ```\n   または、Gulpタスクを使用:\n   ```\n   npm run docs:serve\n   ```\n\n2. ブラウザで http://localhost:8000 にアクセスして編集結果をプレビュー\n\n3. `docs/`ディレクトリ内のMarkdownファイルを編集\n\n4. 変更をコミットしてプッシュ\n   ```\n   git add .\n   git commit -m \"ドキュメントの更新\"\n   git push\n   ```\n\n#### Gulpタスクの使用\n\nプロジェクトには以下のGulpタスクが用意されています：\n\n##### MkDocsタスク\n\n- MkDocsサーバーの起動:\n  ```\n  npm run docs:serve\n  ```\n  または\n  ```\n  npx gulp mkdocs:serve\n  ```\n\n- MkDocsサーバーの停止:\n  ```\n  npm run docs:stop\n  ```\n  または\n  ```\n  npx gulp mkdocs:stop\n  ```\n\n- MkDocsドキュメントのビルド:\n  ```\n  npm run docs:build\n  ```\n  または\n  ```\n  npx gulp mkdocs:build\n  ```\n\n##### 作業履歴（ジャーナル）タスク\n\n- すべてのコミット日付の作業履歴を生成:\n  ```\n  npm run journal\n  ```\n  または\n  ```\n  npx gulp journal:generate\n  ```\n\n- 特定の日付の作業履歴を生成:\n  ```\n  npx gulp journal:generate:date --date=YYYY-MM-DD\n  ```\n  (例: `npx gulp journal:generate:date --date=2023-04-01`)\n\n生成された作業履歴は `docs/journal/` ディレクトリに保存され、各ファイルには指定された日付のコミット情報が含まれます。\n\n#### GitHub Container Registry\n\nこのプロジェクトでは、GitHub Container Registry（GHCR）を使用して開発コンテナイメージを管理しています。\n\n##### 自動ビルド・プッシュ\n\nタグをプッシュすると、GitHub Actions が自動的にコンテナイメージをビルドし、GHCR にプッシュします。\n\n```bash\n# タグを作成してプッシュ\ngit tag 0.0.1\ngit push origin 0.0.1\n```\n\n##### イメージの取得・実行\n\nGHCR からイメージを取得して実行するには：\n\n```bash\n# イメージをプル\ndocker pull ghcr.io/k2works/case-study-cargo-tracker:latest\n\n# または特定バージョン\ndocker pull ghcr.io/k2works/case-study-cargo-tracker:0.0.1\n\n# コンテナを実行\ndocker run -it -v $(pwd):/srv ghcr.io/k2works/case-study-cargo-tracker:latest\n```\n\nまたは、docker-compose を使用してローカルでビルド・実行することもできます：\n\n```bash\n# 開発環境を起動して中に入る\ndocker-compose run --rm dev bash\n```\n\n認証が必要な場合は、以下のコマンドでログインします：\n\n```bash\n# GitHub Personal Access Token でログイン\necho $GITHUB_TOKEN | docker login ghcr.io -u <username> --password-stdin\n```\n\n##### 権限設定\n\n- リポジトリの Settings → Actions → General で `Read and write permissions` を設定\n- `GITHUB_TOKEN` に `packages: write` 権限が付与されています\n\n##### Dev Container の使用\n\nVS Code で Dev Container を使用する場合：\n\n1. VS Code で「Dev Containers: Reopen in Container」を実行\n2. または「Dev Containers: Rebuild and Reopen in Container」で再ビルド\n\n**[⬆ back to top](#構成)**\n\n### 開発\n\n#### Nix による開発環境\n\nNix を使用して、再現可能な開発環境を構築できます。\n\n##### 準備\n\n1. [Nix をインストール](https://nixos.org/download.html)します。\n2. Flakes を有効にします（`~/.config/nix/nix.conf` に `experimental-features = nix-command flakes` を追加）。\n\n##### 環境の利用\n\n- **デフォルト環境（共通ツール）に入る:**\n  ```bash\n  nix develop\n  ```\n\n- **Node.js 環境に入る:**\n  ```bash\n  nix develop .#node\n  ```\n\n- **Python/MkDocs 環境に入る:**\n  ```bash\n  nix develop .#python\n  ```\n\n環境から抜けるには `exit` を入力します。\n\n##### 依存関係の更新\n\n```bash\nnix flake update\n```\n\n**[⬆ back to top](#構成)**\n\n## 参照\n",
  "bytes": 4670,
  "sha": "7c2209593fc3ba46ae9cc0dedd81b97ff990d672681110847ecbd83c400e5a2e",
  "repo_slug": "k2works/case-study-cargo-tracker",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_k2works_case_study_cargo_tracker_agents__924c206e/readme"
}