CakePHPのカンファレンス、CakeFest2017レポート

2017.06.10, 11(土、日)の 2 日間で CakeFest2017 がニューヨークで開催されました。昨年のアムステルダムに続いて参加してきたので、内容を報告します。また、2017/07/06(木)の夜にイベントを開催しますので、興味のある方はそちらもご参加ください。

この記事はカンファレンスの時系列とは多少違う箇所があります。予めご注意ください。

カンファレンスの全体を通して

今年の参加者は開催国の関係かと思いますが、アメリカ合衆国やヨーロッパ出身の方が多かったなと思われます。また、最近のヨーロッパ事情の関係か分かりませんが、ヨーロッパから一度域外へ出国すると再入国が難しくなるかもしれないとのことで、発表される方がヨーロッパに留まり、オンライン経由で登壇されたのが印象的でした。

今年は YouTube でライブ放送したのも印象的でした。会場へはギリギリに入ったので一番前の席になったのですが、友人からライブ放送で一番前にいるの映っているよと教えてもらい、ちょっと気が抜けなかったのはいい思い出です。

2015 年や 2016 年に比べ、今年は考え方やコミュニティに関する話などが増えた印象でした。技術面で印象に残ったのは、ナイジェリアの方の電子投票に関する発表や CakePHP 4.0 に関する発表などです。

オンライン経由の登壇の様子

Keynote – Larry Masters

イベントに関する説明や質問するときのサイコロマイクの案内がありました。また、今回の参加国を読み上げたりグッズ販売の話など、サプライズな発表というよりもこれからの 2 日間を楽しもうという雰囲気の話でした。新しいコミッターの紹介はありましたが、CakePHP のロードマップやサポートには言及されず、これは別の方の発表で案内されました。World trip for CakePHP をやる(やりたい?)とのこと、いつか日本で開催しているミートアップイベントに彼らが参加する日が来るかもしれません。

グッズ販売ショップのページ

今年は次回の CakeFest がどこで開催されるかアナウンスがありませんでした。ヨーロッパやアメリカではなく、日本に近いといいなと思いつつ、参加が難しくても YouTube ライブがあるというのは心強いなと思いました。と、帰国したのちに cakefest.org のサイトを見たら 2018 年はテネシー州で開催すると書いてありました!聞き逃したのか、いつの間に反映されたのかわかりませんが、2018 年もアメリカ開催のようです。

https://cakefest.org

コアコミッターとの Q&A

今年もコアコミッターへの質問タイムがありました。面白かったのは、Slack で会場にいる人以外からも質問を受け付け、コミッターがライブ配信を通じて回答するといった場面です。たった数年でライブ配信というのが一気に身近になったことを感じた瞬間でした。

「ハードルを気にせずにカンファレンスをやるならどこがいい?」との質問には、日本がちらほら回答されていたのに嬉しく思いました。言い換えると現実的には難しいから毎年選ばれないのかなとも思いました。

私は json データの取り扱いや api に関して色々質問したいことがあったのですが、Q&A コーナーを待ちきれずコミッターを捕まえて先に聞いてしまいました。カンファレンスの醍醐味の一つは、コアコミッターに日常の疑問を口頭で聞けるというのがあります。これは是非皆様にもオススメしたいです。その場でソースコードを見せて現状のコードがシンプルで要件を満たすことを確認しました。検索すると私と違う方法が見つかるので、これはいずれご紹介したいと思います。

個別のスライド

ここからは私が気になった発表の内容になります。

10 ways to improve

以下、10 の重要なことで挙げられたものです。当たり前のことかもしれませんが、再確認するのは重要です。「プログラマーであるには自分自身を常に改善すること」をこれからも継続していきたいです。

  1. Pay attention your judgement
  2. Write code with teaching as a goal
  3. Be mindful
  4. Embrace the errors
  5. Be kind to others
  6. Write code readability
  7. Be kind to yourself
  8. Write code you won’t fear changing
  9. Be understanding
  10. Be open to change

Realtime PHP using websockets

とても古いやり方はブラウザに表示してリフレッシュ、古いやり方は Ajax と発表されていたのが印象的でした。web socket を使う案件が出てきたら試してみたい技術です。もしくは自社サービスにチャットの機能を取り入れるとか。以下、案内されていた URL です。

socketo.me
github.com/jeffkolez/websocket-demo
websocket.org

Open Source Infrastructure

こちらはオープンソースの活動に関わる際にやっていることの紹介でした。もちろんオープンソースに関わらず、チーム開発の時に必要なお話だったので一度じっくり見ることをお勧めします。

Mixer – Lightning Talks

カンファレンスの前に Oven という 1 クリックで CakePHP をインストールできるツールが公開されたのですが、今回はそれに加えて Mixer というものが Lightning Talk で紹介されました。これは各種プラグインを GUI 操作でインストールできるもので、きちんと composer を動かしてプラグインがインストールされるようです。百聞は一見に如かず、ぜひ動画をみてください。

以前 CakePHP の翻訳会にて「最近 web 開発を始めようとして挫折した」と言われ、確かに最近は composer で CLI 操作するため挫折しやすくなったのかもと感じたことを思い出しました。これなら格安のレンタルサーバーにとりあえずインストールでき、開発する楽しさを先に体験できるかもしれません。

そして Mixer 上で有料のプラグインを販売できるかもという夢のようなお話でした。なんでこれが Lightning Talk だったんだろう。全然 Light じゃない気がしました。

Contribute Open Source!

YouTube に動画が上がっていないので、公開され次第紹介します。
彼の発表で私がメモしたことは以下の通りです。

オープンソースのグループの役割

  • blogging
  • communications
  • speaking

たまに CakePHP MeetUp イベントを開催していますがブログはやってないなと思いました。

Keynote – 3.4 and the Path to 4.0.0

こちらは 2 日目の基調講演です。何といっても一番の注目は 2017 年の終わりか 2018 年の初めに CakePHP4.0 がリリースされるとのロードマップが紹介されたことです。4 系では php7.1 以降が要件になるとのこと、php5.x を利用されている方は注意が必要です。

また、CakePHP3.6 に対応しておけば、4.0 と互換性が保たれるようです。これは非常に嬉しい話です。現在 CakePHP3.4 系で開発しているサービスがありますが、これを 3.6 までアップグレードを続ければ 4.0 への更新が簡単にできそうです。ただし、deplication warnings は表示されるので、アップグレードした後に少しづつ修正してばおそらく大丈夫かと思います。

CakePHP3.5 では、新しいミドルウェアである CSRF, Cookies, Authenttication が追加されます。これに伴い component で利用している AuthComponent は 非推奨となるのでキャッチアップした方が良さそうです。また、Routable Middleware が加わり、ミドルウェアの利用登録などができる見込みです。特別なリクエストのみ利用するなどもできそうです。

Building for A Million Transactions Per Hour

この発表は衝撃的でした。まずは以下が概要です。

ナイジェリア共和国の大統領選挙で利用される電子投票システムを 24 日間で作りました。

Femi TAIWO

勉強になることや考えさせられることが多く、思わず質問したし発表後も個別に話をしました。

2015 年のナイジェリアの大統領選挙で初めて電子投票が実施されることになり、彼らがそのプロジェクトの担当になったようです。7000 万人が有権者とのこと、プロジェクトの開始から投票日までが 24 日しかないという恐ろしくスピード感のある話でした。受注してから初めてチームビルディング・仕様検討に入れるという泣きたくなるような状況で始まったようです。

利用したインフラは Google 系のクラウドサービスをベースに負荷テストや障害検知など、想像のつくものは一通り利用して本番を迎えたそうです。ちなみにこの時に利用したフレームワークは CakePHPH2.x です。選挙という特徴上、インフラのリソースは当日だけ大きく確保する必要があるという、まさにクラウドサービスの利点が効いて、かかったコストが 400 ドルくらいという驚きの話でした。

日本と比べた時、いろいろ事情は異なり一概にどっちがいいという話はしませんが、この話は今後のシステム開発をしていく上で非常に参考にすべき事例かと思います。指摘することはたくさんあるけど、とりあえず先に進むことの重要性と、ナイジェリアは日本よりも選挙が電子化されていることを知りました。ちなみにナイジェリアではこんな感じのプロジェクトは usual だが nomal ではないというコメントもいただきました。

終わりに

以上、私が体験してきた海外のカンファレンスの報告です。3 回目ともなると正直慣れてきて、2日目の朝は遅れても大丈夫とか昼休みにホテルのチェックインに行ったりとか、自由気ままに日本のカンファレンスと同じように過ごしました。

いつか CMS を作って自分がカンファレンスを主宰する側になったらどんな楽しいプログラマー人生が待っているんでしょうかね。まずは目の前のプログラマー人生を楽しむため、CakePHP MeetUp Tokyo を開催していきますので、コミュニティの参加よろしくお願いします。

Enjoy!!