【要約】個人開発サービスが1MBになった日、「データをコードに書くな」を実践してmain.pyを35%削減した話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、肥大化したmain.pyの保守性とデプロイ効率の低下という課題に直面した。AIプロンプトや学習用データがコード内に直接記述されており、ロジックとデータが混在していた。この状態では、データの微修正であってもコード全体の再ビルドとデプロイが必要となる。
- ・main.pyが1MB(15,352行)に達し、肥大化した。
- ・AIプロンプト54個やデッキデータ3,702行が変数としてハードコードされていた。
- ・データの変更のたびに、アプリケーション全体の再デプロイが必要であった。
// Approach
開発者は、「データをコードに書かない」という原則に基づき、データの格納先を適切に分離するリファクタリングを行った。コードから定数データを排除し、外部ストレージへ移行することで、ロジックの純粋性を高めるアプローチである。
- ・AIプロンプトをSQLiteのsite_configテーブルへ移行した。
- ・デッキデータをSQLiteのstudy_decksテーブルへ移行した。
- ・設定データをapp/config/*.jsonへ分離した。
- ・CI/CD環境において、コンテナIPへ直接アクセスする構成に変更した。
// Result
リファクタリングにより、コードの軽量化と開発サイクルの高速化を達成した。コードの肥大化が解消されただけでなく、運用面での柔軟性も向上している。
- ・main.pyの行数が15,352行から9,949行へ、サイズが1MBから450KBへ減少した。
- ・プロンプトの変更が、再デプロイなしで即時反映可能となった。
- ・CI/CDのテスト実行が、285URL/20秒から411URL/4秒へと約5倍高速化した。
Senior Engineer Insight
> 「関心の分離」の徹底が、コード品質とCI/CDの速度向上に直結した好例である。特にAIプロンプトをDB化する手法は、プロンプトの試行錯誤を高速化させるため、実戦的だ。ただし、規模拡大時にはDB接続の管理や、JSONの読み込みキャッシュ戦略を検討すべきである。