PHP BLT #2 はとても面白いイベントでした!
LT
OSX上で開発をしていて、PHPのbuilt-in serverのようにapacheを使いたくて
「apacheheare」というのを作ったよというトークでした。
apachehereと叩いた場所をドキュメントルートにしたapacheが立ち上がるって便利ですね!
これまで@uzullaさんの発表はPerl系のイベントでしか聞いた事がなかったので
今回PHP系のイベントでも発表が聞けて大満足。
Google製のビッグデータ解析サービス BigQuery を使ってみて
ちょこちょこつまづいた点を共有してくれました。
僕はBigQueryもRedshiftも使った事ないけど、150万溶かした人の話は記憶に新しかったので
聞く人によってはメッチャ参考になる情報なのかも。
ちなみに、BigQuery使っている人という質問に対して、手を挙げる人はほとんどいなかったのも印象的だった。
insertした情報が参照可能になるまで時間を要するとかRDBとは全然別物で面白い
話に出てきた150万溶かした人の話はこちら
http://qiita.com/itkr/items/745d54c781badc148bb9
composerの遅さには以前からイライラしていて、その際に@Hirakuさんの記事を拝見していましたが
packagist.jpが出来ていたのは知りませんでした。
zipダウンロードを並列化するなどしてくれるcomposerプラグインはかなりよさげ。ちょっと後で使ってみよう
https://github.com/hirak/prestissimo
そしてトーク残り時間1分を切ったところからLaravelのダウンロードを開始!
(プラグインを使わない状態で288秒かかっていたとのこと)
(zipダウンロードは6並列の設定とのこと)
(どうだ、終わるのか)
(間に合え! 会場が一体になって見守ってる)
間に合いました!1分かからなかったのかな、すごい!
プラグインで実績つんだら本体にマージを検討中だそうです。
@寺田渉
コーディング規約に関するPSR-1とコーディングスタイルに関するPSR-2について
クイズ形式で発表してくださいました。
CakePHPにpullreqしたらコーディングスタイル違反の指摘を受けたから
という動機も良いですね。
問題はかなりの数ありましたがテンポも良く、真面目な解説が笑いを誘って面白かったです。
『Security Advisories Checker on (Travis|Circle) CI』
SensioLabs社製のライブラリの脆弱チェッカー
Symfonyなどを開発しているフランスの会社
ウェブ上でcomposer.lockをアップロードしてチェックしてくれる。
これをCIに組み込めば継続的にチェックが出来ますねという話でした。
デモではswiftmailerの5.0.0を指定したライブラリーでどうなるかを見せてくださいました。
(swiftmailerは5.2.1未満のバージョンに脆弱性がある)
脆弱性チェックに使っているデータには FriendsOfPHP/security-advisories を使っているらしい。
https://github.com/FriendsOfPHP/security-advisories
完全に信頼してしまわないように注意が必要。
ほぼコストゼロで脆弱性チェックが可能なのは良いですね。
githubにlumen使ったサンプルがあるよとのこと。これかな
https://github.com/serima/security-checker-on-lumen
2015年11月30日にリリースしたとのこと。
そして2017年11月には3.4が出るらしい。なぜそんな先の事まで分かるかというと
Symfonyは日付ベースでバージョンアップしているんだとか。ほほー
2系が出たときは変わりすぎてSymfonyユーザー達は阿鼻叫喚だったが
3系では新機能が一切増えていないらしい。
互換性に関するコードが削除されている。2系でデプリケーテッドになっているのを消しておく必要がある。
少しだけディレクトリ構成が変更されている。ほほー
こちら最近テスト書き始めた僕としてはとても参考になった発表でした。
2006年 James Carr氏の有名なエントリがある。ほほー これかな
http://blog.james-carr.org/2006/11/03/tdd-anti-patterns/
22あるアンチパターンから3つ紹介
-
The Liar(嘘つき)
全部テストがパスされているようにみえるが、意図したテストが行われていない
嘘ついているか見分けるのが大変 -
Excessive Setup(過度のSetup)
テストを開始するために多くの設定作業を必要とする
テスト実行するためのコスト(手間)が大きいと変更に弱いテストになる
=> 設計がおかしいサイン
1つのユニットテストで複数のオブジェクトをテストしない
mockを使ってやりたいテストに集中しよう -
The Giant(巨人)
God Object
ほにゃほにゃManagerのような何でもできるクラス
とにかくテストがでかい
=> オブジェクトの分割を検討しよう
、、、、、何かどれも心当たりあった、、残りの19パターンを知るのが怖い、、
でもとても大事そうだから熟読しておこう。そしてテスト直そうと発表聞いてて思いました。
そういえばPHPでバージョン切替したいなーと最近思っていたのでとても参考になる発表でした。
PHPを$HOMEディレクトリにインストールしてバージョンを切り替えたりできる
しかし、PATHにカレントディレクトリが登録されてしまう問題があって直されたお話。
1.20.4で取り込まれているとのこと。凄い!
『メルカリでの1年を5分で喋る』
メルカリに入社してからの事をザックリ紹介してくださいました。
あまり詳細にも触れないゆるいトークでしたが、聞き手としても息抜きな感じで良かったです。
下記のような内容でした
1-3月
自分の開発環境つくった
NewRelic入れた
リリースフローヤバイと思った
社内ITの話
Wifiは良いやつ買っといたほうがいいですよ
今は専任のスペシャリストいる
リリース係が手動リリース
一週間くらいでChatOpsになった
4-6月
前職のボスがメルカリでCTOとしてやってきた
7-9月
PHP5.3から5.6になった
5.6化
ライブラリが対応してないやつがあって辛い
回帰テストしたけど、一部が5.3の環境でやっていた
10-
IntelliJにしてよかった
この発表とても良かったです。早速今の現場に取り入れたいと思いました!!
コーディング規約の必要性から始まり、既に開発がけっこう進んでいるPJが
どうやってコーディング規約を手に入れるべきかというお話でした。
PHPとWebサーバーの構成を4通り提案
(AdventCalendarで記事を書いたけど、どうもウソっぽい)
結果が安定しない
眠れない
会社を1日休んで改善活動
目的と方法を間違っていた
シングルスレッドで計測してた。
並列リクエストを大量に送りつけて、性能が劣化するまでやったよ。というお話でした。
ベンチマークツールの使い方が目的にあっているかが重要とのこと。
(ふむふむ。。。siegeについて何も知らないので調べてみよう)
AWS Lambda でPHPを動かしたい
PHPはインストールされていないからPHPコマンドをアップロードすれば使える
LambdaはSQLite3が使える
ここまではQiitaに書いてあるとのこと。
(Qiitaの記事は読んでて、凄いことする人いるなーと思ってたので本人見れて嬉しかった)
ただし、やたら遅い
平均1.36秒
Node.JSから直接起動するようにしたけど、あまり変わらない
Lambdaのメモリを増やしたら速くなった
AWS API GatewayでHTMLを返そうとすると大変
ほほー
Web全体の25%のCMSで使われているらしい
でもcomposerフレンドリーではない
独自の資産てテーマだけじゃないか という感じで発表が始まり、
WPのCoreもcomposerで入るようになるプラグインを作ったよというお話でした。
WordPress.Skeleton
https://github.com/qckanemoto/WordPress.Skeleton
@uzullaさんからサポート期間に関する質問(懸念?)があり「飽きるまで」とのことw
PHPでダイエットといえばDietCakeですよね? という感じで発表が進み
余計なものを色々そぎ落とし、自社のサービスに最適化したフレームワーク
Dietcubeを作ったよというお話でした。
まぁ何より、LT中に Dietcube をgithubにpushして初公開するという演出!!
なんか得した気分!
そんなDietcubeはこちらです。
https://github.com/mercari/dietcube
PHP4からPHP5.6へダウンタイムゼロで!という恐るべき発表でした。しかも実例の紹介。
ダウンタイム許容できるか => ゼロを目指す
バージョンタイムの切り戻しはどうか => 必要
iptablesをinit scriptにしておく事で実現したとのこと。
ペパボテックブログに続きは書いてくださるそうです。
『Install PHP7 on CentOS7 By Ansible』
PHP7 on CentOS7 の環境を作る。
更にそれをAnsibleで自動化してみたよというお話
Ansible使ったことないのでピンと来ませんでしたが、ググってみるとイケてるっぽいですね。使ってみます。
発表中にデモでvagrant upを叩くもタイムオーバーとなってしまいました。
(でも懇親会中にリベンジ成功していましたw)
rustという言語でPHP拡張を書くというお話。もう僕には理解が及ばない世界でした。下記なんとかメモったやつを共有
rustとは
mozillaが開発
better C++
メモリに対して危険な操作をするとコンパイル時に怒ってくれる
Modern syntax
optional
Generics & Trait(Interfaceみたいないやつ)
rustからshared objectファイルを作る
- cargo new (composer initみたいな)
- write a function in rust
....
Link.so file from php-ext
Carbonをrustに移植したことがある。
今日に向けてPHP拡張にできないかやってみたけど、間に合わなかった。
ビルドしたことある方? 会場:けっこうおおい
発表者の@b-kaxaもビルドに初挑戦してみたというお話。
ただし5系でも7系でもなく PHP6!
最後の 本当にPHP6なのか?という疑問と検証方法も面白かったです。
@のりぃ
Twigって使った事なかったんですが、発表聞いてたら興味湧いてきました。
指定テンプレートが無い場合、何もしない ignore missing とか確かに便利ですね。
条件付きのforか〜 僕そういうの好きだな〜 って思いながら聞いてました。
引数に与えたものをTwigとして再度評価する template_from_string
これは好きじゃないな〜 って思いながら聞いてましたw
『今更Cake2.3でWebAPI作った話』
WebAPIを作ってみて得られた経験を共有してくださいました。
スライド公開されていないようなので、下記は私のメモっす。
Cake2.3を採用したのは大人の事情
オライリーの Web APIを読みました。
バージョニング
整数のが良いなって思った
エラーコード
データ取得系で何もなかった場合204を返すようにしてしまった。
204返しつつ他に何か返す場合は要注意
未だに悩んでいること
ページネーション
一応、limit offset 時刻形式でページネーションするようにしたけど、
ベストプラクティスが欲しい、、
迷ったらシンプルに、わかりやすくを合言葉に
人生初LTとの事でしたがとても良かったです。お疲れ様でした!
懇親会LT
うずらさんが喋る喋る!
いくつも面白いエピソードやツールを発表してくれていました。
ドキュネオさんもリベンジに成功されてたり
僕は用事があって途中で帰ったんですが、本当に悔やまれる。もっと聞きたかった。
PHP BLT #2 に参加してみて
PHPのイベントに参加することがあまりないので、他のイベントと比較することは出来ませんが
無料で参加出来て、これだけ充実した発表が聞けて、美味しいビールに軽食まで出て、、、、、最高ですね!
こんな素晴らしいイベントを主催してくださったメルカリさん!ありがとうございました!
お知らせ
PHP BLT #3 開催決定だそうです!
http://phpblt.connpass.com/event/25341/