概要
2025年8月12日から9月7日にかけて、データ分析プロジェクトで20種のデータ分析モジュールを実装しました。1モジュールあたり30〜60分、最速の日には1日で5種を実装しています。
量産を可能にしたのは、「テンプレート化」と「6ファイル連鎖更新パターン」の2つの仕組みです。Claude Codeにこの2つを理解させた状態で指示を出すと、1つのモジュール追加に必要な全ファイルの変更を一貫して処理してくれます。
本記事では、テンプレートの設計、連鎖更新の仕組み、そしてAIとの量産ワークフローを記録します。
実装した20種の分析モジュール
| # | モジュール名 | 分類 |
|---|---|---|
| 1 | 閾値判定A(短期) | 数値計算系 |
| 2 | 複合シグナル分析 | 数値計算系 |
| 3 | 偏差バンド分析 | 統計系 |
| 4 | 多段階トレンド判定 | トレンド分析系 |
| 5 | 移動平均クロス判定 | トレンド分析系 |
| 6 | 順位相関分析 | 数値計算系 |
| 7 | トレンド構造分析 | トレンド分析系 |
| 8 | ダブルピーク/ボトム検出 | パターン検出系 |
| 9 | 複合均衡分析 | トレンド分析系 |
| 10 | 追従型トレンド分析 | トレンド分析系 |
| 11 | 複合パターン検出 | パターン検出系 |
| 12 | 三点天井検出 | パターン検出系 |
| 13 | 菱形パターン検出 | パターン検出系 |
| 14 | 段階的パターン検出 | パターン検出系 |
| 15 | 収束/平行パターン検出 | パターン検出系 |
| 16 | レンジ判定分析 | 閾値判定系 |
| 17 | 移動平均+比率分析 | トレンド分析系 |
| 18 | 方向性指数分析 | トレンド分析系 |
| 19 | 孤立反転検出 | パターン検出系 |
| 20 | センチメント指数分析 | 数値計算系 |
2025年8月17日には、順位相関分析、ダブルピーク/ボトム検出、トレンド構造分析、収束/平行パターン検出、レンジ判定分析の5種を1日で実装しました。
6ファイル連鎖更新パターン
アーキテクチャ
分析モジュールを1つ追加するとき、必ず更新が必要なファイルは6つあります。
1signalsConfig.py ← モジュールのパラメータ設定2 ↓3analyticsEngine.py ← 分析エンジン本体4 ↓5mgmtTechnicalIndicators.py ← 全モジュールの一元管理6 ↓7pipeline/main.py ← パイプラインへの組み込み8 ↓9putAnalyticsDatas/main.py ← 分析結果のDB格納10 ↓11dev_analyticsdatas.sql ← DB DDL(カラム追加)6ファイルのうち1つでも更新漏れがあると、パイプライン全体が止まります。これが最初の数モジュールでよく発生した問題でした。
連鎖更新のルール
Claude Codeに指示する際、以下のルールを伝えています。
1## 分析モジュール追加時の連鎖更新ルール21. signalsConfig.py にパラメータ定義を追加32. mgmt{モジュール名}.py を新規作成(mgmtModuleA.pyをテンプレートとして使用)43. moduleManager.py にimportと呼び出しを追加54. engine.py にモジュールの呼び出しを追加65. pipeline/main.py にモジュール結果の参照を追加76. putAnalyticsDatas/main.py にDB格納ロジックを追加87. dev_analyticsdatas.sql にカラム定義を追加9
10※ 1つでも漏れるとパイプライン全体が停止する。全ファイルの更新を確認すること。テンプレート化の設計
mgmtModuleA.pyをベースにした横展開
最初に実装したmgmtModuleA.pyをテンプレートとして、残りのモジュールをコピー+カスタマイズで作成しました。
1# mgmtModuleA.py の構造(テンプレート)2
3def calculate(df, period=14):4 """分析モジュールの計算"""5 delta = df['value'].diff()6 positive = delta.where(delta > 0, 0)7 negative = -delta.where(delta < 0, 0)8 avg_pos = positive.rolling(window=period).mean()9 avg_neg = negative.rolling(window=period).mean()10 ratio = avg_pos / avg_neg11 score = 100 - (100 / (1 + ratio))12 return score13
14def generate_result(df, config):15 """検出条件を判定する"""12 collapsed lines
16 score = calculate(df, config['period'])17 # アラート条件: スコアが下限閾値以下18 # 検出条件: スコアが上限閾値以上19 results = []20 for i in range(len(score)):21 if score.iloc[i] < config['lower_threshold']:22 results.append('ALERT')23 elif score.iloc[i] > config['upper_threshold']:24 results.append('DETECT')25 else:26 results.append('NORMAL')27 return results全モジュールが共通して持つインターフェースは以下の2つです。
calculate(df, **params)— 分析モジュールの値を計算generate_result(df, config)— 検出条件を判定
このインターフェースを統一したことで、moduleManager.pyでの一元管理が可能になりました。
新しいモジュールを追加するときの指示例
1mgmtModuleA.pyをテンプレートにして、順位相関分析のモジュールを作成してください。2- 計算期間は9, 26, 52の3パターン3- 検出条件: 短期値が-80以下でアラート、+80以上で検出4- 6ファイル連鎖更新をすべて実施してくださいこの指示で、Claude Codeは6ファイルすべてを一括で更新します。
1日5種を実装したワークフロー
TodoWriteでタスクを管理
1日5種を実装した8月17日は、以下のようにTodoWriteで管理していました。
1☐ 順位相関分析モジュール作成2☐ ダブルピーク/ボトム検出モジュール作成3☐ トレンド構造分析モジュール作成4☐ 収束/平行パターン検出モジュール作成5☐ レンジ判定分析モジュール作成3〜7アイテムを維持し、1つ完了したら次を追加するサイクルです。
1モジュールあたりの作業フロー
11. Claude Codeにテンプレート+パラメータを指示(2分)22. 6ファイルの自動更新を確認(5分)33. ユニットテスト実行(3分)44. パイプライン実行で結果確認(10分)55. 微調整(パラメータ閾値の変更など)(10-20分)6---7合計: 30-60分/モジュールモジュールの難易度によって所要時間は変わります。閾値判定Aや複合シグナル分析のような計算が明確なモジュールは30分程度、三点ピーク検出や菱形パターン検出のようなパターン検出系は60分近くかかりました。
パターン検出系の難しさ
数値計算系(閾値判定A、複合シグナル分析、順位相関分析)は数式が明確なので、テンプレートからの展開がスムーズでした。
一方、パターン検出系(三点ピーク検出、菱形パターン検出、段階的パターン検出)は「パターンの定義」自体に幅があります。
1# 三点ピークの検出ロジック(簡略版)2# 「3つの山のうち中央が最も高い」をどの程度の誤差で判定するか3def detect_triple_peak(df, tolerance=0.02):4 peaks = find_local_peaks(df['value'])5 if len(peaks) < 3:6 return None7 left, center, right = peaks[-3], peaks[-2], peaks[-1]8 # 中央の山が左右より高いか9 if df['value'].iloc[center] > df['value'].iloc[left] * (1 + tolerance):10 if df['value'].iloc[center] > df['value'].iloc[right] * (1 + tolerance):11 return {'type': 'triple_peak', 'center': center}12 return Noneこのような判定ロジックは、Claude Codeに「まず基本的な検出ロジックを実装して、パラメータは後で調整する」と指示するのが効率的でした。
ドメインAからドメインBへの横展開
9月5-7日の横展開作業
ドメインAで実装したモジュール群を、ドメインBにも横展開しました。横展開で変わる部分は主に以下の3つです。
- データソースの時間特性 — ドメインAは営業時間内のみ、ドメインBは常時データが流れる
- データの粒度 — ドメインAは分単位/日単位、ドメインBはより細粒度のデータも扱う
- ドメイン固有のパラメータ — データソースごとに変動特性が異なる
横展開時は「ドメインAのmgmt{モジュール名}.pyをドメインBにコピーして、上記3点を調整してください」と指示するだけで、Claude Codeが差分を把握して修正してくれました。
量産から学んだこと
テンプレート化の効果
テンプレートなしで実装した最初の3モジュール(閾値判定A、複合シグナル分析、偏差バンド分析)は、それぞれ2-3時間かかりました。テンプレート化後は30-60分に短縮され、工数は1/3以下になっています。
6ファイル連鎖更新の自動化
最初の数モジュールでは、6ファイルのうち1-2ファイルの更新漏れが必ず発生しました。連鎖更新ルールをCLAUDE.mdに明記してからは、更新漏れはほぼゼロになっています。
AIとの量産における注意点
- 1セッションで3-5モジュールが限界: コンテキストウィンドウの制約で、それ以上は精度が落ちる
- テスト実行は毎回必須: 「前のモジュールと同じパターンだから大丈夫」は通用しない。微妙な差分でバグが入る
- パラメータの初期値は仮で良い: 検出ロジックの正しさを先に確認し、パラメータチューニングは後回し
テンプレート化 × AIによるコード生成は、定型的な実装作業を大幅に効率化します。ただし、AIに任せきりにするのではなく、テンプレートの設計と連鎖更新ルールの整備を人間が主導することが前提です。