この記事はLaravel Advent Calendar 2021 14日の記事です。
13日のokdyyさんの記事細かすぎて伝わらないLaravel選手権8(laravel8)では、
Laravel8のアップデート情報について知ることができましたね!
私もLaravelについて何を書こうかネタにこまって過去のアドベントカレンダー記事を見ていたところ、cocoeyes02さんの改めて Laravel/framework のコントリビュートガイドを読んでみたを発見しました。
Laravelは現在も追加開発が行われているOSSプロジェクトです。
世界中のLaravelユーザーが、今後のLaravelについて盛んに議論・開発している様子を、誰でも見て参加することもできるんです!
Laravelについてどんな議論が、どんな風にされているのか?
今後のLaravelはどうなりそうなのか?
を見ていきたいと思います。
Laravelリポジトリの紹介
LaravelはGithub上でOrganizationとして登録をしていて、Laravel関連のコードはOrganization内にまとまっています。
すこし前まではideasリポジトリで議論されていましたが、
今年7月頃には使わなくなった模様。
現在はlaravel/frameworkリポジトリのDiscussionsページでアイデアについて議論されているようです。
Discussionではアイデア以外についてもやりとりがされているため、カテゴリー絞り込みをするとチェックしやすいです。
アイデアの紹介
では、ここからは実際にアイデアをいくつか見ていきたいと思います!
*解説については私自身の意訳である点だけ承知ください
WordPressのようなプラグイン機能を追加したい
Title:ability to add plugins like wordpress
WPのようにプラグインを追加できる機能を作ってはどうか?という提案。
提案した方はプラグインの場合、composerに変更がない点をメリットとして挙げています。
コミッター間でのやりとりを見る限り、
・プラグインをlaravelに入れるための手段が別途必要になる
・Laravel自体はFWであってCMSではない(WPはLaravel製CMS)。Laravel製CMSにプラグイン機能を入れるならまだしも、FW自体には必要ないのでは?
という話がされていて、あまり賛同はえられてないようです。
controller作成コマンドにオプションを追加したい
Title:Flag --views in make:controller --resource and make:model -a
php artisan make:controller PostController --resource --views
というコマンドを打つと、index/create/editのbladeファイルが作成されるといった感じ。
すでに実装したプルリクも作成されているため、
ver9でこのオプションが追加されるかもしれませんね!
ちなみに、提案者のPovilasKorop氏はLaravel DailyというLaravelノウハウ・エンジニアキャリアについてのチャンネルを運営しているyoutuberで、
とてもお世話になっています。
海外のLaravelエンジニアのスキルをキャッチアップしたい方にオススメです。
Collectionメソッドに@template
追加したい
Title:Consider adding @template to collections
@templateとは、PHPDocに書くアノテーションのことです。
アノテーションによってPHPstanなどの静的解析ツールを使ってチェックを行えるようになります。
静的解析なにそれ?っていう方が、今年のPHPカンファで静的解析についてのトークをどうぞ!
以前、PHPstormが非対応で断念したことがあったようですが、現在は対応しているとのことで採用される運びとなったようです。
【9.x】...というタイトルで@templateを追加したプルリクがマージされたので、こちらも9系から対応するかも?
https://github.com/laravel/framework/pull/38538
パスワードのバリデーションルールにmaxを設定できるようにしたい
Title:Set max length validation rule in Validation\Rules\Password
デフォルトだとパスワードの文字数ルールが設定しづらいから、
ServiceProviderに設定を加えてはどうか?というアイデアです。
Password::defaults(function () {
return Password::min(6)->max(128);
});
提案したnaolki85さん自身で考え直して取りさげになりましたが、
こういうこともカジュアルに提案できるのはいいですね!
ちなみに、個人的にはパスワードに文字数制限を設けるがデフォルトでいいとおもいました。
APIサーバ用のプロジェクト作成コマンドを追加したい
TiItle:An API skeleton
laravel new project-orange —api
Laravelプロジェクト作成時↑のように打つと、フロントエンドのassetをもたないプロジェクトを作成してくれる機能です。
マイクロサービスで開発する場合フロントエンドは別リソースになるため、
assets/*
、web.php
などのファイルを削除する手間が省けそうです。
コミッター間でいろいろと話しあってましたが、すでに提案の1ヶ月前にTaylor氏が同じアイデアに着手していたことが発覚して
議論は終わりました。
こちらもver9で追加されるかもしれませんね。
### まとめ
いくつかのDiscussionの様子を覗かせてもらいました。
FWのこれからについて話しあうのって、とても刺激的ですね!
私はいままではFWユーザーとしてlaravelを見ていて、FW開発者が用意した機能を使っていたわけですが、LaravelはOSSです。
OSSある以上、私もlaravelにこんな機能があったらいいなと提案できるわけです。
私もLaravelユーザーであると同時にコミッターになれるような開発者になりたいと思います!