0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第2回 Pythonしか使ってこなかった人が、AIを相棒に在庫管理システムをJavaで作り直す

0
Posted at

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画面化です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?