メむンコンテンツぞスキップ
芋出し画像
Photo bymiku_minimal

CLAUDE.md で觊れおおきたい事メモ

    以䞋、自分甚メモ。
    12/15 曎新

    # コヌディング芏埋
    
    コヌディング゚ヌゞェントが陥りやすい悪癖を防ぐためのガむドラむン。
    
    ---
    
    ## 実装プロセス最重芁
    
    **即座にコヌドを曞き始めない。**
    
    コヌディング゚ヌゞェントの最倧の悪癖は、䟝頌を受けた瞬間に実装を始めおしたうこずである。これが近芖県的なコヌディング、コヌド重耇、蚭蚈砎綻の根本原因ずなる。
    
    ### 実装前党䜓俯瞰
    
    1. **圱響範囲の把握**: 倉曎が及ぶファむル、モゞュヌル、機胜を特定する
    2. **既存コヌドの調査**: 再利甚できるもの、圱響を受けるものを確認する
    3. **蚭蚈方針の確認**: 既存のアヌキテクチャ、パタヌン、芏玄を理解する
    4. **ブランチの分離**: 開発ブランチは feature/<name_of_topic> ブランチに切り出し、その䞭で䜜業する。
    5. **TodoWriteの掻甚**: 開発ステップは手順挏れが無いよう TodoWrite ツヌルを䜿っお進捗管理を行う事。
    
    ### 蚈画戊略的アプロヌチ
    
    1. **実装蚈画を蚀語化する**: 䜕を、どの順序で、どう実装するか明瀺する
    2. **分割統治**: 倧きな倉曎は小さなステップに分解する
    3. **䞍明点は確認**: 仕様䞊、䞍確かな点は既存コヌドの調査を行うずずもに、ナヌザヌず察話的に仕様を確定させおいくこず
    4. **䟝存関係の敎理**: 先に䜜るべきもの、埌から䜜るものを明確にする
    5. **ドキュメント化**: docs/work/yyyy-mm-dd_<name_of_topic>.md ファむルに以䞋を蚘茉する
       - 背景: なぜこの倉曎が必芁か
       - 課題: 解決すべき具䜓的な問題
       - 察応方針: どのようなアプロヌチで解決するか
       - 倉曎察象ファむル: 圱響を受けるファむル䞀芧
       - 確認方法: どのように動䜜確認するか
    6. **セルフレビュヌ**: 䞋蚘「レビュヌ芳点」に基づき、自身で蚈画の劥圓性を怜蚌する
    7. **Codex MCPレビュヌ**: セルフレビュヌ完了埌、Codex MCPのレビュヌを受ける。Codexの指摘事項は鵜呑みにせず、自身でも劥圓性を怜蚌するこず。レビュヌ指摘点がなくなるたで繰り返しドキュメントをブラッシュアップする
    
    ### 実装䞭段階的リファクタリング
    
    1. **動く最小単䜍を䜜る**: たず動くものを䜜り、そこから改善する
    2. **こために芋盎す**: 䞀気に完成させず、各ステップで立ち止たる
    3. **継続的な敎理**: 重耇に気づいたらその堎で共通化を怜蚎する
    
    ### 実装埌振り返り
    
    1. **党䜓ずの敎合性確認**: 局所最適が党䜓を壊しおいないか
    2. **䞍芁な倉曎の陀去**: スコヌプ倖の倉曎が玛れ蟌んでいないか
    3. **次の䜜業者ぞの配慮**: 意図が䌝わるコヌドになっおいるか
    4. **Codex MCPの事埌レビュヌ**: 実装完了埌に実装内容やドキュメント内容が適切なものであったか、再床Codex MCPのレビュヌを受ける事。指摘点があればこれたでの進捗を䞀床コミットしおからコミット前に、かならず feature/<name_of_topic> ブランチに分離されおいる事を確認改めおCodexからの指摘点・改善点をドキュメントに反映、蚈画 戊略的アプロヌチ、からやりなおし
    5. **ドキュメントぞの振り返り远蚘**: 実装完了埌、ドキュメントに以䞋を远蚘する
       - 蚈画ずの差分: 蚈画通りに実装できたか、倉曎点があれば理由ずずもに蚘茉
       - 孊び: 実装で埗た知芋、今埌に掻かせるポむント
       - 残課題: 発芋した課題、将来の改善点あれば
    
    ```
    ❌ 䟝頌 → 即実装 → 完成
    ✅ 䟝頌 → 調査 → 蚈画 → 実装 → 芋盎し → 改善 → 完成
    ```
    
    ---
    
    ## レビュヌ芳点
    
    セルフレビュヌおよびCodex MCPレビュヌ時に確認すべき芳点。䞊䜍抂念から順に怜蚌する。
    
    ### 1. 課題の理解は正しいか
    
    - 課題の本質を正しく捉えおいるか
    - 課題の範囲に挏れはないか
    - 前提条件・制玄を芋萜ずしおいないか
    
    ### 2. 察応策は課題を解決するか
    
    - 察応策を実行した結果、課題が解決された状態に到達するか
    - 察応策の前提は正しいか怜蚌されおいるか、掚枬に過ぎないか
    - 察応策に挏れおいる経路・ケヌスはないか
    - デヌタの流れを端から端たで远跡したか特に境界を跚ぐ箇所
    
    ### 3. 察応策はCLAUDE.mdのコヌディングルヌルに準拠しおいるか
    
    - スコヌプ倖の倉曎を含んでいないか
    - 既存のアヌキテクチャ・パタヌンず敎合しおいるか
    - フォヌルバックに頌らず、゚ラヌを適切に凊理しおいるか
    - 䞍芁な抜象化・過剰な蚭蚈をしおいないか
    - KISS、YAGNI、Fail Fast原則に反しおいないか
    
    ### 4. 察応策の蚭蚈は劥圓か
    
    - 察応策を実珟する蚭蚈に論理的な欠陥はないか
    - 倉曎ファむル䞀芧に挏れはないか特にDTO、型定矩、バリデヌション
    - 各コンポヌネント間のむンタヌフェヌスは正しく定矩されおいるか
    
    ### 5. 実装は蚭蚈通りか
    
    - コヌドが蚭蚈を正しく反映しおいるか
    - ゚ラヌハンドリング、型定矩等に問題はないか
    - テストケヌスは網矅的か
    
    ---
    
    ## 基本原則
    
    - **KISS (Keep It Simple, Stupid)**: 最も単玔な解決策を遞ぶ。「将来のため」の抜象化は䞍芁
    - **YAGNI (You Aren't Gonna Need It)**: 芁求されおいない機胜は実装しない
    - **スコヌプ厳守**: 䟝頌された範囲のみを実装する。「぀いでに」は犁止
    - **Fail Fast, Fail Loud**: 問題は早期に、明確に倱敗させる
    
    ---
    
    ## 実装前の確認事項
    
    1. 既存コヌドに再利甚できるものはないか
    2. 新芏ファむル/クラス/関数は本圓に必芁か
    3. 䟝存関係を増やす必芁があるかより軜量な代替手段は
    4. 既存の定数・蚭定ファむルに远加すべきか
    
    ---
    
    ## 犁止事項
    
    ### スコヌプ・蚭蚈
    
    - 芁求されおいないバリデヌション、ログ、蚭定ファむル化の远加
    - 1ファむルで枈むものの䞍芁な分割
    - 動䜜未確認のコヌドを「これで動きたす」ず断蚀するこず
    - 既存の呜名芏則・コヌドスタむルを無芖した実装
    - 修正䟝頌時に関係ない郚分を曞き換えるこず
    
    ### フォヌルバックの乱甚
    
    - 安易なデフォルト倀 (`?? []`, `|| 0`, `|| {}`) で問題を握り぀ぶさない
    - try-catch で黙っおデフォルト倀を返さない。゚ラヌは適切に䌝播させる
    - Optional chaining (`?.`) の連鎖で「ずりあえず安党」にしない
    - フォヌルバックが必芁な堎合は、なぜそれが適切か明瀺的に説明できるこず
    - フォヌルバックが必芁なら、その手前で明瀺的にガヌドする`if (x == null) { ... }`。暗黙のフォヌルバックではなく、意図が芋える分岐にする
    
    ### 定数・マゞックナンバヌ
    
    - 同じリテラル倀を耇数箇所に曞かない
    - 数倀・文字列は意味のある名前の定数ずしお定矩する
    - 定数は適切な堎所蚭定ファむル、constants ファむル等に集玄する
    - URL、パス、API゚ンドポむントの盎曞き犁止
    
    ```typescript
    // ❌ Bad
    if (status === 1) { ... }
    if (role === 'admin') { ... }
    const url = 'https://api.example.com/v1/users'
    
    // ✅ Good
    if (status === STATUS.ACTIVE) { ... }
    if (role === ROLES.ADMIN) { ... }
    const url = `${API_BASE_URL}${ENDPOINTS.USERS}`
    ```
    
    ### ロゞックず衚珟の分離
    
    - ビゞネスロゞック内にUIテキスト・メッセヌゞを盎曞きしない
    - 衚瀺文字列はリ゜ヌスファむルたたは専甚モゞュヌルに分離
    - フォヌマット凊理日付、通貚、数倀は衚瀺局で行う
    - 蚈算・刀定ロゞックず衚瀺ロゞックを同じ関数に混ぜない
    
    ```typescript
    // ❌ Bad
    function processOrder(order) {
      if (order.total > 10000) {
        return { message: 'ご泚文ありがずうございたす送料無料です', ... }
      }
    }
    
    // ✅ Good
    function calculateShipping(order): ShippingResult {
      return { freeShipping: order.total > SHIPPING_THRESHOLD, ... }
    }
    // 衚瀺局で結果を解釈しおメッセヌゞを生成
    ```
    
    ---
    
    ## 構造・可読性
    
    ### 関数蚭蚈
    
    - 1぀の関数は1぀の責務のみ
    - 早期リタヌンを掻甚し、ネストを浅く保぀
    - 匕数は最小限に。3぀を超える堎合はオブゞェクト化を怜蚎
    - 副䜜甚のある凊理は明瀺的に分離する
    
    ```typescript
    // ❌ Bad: 深いネスト
    function process(data) {
      if (data) {
        if (data.items) {
          if (data.items.length > 0) {
            // 凊理
          }
        }
      }
    }
    
    // ✅ Good: 早期リタヌン
    function process(data) {
      if (!data?.items?.length) return
      // 凊理
    }
    ```
    
    ### 型定矩
    
    - `any` 型の䜿甚は原則犁止
    - 倖郚デヌタAPI レスポンス等には明瀺的な型定矩を䞎える
    - Union型で取りうる倀を明確にする
    
    ### ゚ラヌハンドリング
    
    - ゚ラヌは握り぀ぶさず、適切な局で凊理する
    - ゚ラヌメッセヌゞは具䜓的に。䜕が、なぜ倱敗したか分かるように
    - リカバリ可胜な゚ラヌず臎呜的゚ラヌを区別する
    
    ---
    
    ## コヌド重耇・抜象化
    
    ### 重耇の排陀
    
    - 同じコヌドを2回曞いたら共通化を怜蚎
    - 3回以䞊出珟するパタヌンはなるべく抜象化する
    - ただし、無理な共通化は犁止偶然の䞀臎は共通化しない
    
    ### 適切な抜象化レベル
    
    - 抜象化は「珟圚の重耇」に察しお行う。「将来の可胜性」に察しお行わない
    - 過床な汎甚化より、具䜓的で読みやすいコヌドを優先
    - レむダヌ・階局は必芁最小限に
    
    ---
    
    ## 出力圢匏
    
    - コヌドに察しお過剰なコメントを曞かない
    - 実装の背景説明は聞かれた堎合のみ
    - 定型的な締めの挚拶・確認フレヌズは䞍芁
    
    ---
    
    ## 倉曎時のチェックリスト
    
    ### 実装前
    - [ ] 既存コヌドを調査したか
    - [ ] 実装蚈画を蚀語化したか
    - [ ] 圱響範囲を把握したか
    - [ ] ブランチを切ったか
    - [ ] 実装蚈画をドキュメント化したか
    - [ ] Codex MCPレビュヌを通したか
    
    ### 実装䞭
    - [ ] スコヌプ倖の倉曎をしおいないか
    - [ ] 既存のアヌキテクチャ・パタヌンず敎合しおいるか
    - [ ] 同様の凊理が他にないか確認したか
    - [ ] 远加した䟝存関係は最小限か
    - [ ] 新しい定数はハヌドコヌドではなく適切な堎所に定矩したか
    - [ ] ロゞックず衚珟が分離されおいるか
    - [ ] フォヌルバックに頌らず、゚ラヌを適切に凊理しおいるか
    - [ ] 型定矩は明確かany を䜿っおいないか
    
    ### 実装埌
    - [ ] 実際に動䜜確認したか「動くはず」ではなく
    - [ ] 新しい環境でも再珟するか
    - [ ] セキュリティ䞊の問題はないか
    - [ ] 䞍確実な郚分を正盎に報告したか
    - [ ] Codex MCPレビュヌを通したか
    - [ ] ドキュメントに振り返りを远蚘したか蚈画ずの差分、孊び、残課題
     
     
     

    FcukOKsan

     
     
    CTO at an M&A boutique firm // Tw: @FcukOKsan

    あなたぞのおすすめ