Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自由で便利なLaravelのしんどいポイントを楽しさに変える

mai miya
September 28, 2024

 自由で便利なLaravelのしんどいポイントを楽しさに変える

2024/9/28 PHPカンファレンス沖縄2024
「自由で便利なLaravelのしんどいポイントを楽しさに変える」

mai miya

September 28, 2024
Tweet

More Decks by mai miya

Other Decks in Technology

Transcript

  1. ©Fusic Co., Ltd. 1 宮崎 真衣 Miyazaki Mai HN: mai

    (@maimyyym ) ◉ I am - 管理栄養士(養成校卒業・資格保持のみ) - 元百貨店スタッフ(Beauty Counselor) - 2023年10月 Fusic入社 ◉ Skill - AWS / Python / TypeScript / PHP ◉ Comment - はじめての沖縄! 自己紹介 はじめに 事業本部 技術創造部門 / エンジニア 株式会社Fusic at 福岡
  2. ©Fusic Co., Ltd. 6 PHP(Laravel)に出会うまで 私とLaravel 2022年9月〜2023年9月:業界未経験 / ITスクールで学習 をよく使っていた

    PHPどころか、 MVCフレームワーク・フルスタックフレームワークを 使ったことがない!
  3. ©Fusic Co., Ltd. 7 なぜLaravelか? 私とLaravel 2023年10月、 入社!晴れてエンジニアに ・・・ということで、 デビュー!

    これが全て。だけど、 こういった ”技術との出会い” は多いのではないでしょうか?
  4. ©Fusic Co., Ltd. 10 Laravelは便利 Laravelのここがしんどい 決まった書き方をするといい感じに動く 使う人は当たり前に使うけど、 私は知らない。知り方が分からない。 アクセサ

    モデルに public function xxxXxxx(): Attribute とメソッドを定義 ↓ $model->xxx_xxxx でアクセスできる <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class User extends Model { public function prefectureName(): Attribute { return Attribute::make( get: fn () => $this->prefecture->name, ); } } $this->prefecture_name; // 例:「福岡県」という文字列が返ってくる ※ Laravel 9 以降の書き方です。
  5. ©Fusic Co., Ltd. 11 Laravelは便利 Laravelのここがしんどい 決まった書き方をするといい感じに動く 使う人は当たり前に使うけど、 私は知らない。知り方が分からない。 アクセサ

    モデルに public function xxxXxxx(): Attribute とメソッドを定義 ↓ $model->xxx_xxxx でアクセスできる <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class User extends Model { public function prefectureName(): Attribute { return Attribute::make( get: fn () => $this->prefecture->name, ); } } $this->prefecture_name; // 例:「福岡県」という文字列が返ってくる ※ Laravel 9 以降の書き方です。 初めて見た時は getPrefectureNameAttribute() という Laravel8以前の書き方だったこともあり、 DBにそんなデータはないのに!と戸惑った
  6. ©Fusic Co., Ltd. 12 Laravelは便利 Laravelのここがしんどい 決まった書き方をするといい感じに動く 便利!だけど、 やっぱり知り方が分からない。 スコープ

    モデルに public function scopeXxxx() とメソッドを定義 ↓ $model->xxxx() で取得範囲を絞る <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; class User extends Model { public function scopePublish(Builder $query): Builder { return $query->where('is_publish', true); } } User::publish()->get(); // is_publish=trueのUser”だけ”取得できる
  7. ©Fusic Co., Ltd. 13 Laravelは便利 Laravelのここがしんどい 決まった書き方をするといい感じに動く 便利!だけど、 やっぱり知り方が分からない。 スコープ

    モデルに public function scopeXxxx() とメソッドを定義 ↓ $model->xxxx() で取得範囲を絞る <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; class User extends Model { public function scopePublish(Builder $query): Builder { return $query->where('is_publish', true); } } User::publish()->get(); // is_publish=trueのUser”だけ”取得できる もし自分で1から実装していたら、 スコープを使わずその都度で書いていた。 → レビューで指摘されて手戻り! になっていたかも。
  8. ©Fusic Co., Ltd. 14 Laravelは自由 Laravelのここがしんどい (極端な話、)Modelに書いても、Controllerに書いても、動く # 自由なディレクトリ構造 テキスト教材にはMとVとC以上のことは書かれていない

    # 色々な思想がある、らしいと知る どの層に何を書くか。場合により、思想により、その時々で判断する必要性を研修で知る アクセサやスコープを使わなくても動くものを実装できる # 頑張れば何でも実装できる 自由が故に、どこにどう書いても動く時は動く。
  9. ©Fusic Co., Ltd. 19 なぜ、そう思えた? 発想の転換地とLaravelを書く組織 仕事だから。 よく分からないけど動いている、ではダメ。 私たちのコードは製品。自信を持った実装の必要性。 =理解・深掘りが必要な環境。

    組織文化があるから。 Fusicに入社したからPHP, Laravelと出会った。 PHP, Laravelを書く人が多い環境。 自分一人では得られない知識・視点と出会える環境。 #phper-times つぶやき、やらかし、相談 などのSlackチャンネル Laravel11 Docs輪読会 コメントしながら読む会 社内のソースコード 全リポジトリのコードを 見ることができる
  10. ©Fusic Co., Ltd. 23 Thank You We are Hiring! https://recruit.fusic.co.jp/

    ご清聴いただきありがとうございました