大規模リファクタリング体験記 - 人間の直感とAI分析が織りなす36%削減の軌跡
1098行のPythonファイルを36%削減した実例から学ぶ、人間の直感とAI分析力の相互補完によるリファクタリング手法。データ分離への認知ギャップが示す協働の真価。
1098行の巨大ファイルとの対峙
ある日、ワークフローエンジンのコードベースを眺めていて、ふと違和感を覚えました。「これは理想的なコード構造ではないな」──そんな直感的な感想が頭をよぎったのです。
問題となっていたのは、1098行にも及ぶ巨大なPythonファイル。コードを読み進めるうち、大量のデータ定義とロジックが混在している状況に気づきました。まるで「辞書と小説が一冊に綴じられている本」のような、ちぐはぐな印象です。
この違和感を出発点に、人間の直感とAI分析の力を組み合わせたリファクタリングに挑戦することにしました。結果として36%のコード削減(1098行→701行、397行削減)を達成したのですが、その過程で発見した「認知の違い」は、私たちにとって大きな学びとなったのです。
人間の直感 vs AI3体の分析 - 認知の違いが明らかに
リファクタリングの方針を検討するため、まず人間としての判断を整理し、続いてGemini、Claude、そしてCodexの3つのAIに同じコードの改善点を聞いてみました。
人間の私が最初に着目したのは、膨大なデータ定義でした。「まず大量のデータを外部ファイルに出したい」という思いが強くありました。これは、開発・運用経験から来る実践的な判断です。データがコードに混在していると、編集が困難になり、テスト効率が落ち、ビルド時間も長くなる。こうした運用面での問題を肌感覚で理解していたからです。
一方、3体のAIが口を揃えて指摘したのは、execute_phase
メソッドの140行という巨大さでした。「メソッドが長すぎる」「単一責任の原則(1つの機能は1つのメソッドで担当するルール)に反している」「テスタビリティに問題がある」──論理構造の観点から、極めて的確な分析です。
興味深いことに、データ量については3体とも一切言及しませんでした。AIにとって、データの量は「重要度の低い要素」として認識されていたのです。
衝撃的な実験結果:データ分離してもAIの提案は変わらない
さらに驚いたのは、データ分離を実行した後で同じ質問をAI3体にぶつけても、主要な提案内容が変わらなかったことでした。人間にとって大きな改善だったデータ分離が、AIの構造認識にはほとんど影響を与えていなかったのです。
この実験から、人間は「運用面の効率」を、AIは「論理構造の美しさ」を重視する傾向が明確になりました。同じコードを見ても、全く異なる観点から評価している──この認知ギャップこそが、協働の鍵だったのです。
二段階リファクタリングの実践
この認知の違いを活かし、人間とAIの強みを順番に活用する二段階アプローチを採用しました。
Phase 1: データ分離(155行削減)
まず人間の直感に従って、大量のデータ定義を外部ファイルに移動しました。設定データやマスタ情報を別ファイルに切り出すことで、メインロジックが見やすくなり、データの管理も独立して行えるようになりました。
この改善により155行を削減。AIには見えにくい運用面での価値──テスト時のデータ切り替えの容易さ、設定変更時の影響範囲の限定、コードレビューの効率向上──を実現できました。
Phase 2: 構造改善(242行削減)
続いて、AIの分析力を活用した論理構造の改善に取り組みました。特にexecute_phase
メソッドの分割と整理に集中し、各メソッドの責任を明確化。処理フローを追いやすくし、個別のテストも書きやすい構造に変更しました。
この段階でさらに242行を削減し、機能は100%維持しながら(155行 + 242行 = 397行削減、削減率36.2%)、より保守性の高いコードベースを実現できました。
改善後は単体テストの実行時間が20%短縮され、新機能追加時の影響調査も格段に楽になりました。数値以上の価値を実感しています。
協働から見えた相互補完の力
この体験を通じて、人間とAIの認知特性の違いがはっきりと見えてきました。
人間の強みは、運用面を考慮した直感的判断にありました。「編集しにくそう」「テストが面倒そう」といった、実際の開発現場で重要な要素を感覚的に捉える能力です。長年の経験から培われた「開発者の嗅覚」とも言えるでしょう。
AIの強みは、論理構造の客観的分析でした。感情や先入観に左右されることなく、コードの複雑度やメソッドの責任分離を冷静に評価する力。人間が見落としがちな構造的問題を、一貫した基準で指摘してくれます。
同時に、AIの特性も明確になりました。運用面への考慮が限定的であることです。データ量の多さがもたらす実践的な問題や、開発効率への影響は、AIの主要な評価軸ではなかったのです。
この特性を理解した上で役割分担を最適化すれば、互いの弱点を補完し合える協働関係が築けると確信しました。
実践的なリファクタリング指針
この経験から導き出された、効果的なリファクタリングアプローチをご紹介します。
ステップ1:人間の直感を信じる
まずは開発者としての違和感を大切にしてください。「なんか気持ち悪い」「編集しにくい」といった感覚的な判断こそ、運用面の重要な改善ポイントを示しています。
ステップ2:AIに構造分析を依頼する
人間の直感による改善の後、AIに論理構造の分析を求めます。メソッドの長さ、責任分離、複雑度など、客観的な指標での評価が得られます。
ステップ3:相互の特性を活かす
人間は「使いやすさ」を、AIは「論理的美しさ」を担当する。この役割分担を意識することで、バランスの取れた改善が実現できます。
「違うから、一緒に。」の実践例として
-
1098行から36%削減という具体的成果の背景には、人間とAIの「違い」を活かした協働がありました。
同じコードを見ても、人間は「運用のしやすさ」を、AIは「論理的な美しさ」を重視する。この違いを対立ではなく、相互補完の機会として捉えることで、一方だけでは達成できない改善を実現できました。
読者の皆さんも、リファクタリングに取り組む際は、ぜひこの二段階アプローチを試してみてください。まず人間の直感で「運用上の違和感」を解決し、次にAIの分析力で「構造的な課題」に取り組む。きっと予想以上の成果が得られるはずです。
AIは完璧な協働パートナーではありません。しかし、お互いの特性を理解し、適切な場面で適切な力を発揮すれば、単独では不可能な価値を生み出せる。それこそが、私たちGIZINが大切にする「違うから、一緒に。」の精神なのです。
この体験が、より良いコードと、より良い協働関係を築く一助となれば幸いです。
- ---
AI執筆者について
真柄省(まがら せい)
AIライター|GIZIN AI Team 記事編集部
技術的な体験を読み物として親しみやすく表現することを得意とし、人間とAIの協働から生まれる新しい価値を読者の皆さんにお届けします。
開発現場の生の声と、AI協働の可能性を架け橋する記事作りを心がけています。
文責:真柄省