PHPカンファレンス2017へ(画面越しに)行ってきた

PHPカンファレンス2017

関西、福岡まで行く余裕の無い自分にとってはデブサミと並ぶ年に一度の楽しみ。

現地に行く予定だったけど仕事がシャレにならない状態なので昨年と同様ライブ配信での参戦となってしまった。

こんな有意義な時間を無料で過ごせるなんて本当にありがたい話ですよ。登壇者の方々、スタッフの方々、スポンサーのみなさまには感謝しかないです。来年もよろしくお願いします。

 

基調講演 session01: PHPの今とこれから2017(廣川 類さん)

ちゃんと聞けなかったけど7.2の変更点?で印象に残ったのは

 

まるで他人事のようにぼーっと眺めていたことに気づいた。最近LPの構築とかCMSばかりでTHE・開発案件に関わってないからだ。

そういえば声かけていただいている会社、制作会社だ…。

 

開発会社に行きたい…!

 

関係無いけど画面越しにみる廣川さんは顔が整いすぎてて、登場したとき3Dモデルかと思った。(ペチコン2016の動画も同じ)

 

session15: OPcache の最適化器の今(Yuji Uchiyamaさん)

仕事が捗っていて細かいところは聞けなかったけど、PHP7.1であまり積極的に使われていない最適化もあるというところが印象的だった。背景の説明あったかな?聞き逃してたかも…。

それでもOPcacheの効果は上がっているのかぁ

PHP 7.1でOPcacheがすごい速くなってた - Qiita

 

こういう細かいところで調整してくれる人たちがいるから、自分らは富豪的プログラミングができるのかな…?

 

はい…アーカイブ見なおします…

 

session07: PHPによるWebアプリ脆弱性体験トレーニング(Yoshinori TAKESAKO)

Golden Axeのネタが記憶を持っていってしまったので搾り出し…

  • md5はsaltが無いと同じハッシュが作れる
  • というかmd5を逆引きできるサイトもあるからもうmd5使うな…!
  • bad usbという接続すると勝手にキーが打たれるクラックされた雰囲気を味わえるUSBデバイスなんかを教材にしてたりする
    →物理デバイスはイメージしやすくて教材にはうってつけですね
  • セキュリティの穴を体験できるサイトがある(ちらーとしか見られてない…)

 

若い頃からセキュリティに触れさせることで、セキュリティ人材不足が解消したらよいですね。

(完全に仕事に夢中だった。すみません。。)

 

session03: 型を意識したPHPアプリケーション開発(Masashi Shinbara)

キャーシンバラサーン!

 

ほぼ全員が聞いたことのある(w)PHP現場リスナーとしてはミーハー心に身を任せて選択せざるを得なかった。新原さんの話し方好きです。

 

講演の内容としてはドメインに特化した型(クラス)を使うことで防御的プログラミングができるという話で、型なしで書かれたプログラムを、型なし→プリミティブ型あり→ドメインに特化した型を使用したプログラムに変えていくライブコーディングを披露。

 

今回は消費税を例にしていたけど、その程度なら余程のおっちょこちょいじゃなければわかるし簡単なテストで防げるしphpdocあたりでも防げる。

問題はこれを自分のドメインに持ち込めるのか、というところ。ちょこっと質疑応答でも言及されていたけど、データの機能(金額)とドメイン(消費税(抜き|込み)価格)を切り分けて考えられる設計力が必要なんですね。新原さんは設計時点でこのあたりまで考えてるとおっしゃっていたので、今後Podcastで設計まわりのお話が聞けることを期待しましょう。

 

Classを使ったタイプヒンティングはPHP5からなので実践可能、今すぐ細かいところからでも試してみましょう。

 

余談だけど

 

session04: 著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則(徳丸 浩さん)

著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則

「高橋のワールドプレス」に不正アクセスしてワードプレスに訂正してあげるという、昨年話題になったWordPress4.7.1(だっけ?)の脆弱性の再現、Welcart、Joomla、phpMyAdminDrupal脆弱性を原因になったソースとともに解説していてすごく分かりやすかった。

 

CVECWEは原因によって分類されているのだけど、「入力値の不適切な確認」に属する分類がめちゃくちゃ多かった。悪意のあるユーザーはそこが狙いやすいからなんだろうな。

この辺は「信頼境界の外の(ユーザーが操作できる)値は信頼しない」という原則に基づいて局所的な対策をしていればほぼ防げるんだけど、悲しいかなシステム開発には予算と納期があって、要件として見えないから工数も積みにくくなおざりになってしまうのですよね。

竹迫さんのセッションにも通じるけど、今まさにセキュリティの教育を受けている人たちが経営層になる頃にようやく健全な理想郷が完成するんだろうなぁ…(遠い目)

いつか自分のところがやられて大損害を被るくらいなら、荒療治だけど外部の人たちに脆弱性をついて上長を説得する機会を設けてもらうサービスがあってもいい気はする。(セキュリティに特化したバグバウンティ的な)

 

兎にも角にも、現場としては信頼境界外の値は信頼しちゃいけません。

プールも入り口で腰まで浸かって消毒してますよね。同じです。プール内でおしっこされるけど。同じです。多分(適当)

 

おっと、言い忘れていた。

「キャートクマルサーン!!」

 

session36: PHPアプリケーションにおけるDockerコンテナ・クラスター戦略(@_nishigoriさん)

