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
新しい投稿
JavaScriptの関数に整数値を参照渡ししたい(無理やり…

最近の投稿

  • Vaultwarden を Docker で試す
  • Google Chrome のフォントが太くなった
  • PHP のソケット通信で Syslog メッセージを送信する
  • (PowerShell) 自作アプリケーション (exe) のプロセスを再起動する
  • (PowerShell) ネットワークアダプタのデフォルトゲートウェイの設定を変更する

カテゴリー

  • CMS (91)
    • MODX (6)
    • WordPress (80)
  • css (33)
    • Scss (18)
      • DartSass (10)
  • JavaScirpt (137)
    • Gulp (27)
    • jQuery (15)
    • Node.js (28)
    • React.js (22)
      • Next.js (1)
    • Vue.js (12)
    • Webpack (7)
  • PHP (93)
    • DietCake (3)
    • Dietcube (7)
    • Laravel (2)
    • Slim (7)
  • Raspberry Pi (5)
  • SNS (11)
    • facebook (6)
    • Instagram (2)
    • Mastodon (1)
    • Twitter (5)
  • Webサービス (26)
  • イベント (10)
  • サーバ環境・構築 (95)
    • Ansible (6)
    • Apache (35)
    • CentOS (17)
    • Ubuntu (2)
  • データベース (37)
    • MySQL (33)
      • MariaDB (2)
      • phpMyAdmin (10)
    • SQLite (4)
  • ブラウザ (26)
    • Chrome (13)
    • Edge (2)
    • Firefox (4)
    • Internet Explorer (5)
    • Safari (1)
    • Vivaldi (5)
  • プログラム (70)
  • 未分類 (4)
  • 自作 (69)
    • デモ (30)
  • 開発環境 (140)
    • CI/CD (7)
    • Docker (60)
    • Laragon (1)
    • XAMPP (9)
  • 雑記 (63)

タグ

.htaccess (17) AlmaLinux (7) axios (7) bash (10) Bootstrap (14) Bootstrap4 (9) Browsersync (5) CentOS7 (17) CentOS8 (8) Chrome拡張機能 (8) composer (6) CORS (6) DNS (7) Docker for Windows (14) Docker for Windows Desktop (9) Eloquent (5) Excel (10) ftp (6) Gatsby.js (5) git (17) Github (10) Github Actions (5) Google Analytics (5) Guzzle (5) Logseq (7) Markdown (5) nodist (6) npm (6) PDF (6) Perl (7) PowerShell (15) Scss (4) Sourcetree (6) SSH (8) SSL (12) VSCode (11) vsftpd (12) Windows (15) WordPress REST API (5) wp-env (6) Xdebug (5) Yarn (7) プラグイン (10) メール (8) 群馬WordPressMeetup (6)

RSS Ewig Leere(Lab2)

  • Vaultwarden を Docker で試す
  • Google Chrome のフォントが太くなった
  • PHP のソケット通信で Syslog メッセージを送信する
  • (PowerShell) 自作アプリケーション (exe) のプロセスを再起動する
  • (PowerShell) ネットワークアダプタのデフォルトゲートウェイの設定を変更する
  • (PowerShell) .env ファイルを読み込んで環境変数にセットするスニペット
  • phpIPAM を試す
  • Ubuntu に LAMP 環境を構築して Resource Space を動かすところまで (2/2 – Resouece Space インストール編)
  • Ubuntu に LAMP 環境を構築して Resource Space を動かすところまで (1/2 – LAMP構築まで)

RSS Ewig Leere(Lab2)

  • Vaultwarden を Docker で試す
  • Google Chrome のフォントが太くなった
  • PHP のソケット通信で Syslog メッセージを送信する
  • (PowerShell) 自作アプリケーション (exe) のプロセスを再起動する
  • (PowerShell) ネットワークアダプタのデフォルトゲートウェイの設定を変更する
  • (PowerShell) .env ファイルを読み込んで環境変数にセットするスニペット
  • phpIPAM を試す
  • Ubuntu に LAMP 環境を構築して Resource Space を動かすところまで (2/2 – Resouece Space インストール編)
  • Ubuntu に LAMP 環境を構築して Resource Space を動かすところまで (1/2 – LAMP構築まで)
2019年2月
月 火 水 木 金 土 日
 123
45678910
11121314151617
18192021222324
25262728  
« 1月   3月 »

カテゴリー

  • CMS (91)
    • MODX (6)
    • WordPress (80)
  • css (33)
    • Scss (18)
      • DartSass (10)
  • JavaScirpt (137)
    • Gulp (27)
    • jQuery (15)
    • Node.js (28)
    • React.js (22)
      • Next.js (1)
    • Vue.js (12)
    • Webpack (7)
  • PHP (93)
    • DietCake (3)
    • Dietcube (7)
    • Laravel (2)
    • Slim (7)
  • Raspberry Pi (5)
  • SNS (11)
    • facebook (6)
    • Instagram (2)
    • Mastodon (1)
    • Twitter (5)
  • Webサービス (26)
  • イベント (10)
  • サーバ環境・構築 (95)
    • Ansible (6)
    • Apache (35)
    • CentOS (17)
    • Ubuntu (2)
  • データベース (37)
    • MySQL (33)
      • MariaDB (2)
      • phpMyAdmin (10)
    • SQLite (4)
  • ブラウザ (26)
    • Chrome (13)
    • Edge (2)
    • Firefox (4)
    • Internet Explorer (5)
    • Safari (1)
    • Vivaldi (5)
  • プログラム (70)
  • 未分類 (4)
  • 自作 (69)
    • デモ (30)
  • 開発環境 (140)
    • CI/CD (7)
    • Docker (60)
    • Laragon (1)
    • XAMPP (9)
  • 雑記 (63)

タグ

.htaccess (17) AlmaLinux (7) axios (7) bash (10) Bootstrap (14) Bootstrap4 (9) Browsersync (5) CentOS7 (17) CentOS8 (8) Chrome拡張機能 (8) composer (6) CORS (6) DNS (7) Docker for Windows (14) Docker for Windows Desktop (9) Eloquent (5) Excel (10) ftp (6) Gatsby.js (5) git (17) Github (10) Github Actions (5) Google Analytics (5) Guzzle (5) Logseq (7) Markdown (5) nodist (6) npm (6) PDF (6) Perl (7) PowerShell (15) Scss (4) Sourcetree (6) SSH (8) SSL (12) VSCode (11) vsftpd (12) Windows (15) WordPress REST API (5) wp-env (6) Xdebug (5) Yarn (7) プラグイン (10) メール (8) 群馬WordPressMeetup (6)

アーカイブ

  • 2025年5月 (1)
  • 2025年4月 (4)
  • 2025年3月 (2)
  • 2024年12月 (3)
  • 2024年11月 (6)
  • 2024年10月 (4)
  • 2024年9月 (2)
  • 2024年8月 (8)
  • 2024年7月 (4)
  • 2024年6月 (1)
  • 2024年5月 (3)
  • 2024年4月 (2)
  • 2024年3月 (4)
  • 2024年2月 (2)
  • 2024年1月 (10)
  • 2023年11月 (3)
  • 2023年10月 (1)
  • 2023年9月 (3)
  • 2023年8月 (1)
  • 2023年7月 (7)
  • 2023年5月 (2)
  • 2023年4月 (4)
  • 2023年3月 (5)
  • 2023年2月 (6)
  • 2023年1月 (6)
  • 2022年12月 (10)
  • 2022年11月 (3)
  • 2022年10月 (2)
  • 2022年9月 (3)
  • 2022年8月 (6)
  • 2022年7月 (9)
  • 2022年6月 (3)
  • 2022年5月 (16)
  • 2022年4月 (20)
  • 2022年3月 (16)
  • 2022年2月 (9)
  • 2022年1月 (17)
  • 2021年12月 (32)
  • 2021年11月 (19)
  • 2021年10月 (2)
  • 2021年9月 (4)
  • 2021年8月 (11)
  • 2021年7月 (10)
  • 2021年6月 (6)
  • 2021年5月 (9)
  • 2021年4月 (11)
  • 2021年3月 (14)
  • 2021年2月 (4)
  • 2021年1月 (16)
  • 2020年12月 (14)
  • 2020年11月 (19)
  • 2020年10月 (9)
  • 2020年9月 (10)
  • 2020年8月 (10)
  • 2020年7月 (16)
  • 2020年6月 (5)
  • 2020年5月 (8)
  • 2020年4月 (9)
  • 2020年3月 (12)
  • 2020年2月 (7)
  • 2020年1月 (11)
  • 2019年12月 (6)
  • 2019年11月 (5)
  • 2019年10月 (7)
  • 2019年9月 (4)
  • 2019年8月 (11)
  • 2019年7月 (6)
  • 2019年6月 (8)
  • 2019年5月 (10)
  • 2019年4月 (5)
  • 2019年3月 (15)
  • 2019年2月 (10)
  • 2019年1月 (15)
  • 2018年12月 (4)
Copyright © 2018- アルム=バンド All Rights Reserved.