From b8ee99d4b48727dba0cbfc3a18e3ad238b16c640 Mon Sep 17 00:00:00 2001 From: ohkawara ayato Date: Thu, 19 Jun 2025 15:49:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20CLAUDE.md=E3=81=AE=E5=AE=8C?= =?UTF-8?q?=E4=BA=86=E6=B8=88=E3=81=BF=E3=82=BF=E3=82=B9=E3=82=AF=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=81=97=E7=8F=BE=E7=8A=B6=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 出力ファイル名統一、GIFモード制限強化、関数名重複問題など完了済みタスクの記述を削除 - parse関数統一は既に完成済みであることを確認 - 行番号情報を現在のコードベースに合わせて修正(ffmpeg.lisp:3, validate.lisp:41) - エラーケーステスト改善の項目で段階的実装アプローチを明記 - マークダウン形式を整理し可読性を向上 これによりCLAUDE.mdが現在のコードベース状況と一致し、 今後のタスク優先度が明確になった。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLAUDE.md | 68 +++++++++---------------------------------------------- 1 file changed, 11 insertions(+), 57 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a82ae12..b582d4e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -99,51 +99,8 @@ Common Lispでは同じパッケージ内で同名関数を再定義すると警 ### 高優先度 -#### 出力ファイル名生成関数の引数統一 ✅ **完了** -出力ファイル名生成関数の引数を統一し、APIの一貫性を向上: - -**実施内容:** -- `generate-gif-output-filename`の引数を`(input &optional opts)`から`(opts)`に変更 -- `main.lisp`のGIFモードでの呼び出し方法を修正 -- 関連するテストケースを更新 -- パッケージエクスポートの追加(`visp-options-output`, `safe-parse-float`) - -**結果:** -すべての出力ファイル名生成関数が`opts`を第一引数として受け取るAPIに統一され、 -テストスイートでの検証とバイナリビルドでの動作確認も完了。 - -#### GIFモードのオプション制限強化 ✅ **完了** -GIFモードで`--input`オプションとの組み合わせエラーが適切に処理されていない問題を修正: - -**問題:** -- `visp --input test.mp4 --gif --dry-run`でオプション解析が競合し、入力ファイルが空文字列になる -- GIFモードは`visp --gif `の構文のみを受け付けるべきだが、`--input`オプションが禁止リストに含まれていない - -**解決策:** -1. `validate-gif-mode`関数の禁止オプションリストに`visp-options-input`を追加 -2. GIFモードでは`--gif [--output ] [--dry-run]`の構文のみを許可 -3. 不正な構文でのエラーメッセージを改善 - -**影響範囲:** -- `src/validate.lisp`: GIFモードバリデーションの強化 -- `t/test-validate.lisp`: 関連テストケースの追加 - -#### 関数名重複問題の解決 -`util.lisp`と`validate.lisp`で類似のパース関数が重複している問題を統合する: - -**問題:** -- `util.lisp:3-10`: `parse-float`関数 -- `util.lisp:12-18`: `safe-parse-float`関数(parse-floatのラッパー) -- `validate.lisp:284-288`: `parse-speed-float`関数(独自実装) -- `video.lisp:28`: `safe-parse-float`を参照しているが定義場所が曖昧 - -**解決策:** -1. 共通のパース関数を`util.lisp`に統合 -2. エラーハンドリングを統一 -3. 全ての呼び出し箇所を統一された関数に修正 - #### ffmpeg実行エラーハンドリング強化 -`ffmpeg.lisp:14`の`run-cmd`関数でエラーハンドリングが不十分: +`ffmpeg.lisp:3`の`run-cmd`関数でエラーハンドリングが不十分: **現在の問題:** - ffmpeg実行失敗時のエラー情報が不十分 @@ -175,7 +132,7 @@ visp --input video.mp4 --quality low # 高圧縮(ファイルサイズ優 ``` #### コード品質改善 -- `validate.lisp`の`validate-merge-files`関数(110行)を小さな関数に分割 +- `validate.lisp`の`validate-merge-files`関数(41行目、約70行)を小さな関数に分割 - マジックナンバーの定数化(`ffmpeg.lisp:20`のGIF fps計算など) - エラーメッセージの日英統一 - 関数レベルdocstringの追加 @@ -185,7 +142,7 @@ visp --input video.mp4 --quality low # 高圧縮(ファイルサイズ優 - エラーケースの異常系テスト - バッチ処理でのファイル競合テスト -#### テストコード全体の改修とエラーケーステストの追加 +#### エラーケーステストの改善 現在のテストスイートは成功ケースのみをカバーしており、`(uiop:quit 1)`を呼ぶエラーケースがテストできない問題がある: **現在の問題:** @@ -193,17 +150,13 @@ visp --input video.mp4 --quality low # 高圧縮(ファイルサイズ優 - `(uiop:quit 1)`によるプロセス終了がテストフレームワークと非互換 - テストカバレッジが不十分で潜在的バグの発見が困難 -**改善策:** -1. バリデーション関数のアーキテクチャを例外ベースに変更 -2. カスタム例外クラス(`visp-validation-error`)の導入 -3. main.lispでの例外ハンドリングと適切なプロセス終了 -4. 全validate系関数のエラーケーステストを追加 -5. テストカバレッジの向上とリグレッション防止の強化 +**改善アプローチ(段階的実装推奨):** +1. 1つの関数から例外ベースに段階的変更 +2. 各段階でのバイナリビルド動作確認 +3. エラーケーステストの段階的追加 +4. リグレッション防止の強化 -**影響範囲:** -- `src/validate.lisp`: 全validation関数の例外ベース化 -- `src/main.lisp`: 例外ハンドリングロジック追加 -- `t/test-validate.lisp`: 包括的なエラーケーステスト追加 +**注意:** 大規模な一括変更は避け、小さな改善を積み重ねる方式を採用する。 ### 低優先度 @@ -254,6 +207,7 @@ visp --input video.mp4 --filters "blur=3,sharpen=1,fade=in:0:30" - 変数名の統一(キャメルケース vs ケバブケース) #### 国際化対応 + - 日本語コメントの英語化 - エラーメッセージの多言語対応 -- ヘルプメッセージの国際化 \ No newline at end of file +- ヘルプメッセージの国際化 From 3554824c93a14972a253b6aa1d6fc276204f0c33 Mon Sep 17 00:00:00 2001 From: ohkawara ayato Date: Thu, 19 Jun 2025 15:52:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20main=E3=83=96=E3=83=A9=E3=83=B3?= =?UTF-8?q?=E3=83=81=E4=BF=9D=E8=AD=B7=E3=81=A8=E3=83=AF=E3=83=BC=E3=82=AF?= =?UTF-8?q?=E3=83=95=E3=83=AD=E3=83=BC=E6=8C=87=E9=87=9D=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mainブランチの保護設定について明記 - featureブランチでの作業フローを詳細に説明 - ブランチ命名規則の例を提供 - 段階的開発の原則を明文化(小さな変更、テスト実行、バイナリビルド確認) これにより開発者が迷わずに作業できるワークフローが確立された。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLAUDE.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index b582d4e..43f233c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -85,6 +85,37 @@ ros run --eval "(push #p\"./\" asdf:*central-registry*)" \ ## 開発ガイドライン +### ブランチ運用とワークフロー + +#### mainブランチ保護 +- **mainブランチは保護されており、直接コミットできません** +- すべての作業は専用のfeatureブランチで行う必要があります +- 変更はPull Request経由でのみmainにマージ可能です + +#### 推奨ワークフロー +```bash +# 1. mainから最新を取得 +git checkout main && git pull origin main + +# 2. 作業用ブランチを作成(命名規則例) +git checkout -b feature/新機能名 +git checkout -b fix/バグ修正名 +git checkout -b docs/ドキュメント更新名 +git checkout -b refactor/リファクタリング内容 + +# 3. 作業・コミット・プッシュ +git add . && git commit -m "適切なコミットメッセージ" +git push -u origin ブランチ名 + +# 4. GitHub でPull Request作成 +gh pr create --title "タイトル" --body "説明" +``` + +#### 段階的開発の原則 +- **小さな変更を積み重ねる**: 大きな変更は複数のPRに分割 +- **各PR毎にテスト実行**: `make test`で既存機能への影響を確認 +- **バイナリビルド確認**: `ros build visp.ros`で実行可能性を検証 + ### 関数名の重複チェック 新しい関数を定義する際は、既存の関数名との重複を避けるため以下を確認してください: