読者です 読者をやめる 読者になる 読者になる

ドイツのPHPカンファレンスに行ってみた

【執筆者】宮原良介

f:id:miyahara-r:20161121110917j:plain はじめまして!
2015年11月に、某精密機器メーカーから、食への熱い思いを持ってぐるなびにジョインした宮原です!

休日にはドライブやバンド活動をしつつ、プライベートでもソフトウェア開発やWebサービス運営にトライしています。あとパンダをこよなく愛しています。

業務では、主にぐるなびのポイントを利用するサービスを開発しています。また、部署をまたいでの業務改善活動にも積極的に取り組んでいます。

この度、10月末にドイツのミュンヘンで開催された、International PHP Conference 2016に参加してきましたので、そのレポートをお届けしたいと思います。

参加の経緯 

ぐるなびでは、サーバサイドの開発に主にPHPを利用しています。

私は前職で海外のエンジニアと一緒に働いていたこともあり、海外でのソフトウェア開発に強い興味を持ってました。 また、グローバルなレベルで「PHPに関する最新技術や動向についての情報を収集したい!」「海外のPHPエンジニアと直接話してみたい!」 と思っていました。

そんな中、International PHP Conferenceの存在を知り、上司に提案したところ「よし、行ってこい!」と言っていただけたため、出張扱いで参加できることに。 今回は、私(宮原)と同僚の宇佐川の2名で参加してきました。

f:id:miyahara-r:20161121111652j:plain:w400

International PHP Conferenceとは

公式サイトの情報を日本語訳すると、

International PHP Conferenceは、PHPとWeb技術についての実践的な専門知識についての世界で最初のカンファレンスです。もう10年以上続いており、世界中の大小の企業から、高名な専門家が一堂に会します。

となっています。

オープニングセッションで聞いた感じでは、もう15年位やっているそうです。

オープニングセッションやキーノートが行われるGroßer Saal(大ホール)はこんな感じでした。

Post from RICOH THETA. - Spherical Image - RICOH THETA

会期5日間のうちメインセッションは3日間、発表されたセッションは70弱。内容はPHPのみに留まらず、デプロイの話やgitの話など、Webを中心にソフトウェア開発の幅広いトピックがありました。

今回我々は参加しませんでしたが、メインの3日間の前後に、PHP7やJavaScript、Agileなどのワークショップも開催されていました。

スポンサーブースでは、いくつかの企業が展示をしていました。ドイツローカルやヨーロッパに展開している企業が中心で、並んでいたのはあまりなじみのない名前がほとんど。 その中で、なぜかマリオカートがあったので、マリオカートの生まれた国のネイティヴとして勇んで勝負を挑んだものの、結果は惨敗でした……。

f:id:miyahara-r:20161121112917j:plain

セッションは英語とドイツ語のものが混じっていました。 ドイツ語はわからないのですが、どうしても聞いてみたいセッションがあったので、ものは試しと参加を決意。 幸い、ドイツ語と英語はスペルが結構似ていたため、スライドから雰囲気や伝えたいことはつかめました。 また、昭和生まれの私は「pH」を「ペーハー」と習っていたため、PHP(ペーハーペー)だけは聞き取ることができました(笑)。

セッション紹介(1日目)

1日目に参加したセッションのなかで、特に印象深かったものを紹介します。

※各セッションのスライドは、基本的にはConference会場でダウンロードコードを受け取った参加者だけが入手できる仕組みになっていました。 ただ、SlideShareなどにアップロードしている人もいるようです。これから紹介するセッションのスライドで見つけられたものは、なるべくリンクも貼っていきます

Testing: the more you do it, the more you'll like it

PHPUnitを開発したSebastianさんと、オープンソースエバンジェリストのJeffreyさんが、ソフトウェアテストについて語っていました。

