Next.jsで作ったアプリをLLMにFlutter移行させる作業log

これをflutter化する

flutterのプロジェクトを作る
プロジェクト用のディレクトリを切ってそこで作業する
fvmでflutterのversionを管理するので、ver定義ファイルを用意
{
"flutterSdkVersion": "3.29.3"
}
fvm install
flutter doctorが全緑になるまで対応する
fvm flutter doctor

環境が整ったのでプロジェクトを作る
fvm flutter create .
fvm flutter run
いつもの

こっから移行作業
まず、Next.jsプロジェクトのsrc配下を、flutterプロジェクトの適当なディレクトリに持ってくる。
今回はweb_src
とする。

無邪気にRoo Codeで移行しろって言ってみる。
結構丸投げする予定なのと、作業の性質的にコンテキストウィンドウが巨大になりそうなのでモデルはgemini 2.5 pro(preview-05-06版)を選択。

いったんArchitectモードで様子を見てみる
Next.jsのプロジェクトをFlutterのプロジェクトに移行してほしいです
不明点は随時私に質問してください
前提情報は以下の通りです
- このリポジトリはflutterのプロジェクトです
- flutter create した直後のデフォルトの状態です
- fvm というflutterのバージョン管理ツールを使っているので、CLIでflutterコマンドを使いたいときは"fvm flutter"に置き換えてください(例: fvm flutter run)
- `web-src` にはNext.jsプロジェクトのsrc配下のコードが入っています

質疑応答を繰り返す
- webのlocalstorageを使っている機能をどうするか?については、「ゆくゆくMBaaSへ移行する予定なので、Repositoryパターンで隠蔽してくれればなんでもいい。簡単なやり方にしてくれ」と指示。
- チャット上で実装計画を提案されるが、じっくり読みたいからMDファイルにしてくれと指示
- 頼まなくても最初からファイルに書き出してくれるときもあるんだよな

出力させたmdファイルをちょこちょこ編集し、新しいタスクで実装を開始させる
migration_plan.md に従って実装をお願いします

UIはスクショして与えたりしてなんとかやってるけど、思ったより中身まで作り変えてくれない。
ガワだけ適当に整えて終わりましたとか言ってくる

移行しろっつってんのにこんな感じで終えてる。
import 'package:flutter/material.dart';
class PomodoroView extends StatelessWidget {
const PomodoroView({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ポモドーロタイマー'),
),
body: Center(
child: Text('ポモドーロタイマーのUI'),
),
);
}
}
自分でNext.jsのコード読んでflutterで書き換えてね、と一喝する

ゴリゴリとVibe Codingしているが、やはりGemini 2.5 proのコスパはめちゃくちゃいいと感じる
ぶん回しまくってもこれぐらいのコードベースだとなかなか$1いかない
でもやっぱClaude 3.7 Sonnetほど賢くは無い印象で、エラー回避のためにすごいセンスのない改修をしたり、無限ループ入ったりすることが何度かあった。
あとは指示の一部を完了したら満足して完了報告してくることがありその辺もちょっとイケてなさを感じるが、この料金と反応速度は凄まじい。

.clinerulesをちゃんと書いてみる。どうだ?
開発ルール等
- 動作確認のために`fvm flutter run`を行わないでください。
- 私が手もとでリロードするので、実装内容を確認してほしい場合は「リロードして確認してください」というようなメッセージを出してください
- 1つのエラー解消につき2回以上失敗したら、私に確認してください
- 状態管理には`riverpod`を使用してください
- `web_src/` ディレクトリ配下にはNext.jsのコード(移行元)が格納されています。
- `lib/` ディレクトリ配下にはFlutterのコード(移行先)が格納されています。