「Comfortable development / 2.0」チーム目標に対する取り組み

 こんにちは。サグーワークス開発チームの横道です。

 

弊社では毎年半期に一回、チーム目標設定をしていて

その目標に対して色々取り組んできたので複数回に分けて紹介したいと思います。

 

f:id:m_yokomichi:20180215185907j:plain

目標自体はチームメンバー全員で決めており

この半年で取り組んでいきたいことや、変えていきたいことをブレストで出しあい

みんなの意見をまとめて目標にしています。

 

そこで決まった2017年度下半期(9月~3月)の目標が

タイトルに記載している「Comfortable development / 2.0」でした

 f:id:m_yokomichi:20180215185924j:plain

 

目標の意味は

サグーワークスがリリースされてから5年経ち

デザインリニューアルや市場の変化に対応するための機能拡張を重ねるうちに開発しづらい箇所や使われなくなった箇所が残っていたりしています。

全体的に見直して開発を取り巻く環境を今より1段階上げて

開発をより快適にすることで開発速度を向上させようとなりました。

 

-----------------------------------------------------

Comfortable:快適な・居心地の良い

Development:開発

2.0:バージョン2.0

=快適な開発環境にバージョンアップする

-----------------------------------------------------

 

この目標に向けてやってきた取り組みを

少しずつ記事にしていくのでお楽しみに!

【スライドあり】勉強会「【PHP7 実践編】事例で学ぶ CakePHP と Laravel の徹底比較」を開催しました

こんにちは。ウィルゲートで開発を行っている岡田です。

先日、1月25日に「【PHP7 実践編】事例で学ぶ CakePHP と Laravel の徹底比較」というタイトルの勉強会を開催いたしました。

同じ内容の勉強会を昨年の9月にも開催しており、スライドも公開したところ好意的な反応を多くいただいたので、再講演させていただくことになったのが今回の背景です。

www.slideshare.net

※スライドのタイトルは昨年に開催したときのものです。SlideShare は後からスライドを更新できないのを初めて知りました。。。

スライドだけでも内容が分かるように作ったつもりなので、具体的な内容はスライドを見ていただければ、と思います。

このスライドで伝えたかったことは最後の1枚にまとまっています。

f:id:okashoi:20180126143814p:plain

こういった特徴を把握したうえで、サービスやチームに合わせた選択をしていけるといいですね!

ウィルゲートでは今後も様々な勉強会・イベントを開催していく予定なので、今後もお楽しみに!

マーケティング事業の開発現場でリアルに使われるJS事情」に登壇しました

こんにちは。ウィルゲートのエンジニアの岡田です。

11月2日に株式会社オプト様のオフィスで開催された「マーケティング事業の開発現場でリアルに使われるJS事情」という勉強会に、「プロダクトに 1 から Vue.js を取り入れた話」というテーマで登壇させていただきました。

  • 発表資料はこちら

https://www.slideshare.net/ShoheiOkada/1-vuejs

登壇内容

私の所属するソリューションチームでは、今年6月に JavaScript フレームワークである Vue.js を導入しました。 今回はチームメンバーの宮西と分担し、私からは「どのようにして Vue.js 導入を進めたか?」、宮西からは「Vue.js を導入したことでどのように変わったか?」という発表をさせていただきました。

f:id:willgate_developer:20180125111309p:plain

発表資料は「JavaScript フレームワークを導入しようとしている」「導入を検討している」という人が参考にできるような内容にしたかったので、導入して良かったことの他に「こうすれば良かった」という学びについても触れています。 この資料が少しでもJavaScript フレームワーク導入の手助けとなれば幸いです。

感想

今回の勉強会は大盛況で70名を超える方にご参加いただきました。これだけ多くの参加者の前で発表できるという体験は貴重で、とても良い経験になりました。 また、他の方の発表や懇親会の情報交換で、「次のステップに進むためにはどうしたら良いか」についての指針を与えてもらえたので、今度は業務にそれを活かしていく予定です。

