|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## プロジェクト概要 |
| 6 | + |
| 7 | +マルチ言語・マルチAIによる競技プログラミング学習リポジトリ。各問題に対して**2×3×3マトリックス**(2 AIプロバイダー × 3言語 × 3ドキュメント階層 = 18ファイル)で成果物を生成する。 |
| 8 | + |
| 9 | +## 開発コマンド |
| 10 | + |
| 11 | +```bash |
| 12 | +# セットアップ |
| 13 | +make setup # venv + Jupyterカーネル設定 |
| 14 | +make install # pip + bun install |
| 15 | + |
| 16 | +# テスト |
| 17 | +make test # pytest + vitest 両方実行 |
| 18 | +bunx vitest run # JS/TSテストのみ |
| 19 | +bunx vitest run path/to/file.test.ts # 単一テスト |
| 20 | + |
| 21 | +# リント・フォーマット |
| 22 | +make lint # ruff + black + prettier + eslint |
| 23 | +make fmt # ruff --fix + black + prettier |
| 24 | +bunx prettier -c . # prettier チェックのみ |
| 25 | +bunx prettier -w . # prettier 修正 |
| 26 | + |
| 27 | +# 実行 |
| 28 | +bunx tsx path/to/file.ts # TypeScript実行 |
| 29 | +make lab # JupyterLab起動 |
| 30 | +``` |
| 31 | + |
| 32 | +パッケージマネージャは**Bun**。`npm`ではなく`bun install`を使用。 |
| 33 | + |
| 34 | +## アーキテクチャ |
| 35 | + |
| 36 | +### 6階層ディレクトリ構造 |
| 37 | + |
| 38 | +``` |
| 39 | +{Domain}/{Subcategory}/{Platform}/{Problem}/{AIProvider}/{Artifact} |
| 40 | +``` |
| 41 | + |
| 42 | +- **Domain**: `Algorithm/`, `DataStructures/`, `Mathematics/`, `SQL/`, `Shell/`, `Concurrency/` |
| 43 | +- **Platform**: `leetcode/`, `hackerrank/`, `atcoder/`, `codeforces/` |
| 44 | +- **AIProvider**: `Claude Sonnet 4.5/`, `Claude Code Sonnet 4.6 extended/`, `gpt 5.1 thinking customized/` など |
| 45 | +- **Artifact**: `*.py`, `*.ts`, `*.js`, `README.md`, `README.html`, `README_react.html` |
| 46 | + |
| 47 | +**例外**: `JavaScript/` ディレクトリは LeetCode 30-Day JS Challenge 専用で、上記6階層に従わない。`SQL/` ドメインはAIプロバイダーが`gpt/`単一フォルダで`.ipynb`形式。 |
| 48 | + |
| 49 | +### デュアルAI実装哲学 |
| 50 | + |
| 51 | +- **Claude実装**: 競技最適化、型アノテーション信頼、単一メソッド、50-150 LOC |
| 52 | +- **GPT実装**: 本番堅牢性、ランタイム検証、複数メソッド、80-200 LOC |
| 53 | + |
| 54 | +### 3階層ドキュメントシステム |
| 55 | + |
| 56 | +| ファイル | スタック | 用途 | |
| 57 | +| ------------------- | ------------------------------- | ------------------------------------------------------------------------------------ | |
| 58 | +| `README.md` | 純粋Markdown | 5セクション構造(Overview / Algorithm / Complexity / Implementation / Optimization) | |
| 59 | +| `README.html` | Prism.js + Tailwind CSS | ステップコントロールUI、SVGフローチャート | |
| 60 | +| `README_react.html` | React 18 UMD + Babel Standalone | リアルタイム入力操作、AI比較 | |
| 61 | + |
| 62 | +### コード構造パターン |
| 63 | + |
| 64 | +**Python** (Claude): `class Solution: def methodName(self, ...) -> ReturnType:` |
| 65 | +**TypeScript**: `function functionName(...): ReturnType { ... }` |
| 66 | +**JavaScript**: `var functionName = function(...) { ... }; module.exports = { functionName };` |
| 67 | + |
| 68 | +## 依存関係ポリシー |
| 69 | + |
| 70 | +- **Algorithm/DataStructures/Mathematics**: 標準ライブラリのみ(`typing`, `collections`, `itertools`, `math`, `heapq`)。外部ライブラリ禁止 |
| 71 | +- **JS/TS実装**: ビルトインのみ。lodash等の外部ライブラリ禁止 |
| 72 | +- **SQLドメインのみ**: Pandas/NumPy許可(`.ipynb`形式) |
| 73 | + |
| 74 | +## コードスタイル |
| 75 | + |
| 76 | +- **TypeScript**: `strict: true`, `noImplicitAny: true`, target ES2022 |
| 77 | +- **Prettier**: semi, singleQuote, tabWidth: 4, printWidth: 100 |
| 78 | +- **Python**: ruff + black |
| 79 | + |
| 80 | +## SVGフローチャートガイドライン |
| 81 | + |
| 82 | +`.agent/workflows/svg_flowchart_guidelines.md` に詳細あり。主要ポイント: |
| 83 | + |
| 84 | +- `refX` はarrowhead長未満に設定(arrowheadがノードに隠れる問題を防止) |
| 85 | +- viewBoxに30-50pxのpadding追加 |
| 86 | +- Prism.jsコピーボタンはTailwindのpreflightで消えるため `!important` オーバーライドが必要 |
0 commit comments