PHPカンファレンス関西2024に行ってきました

# はじめに
- 昨日[PHPカンファレンス関西2024](https://2024.kphpug.jp/)に行ってきました。
- 弊社はゴールドスポンサーとして協賛しており、バッグやパンフレットに大きくロゴを入れていただきました♪

<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627922/457b63e7-85c1-4c35-8621-bec46841df2a.jpeg">  <img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627922/2f2e0a5f-dc23-661f-82b0-883bd1a01471.jpeg">

- スポンサー企業の皆さん、スタッフの皆さん、スピーカーの皆さん、参加していただいた皆さん、本当にありがとうございました！
- 私もスポンサー枠で参加させてもらったので、拝聴したセッションごとに内容と感想を書いて行きます。

# Laravelでミニマム開発からスタートして個人サービスを利益化するまでの経験談！
- https://fortee.jp/phpcon-kansai2024/proposal/8c1e1f21-2b1d-4c66-ad4b-f90577a424e5
## 内容
- [ROCK/JOINT](https://rockjoint.link/lp/)というバンドメンバーのマッチングアプリを、Flutter+Firebase+Laravelで開発
- サブスクの月額課金制で現在の有料会員数は650人ほど
  - 課金周りはRevenueCatを使って実装
- Laravelはレンタルサーバのロリポップなので、ランニングコストは月額440円だけ
  - いいねボタンなどをクリックした際に、アプリからLaravelのAPIを叩く仕様
- そのためコスパ最強
- デメリットとしては負荷監視やエラー監視ができておらず、ユーザーに言われて気づくことがある

## 感想
- 確かにコスパを最重視したら、こういうアーキテクチャになるなと思います。
- スピーディ且つ低コストでリリースしたいスタートアップの初期段階なら、1つの選択肢としてはありかもしれません。
- それにしても有料会員650人のサービスを440円/月で運用できるとは、本当に良い時代になりましたね。

# 品質が高いコードって何？
- https://fortee.jp/phpcon-kansai2024/proposal/a60c9e18-bc61-4f60-80d0-0a0ea7a205c4

## 内容
- そもそも品質とは「先んじて求められた要求事項を満たしていること」
- 経営層から達成すべき要求が提示されて、初めて高品質を指向できる
- 製品品質と業務品質
  - コードの品質の話をするためには、製品品質から切り離して業務品質として話をまとめよう
  - 要求する定義、プロセスを積み上げることで業務品質を向上できる
- 高品質を維持する作業の例
  - 治具としてみるxUnit(PHPUnitなど)

## 感想
- 「経営層から達成すべき要求が提示されて、初めて高品質を指向できる」というのは、確かに理想としてはそうだなと思います。
- しかし実際の現場では、開発者から経営層に対してボトムアップ的に品質についての意見を上げることが殆どではないでしょうか。
- 「経営層に技術畑出身者がどれだけ含まれているか」「経営トップのCEOに開発経験があるか」によっても、品質を重視する幅は大きくなると個人的には思います。

# コードレビューが求められること
- https://fortee.jp/phpcon-kansai2024/proposal/1ece99f8-82c3-4a87-a684-6649350fdf74

## 内容
- レビュアーの気持ちを考えてPRを出す
- 忙しいレビュアーがサクッと見れるように、１つのPRにおけるファイル数を10程度に抑える
- レビュイーからレビュアーに、自分の意図や考えを伝える
  - 「なぜこのロジックになるのか」という来そうな質問を、あらかじめコメントしておく
- 軽量なレビューの場合は、レビュイーからレビュアーに伝える
  - 「差分少ないです」
  - 「サクッと見れます」
- レビュイーにとってコメントしやすい状況を作る
  - 教えてほしいというスタンスを伝える

## 感想
- こちらは比較的初心者向けな内容だったので、過去に学んだことを思い出しました。
- 私もレビュー文化のない開発をしていた時期があったので、初めてレビュー文化が徹底している開発現場にジョインした際に、かなり叩き込まれましたね。

# コードを自在に操るためのPHP文法入門
- https://fortee.jp/phpcon-kansai2024/proposal/1cb30b96-0bc9-43a0-b7ea-d3e19348c021

## 内容
- 静的解析とは
  - プログラムを実行せずにコードの品質や信頼性の検証を行える
- PHPStan
  - PHPで書かれたOSSの静的解析ツール
- Rector
  - 自動リファクタリングツール
  - Composerで導入可能
  - PHPStanがベース
- PHP Parser
  - PHP構文解析ライブラリ
  - Composerで導入可能
  - PHPStan、Rector、PHPUnitなど多くのツールの基盤
- `token_get_all`関数
  - 構文解析に使う

## 感想
- PHPStanは現在担当しているプロジェクトで導入していますが、それ以外のツールは何となく名前は知ってる程度だったので、勉強になりました。
- この辺のツールも、今後はAIが入ってくるとまた一気に加速して行きそうですね。

# PHP8.2にバージョンアップしたら文字化けが発生して道頓堀に飛び込みたくなった話
- https://fortee.jp/phpcon-kansai2024/proposal/e2432bdb-6320-4034-a51a-b6cadcf67177

## 内容
- 株式会社ラクスの[Mail Dealer](https://www.maildealer.jp/lpl/md01.html)の運用サポートチームに所属
- Mail Dealerとは
  - メールの共有管理サービス
  - 累積導入社数8000社以上
- PHPバージョンアップのリリース後に、メールが文字化けする不具合が発生
  - 原因は`mb_detect_encoding`関数の仕様変更
  - 文字コードを検出する順位が変更された
- リリース後、顧客から運用サポートチームにクレームが入り発覚
- 開発チームは文字化けすることを知っていたが、運用サポートチームには報告してなかった
  - PHPの内部仕様の変更のため、顧客への通知の判断が甘くなった
  - 開発チームのメンバーに対して「わかってたなら言おうぜ、マジで」

## 感想
- これは社内コミュニケーションの齟齬が生んだ悲しい事故のお話、という感じですね。
- チーム内ではしっかり情報共有できていても、別チームに対しては情報共有が不十分なことはありがちなので、他人事とは思わず気を付けたいです。

# PHPコミュニティその熱狂をあなたに
- https://fortee.jp/phpcon-kansai2024/proposal/c903c4be-77bb-47b9-85a1-5bfdfd61c1aa

## 内容
- 初参加の技術イベント
  - 技術的なことはわからないけど、たくさんの人とコミュニケーションをとれたことが最大の収穫
- コロナ禍でオフラインイベント無くなったけど、また復活してやっぱり楽しい
- 人と繋がって学ぶことでエンジニアとして成長できている
- コミュニティの成長サイクル
  - 楽しい→やる→アウトプット→良いインプットのループ
- コミュニティはエンジニアとしての成長を支援してくれている
- コミュニティへの貢献
  - 一番の貢献は参加し続けること
- 全員登壇できる
  - 「初心者だし話せない」→初登壇の人を応援する文化がある
  - 「話すことが何もない」→今の皆さんだから話す価値がある

## 感想
- とても熱量高く、情熱的な発表でした。
- IT業界やエンジニアの世界に限らず、手を挙げて「やります」と言った人がチャンスを掴んで行くのが世の中の原理原則だなと、改めて実感しました。

# モデルとは何か
- https://fortee.jp/phpcon-kansai2024/proposal/b3f6ed97-8551-40da-90b1-3a14697df303

## 内容
- Eloquentのmodelだけが開発におけるモデルではない
- システムを実装するとき、現実のあらゆる計算や業務が開発のためのモデルになり得る
- MVCのMとは
  - データソースとやりとりするものとは限らない
  - `does everything indicated by the request`
    - リクエストで示された全てを実行するもの

## 感想
- よく言われる「MVCのControllerにビジネスロジックを書かない」という話にも繋がってくるなと思いました。
  - 本来のモデルがどういうものか理解できていれば、ビジネスロジックはControllerではなくmodelに書くはずなので
- モデルの概念はオブジェクト指向の考え方の一つでもあるので、ふと[この本](https://bookplus.nikkei.com/atcl/catalog/21/S00180/)の内容を思い出しました。

# PHPで生成AIのAPIをやってみた
- https://fortee.jp/phpcon-kansai2024/proposal/012b22df-47d8-4552-9cbe-58362130291c

## 内容
- PythonではなくPHPでChatGPTのAPIを使う
- composerに`openai-php/client`が用意されてる
- API Keyが大事
  - Open AIではSecurity Settingがない
  - `.env`にAPI Keyを書く

## 感想
- AIはPythonのイメージが強いですが、ちゃんとPHPからでも使えるようにcomposerにライブラリが用意されてるんですね。
- 使ってみたくなりました。

# ほげ言語にあってPHPにない機能
- https://fortee.jp/phpcon-kansai2024/proposal/0e0befdb-2028-42c8-98e2-b19e434f5a82

## 内容
- いろいろな言語の機能のうち、PHPにまだないものについて
- ほげ言語とは
  - そこそこ人気のプログラミング言語をほげ言語とする
- リストと辞書の区別
  - PHPではどちらもarrayであり、区別されてない
- ジェネリクス(型パラメータ)もない
- パッケージ(名前空間)可視性
- this(またはself)を省略できない
- UFCS
  - Nimならどっちでもいける
    ```
    data.append(param)
    append(data, param)
    ```

## 感想
- 本来の想定していた発表時間よりも短かったらしく、だいぶ駆け足な発表でした。
- これがPHPがPHPである所以だなと思いました。
- 「一番最初に学ぶプログラミング言語がPHPだと、他の言語を学ぶ際に少し苦労するのがこの辺になってくる」と考えるのが良いかもしれません。

# 最後に
- 私個人としては、[2022年のPyCon](https://qiita.com/matsumura-yzrh/items/ea3cee83236634a0fbb1)以来1年3ヶ月ぶりのオフラインイベント参加になりました。
- 今回は地元関西の大阪開催ということで、馴染みの企業様や知り合いの方が多かったのは嬉しかったですね。
- また今回各セッションで拝聴した内容は、過去の自分の経験(成功体験も障害発生などの失敗も含めて)と結び付いて点と点が線になるような感覚が何度もありました。
- 同じエンジニアとして、他の方も同じような壁にぶつかってると気付けたのは大きな収穫かもしれません。
- 今回の学びを「学んだだけ」で完結させずに、日々の業務に活かして行きたいですね。