こういった場で情報発信を行うことは聞く側にとっても発表する側にとっても、メリットがあるはずなので、今後も積極的に情報発信を続けていきたいと思っています。

輪読会はじめてます!

こんにちは! ウィルゲートの開発室にて内定者インターンを行っているエンジニア(の卵)の大津です。 最近Amazonの欲しいものリストに追加する技術書のペースが、買うペースを上回っていて困っています…早く全部読み終えたいです。 今回の開発ブログでは、開発室で取り組んでいる輪読会についてご紹介します!

輪読会とは?

輪読会は担当者が事前に割り当てられた本を読んで、その内容をパワーポイントにまとめたものを他の参加者に説明するというものです。主に若手のエンジニアが中心となって毎週木曜日の定時後に活動しています! 疑問点があれば、その都度、参加者が指摘し、より本についての理解を深めていく方法で進めています。そして最後に、参加者からの質問や意見をさらに発展させて議論したり、その日の内容を手を動かして実践してみたりしています。 ちなみに、前回は『プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則』(上田 勲(著)、 秀和システム社(出版))という本を題材にし、今回は『SQLアンチパターン』(Bill Karwin(著) 、オライリー・ジャパン(出版))という本で輪読会を進めているところです。

参加してみて良かったこと

ただ、本を読むだけでは得られた知識を使うイメージが沸かず、なかなか実際の業務には活用しにくいのではないでしょうか。 SQLアンチパターン輪読会では、「データが増加し続けても、クエリの実行速度が遅くならないテーブルの構造を考える際、アンチパターンとして『テーブルや列をコピーすること』が挙げられていたが、それは、自分がこれまで実践したことのないやり方だった。担当するサービスがアンチパターンに当てはまらないように、今後は意識したいと思った」といった実際のサービスを例にした考え方を聞くことができるので、イメージが沸きやすくなり、本で得た知識を実際の業務で使いやすくなります。

参加してからの自分の変化

以前は一人で本を読んで調べていたので、本から学んだ知識の捉え方が本当に正しいのかわからず、必要な情報以上に調べることもありませんでした。 でも、輪読会では多くの質問やツッコミが飛び交うため、自分の間違いや勘違いに気づきやすく、さらに本に書かれていない情報や疑問が発信されることもあり、内容の理解をより深めることができるんです。 輪読会の影響で調べものをする時に、関連してさらに得られる知識がないかと深掘りをする癖がつきました。 また、日々の中でも時間を見つけて本を読む習慣がついてきたので、以前よりも本を読む時間が増えた気がします。

最後に

個人的には、「SQLアンチパターン」を読み終わった後は、気になっている「プログラマが知るべき97のこと」を輪読したいなと思っています。 輪読会は本の内容を理解できるだけでなく、一人で読んだだけでは学べないことを学べる貴重な場。 今後も積極的に輪読会に参加して、たくさんのことを学んでいきたいです!

別々の道を歩んできた4年間。同期3名が入社からこれまでを振り返るエンジニア対談。

-まずは、それぞれどのようなお仕事をしているのか教えてください。

片岡:僕はインフラエンジニアをやっています。「暮らしニスタ」と「Milly」と「サグーワークス」を担当していて、サービスの特徴や成長に合わせたインフラ基盤を構築することが仕事です。分からないことや迷ったりすることもありますが、他社メディアの話を聞いたりして、外部からヒントを得るようにしています。あとはエンジニア採用にも関わっています。

横道:今は「サグーワークス」のPMをやっています。具体的にはサービスに必要な機能の要望を受けて、それをシステムにどう落としこむかを考え、必要であればプロジェクト化して開発スケジュールを決めたり、機能の内容をメンバーや事業部と詰めたりしています。 サグーワークスのプロジェクトは、開発メンバーと事業部側を合わせて30人くらいの大規模なものになります。人が足りないと採用もしないといけないし、開発に必要なことをすべてやるのがPMの仕事ですね。

