Ewig Leere(Lab2)
  1. ホーム
  2. PHP
  3. Laravel
  4. Laravel JP Conference 2019 参加レポート

Laravel JP Conference 2019 参加レポート

  • 投稿日 2019年2月17日
  • 著者 アバター アルム=バンド
  • カテゴリー Laravel
  • カテゴリー イベント
  • -
    シェア
  • -
    ツイート
  • -
    ブックマーク
  • -
    Feedly
  • -
    LINE
  • -
    Pocket

Laravel JP Conference 2019に一般参加してきましたので、参加レポートを上げさせて頂きます。

ちなみに私のLaravel使用歴は半年未満でまだ認証機能のカスタマイズ程度までしかやったことがないので、基本的に初心者向けのセッションを選びました。

ServiceProvider, ServiceContainer入門

なぜサービスコンテナは難しいか

  • 複数の技術の組み合わせだから
    • サービスコンテナ
    • 自動注入
    • サービス
    • DI
    • インターフェース
      • 今回は後ろの2つにフォーカス

DIについて

  • 例: SendGridに関する捜査を行うサービスクラス(コンポーネント)
    • 統計の都合上、ユーザと管理者でAPIキーを分けることになった
  • ※「SendGrid」とは
    • クラウドベースのメール配信サービス
    • APIで送るとメールを投げてくれる
  • 例ではAPIキーをコンストラクタにべた書き→分けたい
    • クラスを複数作る?
      • どんどん増えるのか?
    • セッターメソッドを作る?
      • インスタンスの状態を管理する必要がある
    • どちらも難あり

DIとは?

  • インスタンスの生成に必要な設定をコンストラクタの引数で渡す
  • 外から渡すので指定を変更できる
    • 構造も柔軟に対応できる

サービスコンテナ・サービスプロバイダ

  • メール関連の処理は色々なところで使われる
  • 毎回サービスを生成する?
    • サービスを毎回作りたくない
      • サービスコンテナ
  • DIを使うとnewの回数が増える
    • サービスの生成方法も一括して管理したい
      • サービスプロバイダ

サービスコンテナとは?

  • サービスをまとめて管理するツール
    • イメージはサービスを値に入れる「グローバルな連想配列」
  • Laravelのappはサービスコンテナを指す
    • resolveメソッドでサービスをコンテナから取得できる
    • (サービスコンテナにキーとサービスを登録するのに使うのがbindか)

サービスプロバイダとは?

  • サービスコンテナのデータ登録方法
  • アプリの一番最初に呼び出される
  • registerを使って登録

まとめ

  • 色々な技術を使っているから難しそうに見える
    • 分解していくと見える
  • DI
  • サービスコンテナ・サービスプロバイダ

その他

  • サービスプロバイダはapp/config/app.phpのprovidersに登録する必要がある

所感

Laravelのコアな機能であるサービスコンテナとサービスプロバイダについてざっくりと概略を掴むことができました。

laravelでパッケージ開発

パッケージ開発の仕組み

  • Laravel Package
    • サービスプロバイダがGithub等で公開
    • composer経由でインストール可

ライブラリ開発だけではないパッケージ開発

  • サービスプロバイダ起点
    • DIやモジュール登録だけではなく、artisanやmigrationの登録もOK
    • クラスはautoload。autoloadとサービスプロバイダで読み込む

migration登録は他の手法もあるが、5.7からはスライドで紹介している方法が使われているとのこと。

サービスプロバイダはAuto Discoveryという名前通り自動的に探す機能があるので、app/config/app.phpに書かなくても使えるライブラリも最近は増えてきた

Type Path

  • 分割したモジュールをcomposerに依存関係として登録する
    • ローカルのモジュールを使える
  • composer.jsonのrequireに記述(子)
  • 親はrepositoryの中に'type': 'path'として記述すると読み込ませられる
    • 名前空間を登録しなくてもモジュールが使える
    • 依存関係も含めて管理できる
  • composerでappの外のコードを有効化できる
  • appをスリムに
    • 全体のコードの見通しを良くする
  • appでしかできないこと(根幹的な設定など)もあるが、それはそれで専念できる

まとめ

  • 日々、抽象化の挑戦を
    • よく使うコードの再利用性を高める
    • より柔軟でより高度な開発

所感

appディレクトリの中に色々詰め込むものだと思っていたため、appの外にモジュールとして摘出できるということに驚きました。

Laravelの柔軟性の高さの一部を垣間見た気がしました。

エキテンとLaravelと私

エキテンとLaravelと私 from IanBrison

