PHPカンファレンス 小田原 2024に参加メモ

# phpcon_odawara 参加してみた

技術カンファレンス大好き三浦一樹です
PHPは一行も書いたことないんですが、
北海道で開催されたphpcondoがめちゃくちゃ楽しかったし、懇親会でお話した実行委員長のあすみさんがとっても楽しかったので、その場で申し込んでみました。

とりあえず、時系列のメモを残しておきます。取りこぼしちゃってるところもあるんだけど、いったん。

PHP知らなくてもめっちゃ勉強になりました！！

## オープニング

![opening.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/8cb440f2-e31f-3e70-8fdf-e422a9a41c5f.jpeg)

- 実行委員長のあすみさん
  - slack でみんながアドバイスくれたので、すぐ会場押さえた
  - 加速的迅速
- スポンサーブース
  - スタンプラリーあるよ。万葉の湯の特別入浴券がもらえる。
  - 小田原(周辺)銘菓がもらえる
  - 小田原移住相談ブース

- うめ丸も参加
  - LTのドラなど、お仕事たくさんある。
  - 連続稼働時間は50分
  - 「ゆるキャラグランプリ2020 THE FINAL」ではご当地部門で397キャラ中54位

![umemaru.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/10f3d14d-9d31-38d1-a434-d08ba69d6edc.jpeg)


## 二郎系ラーメンのコールで学ぶ AST 解析

実際に言語が

- fortee
  - https://fortee.jp/phpconodawara-2024/proposal/21d94a60-404d-4fba-8c60-d1c8889a0138
  - めもりーさん
- 「コール」と「プログラミング言語」は近い
- ASTとは
  - **A**bstract **S**yntax **T**ree
  - 抽象構文木
- プログラミング言語の解析では以下のような手順を経ている
  - 字句解析 Lexical Analysis
  - 構文解析 (Parse)
  - コンパイル (Compile)
  - 実行
- インタプリタ言語 ? コンパイラ言語？
  - 上記の処理を逐次行うのがインタプリタ言語
  - インタプリタ言語ではコンパイルしないものもある
- コンパイラ言語
  - ２種類ある
- ちょっとわからない？AST解析 を二郎系ラーメンのコールに当てはめる
  - ラーメン豚山
    - https://www.butayama.com/
  - コール
    - ニンニクマシマシ野菜マシマシカラメ
    - ラーメンのトッピングはパラメータとして捉えることができる

![ast.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/ef22b81d-870f-7656-dd8f-410d0ec6f206.jpeg)

- 字句解析器と構文解析器の仕組み
  - 決定的有限オートマトン(**D**eterministic **Finite** **A**utomaton)の状態遷移
- PHPに置き換えてみよう
  - 下から解決していく感じで処理されていく

## VAddy PHPカンファレンス全部スポンサーする！の裏側(スポンサーセッション)