尾崎:僕はチームに属さない“ぼっちの人”です(笑)。去年の1月から技術責任者をやってます。入社2年目で就任しました。 これからのウィルゲートの開発をもっとよくするためにGMや役員と日々話し合って開発戦略を進めることがお仕事です。その一環として機械学習について研究をしたり、採用や教育をしたりもしていますね。

-3人とも全く別の領域で活躍しているんですね。

片岡:確かに別々ですね。

横道:仕事以外ではしゃべらないしね(笑)。

片岡:そうそう。あまりしゃべらない(笑)。

横道:入社した時から仕事は別々ですね。あの時は今ほどはいろいろなことが整っていませんでした(笑)。今は組織体制も環境もかなり整いましたが…。

片岡:毎週のようにアラートがきて、サーバがよく落ちてたよね(笑)。

横道:そして、そのたびに運営担当に呼び出されてた(笑)。 みんなそうだったと思うけど、業務量が膨大だったから、早くサービスを覚えてどうにかしないといけないと思って必死でしたね。最初の半年はあっという間に終わった感じ。

尾崎:僕の場合は2人と違って大学4年生の8月からインターンをやってたのもあって、一足先にそういう雰囲気を感じていましたね。だから、4月の入社時には慌ただしさにも慣れて落ち着いていました(笑)。そのあたりで、2人とは違った動きができていたかもしれないです。

-なるほど。そういう状況を乗り越えて、今のみなさんの活躍があるということなんですね。話は変わるんですが、それぞれ自分の得意なところや、お互いにいいなと思うところをおしえてください。

尾崎:自分が得意なのは、新しいことに積極的に挑戦することだと思っています。新しい技術に飛び込んでいって学んだりはよくしているかも。好奇心が強いから、仕事中に調べものをしていたら、そこからどんどん脱線して転がっていってしまうことも(笑)。

片岡:尾崎はとりあえず、なんでもやってみてるよね。 仕事を選ばないし、なんでも巻き込んでやっちゃう特攻隊長的な感じ。そのうち、勝手に何かが出来上がっているようなイメージだよね。

横道:知識量半端ないよね。依頼すればなんでもやってくれちゃうから、分からないことがあれば、とにかく「尾崎に聞く」という風になってるね。

尾崎:僕は分からないことに興味があるから、とにかく調べてちょっとわかるくらいの知識がたくさんある感じですね。 片岡については、プロ意識が強くて、やりきる気持ちが本当にすごいと思う。その時はできなくても、「自分がやらなきゃ」とやりきってしまう。1年目の9月くらいから3人で「サグーワークス」のリニューアルをやっていた時にそう感じましたね。

尾崎:あと、積極的にいろいろなことやってるよね。ISUCON(※)とか。

※決められたレギュレーションの中で限界までwebサイトの高速化を図るチューニングバトル 横道:1年目の時に「Hacker’s GATE(※)」も立ち上げたよね。開発をよくするために組織に取り入れたらいいよねっていうのを考えるだけじゃなくて、きちんと実現してくる。自分はそういうのやらないから(笑)、本当にすごいと思う。 ※社内で開催される技術勉強会などの活動の総称

片岡:自分の強みとかはよく分からないけど、面白いことが好きでわくわくしたいとは思ってますね。新しい技術とか気になったことはとことん突き詰めて勉強しています。 イベントや勉強会に参加していいなと思ったことを社内に持ち帰って取り入れてる感じです。

-ウィルゲートの開発室には好きなことを勉強できたり、「やってみたら?」と背中を押してくれるような文化があるということでしょうか。

尾崎:周りのエンジニアからは、上司の頭が固くて何もさせてもらえないとは聞きますね。うちの場合は、いつでも新しいものをやれるように上司も待ち構えているから、「やりたい理由」さえ話せたら、やらせてもらえることも多いです。面白そうだから取り入れてみようってなりますね。

