NIJIBOX

PHPカンファレンス関西 2017 に参加してきました。

更新日 2019.12.10
PHPカンファレンス関西 2017 に参加してきました。

[markdown]
こんにちはみなさん

連投失礼します、@niisan-tokyoです。

前日プロジェクトの合宿に行ったのですが、そのまま今度は大阪で開催されたPHPカンファレンス関西2017に、スピーカーとして参加してきました。

## いざ大阪
新幹線から富士山も撮れて、幸先がいいスタートを切れました!

そのまま何事もなく大阪に到着。

なぜ駅構内に車が展示されているのかよくわかりませんが、これが大阪なのです!

そのまま大阪駅まで行き、当日泊まるホテルに直行。 ホテルサンルート梅田というホテルに泊まりましたが、とても快適でした。


間違えて喫煙ルーム取っちゃったんですが、特に匂いも気にならず、お値段も周辺のホテルに比べれば安いので、個人的にはとても満足しました。

## スピーカーズディナー
さて、このカンファレンスにスピーカーとして参加する醍醐味の一つは、前日にスピーカーズディナーと称して、スピーカー限定の懇親会が開かれることです。今回は繁華街の一角にある 炭焼きBAR 心 梅田店です。お店の様子を見ると、とても13人のスピーカーが入りきるようには思えませんが、実際には2階があってそこで飲食できるようになっています。


で、肝心の会場なんですが・・・あまりの驚きに写真を取ることすら忘れてしまったのですが、まごうことなき そして お部屋 でした。まるで友達の家に遊びに行ったかのような圧倒的アットホーム感に襲われ、飲む前からテンションは上がるし、一方で料理は異常にうまい( 個人的にはイモと肉がよかった )しで、なんというかすごい時間でした。

スピーカーの中には他のカンファレンスを運営している方もいて、どんなふうにプロポーサルを採択しているかの裏話とかも聞いたりしました。

うんうん、そうですよね、いまさら「テストを書きましょう」なんて 当たり前すぎること を言ったって、意味ないですよね。

## 当日
いよいよ本番です。前日は2回ほど練習したところ、喉がやばくなりそうだったので、さっさと寝まして、起きてからもう2回ほど練習して、ちょちょいとスライドを修正しました。


大阪来たらたこ焼き食べないとね!

食後は一回練習してから部屋でゴロゴロ。外出ると暑いので、開場するまで時間を潰します。やはり登壇するとなるとそわそわしちゃうのですが、練習するとそれだけ喉が危なくなってくるので、あまり練習もできないというもどかしい時間を過ごしました。

## カンファレンス
いよいよ、カンファレンスの開始となります。 例によって、各個人の属性をネームカードにペタペタ貼る様になっています。


当然私は「docker」「laravel」「遠征組」属性を付けました。


こちらは会場の様子です。去年も思うのですが、漂う熱気を感じます。

## 発表内容ピックアップ
参加者として幾つかの発表を聞きましたが、その中で幾つか感想を述べておきます。

* PHPの現場から by @shin1x1 さん

PHPカンファレンス関西を毎年運営しておられた新原さんによる基調講演です。

PHPって、昔からdisられたり、当のPHPerすら自虐したりしてきて、下に見られてきたように思いますが、にも関わらず生き残り続け、8割を超える公開WebサイトがPHPを使っている状況になっています。

これって、やっぱりPHPが言語として「強力」であるっていうことの証左だと思うのですよね。強力っていうのは、スピードとか堅牢性とかに限らず、平易な文法による生産性の高さとか、他を圧倒するこれでもかと充実させたマニュアルとか、総合的な価値判断のもとで選択肢として残れることだと思います。

「PHPエンジニアよ胸を張れ」という言葉を贈られていますように、もはやPHPを使っていることに負い目を感じる必要はありません。堂々とPHPを使えばよいのです。

* テストと仲良くするためのCodeceptionのはじめかた by @ippey_s さん

テストを書きましょうなんて、いまどき当然すぎる話ですが、では「効率よく」「適切な」テストを書くにはどうすればよいか、というのは未だ活発に議論すべきことです。私などは、基本的にはリクエスト単位でテストを行い、その際に発生した影響をもれなく確認していくスタイルを取るようにしています。

Codeceptionはそんな議論に一石を投じるべく作られたテスティングフレームワークの一つです。 名前だけはたまに聞いていたのですが、実際にどういうものかの詳細は今回はじめて知りました。 詳細な内容はスライドの方をご参照いただくとして、私にとってインパクトのあった部分は、テストステージを明確に分けているというところでした。

テストステージを分けられるということは、各テストに対して、明確に方針を決められるということで、どのレベルまでテストするかを客観的に判断しやすいということです。これによって、どこまでテストしなければならないのかについていちいち考える必要がなくなり、テストを書くのが苦にならなくなるということになって、テストと仲良くなれる!ということにもなると思います。

## 登壇
### 登壇の様子
さて私の登壇の番です。微妙に髪型を突っ込まれつつ開始となりました。スライドはspeaker deckにあげていますので、興味があったら見てやってください。

ひたすら楽してPHPアプリをコンテナ運用

個人的にやっちゃったなぁっていうのは、題名に「楽して」なんてキーワードを入れちゃったせいで、「楽になった!」を明確にしなきゃいけなくなったことでしたが、そういうどうでもいい裏話は置いておきましょう。

人事の人が来てくれて、いくつか登壇時の様子を撮ってくれていました。若干滑った感のあるタイトルですが、まさかここまで人が集まるとは思っていなかったです。

