Markdown
前回記事
https://qiita.com/0903osa/items/38404ed6beebe112c40e
前回までに、Supabase側のデータベースとテーブル作成が完了しました。
今回から、いよいよJavaへのリプレイスを始めます。
今回の技術スタックは以下の通りです。
- Java 21 / Spring Boot 3
- Supabase / PostgreSQL
- Playwright
- Antigravity CLI
そして今回は、ターミナルを4ペインに分けました。
┌────────────────────┬────────────────────┐
│ Java / Spring Boot │ Supabase / DB │
├────────────────────┼────────────────────┤
│ Antigravity CLI │ Playwright / E2E │
└────────────────────┴────────────────────┘
単に画面を4つ並べたかったわけではありません。
Java側で実装
SupabaseでDBを確認
Antigravity CLIでAI支援
Playwrightでテスト
という形で、「実装・DB・AI・検証」を並行してリアルタイムに確認するためです。
ちなみに、この4ペインの役割分担は、私がGeminiに指示を出して整理してもらいました。
Supabaseを少しマイナーチェンジ
JavaからPostgreSQLへ接続する段階で、Supabase側も少し調整しました。
以前触ったときの記憶で進めようとしたのですが、
「あれ? こんな画面だったっけ?」
となりました。
接続方法やコネクションプーラー(Supavisor)の設定などもあり、以前の知識だけでは分かりにくい部分があります。
JavaのJDBC接続に必要な設定(Sessionモードのポートなど)を確認しながら、今回の構成に合わせて調整しました。
昔の記憶だけで進めるのは危ないですね。
パスワード管理も考える
Javaから直接PostgreSQLへ接続するので、今回はDBパスワードを扱います。
ここはGitHubで公開する以上、特に注意しました。
パスワードをソースコードに直接書かず、環境変数を利用します。
YAML
spring:
datasource:
password: ${DB_PASSWORD}
また、
.env
.env.local
などは .gitignore に入れ、公開用には .env.example を用意します。
そして、
「本当に秘密情報がGitHubに入っていないか?」
を git status などで指差呼称しながら確認します。
AIにコードを書かせても、秘密情報の管理まで丸投げするつもりはありません。
Javaは「プログラムを置く場所」も考える
今回、Javaにリプレイスしていて、Pythonのときとは違うところにも気づきました。
「このプログラム、どこに置くんだ?」
という問題です。
Spring Bootでは、例えば以下のように役割ごとにパッケージを分けます。
Plaintext
src/main/java/
└── com/example/inventory/
├── model/
├── repository/
├── service/
└── controller/
それぞれ、
model → データを扱う
repository → DBとのやり取り
service → 業務処理
controller → API
という形です。
最初は、
「コードを書いて動けばいいんじゃないの?」
くらいに考えていました。
ところがJavaでは、どこに何を置くか、どう分けるかも考える必要があります。
ここもAIに聞きながら、役割分担を理解して進めました。
そして、正直ちょっと不安
4ペインでセットアップを始めると、AIから次々とコマンドが出てきます。
Java、DB、Antigravity、Playwright。
画面が4つ同時に動き始めると、
「これ、自分の理解を超えてないか?」
という不安が出てきました。
AIを使えば、未経験のJavaでも驚くほど速く環境ができていきます。
でも、
「動いた」=「理解した」
ではありません。
何か問題が起きたときに、自分で原因を追えるのか。
そこは今回の開発でも強く意識したいところです。
画面だけ見ると、
「完成!」
みたいな雰囲気になりました。
そこで思わず、
「……で、これで全部終わるわけないよな? んなあほな」
となりました。
もちろん、終わるわけがありません。
まだJava側の土台ができただけです。
これから、まだたくさんあるはずです、たぶん。
今回の気づき
今回感じたのは、
AIに任せることと、AIに丸投げすることは違う
ということです。
AIに指示を出してもらう
実際に動かす
不安になったら止まる
ログや設定を確認する
そして次の指示を出す
この繰り返しで進めていきたいと思います。
おわりに
4ペイン環境も、とりあえず完成しました。
ただ……
4画面あると、だんだん欲が出てきます。
「これ、もっと画面増やせるんじゃない?」
ということで、次回はさらにやります。
8画面化です。