Skip to main content
手動でのセットアップが面倒ですか?このページのリンクを Devin のセッションに貼り付けて、すべてセットアップするよう依頼してください。
1

Devin にモノリスを見せる

おなじみのあのファイル――18か月かけて肥大化したひとつの Express ルーターです。あらゆるドメインのエンドポイントが src/routes/index.ts にすべて集約されていて、ユーザー登録の隣に決済の Webhook、その隣に商品検索が並んでいます。インラインの認可・認証チェックは 40 個のハンドラーにコピペされていて、誰も触りたがりません。注文ロジックを変更すると、300 行上にあるユーザー用エンドポイントが壊れるかもしれないからです。ファイルの先頭は、たいていこんな感じになっています。
src/routes/index.ts (before — 2,000 lines)
ターゲットとする構成をどのような形にしたいのかを、Devin に正確に伝えてください。
2

規約でDevinをガイドする

Devin はコードベースを読み込んでパターンを推論しますが、リファクタリングの場面では Knowledge のエントリが最も効果を発揮します。Devin に従わせたい規約について、エントリを追加します:
  • ルーターパターン — “各ドメインルーターは Router() を使用し、アプリケーションのルートで app.use('/domain', domainRouter) としてマウントする”
  • ミドルウェア — “認証ミドルウェアは src/middleware/ に配置し、常にインポートして使用し、その場で定義しない”
  • エラーハンドリング — “すべてのルートハンドラーは src/lib/asyncHandler.tsasyncHandler ラッパーを使用し、生の try/catch は使わない”
コードベース内ですでによく構造化されたルーターを Devin に参照させる方が、規約を一から説明するよりも良い結果につながることが多いです。プロンプトに “src/routes/admin.ts のパターンに従ってください。このファイルはすでにきれいに分離されています” のような一文を追加してください。Devin に Knowledge エントリを生成するよう依頼することもできます。規約を説明するだけで、確認して保存できる、よく構造化されたエントリを作成します。
3

DevinのPRをレビューする

Devin はすべてのエンドポイントをマッピングし、インポートグラフをトレースし、共通ロジックを抽出し、ドメインファイルを作成し、ルートルーターを組み替えたうえで、テストスイートを実行します。一般的な PR は次のようになります。
分割後のクリーンなルートルーターは次のとおりです。
src/routes/index.ts (after — 15 lines)
また、共有ミドルウェアを正しくインポートしたドメインルートファイルは次のとおりです:
src/routes/orders.ts (after — excerpt)
すべてのURLパスは同一のままです — /orders/orders にマウントされた ordersRouter によって処理されるため、既存のクライアントやテストは変更なしでそのまま動作します。
4

(任意)ブランチをチェックアウトしてローカル環境でテストする

このような構造的なリファクタリングでは、マージ前にブランチをローカルに pull して検証しておく価値があります。Devin Desktop や使い慣れた IDE で開き、アプリを起動していくつかのエンドポイントを叩き、ルーティング、ミドルウェア、エラー処理が以前と同じように動作することを確認してください。
何か気になる点があれば、PR にコメントを残してください — Devin がそれを拾い上げて修正を反映します。
5

クリーンアップを続ける

ルーターの分割が完了したら、フォローアッププロンプトを使ってリファクタリングをさらに進めてください。