背景
Laravel には,
「コミットメッセージ書くのめんどくせぇ!全部 wip
でいいわ」
という信仰に従って(?),メインブランチにも堂々と wip
とだけ書かれたコミットがプッシュされています。これを揶揄するかのようにファングッズまで作られる状態です。下記に関しては Taylor 氏公認の模様。お行儀よくコミットメッセージを書いている古くからのオープンソースプロジェクト参加者が発狂しそうな実態ですね
ところで,フォロワーの過去の呟きを今更ながら掘り返してしまいました。せっかくなので,いったいどれだけの wip
が存在するのか,統計をとって調べてみました。
調査1: laravel/framework
コミット数統計
最終コミットはこの状態です。
commit 76b407eafb16dfd4a553f3c437fbbc6d8268e3a1 (HEAD -> 9.x, origin/HEAD, origin/9.x)
Author: Samuel Mwangi <samuel@samuelmwangi.co.ke>
Date: Sat Jul 16 22:38:10 2022 +0300
[9.x] Fix factory typos (#43223)
* Fix Typos
Fix typos in Factory docblock
* Missed typo
全体に占める割合
// 総コミット数
$ git log --oneline | wc -l
33933
// メッセージが "wip" または "WIP" のみからなるコミット数
$ git log --oneline --grep='^wip$' -i | wc -l
84
// メッセージに "wip" または "WIP" が含まれているコミット数
$ git log --oneline --grep='\bwip\b' -i | wc -l
145
歴史全体の中では,完全一致が 0.25%,部分一致が 0.43% となりました。あれ,意外とレア…?
期間別の統計
「おかしい!もっとよく見るはずなのに!」
そう感じた私は,半期ごとに調べてみることにしました。
oldest_date=$(
git log \
--oneline \
--pretty=format:'%cd' --date=format:'%Y-%m-%d' \
--reverse \
| head -1
)
newest_date=$(
git log \
--oneline \
--pretty=format:'%cd' --date=format:'%Y-%m-%d' \
| head -1
)
since_date=$oldest_date
until_date=$(gdate --date "$since_date 6 month" +%Y-%m-%d)
printf "区間\t"
printf "全体\t"
printf "完全一致\t"
printf "部分一致\n"
while true; do
printf "$since_date - $until_date\t"
printf "$(git log --oneline --since "$since_date" --until "$until_date" | wc -l)\t"
printf "$(git log --oneline --since "$since_date" --until "$until_date" --grep='^wip$' -i | wc -l)\t"
printf "$(git log --oneline --since "$since_date" --until "$until_date" --grep='\bwip\b' -i | wc -l)\n"
since_date=$(gdate --date "$until_date 1 day" +%Y-%m-%d)
until_date=$(gdate --date "$since_date 6 month" +%Y-%m-%d)
if [[ "$since_date" > "$newest_date" ]]; then
break
fi
done
date
コマンドは GNU 版の gdate
を利用しています。ネタ系記事だけど一応このへんは技術要素あるから大丈夫(?)
結果は以下のようになりました。
区間 全体 完全一致 部分一致
2013-01-10 - 2013-07-10 1866 0 0
2013-07-11 - 2014-01-11 1400 0 0
2014-01-12 - 2014-07-12 1547 0 0
2014-07-13 - 2015-01-13 2356 0 0
2015-01-14 - 2015-07-14 2237 0 0
2015-07-15 - 2016-01-15 2389 3 3
2016-01-16 - 2016-07-16 2325 0 1
2016-07-17 - 2017-01-17 2723 0 1
2017-01-18 - 2017-07-18 1762 0 2
2017-07-19 - 2018-01-19 1726 1 2
2018-01-20 - 2018-07-20 1274 2 2
2018-07-21 - 2019-01-21 1659 15 16
2019-01-22 - 2019-07-22 1847 2 2
2019-07-23 - 2020-01-23 1527 1 2
2020-01-24 - 2020-07-24 2172 19 21
2020-07-25 - 2021-01-25 1636 3 6
2021-01-26 - 2021-07-26 1076 11 16
2021-07-27 - 2022-01-27 1200 19 45
2022-01-28 - 2022-07-28 1001 8 25
2019 年がちょうど Laravel 6 の開発・リリースの時期と一致します。あの頃から良くも悪くも """勢いづいて""" きた記憶があるので感覚的にも腑に落ちますね。
変更内容の個別精査 (完全一致)
かなりのコミット数があるので,ここでは完全一致に絞ってみます。
check() {
local i=0;
for commit in $(git log --pretty=%H --since="$1" --until="$2" --grep='^wip$' -i --reverse); do
((i++))
if [[ $(( i % 10 )) -eq 0 ]]; then
echo "Press enter to continue\n"
read
fi
open https://github.com/laravel/framework/commit/"$commit"
done
}
ここから1個1個虱潰しにしていき,興味深いものに絞り込んで紹介します。但し,プルリクエストの中の1コミットであったものは目視で除外し,あくまで直接プッシュされたものに絞り込みます。
(ここも自動化できるといいんだけどな…)
〜 2018-07-20
check 2013-01-10 2018-07-20
-
wip · laravel/framework@faf2e22
-
AuthManager
が,汎用的なManager
継承をやめて全て固有実装に差し替え- 初っ端からなかなかぶっ込んできますね…安易な継承をやめること自体は正しいとは思いますが
-
-
wip · laravel/framework@1aa9577
-
Guard
をクラスからコントラクトに変更して,これまでGuard
だったものがSessionGuard
として実装の1つに- むしろ今まで伝統的セッション管理にしか対応してなかったんかい!でもこの変更のおかげで今の治安があると思えばなかなかいい仕事
-
2018-07-21 〜 2020-01-23
-
wip · laravel/framework@b298de2
-
Eloquent Event Dispatcher のイベント発火用メソッドが
fire
からdispatch
に変更- ありましたね〜 昔はイベントは基本
fire
でしたけどいつの間にかdispatch
に入れ替わってきてますね。まだ一部フレームワーク内に旧称が残っている場所はあった気がしますが
- ありましたね〜 昔はイベントは基本
-
Eloquent Event Dispatcher のイベント発火用メソッドが
-
wip · laravel/framework@7248f29
-
'Sorry, you may not access this page.'
→'Sorry, you are not authorized to access this page.'
- 自然な英語を感じる…これがネイティブの拘り…
may not <V>
ってちょっと堅苦しい感じするよね
- 自然な英語を感じる…これがネイティブの拘り…
-
-
wip · laravel/framework@359bd06
wip · laravel/framework@e9fe34c- リリースバージョンを 5.7 から 5.8 に変更
リリースバージョンを 5.7 から 5.5 に変更- え?って思ったけど, CI で自動デプロイするためにリリース用のスクリプトに変更いちいちコミットして突っ込んでいるのね。LTS の 5.5 をサポートするためにわざわざ対応しているのは偉い。(もう少し良い仕組みありそうな気はするけど…)
- 以降では省略しますが,類似のコミットが非常に多かったです。
- リリースバージョンを 5.7 から 5.8 に変更
2020-01-24 〜 2022-07-28
-
wip · laravel/framework@63f7658
-
Collection::mode()
でnew self
→new static
に変更- 遅延静的束縛!コレクションは基本こっちに寄せてくれると嬉しい
-
-
wip · laravel/framework@ddfa71e
-
Query Builder の
limit
に渡される値を明示的に(int)
キャスト- 一見地味な変更だけど重要な意味を持つもの。セットする側のメソッドの引数で
int
による型宣言がついていないため,信用できない入力を渡されたときに文字列のまま持ってしまうリスクがあった。 - SQL インジェクションの脆弱性自体は Laravel 5.0.30 の Cast to integer on limit and offset. · laravel/framework@fcf5cb3 で修正されているため,この段階での影響があったわけではない模様。よかった…2021年に残っていなくて…
- 一見地味な変更だけど重要な意味を持つもの。セットする側のメソッドの引数で
-
Query Builder の
-
wip · laravel/framework@1d6380d
wip · laravel/framework@9c88e7c
wip · laravel/framework@580df99
wip · laravel/framework@6c10534- コンフリクト解消ミス修正
- 差分マーカーそのままコミットしがち
- コンフリクト解消ミス修正
-
wip · laravel/framework@4a57b48
- インテグレーションテストでのメソッド呼び出し回数期待値変更
- これだけ見てもさっぱり元の変更がわからん…
- インテグレーションテストでのメソッド呼び出し回数期待値変更
-
wip · laravel/framework@c51ad0f
これは草 -
wip · laravel/framework@f42aaa5
-
Query Builder の全文検索機能に Eloquent Builder も対応させる
- これはプルリク出してちゃんと変更ログ残そうぜ…
-
Query Builder の全文検索機能に Eloquent Builder も対応させる
-
wip · laravel/framework@609351c
-
strtr
とstr_replace
の比較実験を行った結果str_replace
の実装を削除-
use strtr · laravel/framework@220f4ac に続いて消してるコミット。 PHPer,最初は
str_replace()
しか使わないけどstrtr()
の存在を知ったとき感動するのありがち。真面目に実装するとかなりしんどいやつ。
-
use strtr · laravel/framework@220f4ac に続いて消してるコミット。 PHPer,最初は
-
やはり近年は劇的に増えてますね…
実はこの後部分一致でも調べましたが,特にこちらは問題ありませんでした
check() {
local i=0;
local x=$(git log --pretty=%H --since="$1" --until="$2" --grep='\bwip\b' -i --reverse)
local y=$(git log --pretty=%H --since="$1" --until="$2" --grep='^wip$\|\(#[0-9]\+\)\|merge pull request' -i --reverse)
diff=$(diff <(echo "$x") <(echo "$y") | grep '< ' | cut -d' ' -f 2)
for commit in $(echo $diff); do
((i++))
if [[ $(( i % 10 )) -eq 0 ]]; then
echo "Press enter to continue\n"
read
fi
open https://github.com/laravel/framework/commit/"$commit"
done
}
おまけ: version
っぽいコミットの調査
version
っぽいコミット(typo 含む)のうち,通常のバージョン番号変更以外のことをやっているコミットを探してみます。
oldest_date=$(
git log \
--oneline \
--pretty=format:'%cd' --date=format:'%Y-%m-%d' \
--reverse \
| head -1
)
newest_date=$(
git log \
--oneline \
--pretty=format:'%cd' --date=format:'%Y-%m-%d' \
| head -1
)
since_date=$oldest_date
until_date=$(gdate --date "$since_date 6 month" +%Y-%m-%d)
printf "区間\n"
printf "version っぽいコミット\t"
while true; do
printf "$since_date - $until_date\t"
printf "$(git log --oneline --since "$since_date" --until "$until_date" --grep='^vers' -i | wc -l)\n"
since_date=$(gdate --date "$until_date 1 day" +%Y-%m-%d)
until_date=$(gdate --date "$since_date 6 month" +%Y-%m-%d)
if [[ "$since_date" > "$newest_date" ]]; then
break
fi
done
version っぽいコミット 2013-01-10 - 2013-07-10 0
2013-07-11 - 2014-01-11 2
2014-01-12 - 2014-07-12 0
2014-07-13 - 2015-01-13 0
2015-01-14 - 2015-07-14 2
2015-07-15 - 2016-01-15 0
2016-01-16 - 2016-07-16 14
2016-07-17 - 2017-01-17 23
2017-01-18 - 2017-07-18 21
2017-07-19 - 2018-01-19 40
2018-01-20 - 2018-07-20 36
2018-07-21 - 2019-01-21 34
2019-01-22 - 2019-07-22 36
2019-07-23 - 2020-01-23 36
2020-01-24 - 2020-07-24 37
2020-07-25 - 2021-01-25 63
2021-01-26 - 2021-07-26 27
2021-07-27 - 2022-01-27 32
2022-01-28 - 2022-07-28 37
統計自体はすべてのバージョンコミットを含んでいます。ここから const VERSION='...';
の書き換えをしたもの以外に絞り込むと…
check() {
local i=0;
local x=$(git log --pretty=%H --since="$1" --until="$2" --grep='^vers' -i --reverse)
local y=$(git log --pretty=%H --since="$1" --until="$2" --grep='\(#[0-9]\+\)\|merge pull request' -i --reverse)
diff=$(diff <(echo "$x") <(echo "$y") | grep '< ' | cut -d' ' -f 2)
for commit in $(echo $diff); do
if $(git show "$commit" | grep '^[+-]' | grep -v 'const VERSION\|^\(+++\|---\)' >/dev/null 2>&2); then
((i++))
if [[ $(( i % 10 )) -eq 0 ]]; then
echo "Press enter to continue\n"
read
fi
open https://github.com/laravel/framework/commit/"$commit"
fi
done
}
〜 2018-07-20
2018-07-21 〜 2020-01-23
特に無し
2020-01-24 〜 2022-07-28
ありました!
-
versino · laravel/framework@5371296
- エクステンションの phpredis 版のキャッシュ機能テスト
- Redis を使った排他制御機能のトレイト分割によるリファクタリング
- コンフリクト解決ミス修正
-
Eloquent 属性の Enum 対応
- えぇ…
-
Collection::sortKeysUsing()
メソッドの追加Stringable::scan()
メソッドの追加Stringable::whenEmpty()
Stringable::whenNotEmpty()
の引数変更- えぇ…
- version · laravel/framework@2748457
調査2: laravel/docs
ドキュメンテーションに悪名高い有名コミットがぶちこまれていた記憶があるので,こちらも掘り起こしてみます。
期間別の統計
区間 全体 完全一致 部分一致
2013-01-10 - 2013-07-10 555 0 0
2013-07-11 - 2014-01-11 350 0 0
2014-01-12 - 2014-07-12 357 0 0
2014-07-13 - 2015-01-13 264 0 0
2015-01-14 - 2015-07-14 1482 0 0
2015-07-15 - 2016-01-15 821 0 0
2016-01-16 - 2016-07-16 677 7 7
2016-07-17 - 2017-01-17 1006 2 2
2017-01-18 - 2017-07-18 698 1 1
2017-07-19 - 2018-01-19 781 0 0
2018-01-20 - 2018-07-20 616 0 0
2018-07-21 - 2019-01-21 887 9 9
2019-01-22 - 2019-07-22 691 1 1
2019-07-23 - 2020-01-23 851 2 2
2020-01-24 - 2020-07-24 1068 47 47
2020-07-25 - 2021-01-25 930 16 16
2021-01-26 - 2021-07-26 488 22 22
2021-07-27 - 2022-01-27 464 46 49
2022-01-28 - 2022-07-28 371 40 44
やはり後半に不穏なニオイが…
何かを諦めたような爆発的増加が見える見える…
変更内容の個別精査 (完全一致または部分一致)
〜 2018-07-20
特に無し。
2018-07-21 〜 2020-01-23
-
wip · laravel/docs@b3bfc4d
-
Blade ディレクティブの命名規約の撤廃
- どこで変わったんでしょうね…
-
Blade ディレクティブの命名規約の撤廃
-
wip · laravel/docs@139d1c5
-
Laravel Dusk:
dusk:fails
の追加- add fails command · laravel/dusk@9810f86 で追加されていました。これも直プッシュです
-
Laravel Dusk:
-
wip · laravel/docs@3d58481
- アップグレードガイド:
Removed
→Flattended
- 全く意味が違うけど,アセットディレクトリが完全に消えることは無さそうなので単なるミスの修正でしょうか
- アップグレードガイド:
-
wip · laravel/docs@ec81e0d
ワロタ-
破壊的変更だと思ったものが破壊的変更じゃなかった件
- コメント欄の有志が元となったプルリク [6.x] Remove upgrade guide section on RegisterController by bakerkretzmar · Pull Request #5447 · laravel/docs を拾ってくれています。 …が,これを見てもどうしてこの変更になったのかさっぱり分からない…
-
破壊的変更だと思ったものが破壊的変更じゃなかった件
2020-01-24 〜 2022-07-28
-
wip · laravel/docs@b75ae3a
-
Laravel 本体に
phpunit
を呼び出せるartisan test
コマンドを追加- そういえばそんなのありましたねぇ…(使わないので忘れてた)
-
Laravel 本体に
-
wip · laravel/docs@9c8cf6b
-
Laravel Airlock の追加
- 商標権騒動で Sanctum に変わったやつだ!懐かしい名前
-
Laravel Airlock の追加
-
wip · laravel/docs@c6f6308
- Airlock の使い方がっつり解説
-
wip · laravel/docs@92a76c9
- Blade タグコンポーネントのディレクトリネスト表現:
foo:bar
→foo.bar
- Laravel 7.xの新コンポーネント機能!実例 – console dot log で紹介されているように, 7.x から使えるようになった Blade Component の新記法。これも使わないから忘れていた…
- ネスト表現が
:
だったのは単なるミスだろうか?
- Blade タグコンポーネントのディレクトリネスト表現:
-
wip · laravel/docs@66f0947
-
Response::header()
Response::headers()
の追加- 多分これはずっと前からあった気がするのでドキュメンテーション漏れ
-
-
wip · laravel/docs@7441d8e
-
Markdown mail template improvements were contributed by Taylor Otwell.
- はい
-
Markdown mail template improvements were contributed by Taylor Otwell.
-
wip · laravel/docs@1551c57
-
Stringable::replace()
メソッドの追加- この手のヘルパー使わないからほぼ追ってません…
-
-
wip · laravel/docs@06d0e2a
-
バックグラウンドジョブでの例外発生時のリトライ機能の追加:
$maxExceptions
- これは結構大きな機能追加で嬉しいやつ!
-
バックグラウンドジョブでの例外発生時のリトライ機能の追加:
-
wip · laravel/docs@d67c3a3
-
retryUtil()
→$tries
に変更- これはずっと前からあった気がするので,「よりありがちなユースケース」に揃えて例を変更しただけだと思われる
-
-
wip · laravel/docs@64a6c6e
wip · laravel/docs@4c39fec- HTTP クライアントにリトライ機能追加:
retries()
-
HTTP クライアントに URL パスに依存しないモックレスポンスをセットする機能追加:
fakeSequence()
- これも Laravel の HTTP クライアント機能使わない派だから分からん…
- HTTP クライアントにリトライ機能追加:
-
wip · laravel/docs@a323bcd
-
Laravel Cashier が Stripe に加えて Mollie にも対応
- Stripe しか知らなかった。なにこれ?と思ったが 2004 年からある老舗ではあるんですね
-
Laravel Cashier が Stripe に加えて Mollie にも対応
-
wip · laravel/docs@42ecebe
-
Blade Component で暗黙的に変数でメソッド実行結果を参照できるように
- そもそも Blade ビュー側からコンポーネントのパブリックメソッドを
$method()
スタイルで呼べるの知らなかった。この時点で識別性下がりすぎてるのでやりすぎだと思う - それに加えてクロージャを実行せずとも文字列化できるようになった模様。やめてくれ…
- リフレクションで
public
メソッド抽出して__invoke()
__toString()
を両方実装したオブジェクトでも返してるのかな? - 検索したら その通り でした
- そもそも Blade ビュー側からコンポーネントのパブリックメソッドを
-
Blade Component で暗黙的に変数でメソッド実行結果を参照できるように
-
wip · laravel/docs@b21e1b7
-
Tailwind インテグレーションの追加
- Tailwind 嫌いなので使いません…
-
Tailwind インテグレーションの追加
-
wip · laravel/docs@846903c
-
デバッグで隠蔽する変数を指定するディレクティブが
debug_blacklist
からdebug_hide
に変更- BLM 運動のやつじゃん! Laravel にあったの気づかなかったよ…
-
デバッグで隠蔽する変数を指定するディレクティブが
-
wip · laravel/docs@b11b600
- Database Factory 機能の具体例に登場する
delinquent
をsuspended
に変更-
delinquent
っていう英単語初めて知った。「滞納中」という意味らしい。 - 「凍結中」のほうがわかりやすいよねそりゃ
-
- Database Factory 機能の具体例に登場する
-
wip · laravel/docs@461736c
-
Cookie を破棄する
Cookie::queue(Cookie::forget('name'))
がCookie::expire('name')
で書けるようになった-
[8.x] Add
Cookie::queueForget()
method by dmitry-ivanov · Pull Request #37072 · laravel/framework で追加されたものが rename method to expire · laravel/framework@fa3a14f でexpire()
に変更されてる! - Taylor 先生のこういう単語チョイスは好きだよ
-
[8.x] Add
-
Cookie を破棄する
-
wip · laravel/docs@bd580f0
-
HTTP Client Watcher の追加
- Laravel アプリケーションから外に飛んでいくリクエストロギングを簡単にできるらしい。
- 個別に作ったクライアントに
LoggerInterface
を注入して対応すべきな気がするけど,まぁ Easy に寄せるならナシではないか…
-
HTTP Client Watcher の追加
-
wip · laravel/docs@7696c5b
-
Eloquent の日付キャストにイミュータブル版を追加
- かなり嬉しい機能
-
Eloquent の日付キャストにイミュータブル版を追加
-
wip · laravel/docs@62e603d
-
デフォルトの暗号方式を
AES-256-CBC
からAES-256-GCM
に変更- 安全なほうに倒しているのでこれ自体はよい変更。アナウンスあったっけ?と思ったけど
laravel/laravel
の設定が変わっただけっぽいから破壊的変更ではないのか - 機能追加は [8.x] Added support for GCM encryption by nickakitch · Pull Request #38190 · laravel/framework
- デフォルトに変更されたのは [8.x] Use new stronger AES-256-GCM encryption by default by driesvints · Pull Request #5674 · laravel/laravel
- しかし wip · laravel/laravel@52de5d8 でもとに戻される!これも
wip
かよ - OpenSSL のバグが原因で紆余曲折あった模様。
[8.x] Use lowercase OpenSSL cipher names by Krisell · Pull Request #38594 · laravel/framework -
Update default encryption mode to GCM by Krisell · Pull Request #5749 · laravel/laravel では復活せず, Laravel 9 のタイミングにするとのこと。
- 現時点での 最新コミット みたら約束守られてなくて草
- 安全なほうに倒しているのでこれ自体はよい変更。アナウンスあったっけ?と思ったけど
-
デフォルトの暗号方式を
-
wip · laravel/docs@c0bcbe6
-
Eloquent の Polymorphic Relation で使われる明示的モデル名マッピングのメソッドに関し,従来の
morphMap
に加えてenforceMorphMap
を追加- [8.x] Add support for disallowing class morphs by olivernybroe · Pull Request #38656 · laravel/framework で追加された変更。登録忘れがあったときにエラーにしてくれるのはめちゃくちゃ嬉しい!
-
Eloquent の Polymorphic Relation で使われる明示的モデル名マッピングのメソッドに関し,従来の
-
wip · laravel/docs@2560175
-
assertModelExists()
assertModelMissing()
の追加
-
-
wip · laravel/docs@a263b46
-
compnoents
→components
- めっちゃよくある Typo で分かりすぎてしまった
-
-
wip · laravel/docs@ac66830
-
RefreshDatabase
遅延実行版のLazilyRefreshDatabase
を追加- 必要なときだけデータベースリフレッシュ実行してくれる便利なやつ。お世話になってます
-
-
wip · laravel/docs@5c75585
-
Builder::whereBelongsTo()
の追加-
[8.x] Add
whereBelongsTo()
Eloquent builder method by danharrin · Pull Request #38927 · laravel/framework 見たとき便利だなーって思ったけど,最近 Eloquent Model をほとんど生で触ることがなくてだいたい Entity 化してるので,使うところが見つからないw
-
[8.x] Add
-
-
wip · laravel/docs@5592292
-
Collection::reduce()
のマルチパラメータ版Collection::reduceMany()
の追加- これに関しては many の意味が分かりづらかった…
-
reduceVariadic()
とかのほうがわかり易くない? -
[8.x] Deprecate
reduceMany
in favor ofreduceSpread
by JosephSilber · Pull Request #39201 · laravel/framework で名前変えられてた
-
-
wip · laravel/docs@e43872a
-
Notification::shouldSend()
で予約された通知送信をキャンセルできるように- Laravel 組込みの通知機能自体がかなりお粗末なことを知ってから使う気が失せたので追ってません…
-
-
wip · laravel/docs@27f40c5
-
Str::headline()
の追加- ヘッドラインだから見出しか。管理画面作るときとか便利そう
-
-
wip · laravel/docs@06e2e42
-
予約済みドメイン
.test
を使うように変更
-
予約済みドメイン
-
wip · laravel/docs@7c30a88
-
unique:
バリデーションルールの末尾の引数except
,idColumn
を削除- なんで消えたんだろう?って思ったけど
Rule::unique()->ignore()
で書くほうが推奨されているからっぽい。内部的にはまだ存在してる
- なんで消えたんだろう?って思ったけど
-
-
wip · laravel/docs@1899490
-
Eloquent Model のフィールドをダイレクトに
Stringable
にキャストするための機能を追加- これ嫌い。さすがにやりすぎ
-
Eloquent Model のフィールドをダイレクトに
-
wip · laravel/docs@1a11d1f
-
Str::mask()
の追加- これは普通に便利そう。ネーミングから意図がわかりやすいので,普通にヘルパーとして存在していていいと思う
-
-
wip · laravel/docs@8f0031b
-
assertExitCode()
の追加
-
-
wip · laravel/docs@e8f1c93
-
Enum バリデーションルールの追加
- 便利! framework/Enum.php at 9.x · laravel/framework
-
__toString()
されない組込みバリデーションルールはこれが初めて…?互換性的に問題なければ本当は全部こっちに寄せたいんだろうなというのはある
-
Enum バリデーションルールの追加
-
wip · laravel/docs@0dfe237
-
Octane を使うための
pecl install
のサジェストをopenswoole
からswoole
に変更- え?逆じゃないの?
- [8.x] Change to openswoole by mohprilaksono · Pull Request #7449 · laravel/docs で
openswoole
に変更された翌日にもとに戻されてる…これはひどい…
-
Octane を使うための
-
wip · laravel/docs@f2c95a5
-
セッションのシリアライズ方式
serialize()
からsession_encode()
に変更して PHP 標準と同じ形に… の変更を削除- 探してみたけどこれ以外の痕跡が見つからなくてよく分からなかった
-
セッションのシリアライズ方式
-
wip · laravel/docs@f8eec0a
-
Notification
のSlack
インテグレーションが削除
-
-
wip · laravel/docs@1249422
-
LTS の廃止
- はい,
laravel/docs
を調査する一番の動機となった変更です。めっちゃコメント付いてますね。 - 要約すると 「短期サポート → 短期サポート → 長期サポート」 のサイクルを全て 「中期サポート」 に変更しちゃう感じですね。 Symfony の LTS ではないバージョンを LTS に組み込んでしまったのがきっかけと言われていますが,それにしてももう少し議論しても良かったんじゃないでしょうか…w
- はい,
-
LTS の廃止
-
wip · laravel/docs@1dec3bb
-
Eloquent Model の
$casts
にBackedEnum
を直接書けるように- これはめちゃくちゃ便利で使ってます。
Stringable
はやりすぎだけどこっちは許されると思う
- これはめちゃくちゃ便利で使ってます。
-
Eloquent Model の
-
wip · laravel/docs@2d4ec79
- ストレージ抽象化機構のファイル操作機能強化
-
wip · laravel/docs@3de884e
-
assertSimilarJson()
の削除- 機能としては 最新コミット でも残ってますね…あんまり使ってほしくはないのかな
-
-
wip · laravel/docs@cf86b38
- Laravel Sanctum の有効期限切れトークン削除機能
-
wip · laravel/docs@5cae163
-
Str::squish()
の追加- 「ぐちゃぐちゃと潰す」の意味らしい。内側も含めたトリミングってそれで伝わるのか…?
- [9.x] Add String::squish() helper by dwightwatson · Pull Request #41791 · laravel/framework によると Rails 由来らしい。まぁ Rails の機能パクってるフレームワークなのでそれは入るか
-
-
wip · laravel/docs@56f3abf
-
Collection::value()
の追加- それ本当にコレクション上に追加する必要あった?
-
$collection->first()['price'] ?? null
$collection->first()?->price
とかでええやん
-
-
wip · laravel/docs@a67705a
-
論理削除モデルを対象としてデフォルトでファクトリに
trashed()
ステートを用意- 知らなかった。便利そう。
最近論理削除使わんけど
- 知らなかった。便利そう。
-
論理削除モデルを対象としてデフォルトでファクトリに
-
wip · laravel/docs@7ad23cc
-
テーブルコメント機能の追加
- いつの間にかカラムだけじゃなくテーブルにもコメント生やす機能ついてました!
- 今までは
DB::statement()
で無理やり書いてたやつ
-
テーブルコメント機能の追加
-
wip · laravel/docs@049814c
-
条件付きの
required
属性出し分け機能@required()
- めちゃくちゃ便利。ほぼ Blade 書かなくなったけど,このへん毎回苦労してた気がするので素晴らしい
-
条件付きの
感想
力尽きました。ドキュメントのほう wip
多すぎ…
(たかがドキュメントだし,でそうしたくなる気持ちは分かるけど)
しかし思ったよりめちゃくちゃな wip
は少なかったのがまだ救いか。