3.5K Views
April 18, 24
スライド概要
会社の勉強会用の資料
技術記事を書いたら Laravelにコントリビュート できた話
自己紹介 - なお(@naopusyu) - PHPer - コードは書くより、消す方が好き
話すこと 先日、Laravelに初コントリビュートできました🎉
話すこと そこで今回はLaravelにコントリビュートできるまでの ちょっとしたきっかけからマージまでの流れのお話です
ある日この技術記事を書きました https://zenn.dev/naopusyu/articles/7f09d4856b6c52
もともとLaravel10向けで書いていた 記事を公開して2日後くらいにLaravel11がリリース🎉 そこでLaravel11向けに書き直し始めたのが全てのはじまり...
まずはLaravel11をインストールして、 make:xxxコマンドが増えたか調べる
Laravel10
Laravel11
Laravel10 Laravel11
増えすぎ😇 何が増えたかは記事を見てください🙏
Laravel11で増えたコマンドの1つである make:session-tableコマンドについて調べるために コマンドを実行しているとある異変に気づく... ※ちなみにLaravel10ではsession:tableというコマンドでした
マイグレーションファイルが複数作れるだと...
しっかり実行した回数分できていました
もちろん実行するとエラーになります😇
ちなみにLaravel10だと2回目以降は作られないです
なぜ何回も作られるんだっていう状態から脱出するために laravel/frameworkのissueやプルリクを見ても何もない うーんって言いながらソースコードを見ることに👀
globメソッドを使っているが使い方が間違っているのか🤔 https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Session/Console/SessionTableCommand.php#L60-L67
これをissueで報告も考えたけど なんか直せるかもしれないって 安易に思ったのがきっかけで修正を はじめていくことにした
まずはglobメソッドが何をやっているのか見てみることに🤔 https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Session/Console/SessionTableCommand.php#L60-L67
PHPのglob関数を使ってファイルの存在確認をしている https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Filesystem/Filesystem.php#L569-L572
https://www.php.net/manual/ja/function.glob.php
https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters
行けそうな雰囲気を感じる https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters
なんだと... https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters
GLOB_BRACEを使えば解決って思ったけど、 使えないシステムがあるって時点でフレームワークとして採用でき ないはず😭 じゃあどうしようか...って数分悩んだ結果
丁寧に1つ1つ確認すること選んだ
修正はこれで終わり、次はテストをどうするか テストを書くにしてもglob関数を使っているだけ🤔 これテスト書けるのか? モックを使えばいいけどそれだと意味ないな... で、また数分悩んだ結果
テストなしで行くか
実際にテストを書かないことが正解だったのか... 悩んでも仕方ないのでプルリクを作成することに
プルリクの作成で英語がわからんって思っていたけど いまの時代Google翻訳、生成AIがあるので簡単でした 日本語の文章を書いて翻訳してもらうだけで...
プルリクが完成🎉 https://github.com/laravel/framework/pull/50615
実は同じ問題が別コマンドでも起きていたので一緒に修正 https://github.com/laravel/framework/pull/50615
作ったあとは待つだけ テストないし、ツッコミが入ってきたらどうしようかと ビクビクしながら待つこと数日
https://github.com/laravel/framework/pull/50615
https://github.com/laravel/framework/pull/50615
無事にマージされた🎉
まだ安心できない リリースされるまでは別の人がもっと良い修正を入れるかもしない ってことを考えながらさらに数日待つと...
リリースノートにアカウントとアイコンがありますね🎉 https://github.com/laravel/framework/releases/tag/v11.0.8
無事にリリースまで完了です Laravel本体にコントリビュートできました
さいごに これが今回コントリビュートした時の流れです 当たり前ですが、 何かきっかけがあればコントリビュートはできます
さいごに そのきっかけに気付くために、 実際に動かしてみる、ソースコードを読んでみる、 技術記事にまとめてみる が大事なのかもしれないです
おしまい