この記事は、[静大情報LT大会(IT) Advent Calendar 2018](https://adventar.org/calendars/3386)の22日目の記事です。
[Node.jsで大学の成績を自動取得するシステムを開発した話](https://hi97.hamazo.tv/e8275388.html)では多くの反響をいただき、普段5人にも満たない訪問者数が8,9日は二桁を越えました。
~味をしめたので、~アドベントカレンダーの枠がまだ空いていたので、12月15日(土)に大田区産業プラザで開催された[PHPカンファレンス2018](http://phpcon.php.gr.jp/2018/)に行ってきた話をまとめようと思います。
## PHPカンファレンスとは
> PHPは手軽にWEB開発ができる言語として広まり、多くのWEBサービスや業務システムで利用されてきました。
大抵のレンタルサーバ等で利用できたこともあり、国内には多くのPHPエンジニア(PHPer)が居ます。
PHPカンファレンスは、その多くのPHPエンジニアが集うWEB技術のお祭りとして、多数のスポンサーやスピーカーの協力を経てPHPエンジニア有志の手によって開催します。
## 参加までの経緯
まず参加に至った経緯ですが、10月から現在のアルバイト先で働く上で、PHPの知識が必要であるということを事前に教えてもらっていました。そのため9月辺りに[Progate](https://prog-8.com/dashboard)といういくつかの言語を学べるサイトでPHPレッスンを全て学習しました。
その後アルバイトが始まり、PHPにも慣れてきた頃、学生支援サービスである[サポーターズ](https://supporterz.jp/users/experiences)のスキル欄にPHPのチェックを入れたところ、交通費が出る形でPHPカンファレンス2018へのサポートが届きました。
サポーターズからのサポートが来る以前に同サイトでPHPカンファレンスの開催は知っていて、参加しようか迷っていたのですが、交通費が出るということもあって行くことにしました。
## 当日の流れ
会場である大田区産業プラザからいくつかの駅を挟んだところに実家があるので、電車一本で行けました。京急線に乗ったのは十数年振りで、多分一人で乗ったのは初めてでした。
方向音痴なので会場まで着くのに時間がかかるだろうと思っていましたが、京急蒲田駅から出てすぐのところにあったので、受付から開始まで30分ほど待たされることになりました。
PHPカンファレンスでは会場をいくつかのトラックに分け、同時進行でセッションが行われていきます。そのため同時間帯に開始されるセッションは聞くことができないのですが、基本的にYouTubeでライブ配信を行っていてアーカイブもあるので聞き逃したセッションも聞くことができます(下部にアーカイブのURLを載せていますが残り1週間程度で非公開になります)。
私はPHP初心者なので、初心者向けのセッションを中心に、興味のあるセッションをいくつか選びました。
* オープニング
* PHPの今とこれから2018
* PHP初心者セッション
* Cygamesにおける長期運用タイトルのこれまでとこれから\~負荷対策とPHP7への道\~
* 継続的なバージョンアップのためのテスト戦略\~自動テストとコンテナ化\~
* ドキュメントルート配下に全てのPHPファイルが置かれていた環境をindex.php1個だけにした話
* 安全なWebアプリケーションの作り方2018
* Webサービスを育てるための組織作りと文化作り
* 大LT大会
本来は大LT大会のあと、クロージングがあり懇親会があったのですが疲れもあり、大LT大会の途中で抜けてしまいました。
### 各セッションで感じたこと
各セッションを内容や感想を箇条書きでまとめます。
---
#### PHP初心者セッション (スピーカー:柏岡秀男/有限会社アリウープ)
内容
* PHPでの変数の宣言や、foreach文とかよく使われる簡単なメソッドのまとめ
* 宣言のときに型がゆるいのがいいところ
* 将来的に型が追加されるかもしれないのでゆるさがなくなってしまうのではないかという懸念
* ユーザ投稿型サイトにおいて、サニタイズを行う`htmlspecialchars`は重要
感想
* 初心者向けなのにDockerの話が普通に出てくる(20分くらい話してた)
* 本当に初心者向けだったのでちょっと拍子抜け
---
#### Cygamesにおける長期運用タイトルのこれまでとこれから\~負荷対策とPHP7への道\~ (スピーカー:金山啓子/株式会社Cygames)
内容
* PHP5系で動いていたサービスを7にあげたことで30%の速度改善
感想
* ランチセッションだったので他の人が食べている弁当の匂いがきつかった(主に胃に)
* 秒間3000ほどのリクエストをミリ秒単位で捌けるのすごい
* 5系から7系にバージョンをあげると処理速度が向上するのは知っていたが、実際のサービスで30%の改善は凄い
* 寝てたので記憶が朧げ
---
#### 継続的なバージョンアップのためのテスト戦略\~自動テストとコンテナ化\~ (スピーカー:白山翔太/楽天株式会社)
内容
* テストの自動化による開発速度の向上が目標
* サービスはテスト環境ではDocker-compse、本番環境ではKubernetesで管理
感想
* テストコード書けるようになりたいなって思いました(小学生並みの感想)
* ここでもDocker環境
---
#### ドキュメントルート配下に全てのPHPファイルが置かれていた環境をindex.php1個だけにした話 (スピーカー:川島慧/GMOペパボ株式会社)
内容
* 見られちゃいけないファイルが参照できてしまった事件から全サービスの秘匿化の一環で行われた
* 秘匿すべきファイルをドキュメントルートよりも上の階層に移動させたかった
* `require_once`による相対参照で動かなくなってしまうので絶対参照に置換するスクリプトを書いた
* index.phpをドキュメントルートに置いて、それ以外のファイルは1つにまとめて.htaccessでアクセス拒否すれば問題なかった
感想
* webpack丸見えみたいなサイトのニュースを見た気がしたので、秘匿化の重要性を確認
---
#### 安全なWebアプリケーションの作り方2018 (徳丸浩/EGセキュアソリューションズ株式会社)
内容
* OWASP Top 10 2017のXXEと安全でないデシリアライゼーションのサイト攻撃再現
* XMLはセキュアではないのでJSONを使うのが良い
感想
* 受けたセッションの中で一番為になったし、面白いと感じた
* サーバまるごと乗っ取れる可能性もあるので気をつけないといけない
---
#### Webサービスを育てるための組織作りと文化作り (スピーカー:曽根壮大/株式会社オミカレ)
内容
* 組織・チーム・文化の3つの要素の相互作用からなる好循環をつくるための方法
* 現状に満足してしまっているプレイヤーへのチームマネージャからのアプローチ方法
感想
* システム的な話ではない、組織的な話が聞きたかったので良い知見が得られた
---
#### 大LT大会
感想
* `preg_error`はもう少し早く知りたかった
* 発表駆動開発できるような開発速度がほしい
* クソコード -> 遺憾コードの言い換えはちょっと好き
---
## まとめ
このようなプログラミングに関するイベントに参加するのは初めてでしたが、中々来られないので良い経験になりました。
私が感じたことですが、受けたセッションではどこもDockerを使ってテストコードも書いているようだったのでどちらも使えるようになりたいなあという思いが増しました。DockerやDocker-composeは最近頻繁に使うようになっていますが、まだLAMPぐらいしか動かせておらず、つい先日ようやくデータの永続化をするようになったぐらいなのでまだまだ本番環境を構築できるような技術が身についていません。
またテストコードや自動化テストの話もセッションや大LT大会であったので、こちらもできるようにしたいのですがイマイチ書き方がよく分かっていないので手がつけられていません。
今回はPHPのカンファレンスでしたが、来年は他の言語のイベントにも参加したいです。