PHPカンファレンス2017へ(画面越しに)行ってきた
PHPカンファレンス2017
関西、福岡まで行く余裕の無い自分にとってはデブサミと並ぶ年に一度の楽しみ。
現地に行く予定だったけど仕事がシャレにならない状態なので昨年と同様ライブ配信での参戦となってしまった。
こんな有意義な時間を無料で過ごせるなんて本当にありがたい話ですよ。登壇者の方々、スタッフの方々、スポンサーのみなさまには感謝しかないです。来年もよろしくお願いします。
基調講演 session01: PHPの今とこれから2017(廣川 類さん)
ちゃんと聞けなかったけど7.2の変更点?で印象に残ったのは
- PHP拡張の読み込みに拡張子がいらなくなる(winでは.dll、liniux系は.soが省ける)
→最近XAMPPとかは使わないけど、設定ファイルの差異がなくなるのはGOOD - mbstring.func_overloadがDEPRECATEDに
- create_functionがDEPRECATED(クロージャへ)
- password_hashのアルゴリズム追加
- (PHPじゃないけど)HACKがデストラクタを廃止するという話
まるで他人事のようにぼーっと眺めていたことに気づいた。最近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からなので実践可能、今すぐ細かいところからでも試してみましょう。
余談だけど
新原さん、質問がくると自分の言葉で噛み砕いて「こういう質問ということでよい?」と確認しててすんばらしい。きっと丁寧な仕事されるんだろうなぁ。見習いたい。 #phpcon2017 #phpcon2017_1
— ひざまくら (@hizatama) 2017年10月8日
session04: 著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則(徳丸 浩さん)
「高橋のワールドプレス」に不正アクセスしてワードプレスに訂正してあげるという、昨年話題になったWordPress4.7.1(だっけ?)の脆弱性の再現、Welcart、Joomla、phpMyAdmin、Drupalの脆弱性を原因になったソースとともに解説していてすごく分かりやすかった。
- ディレクトリトラバーサル
- SQLインジェクション
- セカンド…なんとか…なんとか…(SQLインジェクションの派生)
- オブジェクトインジェクション
- 正規表現インジェクション
CVECWEは原因によって分類されているのだけど、「入力値の不適切な確認」に属する分類がめちゃくちゃ多かった。悪意のあるユーザーはそこが狙いやすいからなんだろうな。
この辺は「信頼境界の外の(ユーザーが操作できる)値は信頼しない」という原則に基づいて局所的な対策をしていればほぼ防げるんだけど、悲しいかなシステム開発には予算と納期があって、要件として見えないから工数も積みにくくなおざりになってしまうのですよね。
竹迫さんのセッションにも通じるけど、今まさにセキュリティの教育を受けている人たちが経営層になる頃にようやく健全な理想郷が完成するんだろうなぁ…(遠い目)
いつか自分のところがやられて大損害を被るくらいなら、荒療治だけど外部の人たちに脆弱性をついて上長を説得する機会を設けてもらうサービスがあってもいい気はする。(セキュリティに特化したバグバウンティ的な)
兎にも角にも、現場としては信頼境界外の値は信頼しちゃいけません。
プールも入り口で腰まで浸かって消毒してますよね。同じです。プール内でおしっこされるけど。同じです。多分(適当)
おっと、言い忘れていた。
「キャートクマルサーン!!」
session36: PHPアプリケーションにおけるDockerコンテナ・クラスター戦略(@_nishigoriさん)
駆け足で頭が追いつけなかった…。
ああ〜時間全然みてなかったぁぁぁぁorz #phpcon2017
— にしごおり (@_nishigori) 2017年10月8日
せめて「開発環境を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年連開催して思うこと(赤瀬 剛さん)
キャーアカセサーン #phpcon2017
— ひざまくら (@hizatama) 2017年10月8日
LT11 告白に学ぶHTTPステータスコード(高橋 慎一さん)
i'm teapodからのPSR-8紹介からのPSRおじさん登場は笑った。
--
さて、モチベーションぶち上がったことだしこの勢いで
転職しよ…
--
まだまだ見たいのある
2017/09/27
今日の学び
「素人には選択肢を与えない方がよいこともある」
要件の解決が最優先。
選択肢が2つあってどちらでも解決できるなら片方のみを提示した方がすんなりと行く。
そもそも素人に選択肢を与えても判断できないから、こちらの最前案を唯一の手段として提案してしまうのが合理的。
そうでなくても大抵の人は責任を負いたくないのだから、プロとして責任を持って先導したほうが頼れる人認定されやすくなる。
次につながる。
そんなんでよい。
ただし、相手が判断材料を求めているのか答えを求めているのかは見極めが必要。
(判断材料だけ伝えて判断は委ねがちなので苦手だ…)
対エンドクライアントって気づきが多くて楽しいなぁ。(今更かよ)
2017/09/17
自然言語処理の基本と技術
第一章(自然言語処理の概要)を読み。
ざっくりとした歴史と日本での機械翻訳分野の広がり、今や自然言語処理と機械学習は切っても切れない関係になっていることは理解できた。「人工知能は人間を超えるか」の冒頭に書かれている過去2回のブーム(1960年、1980年)と同じ時期に技術革新があったように見える。
こんな昔から研究されてる分野なのに素人が立ち入ってしまって活用なんかできるのかわからないけどとりあえずやってみよう。
あと、PyQ止まってしまってるけど機械学習の単元もオープンしたから並行してやってこ。
EC CUBE3
#eccube3 注文確認メールのテンプレート、注文時に自動送信されるものと管理画面から送るもので別のファイル参照してるのね。メール設定プラグインからは管理画面から送られるものは変更できないので運用にのせられない…。うーん…
— ひざまくら (@hizatama) 2017年9月17日
このかゆい所に手が届かない感じがもどかしい。
とりあえずadmin→defaultのシンボリックリンクをはって参照するようにして対応。
あと、メールテンプレートの中で
app.config.form_country_enableを参照している箇所があったけど、constant.ymlを変更しても反映されなかったのなんでだろ。変更するファイルが違う?初期化時に変えておかないとだめ?DBに登録が必要?
ググっても全然引っかからなかったのは使われていないからなのかな。
とりあえず海外への対応は都道府県に海外を追加して対応することに。
---
最近体力が低下しすぎて7時間くらい寝ないとつらい。
ジム最低でも週一で行こう…
2017/09/04
PyQ
- 25. ユニットテストの書き方 > 2. 色んなassertを使いこなそう
assertの種類についてはテストを書くときにリファレンス見ながら覚えるでよいとして、だいたいメソッド名は条件式を結合してできているってことを頭に入れておけば割となんとかなりそう。
a is None をチェックできるメソッドは「assertIsNone(a)」になる。そんな感じ。
これなら「assertIsNotNone」と「assertNotIsInstance」のNotの位置で迷うことはない。はず。
PyQの模範解答(写経)でテストケースが"test_"で始まったり"test__"で始まったりしていて、なんかもしゃもしゃする。クエスト毎に別の人が問題制作してるのかな?
しかし、よくもまぁ毎度重箱の隅を突くなぁと自分でも関心するよ。
仕事
退職の意向を伝え、4時間くらい話し込んだ。
ぶっちゃけトークみたいなこともしたはずだったけど、肝心な部分は隠されたままで終わり。立ち上げから3年一緒にやってきたのにそんなものかぁとちょっと悲しくなった。
反省点としては、お金の使い方について意見が割れていたのに放置していたこと。早い段階で本音で話し合うべきだった。
そもそも月一くらいでしか会ってなかったし、会っても夢を語る場みたいになっていたので会社についての話はしなかった。ちゃんと事務所を構えて同じ場所にいる時間を増やして、毛繕い的会話に加えて会社の方針について話すべきだった。
(と思ったけど、今までなんども提案してきて全部のらりくらりとかわされていたんだった…。こっちの落ち度みたいな考え方してた…危ない。)
ということで、転職活動開始。
声かけてもらっている会社に行こうとも思ったけど、もうちょっと視野を広げて敢えて知らないところに飛び込むのもアリかなぁ。
ただ、自分の市場価値がよくわからないので、いろんな人に会って値踏みされたりしてメンタル鍛えつつやっていこうかな。
ね…年収450万円くらいでアラサーSEを拾ってくださる企業ありませんか?
2017/09/03
PyQ
仕事を言い訳にサボってしまっていた。
今日は「ユニットテストの書き方>1. ユニットテストの基本と書き方のポイント」だけ。あまり深掘りできていないので何も言えないけど、とりあえず続編でCI導入についてもよろしくお願いします。
PHPの話になっちゃうけど、PHPにも標準機能でテスト機構があればいいよなぁ。PHPUnit便利なんだけど、いざチームで使いたいって話をしても外部ライブラリっていうだけで「インストールにcomposer使うって書いてあるけどcomposerって何?」とか「windowsでなんとかbrokerが使えないってメッセージ出てる」とかインストールの時点で壁が高いのよね。(どんな底辺チームだ)
テスト文化根付かせたい。
そして、早速業務でもcsvの処理にpythonを使ってみた。これまで習ってきたことだけの限定的な知識しかないので逆にやりやすかった。
PHPだとファイルの読み書きに何通りもやり方があるけど、Pythonでは(他にもあるかもしれないけど)一通りしか知らないので迷わずいける。なので、業務効率化用の言語とシステム開発用の言語を分けて覚えておくのはありかもしれない。
とにかくこれからも復習がてら使っていこう。
EC-CUBE
カスタマイズのためにEC-CUBE3 プラグイン仕様を読みながらプラグインをこねくり。
とりあえずの感想としては、フックの登録が若干面倒だった。
- イベントハンドラ登録用のクラス(HogeEvent)をconfig.ymlに書く
- フックするイベント名と呼び出されるメソッド名(onMoge)をevent.ymlに書く
- イベントハンドラ登録用のクラス、メソッド(HogeEvent::onMoge)を書く
イベントハンドラ登録用のクラスをconfig.ymlじゃなくてevent.ymlに書かせて欲しいけど、これはSymfony2の仕様なのかな?
イベントクラスを複数にしたくなったときにevent.ymlに「HogeEvent::onMoge」「FugaEvent::onHogeComplete」とか書けたら嬉しいなー。と思ったけど、一つのプラグインでそこまでフックするような大規模なものは無いか。
まぁ、慣れろって話でした。
業務関係で調べているのであまり時間は無いけど、毎日進めるぞい。
---
最近、朝の冷え込みのせいか起きても体が動かせなくて二度寝することがある。
&先週から扁桃腺がちょい腫れなので栄養とっていっぱい睡眠しよう。