PHPカンファレンス福岡2023行ってきたよ

 

2023/06/24にPHPカンファレンス福岡2023に行ってきました。

2018年ぶりの参加でした!!!
https://phpcon.fukuoka.jp/2023

 

すっごい人の色んなお話を聞けて超超超刺激になりました!
さらに色んな人と知り合えたり、懐かしい人と会えたりできたので超楽しかったです🙌
無限LTしたかったけど勇気なかったです…
「参加したならLTくらいしないともったいない」ってすっごい言われて、そうだよなーもったいないことした・・・ってなってます😭
次カンファレンス行く時は登壇予定なくてもLT用意する(目標

## メモ

Symfony6.3のおすすめ機能

– WebhookをController使わずに作れるようになった。 https://symfony.com/blog/new-in-symfony-6-3-webhook-and-remoteevent-components
– service.yamlに書いてたサービス定義を、ほぼAttributeだけでできるようになった。 https://symfony.com/blog/new-in-symfony-6-3-dependency-injection-improvements#using-autowiring-to-generate-closures
– メソッドをDIできるようになった https://symfony.com/blog/new-in-symfony-6-3-dependency-injection-improvements#using-autowiring-to-generate-closures

ref: https://symfony.com/blog/symfony-6-3-curated-new-features

 

お昼ご飯🍚

牧のうどん、うまいけど食べるの遅いと無限に増えた。
九州のやわやわうどん、すき。

お腹いっぱいで眠くなったけど、コーヒー飲み放題で助かりました🙏☕️🙏

 

夜ご飯🍚

たのしかったーーーー

みんなが幸せなら幸せ教に入信しそうuuu

まとめ

福岡またいきたいです!次はついでに実家でゆっくりできたら良い。
次は新幹線でいきたい、7千円の充電式ヘアブラシ没収された&セントレアまで遠いので。次は、ホテルさっさとチェックインしておく。

スタッフさん登壇者さんスポンサーさん参加者さん不参加だけど絡んでくださった皆様ありがとうございましたー!

↑天神から祇園のホテルまで酔っ払いながら帰った朝に撮った写真

PHPerKaigi2023参加レポ〜iwillblog〜

タイムテーブルはこちら。

https://fortee.jp/phperkaigi-2023/timetable

PHPerKaigi2023の私的状況

  • Day0、Day1 オンライン参加
  • Day2 オフライン参加 (子供を預けることに成功、こだまグリーン車早割の往復、懇親会もあるので一泊)
  • ペンライト羨ましくて、次はLTしたいと思いました。
  • ちょうぜつ本が当たった😍(既に購入済み)
  • 今年もノベルティ最高!
    • GMOさんの湯呑み良き(写真に入れ忘れた)
    • 顔パック、遠征先で化粧水がわりになったのでありがたいです!

Day0

#### PHPUnit 10 概論

https://github.com/sebastianbergmann/phpunit/blob/10.0.0/ChangeLog-10.0.md

ChangeLogをみてもRemovedが多いので、安易にupdateしにくいなとい印象でした。

差別的用語をなくした件を知って、最近whiteListという変数を作ってしまった自分を反省しました!参考にさせてもらいます!

  • blackList -> ExcludeList
  • whiteList -> filter

また、デフォルトでDeprecation, Notices, Warnings, Skippedの件数を表示しなくなるっていうのは地味に嫌なので、phpunit.xmlの設定する必要があるなということを忘れないようにしたいなと思いました。

DataProviderはよく使ってるので、仕様変更に対応しなければ 🤯

以下の条件に当てはまるDataProviderが非推奨になりました。
● staticではない
● publicではない
● 引数を必要とする
逆にいえば、以下のような形式のDataProviderを推奨しているということですね。
public static XXX() {} 

Day1

#### Composerを「なんとなく使う」から「理解して使う」になる

はい!なんとなく使ってました。思ってた通りで安心してましたが、パッケージ更新したい時にupdate?require?となることがあるのでこの表はめちゃ重宝させてもらいます🙇🙇🙇

  • composer require {package-name}composer.json/composer.lock共に更新される
  • composer update {package-name}→あくまでもcomposer.jsonのバージョン指定範囲内で更新する => composer.lockのみ更新
  • =>パッケージ更新したい時、現在のcomposer.jsonのバージョン指定じゃ希望のバージョンにならない時は、requireする必要ある。現在のcomposer.jsonのバージョン指定内の更新で良いならupdate
  • 個人的コマンドメモ
// 何が更新されるかを事前にチェックすることができる
$ composer update --dry-run

// composer.jsonのrequireにないのに依存してcomposer.lockにあるパッケージはどこ依存だ?ってときに使える 
$ composer depends {package-name}

 

Day2

現地参加の特権、アンカンファレンス 🙌

郡山さんのおもしろかった〜

https://alps-asd.github.io/ つかって設計してみたい!

 

### PHPの最高機能、配列を捨てよう!!

現地では裏のそーだいさんの見て、うずらさんのはYouTubeで視聴しました!

たしかにreturn type arrayの時、どんな配列なのか気になって深くコードを読むみたいなのありがちで時間取られちゃうのでもったいないです。

DTOを作ってその配列にするは結構やってたので、安心しました!

懇親会

何年振りかのお酒飲みながらの懇親会たのしかったです^^

 

ペチコン2022の参加メモ

 

1日目はオンラン参加で、2日目は現地参加予定しました!

モチベ上がりました!!!開催ありがとうございました🙇
現地でいろんな人に会えて楽しかったです✌️
来年は子供と行くか、それともビール飲みたいから泊まるかしたいなと妄想しております。
帰りのグリーン車からこの記事かいてます(こだま早割でのぞみ指定席より安かった)

タイムテーブル

https://fortee.jp/phpcon-2022/timetable

メモ(箇条書き)

1日目

  • フィーチャートグルよく出てきた!
  • Symfony UX使ってみたい!グラフとかしてみようかな🤔
  • スキーマ駆動開発良さそう
  • 語彙力を増やしたり、良い命名のためにもフレームワーク読んだり使うことが大事

2日目

来年の自分へのメモ

  • 来年は2023/10/08(日)開催予定!
  • 大LT出たい。いつもみてて思う…
  • 京急蒲田は蒲田(JR)ではないよ、品川-京急蒲田は快特が良いよ(各停乗るな)
  • 品川で、出口(JR乗り換え)に行くな、普通の出口に行こう。
  • 泊まりができれば飲めるよ🍺
  • 子供入場できるよ👶
  • 早割こだまグリーン車良い🙆のぞみだと乗り換えの待ちがあるので20分しか変わらなかった。

 

おまけ

ぺチコン2021レポート〜1日目〜

 

今年もぺチコンに参加させてもらいました!(オンライン)
オンラインなので👶がいる私には参加しやすかったです〜
YouTubeでアーカイブも残ってるのもありがたいです!何度も見直しますね(きっと)

今回初めてDiscordも活用させていただきました。リアルタイムでいろんな達人の方々が補足してくれるのでめちゃくちゃ勉強になりました!!!
また、会社のスポンサーツアーにもちょこっと出させてもらいました〜🙌

\ ぺチコン2021のタイムテーブルはこちら /
https://fortee.jp/phpcon-2021/timetable

コロナと落ち着いたら、またオフラインで参加したいです🥺
\ 過去のぺチコンレポートをどうぞ /
https://kin29.info/tag/phpcon/

気になったトークのメモ

🟡PHPにおけるコーディング規約と自動整形

コーディング規約の重要性を再確認させてもらいました。

php-cs-fixerとphp_codesnifferの違いについての理解は曖昧だったので、Discord上での解説もあり超納得でした!

php-cs-fixer → 書式しか見ないが全てを自動修正できる

php_codesniffer → 構造も見るのでeraly exitとかも違反にできるが、全ては自動修正できないより厳しくできる

🟡独自フレームワークPHPアプリケーションの改善戦略

auto_prepend_fileっていう設定ができるの初知りでした!auto_prepend_fileについて別記事書いたので良かったらみてください。

PHPのauto-prepend-fileを設定して、symfony/var-dumperを使ってみる

🟡PHPer が知るべき MySQL クエリチューニング

SQL苦手系PHPerなのでめちゃくちゃ勉強になりました。EXPLAINの見方はよく知らなかったので、わかりやすい説明で大変理解できました!

会社の技術ブログで実際に手を動かしてEXPLAIN使って見たレポを書いたので良かったら見てください。
https://tech.quartetcom.co.jp/2021/10/07/phpcon-2021-report/

🟡PHPで学ぶオブジェクト指向プログラミング入門

いい声なので動画貼っておきます。https://youtu.be/gdCE-UGqeSM?t=18952
変数名、関数名だけでも抽象化は表現できる!
複雑さ=条件分岐 → わかりやすくする=条件分岐を減らす
異なるものを同じように扱う事=ポリモーフィズム
JankenGameのコードはdisplayLangResolverを追加したい!って思ってしまいました。
Smalltalkっていう言語のOOP流派もある(←普段使わない方)
ポリモーフィズムは3つある。サブタイプポリモーフィズム/パラメトリックポリモーフィズム/アドホックポリモーフィズム
いつも通り、成瀬さんの説明はめちゃくちゃわかりやすいです。DDDの本読みました!
「OOPって何?なんでいいの?」って聞かれたらおすすめしたいトークです。

🟡ドメインをモデリングして PHP コードに落とし込む

新原さんも声もいい☺️https://youtu.be/gdCE-UGqeSM?t=23609
例題のドメインがワクチン接種なのが現代的!でコードも見れてわかりやすかった!

モデリング→複数の視点(俯瞰でみるかその中の要素でみるか)、手法で徐々に形にしていく
– ユースケース図 …システム化の範囲、ユーザが見えてくる
– 用語集の作成(ちょっと面倒) …項目は用語/英語表記/内容。英語表記があることでコード上での表記ゆれを防ぐ。解釈のずれがなくなるのでおすすめとのこと。
– 概念モデル図 …クラス図。多重度がわかる。用語を適当にばーっと並べて線で結ぶことからはじめて、徐々にブラッシュアップしていく感じ。
UML図ちゃんとは書いたことない。。。💦

ドメインモデル実装
– 1ドメイン = 1クラス
– POPO(Plain Old PHP Odject)、プレーンなPHPで作成
– クラス名やメソッド名にドメインモデル用語を使う
– setterを作らない方が良い …ドメインロジックによってプロパティ値を変更する

日本語クラスは作ったことないのでやってみたい!PHPStormはバリバリ対応してるらしい。

モデリングしてコードを実装することで理解が深まる、コードを書いてて気づくことが多いのはめちゃわかる!
→モデリングの一環としてコードを書くことと、結構良い!テストで実行検証できるのも良い🙆‍♀️

ステータスの状態遷移図もあると便利。
Enumは型としても使える、日本語も使える!
まずは、用語集→ユースケース図が良さそう、用語集でドメイン知識の認識を合わせることが重要💡
図やドキュメントのメンテは? → Wikiレベルで良い、とりあえずあれば嬉しい。

何度も見返したいトークでした!!!🙇‍♂️

🟡【IMO】コードレビューって難しいよね

IMO=in my option 私の意見では
わたしもレビューされる方が好きです。
レビューしてもらうとその分学びが増える感じが好きです。
pullpanda使ったことないので、使って見たいと思いました!
https://pullpanda.com/

さいごに

二日目レポートも書きます!(きっと)

PHPerKaigi2021に参加しました!

メモな感じですが投稿します!(iwillblogって書いちゃったので…)
はじめてのニコニコ動画使用でした(会員登録はいつのまにかしてた)

景品が豪華すぎて当たった方うらやましいです😭

\スタッフ、スピーカーのみなさま、ありがとうございました🙇‍♂️/

勉強させてもらったセッション一覧

他にも見たかったものやもう一回見たいセッションがいっぱいあるので、アーカイブ待ってます!

 

各セッションのメモ

テスト放送

[初心者向け] 一からフレームワークを作るところを見せる

  • リアルタイムでコードを書いているところが見れて良かった。
  • ディレクトリトラバーサル攻撃に気をつけよう。
  • フレームワーク作りたくなった、作ろう。(iwillframework)

Symfonyラウンドテーブル(よろず相談会)

  • symfony/pantherすごそう。GithubActionで動いたことが謎らしいが、なんで謎なのかさえも私はわかっていない。。。

PHPで学ぶ、セッションの基本と応用

  • Cookieの仕様(RCF6265)ちゃんと読もう

PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう

  • 例外は独自に定義しよう。(無駄なサードパーティの露呈を防ぐためにも)

@call_user_func(関数ではない)の使いこなしテクと(ルーレッ…

  • このbotを使った遊び方を理解した
  • twitterの検索例「from:call_user_func url:gitee」
  • リポジトリのnamespace抑える為だけにリポジトリ作る人もいるらしい、ドメインみたいな感じ(?)私もしようかな。

そのコード、フレームワークの外でも動きますか?

  • LaravelSymfonyへの移行を見れたのが良かった
  • やっぱり例外は独自に定義しよう。(2回目)
  • LaravelのModelはSymfonyのEntity
  • Symfonyのお作法で404エラーはBadRequestHttpException
  • Vanilla PHPを書こう!
  • Symfony、Laravel、CakePHPどんなPHPフレームワークからも使えるPHPが最高🍺

なるせ先生のPHP学~PHP8新機能スペシャル~ (ちょっとだけ)

  • 移動中スマホからちょっと見れたが動画クオリティが凄かった。
  • しばらくコード書いておらず、初耳学ばかりで勉強になった。
  • ちゃんと全部見たい!!!

今こそ理解するDI(Dependency Injection)

  • そういえばDIってデザインパターンだったことを再認識した。
  • DIは保守性の高いコードを書く事を目的とした方法論
  • DIとDIコンテナは別物、 DIコンテナはDIパターンをサポートするライブラリ
  • DIとerviceLocatorの違いは私自身イマイチ理解できてない。

DNSを制するものはインターネットを制す! DNSの世界

  • DNS苦手意識があるけど、ドメインハイジャックでCoinCheckの事件とか色々あるので逃げずにNSchecker使ってみたいと思いました。
  • 子供Youtubeを8時以降禁止にするための方法はわたしも親になったのでいつか使えそうと感じた。

 

おまけ

ノベルティめっちゃ良かったです、ホットアイマスク最高でした😏

エコバック今日の買い出しにも使いました。

カレーは緊急用にとっておっきます〜