全体の所感

  • モノリシックでレガシーなシステムマジヤバイ(
  • ガルガンチュアンギガンテスモンスター的なナニカ(
  • 勢いが凄く、内容も濃くて非常に面白かった(他人ごとならば

PHPテストワークショップ

PHP Test Workshop – Speaker Deck

参考

  • PHPUnit マニュアル ? PHPUnit latest Manual
  • PHPUNITのテストメソッド実行前後の処理まとめ – Qiita

全体の内容・所感

LaravelというよりはPHPの単体(ユニット)テストについて、PHPUnitを使用した場合の環境構築から使用方法、実際のユースケースに似せての課題に取り組むという、テスト初心者のためのワークショップでした。

単体テストはいつかやろうと思ったままなかなか導入できずに1~2年が過ぎていたので、ようやく手を付けることができて手ごたえを感じました。

個人的なバックグラウンドとしては、Abu al-HaulでDiet CakeというMVC型のフレームワークを経験し、それ以前から単体テストのやり方を調査する中で機能ごとに分離するように気を付けていました。

それらを含めて、単体テストの書き方や、テスト導入のために気を付けることなど、漸く繋がってきた気がしました。個人的にはこのワークショップに参加できただけでもかなり収穫だったと思います。

LT

今だからこそ作る、Laravelで「アクセスカウンター」

今だからこそ作る、Laravelで「アクセスカウンター」

  • アクセスカウンタをまったく知らない方は聴衆の中には見受けられなかっ
    • とはいえ、「まったく知らない人」と質問が出るくらいには古き時代の風物詩的なものになったことに改めて時間の流れを痛感
  • 現在のやり方でやるとわりと案外手ごわい
    • 機能を列挙すると確かにれっきとしたWebアプリですし……

LaravelとVue.jsに出会った私がレガシーな管理サイトを半SPAにするまでの歩み

  • 1つのjQueryファイルでゴリゴリやってるアプリケーションをどうにかVueでメンテナンス性を上げる
    • 社内にnode.jsやnpmといった「異世界の摩訶不思議な技術を使う文化がなかった」
      • 所感: わかりみが深すぎる
  • Vuetifyの採用
    • 確かに今ならばVuetifyかな、と個人的にも感じた
  • 新しい技術を取り入れるのに重要なことは「周囲とコミュニケーションを取って課題を共有すること」
    • 所感: それができるならば……と遠い目

未経験者研修で社内研修用システムをざっくり作った話

  • どうして脱落するか
  • 派遣元と派遣先(学習者)のギャップ
    • 「要求下限」の高さ
    • 「論理的思考」の壁
    • 「興味関心」の差
  • 研修における不一致
  • 研修に使用した技術
    • AWS: 場所を選ばない
    • Docker: 環境の不一致を解消
    • Gitリポジトリで共有
  • 所感: 論理的思考の壁など、大学や専門学校で基礎を学んだ人とまったくの未経験者の壁については個人的に思うところもあり、難しいと感じた

Laravel Telescopeにアプリのモニタリングをお任せしてみた

Use Laravel telescope from Hirata Tomoko

  • 要件: Laravel5.7以上、PHP7.1以上
  • ~bash
    composer
    php artisan telescope #インストール
    migration #専用テーブル
    ~
  • 公式が出しているデバッグGUIツール
    • パフォーマンスも確認できる

Laravel Zeroで楽して情報収集する?

  • コンソールアプリケーション
    • 非公式、LaravelのCLIのみを出したような感じらしい
  • ブラウザを動かせるのでスクレイピングやちょっとした作業の自動化に使えそう

Lighthouseを使った認証必須のGraphQL API

  • Lighthouse
    • LaravelからGraphQLエンドポイントを提供するライブラリ
  • GraphQLを使っていることがある人はちらほら、知っている人は半分くらいいそう
  • Lighthouseでの認証
    • 認証はほぼ必須では?
    • ディレクティブに@middleware→Laravelのmiddlewareをそのまま使える
    • usersテーブルにapi_token列が必要

Laravelで始めるテスト生活

  • 機能テスト
    • 仕様通りに動くかをテスト(単体の上)
  • Laravelは機能テストAPIが充実
    • 5.4以降はDusk使った方が良い(5.3までとパッケージが変わってた)

Laravelの公式には載っていないBuilderの使い方

  • LaravelにはEloquentとQueryのBuilderの2つのBuilderクラスがある
    • 継承されてない
    • eloquentにないメソッドはQueryに譲渡されている

LaravelSparkでサービス開発に注力する

  • Laravel開発者が作成したLaravelの Web App Template
    • 認証・パスワード再設定などの機能や画面を内報している
    • $99~
  • サービス開発に注力できる

電撃!Laravelクイズ

  • kebab_caseは内部的にsnake_caseを呼んでる(第二引数がデリミタ指定できる)
  • 所感: 初心者にとっては全体的に難しかった

懇親会

懇親会の料理

懇親会はPHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 | 竹澤 有貴, 栗生 和明, 新原 雅司, 大村 創太郎, 丸山 弘詩 |本 | 通販 | Amazonの著者トークがあったり、LTがカオス(特にLaravel3.0をPHP7環境で動かすというものと、PHPでJavaを動かすというもの)で楽しく、面白かったです。


全体の所感

いかんせんLaravel初心者なので多くの事項を取りこぼしたような気がするのですが、それでも

  • サービスプロバイダの概念の理解
  • 機能ごとにappディレクトリ外に出すという考え方
  • PHPUnitを使った単体テストのやり方・テストコードの書き方
  • デバッグにLaravel Telescopeが非常に便利そう

といった、明日にもすぐ使える知識や概念を学ぶことができたので、非常に有意義なカンファレンスだったと思います。

田町駅周辺のビルの合間からクレーン

ちなみにLaravel JP Conferenceの幕などそれっぽいものを何も撮影していなかったことに後で気付いたのでアイキャッチは最寄りの田町駅周辺のビルの航空障害灯の写真。
航空障害灯良いですよね。都会の冷淡無機質な感じが。

追記

写真そこそこありました。

鞄の中でスペースを取らないタイプのペットボトル

懇親会チケットとランチチケット

ランチチケットと引き換えのお弁当。高そう……!

すきやき弁当でした。美味しかったです

Laravel JP Conference

この記事を書いた人

アバター

アルム=バンド

フルスタックエンジニアっぽい何か。LAMPやNodeからWP、gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。

記事一覧
  • ウェブサイト
  • Twitter
  • Facebook
  • Instagram
  • Linkedin
  • WordPress
烏枢沙摩(Ususama)
古い投稿
Kiribi UsusamaにHTMLファイル一覧ページ生成…
新しい投稿
JavaScriptの関数に整数値を参照渡ししたい(無理やり…

最近の投稿

  • `transform:rotateY`使用のフリップアニメーションについて、Edgeで残像が残る
  • 第4回 群馬 WordPress Meetup参加レポート
  • [Ususama+WordPress連携] WordPressを更新するとGithub Actionsを利用して自動的にWPの記事を新着情報として静的サイトをデプロイする
  • VSCodeでデフォルト言語をMarkdownに変更し、`Untitled-X`な一時ファイルでもMarkdownとして編集する
  • 「A cookie associated with a cross-site resource at was set without the `SameSite` attribute.」の警告が出てreCAPTCHA v2の送信ボタンの`disabled`が外れない

カテゴリー

  • CI/CD
  • css
  • DietCake
  • JavaScirpt
  • jQuery
  • Laravel
  • MODX
  • PHP
  • Raspberry Pi
  • Scss
  • Slim
  • Vue.js
  • Webサービス
  • WordPress
  • イベント
  • サーバ環境・構築
  • プログラム
  • 未分類
  • 自作
  • 開発環境
  • 雑記

タグ

.htaccess A-Frame Abu al-Haul Active Directory Apache axios Bootstrap Bootstrap4 cherrio CORS Excel facebook git Github Github Grass Gitlab gulp json Kiribi Ususama Markdown MySQL node.js nodist Noduchi RADIUS reCAPTCHA reCAPTCHAv2 RICOH THETA Rocket.Chat Scss Slim The 9kb Pizza Toast Twitter VR VSCode vue-cli Vue.js Windows Server 2019 yaml イベント ネットワークポリシーサーバー プラグイン 何時の橙 正規表現 群馬WordPressMeetup

カテゴリー

  • CI/CD
  • css
  • DietCake
  • JavaScirpt
  • jQuery
  • Laravel
  • MODX
  • PHP
  • Raspberry Pi
  • Scss
  • Slim
  • Vue.js
  • Webサービス
  • WordPress
  • イベント
  • サーバ環境・構築
  • プログラム
  • 未分類
  • 自作
  • 開発環境
  • 雑記

アーカイブ

  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月

タグ

.htaccess A-Frame Abu al-Haul Active Directory Apache axios Bootstrap Bootstrap4 cherrio CORS Excel facebook git Github Github Grass Gitlab gulp json Kiribi Ususama Markdown MySQL node.js nodist Noduchi RADIUS reCAPTCHA reCAPTCHAv2 RICOH THETA Rocket.Chat Scss Slim The 9kb Pizza Toast Twitter VR VSCode vue-cli Vue.js Windows Server 2019 yaml イベント ネットワークポリシーサーバー プラグイン 何時の橙 正規表現 群馬WordPressMeetup

RSS RSS

  • `transform:rotateY`使用のフリップアニメーションについて、Edgeで残像が残る
  • 第4回 群馬 WordPress Meetup参加レポート
  • [Ususama+WordPress連携] WordPressを更新するとGithub Actionsを利用して自動的にWPの記事を新着情報として静的サイトをデプロイする
  • VSCodeでデフォルト言語をMarkdownに変更し、`Untitled-X`な一時ファイルでもMarkdownとして編集する
  • 「A cookie associated with a cross-site resource at was set without the `SameSite` attribute.」の警告が出てreCAPTCHA v2の送信ボタンの`disabled`が外れない
  • ここ最近の開発ログ(Yarn, Github Actions)
  • WordCamp Tokyo 2019 参加レポート
  • LintとPrettier周りのメモ
  • Ususamaのアップデートと、Gulp4.x系の記述方法について
Copyright © 2018- アルム=バンド All Rights Reserved.