片岡:よい環境にするための挑戦は積極的にやらせてくれますね。 入社当時から新しい試みばかりやってたので、今もそんなことばかりやってます。

-なるほど。ところで、横道さんの強みはどんなことですか?

横道:僕は作りたいものがあるときに、どういうチームでどうやって進めていったらいいかというのを考えるのが得意ですね。入社時はプログラムも書きたかったし、マネジメントもやりたかった。でも、せっかく会社に入ったんだから、会社でしかできないことをやりたいと思ったんです。だったら、マネジメントをやってみたいと。 そこが2人とは違うところなのかも。エンジニアは自分も含めて変わり者も多いし、自分よりも年齢もキャリアも高いメンバーのマネジメントは難しいです。 でも、ウィルゲートだからこそチャレンジできたんじゃないかなと。新卒2年目でリーダーなんて普通はやらせてくれないと思いますね。

片岡:確かに、横道は効率的にプロジェクトを回すのがうまいなと思う。サグーワークスという大きなプロジェクトの中でエンジニアを上手くまとめているなと。誰に何を任せるかとか。

尾崎:横道は人を配置するのが得意だよね。

横道:マネジメントは人ごとにやり方を変えるようにしていますね。レールを引いてあげないと伸びないタイプもいるし、自分の好きなものを追求させてあげた方が伸びるタイプもいるんです。 責任感があって、新しいことをやりたいという人には自由にやってもらっていますね。それを後ろから見ていて、方向性がズレそうなら声がけをしていく。「こういうのをやりたい」と言われたら、とりあえず「やってみれば?」と背中を押すようにはしています。

尾崎:あと、横道はヘルメットかぶってるんじゃないかってくらい安全第一だよね(笑)。最近は新しいことにも挑戦するようになってきているけど、前は本当に保守的だったよね。昔の経験からそうなってるのかもしれないけど、サービスに愛情をもって慎重に進めているよね。

横道:そうですね。めっちゃ慎重派だと思います。

片岡:僕と尾崎が壊しに行くタイプで、横道は守りに行くタイプかな(笑)。

横道:ほかの2人にあって、自分にはないという部分があるので、「自分もやらないと」と感じることはありますね。新しいものを取り入れつつ、守るべきものを守って、両方大切にしていきたい。最近は組織としても、新しいものを取り入れることができるようになってきましたしね。

-3人で一緒にやってみたいことはありますか?

尾崎:3人ともやってることもスキルも違うから、チーム作ったらおもしろそう。何をやるかは思いつかないけど(笑)。

横道:自分は1年目にやったプロジェクトを3人でもう一度やり直してみたいな。 今やり直せたら、あの時よりももっとうまく回せると思う。

片岡:確かに。あの頃はいろんな壁にぶつかってスムーズに進まないことも多かったよね(笑)。

-みなさんの今後のwillについて教えてください。

片岡:ウィルゲートの技術レベルを上げるために、新しい技術を取り入れていくことと、インフラができる人を増やしていきたいですね。中長期的にはサービスをゼロから生み出せるようになりたいです。

尾崎:昨日の夜、ちょうどその話をしていたよね。社内には「サーバやネットワーク関係の不具合はとりあえずインフラチームに頼めば大丈夫」と思っている空気がある。でも、細かい仕事が全部インフラにいくと新しい技術を取り入れる余裕がなくなっちゃうから、他のエンジニアにも簡単なインフラは覚えてもらいたいよね。

自分がやりたいところでいうと、今はいろいろとやらなきゃならないことが増えてるんだけど、頭を使って何かをやるよりも、ひたすらコードを書きたいと思っています。 今は機械学習について調べたり、活用する場を模索していたりするけど、成果が見えにくいし、専門の人に任せて僕は実際のサービスを作ることに徹した方がいいんじゃないかと思い始めていますね。