アイゼンハワーの名言「Peace and justice are two sides of the same coin.(平和と正義は同じコインの表と裏の関係にある。)」になぞらえた、Sebastianさんの名言「Specification, Documentation, and Verification are three sides of the same coin. (仕様、ドキュメント、検証(動作確認)は1つのソフトウェアを別々の観点から見ているに過ぎない(意訳))」が、とても良いと思いました。

テストコードは「ソフトウェアの動作確認のために追加で作るもの」と捉えられがち。しかし、仕様書やドキュメントと同列に扱い、ソフトウェアの資料として考えるほうが良いと思います。この心がけ次第でテストコードを準備する優先度が上がったり、テストコードの品質も上がるかも知れません。

スライドはこちらから確認できます。

Legacy-PHP-Projekte Sanieren oder ablösen?

Johann-Peter Hartmannさんによる、レガシーなPHPプロジェクトをどうしますか?というお話です。

レガシーなプロジェクトの扱いについて興味があったため、ドイツ語のセッションながら聴いてみました。 このセッションの中で特に興味をひかれたのはPHPの各時代に名前をつけている(PHP Cowboy Coding Age、MVC age、DI Age etc...)ことです。

オブジェクト指向が適用されている、デザインパターンが適用されている、などの条件から、自社のプロジェクトを時代分けしてみると、必要な改修コストやリファクタリングの必要性などを予測しやすくなるかもしれません。

また、自社内にいろいろな時代のプロジェクトが混在しているときに重要だと感じたのは、ジョブローテーションなどでなるべく多くの人により新しい時代のプロジェクトを経験させてあげること。これにより、古くなってしまったプロジェクト、ひいては会社全体の時代を進化させる手助けになるのではないかなと思いました。

Silent migration of PHP4 to PHP7

Mike Lohmannさんによる、実際のプロジェクトからの体験談のお話でした。

対象の既存のシステムはモノリシックなアーキテクチャ。しかもPHP4で動いており、新機能追加のコストが高くつく状態でした。そこで、モジュールシステムの導入や、コードの拡張性やスケーラビリティを向上させる改修をビッグバンを伴わずに実現する、という試みにトライされていました。

紹介していたのは、さまざまなモダンなツールを導入し、認証システムを工夫したことです。

古い認証システムを使用するサービスと、新しい認証システムを使用するサービスを併用するため、Silent migrationを実施。ユーザに提供される認証画面は同じですが、ログイン操作により、旧認証システムと新認証システムへ同時にログインできる仕組みを提供していました。

こうすると、古い認証システムを使用するサービスが動いたまま、新しい認証システムを利用するサービスを稼働させられます。

このような進め方なら、確かにビッグバン・インテグレーションを伴わず小さく少しずつ、システム改修を進めていくことができそうです。 一方で、残ってしまった古いシステムを利用するサービスをいつ改修するのか、古いシステムが残ったままになってしまわないか、という部分に課題があるように感じました。

ビアホール

さて、1日目が終了しました。 せっかくミュンヘンに来たのだから!ということで、ドイツで一番有名なビアホール、ホフブロイハウスに行ってみました。 f:id:miyahara-r:20161124130804j:plain なんとビールは1リットル! 食事は、一番ポピュラーなのはどれ?と聞いて頼んだら、これまたでかいのが……。でも美味しい!
すごく広いビアホールで、ドイツの喧騒を楽しみながら、ビールと豚料理に舌鼓を打っていたのでした。 f:id:miyahara-r:20161124131014j:plain

次回は、2日目のセッションと、懇親会のお話がちょっと出てきます!お楽しみに!


お知らせ
ぐるなびでは一緒に働く仲間を募集しています。



‘宮原良介’

2010年に大学院を卒業し、新卒で某大手精密機器メーカに就職。2015年の秋、食への熱い思いを持って、ぐるなびへ転職。ぐるなびでは単に開発を行うだけではなく、様々な業務改善を推進するとともに、アジャイル(スクラム)の普及にも尽力している。
パンダ好きのフルスタック気味エンジニア。