- [fortee](https://fortee.jp/phpconodawara-2024/proposal/90ac5e39-a03f-49f0-b804-7f73c4b2f7cb)
  - 市川さん
- 会社紹介
  - ビットフォレストさん
  - セキュリティの製品開発してる
  - 全部で11名で、そのうちエンジニア６名
- [VAddy](https://vaddy.net/ja/)
  - アプリケーション診断
  - ネットワーク診断
  - 脆弱性管理
- VAddy 苦闘の９年
  - ノンフィクション
  - PHPカンファレンス関西2014でベータ版
  - 最初の３年間は暗黒時代
  - ぜんぜん売れない
  - ３年間のトライは失敗として
  - ツールのコンセプトは悪くなさそうなので、販売戦略を変える
  - 国内に注力
  - ユーザとの会話を重視するために、サインアップ数のKPIを廃止
  - 大事にしてきたもの
    - ユーザの声を聞き続ける
    - サポート重視
    - 裏の技術は高度に、画面はシンプルに
- 全部スポンサーする！！
  - 今年の後半もやるであろう、全部スポンサーする！！
  - 費用対効果はあるのか？ってのは普通
  - でも、**面白いからスポンサーする！**で、突破
- １月から４月までやってみて
  - 認知度はきっと向上
  - お客様と直接会話することができた
- カンファレンスと私の15年
  - 2019年たくさんやったけど、2020年はコロナで激減
    - いつまでも
    - あるとおもうな
    - カンファレンス
  - 2024年は戻ってきた！
  - 自分が楽しいと思う場にできる範囲で巨力していく
  - カンファレンスは個人の情熱に支えられてる

## はやめのランチ

- おだわランチめちゃくちゃ美味かった
- カンファレンスの醍醐味のひとつは、その土地のご飯をその土地で食べることですよね
- [天つく](https://tabelog.com/kanagawa/A1409/A140901/14077942/)
  
![lunch.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/b283e399-85bc-0a05-6e46-561b7aaf5bc4.jpeg)

## スポンサーブース巡り

- スタンプラリーが楽しい
- サービスの説明もそうだし、ブースの人とその事業のお話を聞くのは、本当に楽しい
- 各ブースには箱根周辺のお菓子が置いてあったので、自然に雑談がはじまって最高

## 「手動オペレーションに定評がある」と言われた私が心がけていること

- fortee
  - https://fortee.jp/phpconodawara-2024/proposal/3a2e79cc-ec78-40dc-9ff5-feed7b082bab
  - ごへいもち
- 手動オペレーション
  - 定義；何らか、コンソールに入ってする必要がある作業
  - 初期フェーズとかだと、管理画面開発は優先度低くなりがち
  - 昔、手動でミスってしまって上司に言われた一言が「二度目はないですからねぇ(ニコニコ)」
- 失敗体験からの学び
  - リリース手順
    - リリース手順書の作成
    - デプロイフローが整っているケースも増えてはいる
    - どうなってるのかは、ちゃんと中身を理解する
  - 戻し手順
    - 「まぁ、成功するよね？？」
    - 不可逆なリリースの場合だったりしない？
    - 「戻せる」を理解しているってのは、今やろうとしていることを理解している。
  - 失敗した時の影響
    - 最悪のケースを想像する
    - ミスったら、営業担当がお客さんに謝罪することになっちゃうよね、、
- リスクの想定と管理が大事。リスクマネジメントたいせつ
- 世の中、簡単に失敗させてくれない
  - CI/CD の環境が整っているので、失敗しづらくなっている
  - いい感じに失敗するのは難しい昨今
- どうやって想像るすのか
  - リリース手順と戻し手順をよく考える
  - ヒヤリハット
    - ギリギリセーフも学びがたくさん
  - 人の失敗から学ぶ
    - ポストモーテム記事を公開してる会社がたくさん
  - 失敗を疑似体験
    - ISUCONとか近いかも
    - 懇親会で聞ける公には言えない話。とかは大切
- テクニック
  - コピペで動く手順
    - 手打ちはミスの恩賞
  - データは壊れたら戻らない
- 手動オペの違い
  - 単発の作業は判断難しいよね。単発でコード化する？
- いつ「手動オペ」から脱却するのか
  - 要素はたくさんある
    - 重要度
    - 作業頻度
    - コスト
    - タイミング
    - モチベーション
  - なぜを考える。
- 大切なのは情熱！！

## テスト品質を向上させよう！ 〜 アンチパターン回避メソッド

- fortee
  - https://fortee.jp/phpconodawara-2024/proposal/4904f67e-2ded-43a3-8523-98a8c40b1db5
  - Kanon さん
- 明日からすぐできること
  - Jest/Cypresss/JUnit(本業)
  - テスト名
    - isExistPrefeture()をチェックする時を考える
    - 具体的にないを検証して、何を期待しているのかを名前に込める
    - isExistPrefeture()は存在しない都道府県を指定したときにエラーとなる
  - AAAパターン
    - Arrange
    - Act
    - Assert
  - パラメタライズテスト
    - DRY原則ね
    - 入力複数用意して、一つのテストで
  - エラーはキャッチせず、エラーを期待する
- 継続てに取り組んでいく必要のあること
  - 適切なコードカバレッジを保つ
  - 50-80近辺がいいんじゃないか
    - 40以下は低すぎる
    - 90以上。重箱の隅を突く感じになってない？
  - 閾値に満たない場合、テストが失敗する
    - 90より-5くらいにするのがちょど良い気がする
  - レポートをちゃんとみましょう
    - 全体のカバレッジだけじゃなくて、業務上重要なコードが入ってる部分がどうなっているのか。を目を配る必要がある
    - カバレッチ100でほんとに意味があるのか
- さらにその先へ、、、
  - Mutarion Test
    - 意図的なバグを埋め込みうことでテストが正しいかを確認する手法
    - Mutation Score
      - Killed
        - 失敗すべきテストが失敗したのでオッケー
      - Suvived
        - 失敗すべきなのに動いちゃったのでちゃんと考えよう
    - 実戦導入のお話はまた別の機会で、、

## 会場の廊下で雑談たのしい

カンファレンスの醍醐味のひとつな気がする「雑談タイム」
セッションを聞くのもすっごくいいんだけど、それらを受けて、話を深掘りしたり、そこから派生して全然違う話をしたり
オフラインイベントだから発生するこの時間が大好きです

知り合いはほとんどいなかったんですが、前夜祭から参加せてもらっていたので、顔見知りになってる人が増えて、お話に混ぜてもらうことができました。
前夜祭で「IRT(Interactive Round Table)」が行われたので、初めましての人とお話する機会があったのが本当によかったです。

## クロージング

あすみさんの元気な進行でビシッと閉まりました。ほんとに楽しかったです。ありがとう。

「ふりかえり」をしよう。という宿題をいただいたので、これはまた明日まとめてみます。

![closing.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/fcb138df-ac84-a83d-3f80-0e42f291fd03.jpeg)

## まとめ

ぺちこん小田原最高だった