駆け足で頭が追いつけなかった…。

せめて「開発環境をDockerにしてみませんか?」を先に見ていればDockerfileの高速説明の雰囲気は感じ取れたかも…?

…ブログ待ち!

 

session28: 開発環境をDockerにしてみませんか?(necomori LLC 高橋邦彦さん)

Vagrant+Ansibleとかやってる人、Dockerにしてみませんか?的なDocker入門だった。

 

2年前くらいに開発環境を統一すべくVagrantを導入したけど、後から入ってきた人に「なんでDockerにしないんですか?」と言われてしまったのを思い出す。

 

あの時はまだDocker for Windowsなんてものはなくて、知見もなくて、開発機はWindowsがメインだったので、「結局VirtualBox入れるんだから一発でいけるVagrantでええやん」と思考停止気味にVagrantを採用してしまった。

もうその現場からは抜けたけど、後で聞いた話によるとメンバーが入れ替わって環境構築するときみんなが一斉にサーバーに置いたVagrant Boxを取りに行ったため帯域が圧迫されてちょっと問題になったとか。爆弾を置いて去った感じになってしまった。

その時にmac使っていたらDocker一択だったんだろうなぁ…。

 

昔話になってしまったので戻す。

お話にもあったけど「プロビジョンが失敗する問題」が結構深刻なので今から開発環境作るならDockerを選ぶます。 

自分がmacだというのもあるけど、Vagrantのプロビジョンに失敗してモチベーション下げることに比べれば学習コストは安いもんかなぁと。

 

 

講演の内容はとてもわかりやすかった。

Windowsのデモは見られなかったのが残念。

きっと実際に現場ではWindows機はDocker Toolboxを使っていて、VirtualBoxが間に入ることで当初macで起きていた問題がWindowsでも起きているんだろうけど、これをどう解決しているのか知りたいなぁ。

 

 

macを買う」とかだったりしてw

 

 

session24: Robo を使ったモダンなタスク管理と自動化(Kenichirou Kishidaさん)

新原さんのセッションの裏だったのでアーカイブ視聴。Roboは初耳。Phingは自分も使ったことがあるけど、あのXMLが辛すぎて一瞬で使わなくなってしまった記憶が…。書くことが多いものって秘伝のタレ化しやすいですよね。

 

デモではローカルサーバーをたててファイル監視してSCSSの自動コンパイルだったり、Dockerを起動したりしていた。

gulpの上位互換的に使えるなら乗り換えも全然アリなんじゃないかな。ただ、githubを見た感じ100個くらいしかrobo-tasksがないのでnpmの物量で殴られると死ぬ。

理想を言うとgulpがやる部分はフロントエンド専門の人によろしくしたい。

 

とりあえず、今の時点で使ってるgulpタスク(ローカルサーバー、ライブリロード、SCSSビルド、jsの結合+minifyくらい)をRoboに置き換えられないかrobo-tasks漁りしてみよう。

 

と思ったらRoboからgulpも呼び出せるみたいw

完全に乗り換えられるやつ。

 

session27: DockerでPHPアプリケーションを本番リリースするまで(Ryo Tomidokoroさん)

開発環境でのDocker利用は多いが本番環境利用率はまだまだ高くない(会場でも一人だけ)し、自分に至っては試したレベルで開発に使ったことが無い。

噂レベルで「Dockerの本番運用なんて怖すぎ」なんて聞くからまだ業界的にノウハウ不足なのかなーと思って手を出せずにいた状態。

 

講演の内容は以下の組み合わせで手軽に本番環境デプロイできるというもの。

  • Kubernetes + GKE
  • Docker Swarm + AWS or Azure
  • Heroku

確かにデモを見た感じ、DockerImageさえ作れていればデプロイは一瞬。HerokuとGKEでやっていたけど、GKEのkubectlでexposeして1分でGIPが付与されるのはコンテナのフットワークの軽さを見せつけられて気持ちよかった。

 

こんなん超楽しそうじゃん。

思惑通り本番環境にデプロイしてみたくなってきた。

まずはTomidokoroさんおすすめのGKEで試してみよう。

 

余談だけど、Tomidokoroさんの喋り方安定感あって好きだ。

 

LT01 MDD(筋肉駆動開発)(@MiracleTShirt09さん)

LTはアーカイブされないということで、おしっこ我慢しながら仕事しながらでちゃんと聞けなかったけど筋肉は正義ということ。

結果にコミットするIoTデバイスとあわせてMDDしてこ。

 

LT02 初めてPHPを触った話(えるもあさん)

LaravelのCVEは1件だけとか。

Laravel Laravel : CVE security vulnerabilities, versions and detailed reports

マジだ!

 

LT04 結果にコミットするIoTデバイスを作ってみたら本当に痩せた話(山田寛延さん)

異質のクオリティ。

服の内側につけられるなら普通に欲しいw

 

LT07 PHPカンファレンス福岡を3年連開催して思うこと(赤瀬 剛さん)

 

LT11 告白に学ぶHTTPステータスコード(高橋 慎一さん)

i'm teapodからのPSR-8紹介からのPSRおじさん登場は笑った。

 

 

--

さて、モチベーションぶち上がったことだしこの勢いで

 

転職しよ…

 

 

-- 

まだまだ見たいのある