いい刺激を受けたイベント「Laravel Meetup Connect」の参加レポートです!

2019/06/14(金) Laravel MeetUp Connect というイベントに参加しました!Laravel について LT を行ったりします.面白い試みとして,沖縄・宮崎・名古屋・大阪の各会場を Zoom(Web 会議)で繋いで行いました.主催者の鈴木さんが言うには,「地方で勉強会を行う課題として,なかなか発表者が集まらない.それなら各地域で繋いで発表しあおう.」という発想で,積極的に各拠点を繋いで勉強会を行なっているとのことです.

沖縄ではイベントが多くはないので,仮に主催場所が沖縄以外だったとしても,リモート参加 OK なものが増えていくと嬉しいですね.

re-build.connpass.com

質問は Twitter ではなく sli.do で

LT 中に質問したいことがあったらハッシュタグを付けて Twitter に投稿することが多いと思います.今回は「sli.do」という質問を匿名で集められる Web サービスを使いました.Twitter 上では,質問を見落としたり流れてしまうことが多いため,このサービスを使ってみようとなったようです.

www.lifehacker.jp

LT 第一弾: View composer

沖縄会場から,私と同郷(神奈川)でコスプレ好きな鈴木さんの発表です.

View 側で,全てのページで共通するデータを利用したい時に効果的な View Composer の紹介でした.例として,ユーザーのプロフィール情報を表示する画面内のヘッダーやサイドバーなどで共通の変数を扱うケースでした.

実装した内容についてメモさせていただきました.

  • サービスプロパイダーの用意
  • app/config.php に登録
  • Composer クラスの作成(ロジックを書く部分)
  • ServiceProvider への登録
  • Blade ファイルの修正

今回は,変数のバインドに絞って利用したけれども,Blade テンプレートの中で if 文が複雑になりそうであれば View composer に寄せていくといった使い方ができるだろう,とのことでした.

f:id:yudy1152:20190614212331j:plain
センスのない撮り方・・・

その他

沖縄で初開催となる PHP カンファレンスの告知がありました.絶対いきます!!

phpcon.okinawa.jp

LT 第二弾: 駆け出しエンジニアのコードをレビューしてみた

宮崎会場から,キャンプやフェスが趣味の大塚さん.「キャンプ×プログラミング」のワークショップを行なっている,とのことです.楽しそうですね!

インターン生への課題(イベント管理システムを作る)の中で, Controller を対象にレビューをし,リファクタリングをしていく過程の紹介でした.200 行ある Fat な Controller を 3 ステップでスッキリさせていく様は気持ちよかったです.

この 3 ステップは次のようなものでした.

1. バリデーションを FormRequest で

Controller でリクエストデータのバリデーションを行なっていたのを,FormRequest クラスをタイプヒントで利用することで 200 行から 150 行へ削減!

2. アクセサと appends

イベント情報の更新処理内には,日付の加工などが行われていました.アクセサと appends を利用することで,テーブルにないカラムをイベントオブジェクトのプロパティに追加ができ,150 行から 130 行で削減!

3. Service クラスの導入

イベント情報の一覧を取得する処理などで,ビジネスロジックが含まれていたのを Service クラスへ以降し,130 行から 85 行へ削減!

その他

Laravel に関することだけではなく,初心者への教育という観点の会話も生まれました.

「初めから綺麗に書くよう指導するのがいいか.または,一度作った後にまとめてレビューをするのがいいか.」

私もすごく同意したい意見がありました.「最初から綺麗な書き方を教えてしまうと,何が綺麗で,何が汚いかが分からないだろう.なのでまずは自分で作ってもらう.」という意見です.「差」を見ることで理解度が増し,成長に繋がるのではないかと思いました.

LT 第三弾: コンシューマ向けSPA開発から得られた知見

大阪会場から,猫が大好きな jiyuujin さん.「Laravel + Vue」の SPA を開発した際に,パフォーマンスを改善するために行なった取り組みの紹介でした.

少しでもパフォーマンスを上げるため,以下の点を意識した,とのことです.

  • 設計はエンティティごとに切る
  • 非同期通信に注力
    • Web のパフォーマンスにいい影響
    • 大量データを登録する時に力を発揮
  • 極力パッケージを入れない

また,おすすめなパッケージとして「google/apiclient」が挙げられていました.これは Google スプレッドシートにアクセスして扱うことができるものです.今度触ってみようかな,と興味を持ちました.

まとめ

イベントの参加レポートに挑戦するにあたって,写真撮影を試みてはいたのですが,光が反射して見えにくいものばかりになってしまいました.位置取りも重要ですね.

初めから LT 枠に申し込んでいなくても,飛び込み参加が可能な雰囲気でした.次からはいつでも飛び込み LT できるようにネタを作っておこうと思います.

イベントのテーマは「Laravel」でしたが,Laravel 以外のことで他の人の考えや意見を聞けるのは,とても刺激になるなと感じました.今後も積極的に参加していこうと思います!