JunieでPHP + Larabelのプロジェクトを作ってみる
dockerも絡ませたいので、WSL上のファイルでも動かせないか試行錯誤してみたい
\\wsl.localhost だと上手く動かないのかな?ってことで、任意のドライブに割り当ててみる
プロジェクト作成
ディレクトリだけ先に作って、Openするだけ
JavaプロジェクトじゃなくてもSDKの指定が必要そう
https://scrapbox.io/files/67e602e50aa15b64fdb7c737.png
.gitignoreを作って、ide関連のファイルを除外するようにする
「.gitignoreを作って、 .idea と *.iml を除外するようにして」
gitの初期化
「gitを初期化して、「initial commit」を追加して」
.gitが作られたりしてるけど、IDEではリフレッシュされてなくて認識できてない
プロジェクトを開きなおせば認識する
ドライブ割り当ててアクセスしてるから、ファイル変更を検知できていない?
Laravelのプロジェクトを作ってみる
「composerを使い、laravelのプロジェクト"junie-laravel"を作って」
wsl環境にはcomposerを入れていたけど、ホストマシンには入れていなかったのでinstallから始まった
ん-ファイル共有が遅いのか?遅延を感じるなぁ
なんかいかlaravelを入れるのに失敗していた
これは大人しく、WSLの外でやったほうがいいかも?
WSLにはphpとかcomposerとかいれて開発しやすい環境を作ってたけど、
それをそのまま使えないならWindows環境にそれをまた用意しなくてはいけなくなる
それはめんどくさいってことで、dockerを上手く絡められないかを試したい
ただ前提として、WSLで動かしているdockerなので、
Windows側から操作するのに遅れが発生することは理解しておく必要がある
ここから下はJunieへの命令もコマンドとして書く
「」で囲って書いてたけど、後から見直したときに読みづらかった
Windowsホストマシン側にプロジェクト用のディレクトリを作り、IntelliJで開く
$ .gitignoreを作って、IntelliJ関連のファイルを除外するようにして
$ gitを初期化して、"initial commit"ってメッセージで最初のコミットを追加して
やっぱりホスト側にあるファイルなので、ファイル変更をすぐに検知できてgitもスムーズに動く
$ php + apacheのlatestのイメージを元に、最新のcomposerもインストールされたdockerfileを作って
めっちゃしっかり作られたDockerfileと、コンテナを立てやすいdocker-compose.ymlが作られた
ここからのコマンドはこれを使って実行してもらいたい
$ README.mdを日本語に書き直して
README.mdも作られていたけど、これが英語だったので日本語に書き直すようにお願い
ここで気付いたけど、Junie 243.71.1 から期待しない結果になった命令をRollbackできるようになってる
また、ファイルが追加されるためにgit addする?って聞いてくるのもされなくなってる
$ docker-compose.ymlにdb用のサービスも追加。mysqlではなくpostgresqlを使うように変更。
$ ここまでの変更をcommitして。コミットメッセージは日本語で書いて
$ laravelのプロジェクトを作成。プロジェクト名はjunie-laravel
DockerfileとREADME.mdを読んでどんなプロジェクトか理解するところから始めてくれる
そこからコンテナを立ち上げて、コンテナ内でlaravelのプロジェクトを作ってくれるよう計画が立てられてる
ホストマシンを汚さずに欲しい結果が得られるすごい!
Laravelプロジェクト作成中のログが見れないので、どれくらい進んでいるのかが分からないのは困るかも
環境に合わせて、.envのDBの設定を書き換えてもくれてる
途中でmysqlからpostgresqlに変更しているため、extensionの入れ替えとか依存ライブラリのインストールもしてくれる
000-default.confをつかしてapacheの設定を変更してくれるようになった
$ storageディレクトリへの書き込み権限がないため、エラー画面になる
$ laravelのsession管理は、ファイルセッションを使うように変更
$ ここまでの変更を日本語でコミットコメントを作ってコミット
dockerfile等への変更がメインのコミット
$ ここまでの変更を日本語でコミットコメントを作ってコミット
laravel関連ファイルの追加のコミット
ここまでやって、Laravelの画面がみれた
https://scrapbox.io/files/67e63b22bb2be06e845add2c.png
正直、プロジェクトを作るところまでは自分でやったほうが早いかも
ここからSpringBootでやったのと同じ機能の実装までやってみる
$ 実装BookmarkのModelとBookmarkRepository
マイグレーションファイル、Model、RepositoryのInterfaceとClassが作られた
$ BookmarkRepositoryのユニットテストを追加。テスト時はSQLiteを使うようにする
sqliteを使うようにしてくれるし、migrationと、factoryでテストデータを作りながらユニットテストを追加してくれる
$ ここまでの変更をコミット。コミットメッセージは日本語で
$ BookmarkControllerの追加とCRUDの実装と、/bookmarksのルーティングを追加
APIとして実装されてしまったので、viewも持つように追加の命令
$ 各CRUDのメソッドはAPIではなく、viewを呼び出してHTMLの画面も持つ
DBにスキーマが反映されていないので、マイグレーションを実行
$ サンプルデータを追加し、マイグレーションを実行
https://scrapbox.io/files/67e68224b17a9141fa512c66.png
スタイルについては何も言うてないけど、いい感じにまとめてくれた
いい感じ、なのか?
Controllerのテストまで実装されていた
$ ここまでの変更をコミット。コミットメッセージは日本語で
これでSpringBootでやったのと同じのができた
感想
普段からDocker使ってるし、apacheの設定ファイルを書くくらいはできるから、
環境構築は自分でやったほうが早いのになーって気持ちが半分くらいあったけど、
Docker詳しくない人とか、Linux詳しくない人とか、apache詳しくない人からすると、
その辺を良い感じにやってくれるのはめっちゃ良いと思う
詳しくない人は期待通り動かない時に、こういう風に修正してほしいってのを伝えられないんじゃないかなーという疑問もある
自分が技術力があるとは口が裂けても言えないけど、
理解している範囲においてはコーディングエージェントに任せるのはめっちゃ良い
この作業単純作業で楽しくないんよなーを命令一撃でコードが吐き出されるから、
より作りたいモノに集中できる
あと僕はデザイン方向がめちゃくちゃ苦手なんやけど、
そのあたりもいい感じにやってくれるのはめっちゃ強い
苦手を任せ、めんどくさいを任せ、出来ないも任せられたら、
単純作業をするだけのコピペプログラマーは本当に要らなくなるんじゃないか……
更新履歴
2025/03/28 かきはじめ