Slide 1

Slide 1 text

TechBowlのPRレビューで 指摘されたこと

Slide 2

Slide 2 text

橋本 創平 / そうちゃん / shy 23年卒の新卒2年目。TechBowlには 2021年よりエンジニアインターンとして join。 2023年3月に就職のため退職、同年8 月より副業として再join。 現在、本業では認証認可基盤周辺 サービスの設計・開発に従事。 素人PHPer。

Slide 3

Slide 3 text

色々な実装をしたけど、、 この時はなんとなく理解で進め ていましたが、 振り返る目的も持ちつつ、深 掘ってみる (最近MBTIがENFP→ENTPにな りました) 私が 対応したPR

Slide 4

Slide 4 text

自分が対応した PR を振り返ってみた

Slide 5

Slide 5 text

date()ではなく、 Carbonを使いたみ PHPの組み込み関数 date() で はなく、 Laravelで広く使われている Carbon ライブラリを使用して欲 しいというレビュー (現在TechBowlバックエンドチームでは CarbonImmutableを使用)

Slide 6

Slide 6 text

そもそもCarbonってなんで作られたの CarbonはPHPの標準的な日付 ・時刻操作をより直感的かつ 強力に行うために開発された ライブラリ 昔のPHPは日付や時刻操作が 色々と大変だったらしい https://carbon.nesbot.com/

Slide 7

Slide 7 text

そもそもCarbonってなんで作られたの CarbonはPHPの標準的な日付 ・時刻操作をより直感的かつ 強力に行うために開発された ライブラリ 昔のPHPは日付や時刻操作が 色々と大変だったらしい https://carbon.nesbot.com/ もうちょっと深掘ってみる

Slide 8

Slide 8 text

Carbonの実装を見てみる https://github.com/briannesbitt/Carbon 多言語対応 に近い実装

Slide 9

Slide 9 text

Carbonのマクロ機能を見てみる https://github.com/briannesbitt/Carbon ①macroとして内部で保持される ②macroの登録有無で処理の出しわけ

Slide 10

Slide 10 text

マクロ機能ってよくあるやつ? https://laravel.com/api/master/Illuminate/Support/Traits/Macroable.html Laravelにも Illuminate\Support\Traits\Macroable というものがあった 柔軟性、拡張性が上がるものの自由 すぎてプロジェクトで採用したら困り そう OSS開発の時には視野に入れると良 さそう

Slide 11

Slide 11 text

他のレビューも見てみる

Slide 12

Slide 12 text

declare(strict_mode=1); を入れる PHP7で導入された記述で、 今まで関数やメソッドの引数および 戻り値の型に対して暗黙的に型変 換が行われていたものを strict_mode=1で指定すると厳密に チェックするようになるもの

Slide 13

Slide 13 text

どこで厳密にチェックされているんだろ? PHPのソースコードを読んでみる! ・・・が、PHPはC言語で実装されてい るためなんとなくで、、 php-srcを読んでみよう

Slide 14

Slide 14 text

どこで厳密にチェックされているんだろ? 型チェック 引数や型の 情報を保持 暗黙的な 型変換 https://github.com/php/php-src

Slide 15

Slide 15 text

https://github.com/php/php-src 型変換の流れも考えてみる 配列のkeyで指定された1が ”1”に変換される

Slide 16

Slide 16 text

事業の状況などを見つつ深ぼるのも必要そう!