PHPerKaigi 2018 に参加してきました。

こんにちはみなさん、@niisan-tokyoです

先日PHPerKaigiなる、PHPerのイベントが有りましたので、当然のように参加してきました。 このイベントは今年はじめて開催されるものであり、今回の盛り上がりが、来年・再来年の開催に影響を与えるとあって、 登壇者のみならず、参加者全員がある種の緊張感を持って望んでいました。

どのセッションがどうだったのか、とかは後でたっぷり述べるとして、まずは全体の感想などを書いておきます。

全体

場所

練馬駅すぐそばのホールで開催されたのですが、地味に練馬で開催されたというところが新鮮でした。 ほとんど行ったことがなかった場所だったので、乗換案内とかを駆使しながら現地に向かいましたが、複雑でした。

会場

会場は今回のイベントにちょうどいい大きさでした。 欲を言えば、スクリーンが結構下の方まで伸びているので、最前列以外はスライドの下側が見切れちゃうという点かと思いますが、 きっと来年には改善されると期待されます ( 願望 )。

スタッフ

こういったイベントは裏方のスタッフの質により成否の一端が決まると言われますが、今回の運営も設営は丁寧だし、進行も場のつなぎも文句なかったです。 私は酒が飲めないので、「ビールばかりだなぁ」とぼやいたらソフトドリンクが追加でやってくるという親切さも見せてもらいました。 PHPカンファレンスやPHP勉強会でもスタッフをやっている方がいらっしゃったので、なれているという面もあるのでしょうが、今回のイベントを成功させようという並々ならぬ気概を感じました。

トーク

今回は2ブロックあって、ブロックaではトーク(講演)を、ブロックbでは様々なイベントが行われていました。 今回は基本的にはトークを中心に参加しましたが、個々の講演については後述しようかと思います。

個人的には@uzulla さんの「大統一PHP」に懐かしみを覚え、twitterではしゃぎまくるという痴態を晒す程度には興奮しておりました。

トークはとにかく初心者… にはちょっと難しいものもありましたが、みんなトークがうまかったので、それほどには気にならなかったかと。 あと、前夜祭ははじめから酒が入っていたからか、みんな妙にテンションが高かったですね。

感想

今回のPHPerKaigiのような出来たてのイベントはやはり波乱があっていいです。 ちょっとした段取りのミスとかも、それはそれで醍醐味ではありますし、そんなインシデントを参加者全員でフォローしていこうというのも、温かみがあっていいです。 ベストトーカーのQRコード読み取りが、うまくいかないものがあったりしたのですが、すぐに対応してくれたのでちゃんと投票できました。

来年を心待ちにしています!

トーク

ここからは私が視聴し、現在スライドが公開されているトークについて、個人的な感想を述べていきます。

前夜祭

当日は2日構成で、前夜祭及び本番となっていました。 前夜祭ははじめからアルコールが配られたりしていたので、登壇者も参加者もスタッフも(!)テンションが高かったです。

PHPでテスティングフレームワークを実装する前に知っておきたい勘所

フレームワークではなく、テスティングフレームワークを作るときに知っておきたいことを、かなり丁寧に説明していました。 テストなんてのは、はじめは簡単なもので良くて、それこそ

if ($ok === true) {
    echo "OK\n";
} else {
    echo "NG!!\n";
}

みたいなものでも良いと思っています。ここからだんだんと「assertの種類がほしい」「NGの詳細が欲しい」など、追加で欲しくなる要素が出てくるのですが、その過程を作っていました。 「PHPでPowerAssertっぽいことをやる」が、スルッと入っている部分にちょっとビビりました。

PHP7.1 is fast(?)

本来は予定になかったのですが、間のつなぎにと入れてくれた発表ですね。 海外で発表したものをこちらで日本語で再演してくれました。英語のテンションも聞いてみたかった感はありますが。 @uzullaさんの発表はいつもながら勢いが凄くて、聞いててウキウキしてくるわけですが、今回の発表もPHPのベンチマークを取ろうとしてたらベンチマークツールの比較になったりベンチマークを自作したり、エンジニアにありがちな調べてたら当初の目的がどんどん発展していく状況が、臨場感を持って再現されていました。 なにげにReactPHPの名前が出てきていました。本当にさり気なくですが。

PHP と SAPI と ZendEngine3 と

SAPIは「サピ」じゃなくて「エスエーピーアイ」と読む。 というのが大事ではなくて、PHPが内部でどういう動きをしているのかを説明しています。 初心者向けかどうかと言われるとちょっと難しい、というか、自身もあまり良くわかっていない動きがあったりしました。 なんでスーパーグローバル変数が普通に使えてるんだろう、とかね。

ZTSとかの話が普通に聞けたことにびっくりしてました。 これはPHPでマルチスレッドなプログラミングを実施する際に必要なオプションになります。 ( こちらを参照 )

大統一PHP