今回は緊張せずにやるぞ!とか思っていたのですが、「その手はなんだ!?」とか「スピーカー用のシャツ着てるのに上着のせいでわかりにくいじゃん」とか、ツッコミどころ多数。ただ、時間ほぼぴったりで終了できたので、とりあえず満足しました。

今回の発表の趣旨は以下のとおりです。

* PHPの動作環境からサーバの依存性を取り除くために、コンテナを使って開発しよう
* コンテナを使って開発するのなら、運用もコンテナでやろう
* 自前でコンテナ運用するのは大変なのでECSのようなサービスを使って楽をしよう

### 質問と回答
ありがたいことに、今回は会場及び懇親会でも幾つか質問をいただきました。会場で頂いた質問について紹介してみましょう。

1. ECSだと、ロールバックはどのように行われるのか、どの程度の時間がかかるのか
発表中に考慮事項としてロールバックの話題を入れたのですが、その回答をスライドの中に入れきれなかったので、ご質問いただきました。

これについての回答ですが、コンテナの動作を定義している「タスク」がリビジョン管理されています。よって、ロールバックはそのリビジョンを前の状態に戻すことで実現できます。

現在は手動で行っていますが、ロールバックはタスクを管理する「サービス」に動作させるタスクのリビジョンを指定するだけなので、コンテナの入れ替えを含めて5分程度で終わります

2. なぜECSを選んだのか? GKEとか選択肢になかったのか
コンテナの運用サービスはいくつかあって、AWSのECS以外にもGoogle Cloud Platform のGKEやさくらインターネットのArukasなんてのがありました。これらの中からECSを選んだのはなぜなのかというご質問です。

率直な理由としてはAWSを使っていたので、その延長としてECSを使ったというものです。すでにプロトタイプはLPなどがAWSで動いていたので、そのままAWSを使い続けたほうが決済面で楽なのと、使ってみたら割と簡単に使えてしまったので、そのまま使ったというのが実情です。

3. 本番と開発は本当に一致したか
コンテナで開発すると、本番環境と開発環境で差異がなくなるのでよい!という主張に対して、本当の本当にそうなのかというご質問ですね。

実開発ではちょっとコードを修正してはスクリプトの動作を確認するということをするので、いちいちコンテナをビルドしていると時間がかかってしまいます。 なので、私の場合は開発ではボリューム共有を使い、本番ではコンテナに動作コードを含めるという方法を使っていて、完全に一致しているわけではありません。 このあたりはちょっと妥協しちゃってます。

### 感想
会場の反応から思ったのですが、コンテナで開発したら、コンテナで運用もしたくなると考えていたのですが、思いのほかそのハードルが高かったのか、コンテナで開発まではしていても運用まで届いていないというのが多かった印象です。 登壇後にAWSの方ともお話する機会を得たのですが、PHP界ではまだまだECSの導入事例が少ない、もしくは紹介されないケースが多い模様。

これも個人的な見解になりますが、サーバの依存性は長期の運用になればなるほど析出してきて、例えば新しいアプリケーショを入れるにも、古いバージョンのPHPを使わなければならなかったり、OSのサポート切れによって移設する必要ができた際に、新サーバと旧サーバ間の違いに苦しんだりします。

というわけで、コンテナで開発・運用しましょう!

## 懇親会
お祭りも終盤、懇親会の時間となりました。例によって懇親会のLTも行われるわけですが、今回はこんな感じの小洒落た会場です。

問題は人数がかなりいるため、思ったより狭いということでしょうか。。。

今回は会場でいろんな方から話しかけていただけました! こういう場で意見交換できるというのが一番の楽しみなのですよ。

食料が瞬時に尽きましたが、話が途切れることがなかったので、まぁ、あまり問題なかったかなって思います。

あと、関西ではありますが、私の所属しているニジボックスという会社について、よく聞かれました。やはり運用の話をしたので、それを後押ししてくれた会社がどういうところなのかに興味を持ってくれたのかな思いました。

## 帰途
解散となったので、帰途につきます。 もう一泊するという手もあるのでしょうが、今回は普通に帰りました。

会場はグランフロント大阪という大きなビルでした。 食事場所に若干困ったくらいで、アクセスは良いところでした。

@remore の「こういうのが大事なんだよ」という薫陶が幻聴として聞こえてきたので、お土産もたくさん買いました。 いや、カンファレンスのために来たので、お土産はあくまでついでですよ!

# おわりに
というわけでカンファレンスの報告でした。来年もネタが尽きなければいきたいと思います。

会場でちょいちょい聞かれたのは、「ニジボックスって、タスクとかキツキツなの?」っていう話で、まあ、たしかに私の発表資料を見ると、一人に大きな負担を強いているようにも見えますが、実運用に入るまでにそれなりの期間をもらっていたので、先回りして自分に降りかかりそうなタスクを分散するなり自動化するなりしました。そのため、実運用に入るときにはECSの導入その他自動化などは完了しており、タスク的には程よい感じで、むしろコード書けて心安らかな状態になっています。

その結果として、こういった施策の一つであったコンテナ運用をネタとして、今年もカンファレンスに参加することができました。 見えている逆境というのは、エンジニアの力の見せ所ですし、チャンスなのだなぁと思ったものです。

今回はこんなところです。 例によって定型句ではありますが、私のようにわりと好き勝手やっていても、カンファレンス参加の費用出してくれたり、写真撮りに来てくれたりとサポートもしてくれるので、エンジニアとして飛躍したい!という方がいらっしゃいましたら、ぜひとも弊社にコンタクトしていただけるとありがたいです。
[/markdown]