Junieで動くものを作ってみたい
#junie #ai #開発 #java #springboot
IntelliJで有名IDEの会社JetBrains社が、コーディングエージェントJunieを発表
現在招待されたユーザーが無料で使うことができる期間なので、
試しにつかってみましょーってお話です
始めて使うコーディングエージェントなので、
どういう使い方をすればいいのかなどなど調べてみたい
Playbookにざっと目を通す
IntelliJ IDEA Junie Playbook - JetBrains Guide
インストールをする方法
guidlineによって大まかにコントロールすること
無人では実行せず、破壊的な変更がないかを監視すること
SpringBootでの実行例
が書かれてた
guidlineを適宜変更しながらいい感じに動かすって感じなのねー
やってみないと分からない
あと普段使ってるGoとか、PHPでも動くのかも試したいね
Junieを使った開発手順を辿ってみる
playbookに従って、spring bootのプロジェクトを作ってみる
うちはmavenよりもgradleを使うことが多いから、いったんgradleで
あとjavaよりもサーバーサイドkotlinを使うことが多いから、kotlinで
New Project で Gradle Kotlinを使ったSpringBootのプロジェクトを作る
https://scrapbox.io/files/67e4affb54acb14dddfbd7c2.png
DependenciesはSpring Webを入れておくみたい
https://scrapbox.io/files/67e4b06598b0a8f9416c6c63.png
Spring Data JPAは要らんのかな?チュートリアルにはないからいったん入れずに進める
プロジェクトを開くと、初回セットアップで必要な依存ライブラリなどのダウンロードが始まるので待つ
待ってる間に、WindowsでJunieを使えるよう設定できてるか確認しておく
TerminalがPowerShellになっているか
https://scrapbox.io/files/67e4b0fa54acb14dddfbe22d.png
Junieのタブがあるか
https://scrapbox.io/files/67e4b10f1d3705f6d057ad45.png
Junieが破壊的な変更をした時のために、gitを使ってロールバックできるようにする
Junieに「gitを初期化して」と頼んでみる
https://scrapbox.io/files/67e4b16d2f913dff5be1829f.png
https://scrapbox.io/files/67e4b1aee5fae36eb7f22aa5.png
git initを実行でき、git statusが動くことを確認できました
Junieに「initial commitをして」と頼んでみる
https://scrapbox.io/files/67e4b22b76e2a55ef31099de.png
自分でコマンド打ったら一瞬やけど、試してみたら案外丁寧にやってくれていい印象
Bookmark Entity と Bookmark Repositoryを作ってもらう
「Bookmarkという名前でJPAのEntityを作って、対応するRepositoryも作ってください」
最初にJPA Dataの依存ライブラリをインストールしなかったけど、ここで勝手にインストールしてくれた
entityディレクトリを作って、Bookmark data classを作ってくれた
repositoryディレクトリを作って、BookmarkRepository interfaceを作ってくれた
BookmarkRepositoryTestも作ってくれた
テストのためにh2databaseの依存も解決してくれた
https://scrapbox.io/files/67e4b3ff6f1504efadd1967e.png
まだ手でやったほうが早い感じはするけど、全部やってくれるのめっちゃいい!
Brave ModeをOnにしてやったので、全部通してやってくれた
IDE上は、Entityで使っている jakarta 関連がunresolvedになっていたが、IDEの再起動で解決された
ここまでの変更をcommit
「ここまでの変更をcommitして」
https://scrapbox.io/files/67e4dc58c3e0d7a5047c3212.png
コミットコメントも書いてくれるけど、ここはやっぱり英語
CRUDの実装
「thymeleafとbootstrap cssを使って、BookmarkのCRUDを実装して」
https://scrapbox.io/files/67e4dddf98b0a8f9416eaa1a.png
ここまでの変更をコミットする
「ここまでの変更を日本語でコミットログを書いてコミットして」
https://scrapbox.io/files/67e4de7feca1543c764a657a.png
日本語でコミットログ書いてくれた
でもCRUDの部分は反映されてない
もう一回、ここまでの変更をコミットする
「ここまでの変更を日本語でコミットログを書いてコミットして」
https://scrapbox.io/files/67e4ded2ab67b093652c894a.png
いくつかの命令が同時に走るの、賢い
待ってる時間は、知らない英単語をAI Assistantに投げつける時間として丁度いい
https://scrapbox.io/files/67e4dfe5ac841be98e3369d5.png
実行して確認
IDE上部からApplicationを実行
https://scrapbox.io/files/67e5e9db486d2b4746c831ad.png
http://localhost:8080/bookmarks
https://scrapbox.io/files/67e5e9c29e103d7a310d7155.png
スタイル反映されてない気がする
スタイルが反映されるように修正してもらう
「http://localhost:8080/bookmarks を確認したが、スタイルが反映されていない。反映されるように修正して」
https://scrapbox.io/files/67e5ebbfd66364e8d259185f.png
Rerunして再確認
https://scrapbox.io/files/67e5ebd648fcf1d358a2041c.png
ここまでの変更を日本語のコミットログを書いてコミットしてもらう
https://scrapbox.io/files/67e5ec3d989be5f32a90cf3b.png
Controllerのメソッドに対して結合テストを作成
「全てのControllerのメソッドについて、結合テストを書いて」
何回も試しながらテストコードを追加してくれた
これ、人間がやっても同じことやるよなぁ
人間なら1, 2回上手く書けなかったらすぐにぐぐるけど、そこを自動化してくれてる感じがあって楽
ここまでの変更をコミット
感想
めっちゃ楽!
これは簡単なプログラムやったからチェックも楽やったけど、
複雑な要求が入ってきたときにどんなふうになるのかが気になる
同じようなことを他の言語でもやってみて、どうなるのかをやってみる
追記 2025/03/30
243.72.1 でWSL環境にあるプロジェクトも動くようになったっぽい?
と思ったけど、Workingから進まないかも
https://scrapbox.io/files/67e952bac25c52c5d730e46e.png
terminalをpwshにしてもう一度試すと、linuxコマンドを叩いて失敗してる
エラーがみれるようになって素晴らしいね!
更新履歴
2025/03/30 追記
2025/03/28 かきおわり
2025/03/27 かきはじめ