何を統一するんだ!?というものですが、他の言語が実現しているWebサーバの挙動をPHPでも実現してやろうというもので、手始めに「httpd」をPHPで実行しています。 で、その実行手段にReactPHPを使うわけですが、これ、2年くらい前にPHPカンファレンス関西で私も非同期処理の文脈で紹介していました。 当時は色々やった挙句、PHPで非同期処理するのは難しい、ということで、それ以来殆ど見ていなかったのですが、まさかここで見ることになるとは! ReactPHPの本サイトもいつの間にかリニューアルされていて、かつて Node.jsのパクリみたいだったもっさりとした感じだったものが、シュッとした感じのモダンなものになっていました。しかも、本番でReactPHPを使用している例もあるとのこと ( バックのAPIとしてらしいけど )!

とにかくこの発表後の私は、非常に高揚していました。

本番

前夜祭の次は本番です。 流石に朝っぱらからビールは飲まないらしく、前日に比べて落ち着いた雰囲気となっていました。

今からでも出来る!Webサービスモニタリング!!

ベストトーカー狙うマンのそーだいさんによるWebサービスをモニタリングしようという話。 アプリケーションログとかアクセスログとかくらいは私でも簡単に制御できるのですが、クライアント側のログとかネットワークのログとかなると、よく分からんかったりするのです。 また、アプリケーションログにしても「このログを取ろう」という、明確な意思を持たないと、そもそもログを採取しないので、勘所を示されていたのはありがたい限りです。

SOLIDの原則ってどんなふうに使うの?

後藤さんによる本イベントにおけるベストトーク賞です。 オープン・クローズドの原則(OCP)がなぜ大事なのかを、実例を説明しておられました。 このとき、連日私のtweetが一気に上がったのを警戒されたのか、このセッションの開始時にtwitterがロックされるという珍事にさらされており、ほとんどコメントできていませんでしたが、ちゃんと聞いていましたぞ。 質問で、「エンティティにpresenterの機能を持たせてもいいんじゃないか」って言う意見がありまして、多分私もそいういう実装をすると思いました。

サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技

いつもはLTなどでMySQLの各バージョンにおける罠を凄まじい量のスライドとともに怒涛の勢いで説明していく、@yoku0825 さんの発表です。 データベースがふっとんだときの最終手段は「フルバックアップ + バイナリログリプレイ」ですが、これを実現するためにいろいろな工夫やサポートされる機能があって、私自身、GTIDって初めて知りました。 というか、RDSみたいな外部のサービスって、スナップショット (フルバックアップ) は取っていますが、バイナリログってどうなっているんでしょう? multi-AZ の stanby とかで同期できているから問題ないって感じなんでしょうかね?

Hackで作るマイクロフレームワーク

何とかしてHack仲間を増やしたい心意気を感じる@ytakeさんの発表でした。 HackはPHPに厳格な型を入れたり、記法を追加したりした、HHVMで動く新しい言語です。 当初はPHP由来だったので、PHPのcomposerを経由してPHPの資産を流用できたようですが、最近は言語としての乖離が出てきてしまい、色々と悩む部分も出てきた模様。 Hack純正のWebフレームワークもまだ確固としたものはないということなので、逆にWebフレームワークを開発したい人にはブルーオーシャンである!という素敵な返答をいただけました。

BEAR.Sunday (2018)

以前、弊社にて講演いただいた郡山さんによるBEAR.Sundayという、彼自身が開発・メンテしているPHPフレームワークの紹介です。 巷ではLaravelやCakeなどがPHPのフレームワークとしてよく取り上げられていますが、このBEAR.Sundayはこれらのフレームワークとは思想が異なっており、玄人好みのフレームワークとして知る人ぞ知るものとなっています。 発表内容も、理路整然としており、すべてを聞いたにはBEAR.Sundayを使いたくなること間違いなしです。 発表後のなんでも質問コーナーでも少しお話させていただきましたが、BEAR.Sundayが、いかに我々現場のエンジニアを困らせないようにするために配慮しているかを改めて認識しました。 いやぁ、また使いたくなっちゃいましたね。

PHPStanで始める継続的静的解析

最後は@hiraku さんの発表です。前日に話した感じ、ものすごく緊張しておられましたが、いざ講演となると滑らかに喋っていたのはすごいところです。 PHPの静的解析といえばPhanがありますが、あれはPHPDocを見て静的解析をしていますが、こちらはPHPDocがなくても、内部の演算内容やreturn から問題のある部分を指摘してくれるうえ、無視するエラーとかを細かくせっっていできるということで、採用したとのことです。 CIで致命的なものがあったら弾きたい、みたいなことをおっしゃっていたので、それは実現できているのか聞いてみたところ、部分的に実施しているとのことです。

最後に

ここまでお読みいただいた方、ありがとうございます。 PHPerKaigiのように、ユーザー主導で行われるイベントというものは、大なり小なり参加しているユーザー自身の貢献により、その成否が変わります。 貢献というのは、何も資金を出す、ということだけではありません。twitterで感銘を受けたフレーズをつぶやいたり、ブログに感想を綴ったりして、イベントを通して自分が得られたことを出力していくこともまた、そのイベントに意義を与える重要な貢献だと思います。 オウチに帰ってブログを書くまでがカンファレンス、なんて名言(?)もありますし、ReactPHPネタや久々のBEAR.Sundayネタで非常に満足したわけですが、ついでに自分が何感じたんだっけみたいなものをこういうブログに書いておくと、あとで思い出しやすいかなぁと思ったので、書いたしだいです。

今回はこんなところです。

Author