概要
https://zenn.dev/cybozu_frontend/articles/ai-migration-script-muzui
詳細内容
## AIによる大量コードのマイグレーションスクリプト作成の試行錯誤と知見
https://zenn.dev/cybozu_frontend/articles/ai-migration-script-muzui
AIによる大規模コード移行の課題に対し、直接コード書き換えではなくマイグレーションスクリプト生成をAIに任せ、従来の開発原則と組み合わせることで安定性と再現性を高める実践的アプローチを解説します。
**Content Type**: 📖 Tutorial & Guide
**Scores**: Signal:4/5 | Depth:4/5 | Unique:3/5 | Practical:5/5 | Anti-Hype:5/5
**Main Journal**: 86/100 | **Annex Potential**: 82/100 | **Overall**: 84/100
**Topics**: [[大規模コード移行, AIコード生成, マイグレーションスクリプト作成, プロンプト設計, 開発ワークフロー改善]]
サイボウズのエンジニアが、AIを用いた大規模なコード移行における試行錯誤から得られた実践的な知見を共有しています。AIに直接大量のコード書き換えを指示すると、実行の遅さ、コンテキストウィンドウの圧迫による出力の不安定さ、再現性の低さといった問題に直面することが指摘されています。これは、数千ファイル規模の移行では特に顕著で、期待通りの結果を得るためのトライ&エラーが非効率的です。
この課題に対し、記事ではAIにコードを直接書き換えさせるのではなく、マイグレーション用のスクリプトやcodemodを作成させるアプローチを提案。HugoからAstroへの大規模なサイト移行を事例に、ShortcodeからComponentへの変換やRender HookのMDX対応など、具体的な変換要件を提示しています。しかし、初回のAIによるスクリプト生成は仕様不足やHTMLの扱い、Frontmatterの挙動の違いにより不完全で、修正と破壊の無限ループに陥った失敗談も語られています。
このような経験を経て、著者はAIによるスクリプト作成を成功させるための改善策を導き出しました。重要なのは、「責務を分割させる」こと。AIに対し、各変換処理を個別の関数として定義するよう明確に指示することで、影響範囲を限定し、修正時の破壊頻度を大幅に削減できます。また、テストコードとTypeScriptによる型定義の活用は極めて重要であり、AIに常にテストと型チェックをパスする状態を維持させることで、自律的な問題特定と修正サイクルを確立します。さらに、TDD(テスト駆動開発)の要領で段階的に実装を進めさせ、問題範囲を小さく保つこと、そして行き詰まった際にはリファクタリングを指示することも効果的とされています。
これらの知見は、結局のところ「コードの責務は小さく、テストを書き、小さく進め、複雑になったらリファクタする」といった、従来のソフトウェア開発で培われた原則がAIを活用する際にも不可欠であることを示唆しています。AIは強力なツールですが、その真価を引き出すには、人間が培ってきた開発のノウハウをプロンプト設計やワークフローに組み込むことが鍵となると、ウェブアプリケーションエンジニアに向けて強調しています。