横道:尾崎がメンバーとしていてくれたら、ものすごく頼もしいですね。大変なプロジェクトを走らせる時に、まるっとお願いして、適当に妄想だけ伝えて、それを形にしてもらえるから。PMの仕事も部分的にやってもらえる感じで本当にいいですね。 ちなみに、僕も手を動かしたいとは思っていますね。入社してからプログラマーとして書く機会が少なかったので、がっつりコードを書くこともしたいです。

尾崎:そうだよね。コードを書くこと自体も好きだけど、ものを作ってそれができるのが楽しい。人を動かして作るというやり方もあると思うけど、自分で作ったという方が達成感がある気がする。

横道:それと、リーダーとして必要なスキルとしてコードを書けるってのはあると思う。できれば、一度メンバーに戻って、そのスキルを鍛え直したいですね。メンバーになれば動きも変わるから、そこも体験してみたいです。

-みなさんが一緒に働きたいと思うのはどんな人ですか?

尾崎:単純に僕がもっともっと勉強したいというのもあって、技術がめっちゃ高い人と一緒に働きたいですね。今だとウィルゲートで誰がすごいって聞かれたら、僕かなってなるんですよね。だから、すごいすごい!って言われるような人と一緒に働きたいですね。

片岡:自分はサービスやユーザのことを考えて正しく技術を選択できる人がいいですね。そういうことを考えた上で、とりあえずやってみるというのができるといいですね。

-若手に期待することはありますか?

尾崎:自分は採用もやっているので、よく学生と話す機会があるんです。彼らはぼくらとIT環境が全く違って、スマホから育ってそこからエンジニアの世界に入ってきている人もいるので、脅威でしかないですね。でも、そういう人たちだからこそ学んだ知識や技術があると思うので、そういうのを持った人に来てほしいですね。

横道:学生時代の方がいろいろなことができますよね。今は作りたいものが作れる環境があると思うんです。社会人になったら、会社が求めるベースにそったものしか作れなくなる。だから、学生時代にいろいろ作って経験して、アクティブにいろいろやっている子と一緒に働きたいですね。

尾崎:それは確かにあるかも。すごいなと感じるのは個人的にものを作っている子が多いですよね。それも、自分でやっているだけじゃなくて、ちゃんと公開している。やってみたいと言っているだけじゃなくて、もうやっちゃってるんですよね。

横道:そういう子が入ってきたら、開発室全体が危機感を持つから底上げになりそう。

片岡:確かに。エンジニアという職種で必要なスキルは、学生のうちに身に着けられる部分が多いと思うので、社会に出たらやるというより、すでに何か作ってますという方に入ってほしいですね。

-最後に今回の対談の感想をどうぞ。

尾崎:こういう話はしたことがなかったので、お互いのできることとか、こういう人が欲しいとかいう話は新鮮でしたね。

横道:普段は依頼とか相談とか…仕事の話しかしないので。少し変な感じでしたね(笑)。

片岡:僕はみんな苦労してるんだなと(笑)。領域は違いますが、負けてられないですね。

-ありがとうございました!

社内ISUCON開催!

こんにちは。ウィルゲートでインフラを担当している片岡です。 今回は、先日開発室で行った「社内 ISUCON 」について記事を書きたいと思います。

