技術記事を書いたらLaravelにコントリビュートできた話 | ドクセル

技術記事を書いたらLaravelにコントリビュートできた話

3.4K Views

April 18, 24

スライド概要

会社の勉強会用の資料

profile-image

子育てしているエンジニア

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

技術記事を書いたら Laravelにコントリビュート できた話

2.

自己紹介 - なお(@naopusyu) - PHPer - コードは書くより、消す方が好き

3.

話すこと 先日、Laravelに初コントリビュートできました🎉

4.

話すこと そこで今回はLaravelにコントリビュートできるまでの ちょっとしたきっかけからマージまでの流れのお話です

5.

ある日この技術記事を書きました https://zenn.dev/naopusyu/articles/7f09d4856b6c52

6.

もともとLaravel10向けで書いていた 記事を公開して2日後くらいにLaravel11がリリース🎉 そこでLaravel11向けに書き直し始めたのが全てのはじまり...

7.

まずはLaravel11をインストールして、 make:xxxコマンドが増えたか調べる

8.

Laravel10

9.

Laravel11

10.

Laravel10 Laravel11

11.

増えすぎ😇 何が増えたかは記事を見てください🙏

12.

Laravel11で増えたコマンドの1つである make:session-tableコマンドについて調べるために コマンドを実行しているとある異変に気づく... ※ちなみにLaravel10ではsession:tableというコマンドでした

14.

マイグレーションファイルが複数作れるだと...

15.

しっかり実行した回数分できていました

16.

もちろん実行するとエラーになります😇

17.

ちなみにLaravel10だと2回目以降は作られないです

18.

なぜ何回も作られるんだっていう状態から脱出するために laravel/frameworkのissueやプルリクを見ても何もない うーんって言いながらソースコードを見ることに👀

19.

globメソッドを使っているが使い方が間違っているのか🤔 https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Session/Console/SessionTableCommand.php#L60-L67

20.

これをissueで報告も考えたけど なんか直せるかもしれないって 安易に思ったのがきっかけで修正を はじめていくことにした

21.

まずはglobメソッドが何をやっているのか見てみることに🤔 https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Session/Console/SessionTableCommand.php#L60-L67

22.

PHPのglob関数を使ってファイルの存在確認をしている https://github.com/laravel/framework/blob/v11.0.7/src/Illuminate/Filesystem/Filesystem.php#L569-L572

23.

https://www.php.net/manual/ja/function.glob.php

24.

https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters

25.

行けそうな雰囲気を感じる https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters

26.

なんだと... https://www.php.net/manual/ja/function.glob.php#refsect1-function.glob-parameters

27.

GLOB_BRACEを使えば解決って思ったけど、 使えないシステムがあるって時点でフレームワークとして採用でき ないはず😭 じゃあどうしようか...って数分悩んだ結果

28.

丁寧に1つ1つ確認すること選んだ

29.

修正はこれで終わり、次はテストをどうするか テストを書くにしてもglob関数を使っているだけ🤔 これテスト書けるのか? モックを使えばいいけどそれだと意味ないな... で、また数分悩んだ結果

30.

テストなしで行くか

31.

実際にテストを書かないことが正解だったのか... 悩んでも仕方ないのでプルリクを作成することに

32.

プルリクの作成で英語がわからんって思っていたけど いまの時代Google翻訳、生成AIがあるので簡単でした 日本語の文章を書いて翻訳してもらうだけで...

33.

プルリクが完成🎉 https://github.com/laravel/framework/pull/50615

34.

実は同じ問題が別コマンドでも起きていたので一緒に修正 https://github.com/laravel/framework/pull/50615

35.

作ったあとは待つだけ テストないし、ツッコミが入ってきたらどうしようかと ビクビクしながら待つこと数日

36.

https://github.com/laravel/framework/pull/50615

37.

https://github.com/laravel/framework/pull/50615

38.

無事にマージされた🎉

39.

まだ安心できない リリースされるまでは別の人がもっと良い修正を入れるかもしない ってことを考えながらさらに数日待つと...

40.

リリースノートにアカウントとアイコンがありますね🎉 https://github.com/laravel/framework/releases/tag/v11.0.8

41.

無事にリリースまで完了です Laravel本体にコントリビュートできました

42.

さいごに これが今回コントリビュートした時の流れです 当たり前ですが、 何かきっかけがあればコントリビュートはできます

43.

さいごに そのきっかけに気付くために、 実際に動かしてみる、ソースコードを読んでみる、 技術記事にまとめてみる が大事なのかもしれないです

44.

おしまい