LaravelリポジトリのDiscussionされてるアイデアを読んでみる

この記事は[Laravel Advent Calendar 2021](https://qiita.com/advent-calendar/2021/laravel) 14日の記事です。
13日のokdyyさんの記事[細かすぎて伝わらないLaravel選手権8（laravel8）](https://qiita.com/okdyy75/items/0f3566597a8f7e0107b0)では、
Laravel8のアップデート情報について知ることができましたね！


私もLaravelについて何を書こうかネタにこまって過去のアドベントカレンダー記事を見ていたところ、cocoeyes02さんの[改めて Laravel/framework のコントリビュートガイドを読んでみた](https://cocoeyes02.hatenadiary.jp/entry/2019/12/23/181031)を発見しました。

Laravelは現在も追加開発が行われているOSSプロジェクトです。
世界中のLaravelユーザーが、今後のLaravelについて盛んに議論・開発している様子を、誰でも見て参加することもできるんです！

Laravelについてどんな議論が、どんな風にされているのか？
今後のLaravelはどうなりそうなのか？
を見ていきたいと思います。

### Laravelリポジトリの紹介
LaravelはGithub上でOrganizationとして登録をしていて、Laravel関連のコードはOrganization内にまとまっています。

https://github.com/laravel/framework

すこし前までは[ideasリポジトリ](https://github.com/laravel/ideas)で議論されていましたが、
今年7月頃には使わなくなった模様。

現在は**laravel/frameworkリポジトリのDiscussionsページ**でアイデアについて議論されているようです。

https://github.com/laravel/framework/discussions

Discussionではアイデア以外についてもやりとりがされているため、カテゴリー絞り込みをするとチェックしやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420171/1dfe2161-df8d-78f8-d2fa-a09fed0ce2b8.png)


### アイデアの紹介

では、ここからは実際にアイデアをいくつか見ていきたいと思います！
＊解説については私自身の意訳である点だけ承知ください

#### WordPressのようなプラグイン機能を追加したい
Title:[ability to add plugins like wordpress](https://github.com/laravel/framework/discussions/39512)
WPのようにプラグインを追加できる機能を作ってはどうか？という提案。
提案した方はプラグインの場合、composerに変更がない点をメリットとして挙げています。

コミッター間でのやりとりを見る限り、

> ・プラグインをlaravelに入れるための手段が別途必要になる
・Laravel自体はFWであってCMSではない(WPはLaravel製CMS)。Laravel製CMSにプラグイン機能を入れるならまだしも、FW自体には必要ないのでは？

という話がされていて、あまり賛同はえられてないようです。

#### controller作成コマンドにオプションを追加したい
Title:[Flag --views in make:controller --resource and make:model -a](https://github.com/laravel/framework/discussions/39576)

`php artisan make:controller PostController --resource --views`というコマンドを打つと、index/create/editのbladeファイルが作成されるといった感じ。

すでに実装したプルリクも作成されているため、
ver9でこのオプションが追加されるかもしれませんね！

ちなみに、提案者の[PovilasKorop](https://twitter.com/PovilasKorop)氏はLaravel DailyというLaravelノウハウ・エンジニアキャリアについてのチャンネルを運営しているyoutuberで、
とてもお世話になっています。

海外のLaravelエンジニアのスキルをキャッチアップしたい方にオススメです。

https://www.youtube.com/c/LaravelDaily

### Collectionメソッドに`@template`追加したい
Title:[Consider adding @template to collections](https://github.com/laravel/framework/discussions/34110)

@templateとは、PHPDocに書くアノテーションのことです。
アノテーションによってPHPstanなどの静的解析ツールを使ってチェックを行えるようになります。

静的解析なにそれ？っていう方が、今年のPHPカンファで静的解析についてのトークをどうぞ！

https://www.youtube.com/watch?v=-XcpNC-5P4I&t=1s


以前、PHPstormが非対応で断念したことがあったようですが、現在は対応しているとのことで採用される運びとなったようです。

【9.x】...というタイトルで@templateを追加したプルリクがマージされたので、こちらも9系から対応するかも？
https://github.com/laravel/framework/pull/38538

### パスワードのバリデーションルールにmaxを設定できるようにしたい
Title:[Set max length validation rule in Validation\Rules\Password](https://github.com/laravel/framework/discussions/39801)

デフォルトだとパスワードの文字数ルールが設定しづらいから、
ServiceProviderに設定を加えてはどうか？というアイデアです。

```.php:ServiceProvider.php
Password::defaults(function () {
    return Password::min(6)->max(128);
});
```
提案した[naolki85](https://github.com/naoki85)さん自身で考え直して取りさげになりましたが、
こういうこともカジュアルに提案できるのはいいですね！
ちなみに、個人的にはパスワードに文字数制限を設けるがデフォルトでいいとおもいました。

### APIサーバ用のプロジェクト作成コマンドを追加したい
TiItle:[An API skeleton](https://github.com/laravel/framework/discussions/39514)

```shell
laravel new project-orange —api
```
Laravelプロジェクト作成時↑のように打つと、フロントエンドのassetをもたないプロジェクトを作成してくれる機能です。

マイクロサービスで開発する場合フロントエンドは別リソースになるため、
`assets/*`、`web.php`などのファイルを削除する手間が省けそうです。

コミッター間でいろいろと話しあってましたが、すでに[提案の1ヶ月前にTaylor氏が同じアイデアに着手していた](https://twitter.com/taylorotwell/status/1457829364163387392?s=21)ことが発覚して
議論は終わりました。

こちらもver9で追加されるかもしれませんね。

###　まとめ
いくつかのDiscussionの様子を覗かせてもらいました。

FWのこれからについて話しあうのって、とても刺激的ですね！
私はいままではFWユーザーとしてlaravelを見ていて、FW開発者が用意した機能を使っていたわけですが、LaravelはOSSです。
OSSある以上、私もlaravelにこんな機能があったらいいなと提案できるわけです。

私もLaravelユーザーであると同時にコミッターになれるような開発者になりたいと思います！