まず ISUCON とは、「お題となる Web サービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル」です。(公式サイト: http://isucon.net/ ) 今回はその社内版ということで、ピクシブさんが公開している問題を使わせていただくことにしました。ピクシブさんありがとうございます!

ウィルゲート以外でも、社内の研修などで取り入れているところもあるようです。

開催目的

普段の業務では見えてこない自分自身の課題、チームとしての課題を確認できるいい機会だと思い、開催に踏み切りました。 また、競技のチーム構成も普段業務で直接かかわらないメンバー同士を組むようにしたので、そこで新しい学びを得られるのではないかと考えました。

開催準備

ピクシブ社が公開してくれている AMI を空いている AWS アカウントに落とし、構築を進めました。 内容を深く理解せずに構築を進めたため、Redis などの環境変数まわりや、Sidekiq の立ち上げで詰まる場面もありましたが、何とかベンチマークポータルの構築を完了することができました。 ちなみに、ウィルゲートでは主に PHP を使用して開発を行っているため、nginx + PHP-FPM で動作するようにセットアップしたものを参加チームに提供しました。

当日の様子

当日は各チーム3~4名の計5チームで競い合うことになりました。 競技開始とともに、各チーム誰がどの分野を担当するかや、どういった方針で問題を解決していくか話し合っていました。 また、ランチもチームで行くなど、ランチ中も勝負は続いていたようです。

最終的に10万点を超えるチームが現れました!! (競技終了後でしたが(笑))

優勝チームのコメント

開発室 GM より、優勝チームにはAmazon ギフト券のプレゼントがありました。 優勝したチームのメンバーより感想をもらったのでご紹介したいと思います。

  • インフラ力の無さで画像キャッシュが間に合わず消化不良でしたが、限られた時間の中で何をどこまでやるかを考えるのが楽しかったです。
  • 今回サーバー周りのチューニングにトライして、少しのパラメータの変更や nginx 等の普段触れる機会の少ない技術に触れることができました。ここで得た新たな知見と、パフォーマンスが変化する様子を楽しめたことは今後の業務に対するモチベーションに繋がります。
  • パフォーマンスチューニングを行う際、どういった部分に着目しているのかを、いろんな知見を持ったメンバーから学べたことが楽しかったです。ただインフラ側の施策がほぼお任せになってしまったので、もっと積極的に話に入っていけばよかったです。
  • 前半で差をつけていたものの、最後は僅差の逃げ切りでヒヤヒヤでした。キャッシュやインフラのチューニングにこだわりすぎてしまったんですが、実はアプリケーションのロジックにも大きな改善箇所が残っていたので、ハマりそうになったら落ち着いて視野を広げるべきというのは日頃の業務とも共通してますね。

nginx などインフラ周りで課題が残ったようですが、各々次の課題が見つかってモチベーションが上がったようです。

最後に

全体的にインフラ周りの弱さが目立ちましたが、ひとりひとり課題の見つかったよい機会になりました。 これから出来なかった箇所については、全員で協力して、改めて解決までもっていきたいと思います。 運営側としては、初の試みだったため、運営上迷惑をかけてしまう場面もありましたが、何とか社内 ISUCON を終えることができて良かったです。 今後もこういったイベントを通して、ウィルゲート開発室のチームワークや技術力を磨いていければと思います。

PHP7.0にCakePHP1.3を載せるテクニック集

はじめに

こんにちは!「サグーワークス」開発チームの池添です。 昨年の話になりますが、「サグーワークス」は大規模なリニューアルを行いました。 その時にPHPのバージョンを5.3から7.0に上げたので、今回はそのことについてお話します。

PHP7.0導入の経緯

「サグーワークス」は2012年12月にサービスを開始しました。 リリースから約3年が経過した2016年。追加改修を重ねる度に煩雑な処理が増え、1つの機能を追加するのに複数の箇所を改修しなければいけない状態になっていました。 そこで、今後の成長を見据え、データの持ち方を整理し、処理をまとめることで開発スピード上げるべく1年間かけて「サグーワークス」のリニューアルを行うことを決断しました。

今回はサービス全体を改修する大規模なリニューアルとなり、このタイミングでアーキテクトを選定し直して、技術的にもリニューアルを図ることになりました。 開発チーム全員で話しあった結果、当時出たばかりの PHP7 の処理速度が速いという噂を聞いて、PHP7 を触りたい衝動に負けて PHP7 にバージョンアップすることにしました。

PHP7 に変更するにあたり、フレームワークを見直し、主要な処理は CakePHP1.3 から CakePHP3.2 に乗せ換えました。 しかし、工数との兼ね合いで一部のソースだけ CakePHP1.3 を残すことになったため、その部分を PHP7 でも動くように改修することになったんです。

PHP7 にバージョンアップするためにしたこと

まず、後方互換性がない箇所をすべてチェックしました。 具体的には、http://php.net/manual/ja/migration70.php のページに各バージョンからの互換性について掲載されていたのでそれを参考にしました。 互換性のない処理の対応をひとつずつ考えながら、まとめていきます。 また、 互換性をチェックする方法として php7cc を使いました。

ちなみに、出てきたエラーの数は 5000 個ほど。エラーの修正は2人で2週間かけて行いました。 あらかじめ修正が必要な項目とその対応方法についてまとめておいたことで、開発時に効率的に作業を進めることができてよかったです。 ただ、構文エラーは直したものの処理が誤っているものもいくつか残っていましたが、結合テスト時に気づいて直せる範囲に収めることができました。 修正した箇所としてはライブラリ内の下記のようなものが多かったです。

// 修正前
$controller &= new Controller();
 
 
// 修正後
$controller = new Controller();

すべての ext/mysql 関数

// cakeのデータベース用ドライバ
// 修正前
class DATABASE_CONFIG {
    var $main = array(
        'driver' => 'mysql',
        ...

// 修正後
<?php
class DATABASE_CONFIG {
    var $main = array(
        'driver' => 'mysqli',
        ...
  • オーバーライド時に親クラスと変数の数が違うと動かない
    • 公式には書いてないが、5.3 → 5.4 時に使えなくなっている!?
Parent {
    public function hoge($item)
    {
        echo $item;
    }
}
// 修正前
MyParent extends Parent {
    public function hoge()
    {
        echo 'hoge';
    }
}

// 修正後
MyParent extends Parent {
    public function hoge($dummy)
    {
        echo 'hoge';
    }
}

split が削除

// 修正前
list($a[0], $a[1], $a[2]) = split(', ', 'A,B,C');
 
// 修正後
$a = explode(', ', 'A,B,C');

無効なクラス名、インターフェイス名、トレイト名

// Cake1のクラス
// 修正前
String {
}

// 修正後
CakeString {
}

PHP7 にした結果

PHP7対応のための苦行改修の末、下記のメリットを得られることができました。

  • CakePHP 1.3 なのに PHP7 が動いているという感動 PHP7 ネタでブログがかけた
  • 今回のリニューアル要件に含まれていなかったロジックの流用ができて、工数の大幅削減ができた
  • Composer を導入することができた
  • PHP の処理速度が大幅に改善された(具体的には40秒以上かかっていた複雑な処理があったが、10秒を切るほどに高速に処理されるようになった) ※詳しく検証したわけじゃないですが、時間のかかっていた部分が大量データに対する foreach によるループ処理だったので、PHP7 でデータ構造が見直され、配列への操作が速くなったためではないかと思います
  • PHP のバージョンをあげたことによって便利な新機能が使えるようになった
  • 保守されなくなった PHP5.3 から PHP7.0 に上げたことでセキュリティ面が向上した

また、PHP7 が直接的な要因となるものではないですが下記のようなメリットもありました。

  • テストコードなど新しいものを取り入れる土壌ができた
  • 自分を含め、メンバーのモチベーションアップに繋がった
  • バージョンが新しくなったため、資料が多く今後も増えていくことが見込める

ただ、PHP7.0 に上げたことで、未知のバグやドキュメントが出そろってないこともあるかと思います。 その点は出たばかりで公式も活発なので適度にウォッチしておけばよさそうです。

まとめ

とりあえず PHP7 めっちゃ早いです。迷っているのであれば、ぜひバージョンアップをお勧めします。 また、今回のリニューアルでは定期的にバージョンをあげていくためにスケジュールを立てたり、普段から情報をチェックしておくことが重要だなと思いました。 蛇足ではありますが、PHP7.1系はCakePHP3.2 では対応していないので注意が必要です。CakePHP3.3 では対応済みなので、これから開発する方には CakePHP3.3 をお勧めします!

それでは、良い PHP7 ライフを!!