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

PHP歴ゼロでも使えたLaravelに感動して、社内でLaravelを布教した話

f:id:g-editor:20170118154000p:plain

はじめまして、サーチサービス開発グループの松村です。

2016年3月に入社して以来、レストラン検索のサーバーサイドエンジニアとしてフロントや内部ロジック改修、データ連係などを担当しています。PHPフレームワークのLaravelを使い、文字でなく写真をメインにした検索結果一覧ページの作成や管理画面の開発も手がけました。

私が担当したプロジェクトでは、社内ツールと本番サービスの一部に社内で初めてLaravelを導入しました。そこで、社内ツールにLaravelを導入した際の話と、本番サービスに導入し稼働させた話を連載で記事にします。

今回は「社内ツールにLaravel導入した際の話」です。社内でLaravelを導入した際の苦労話と周りからの反響についてまとめました。

Laravelとは

Laravel(ララベル)とは最近アメリカで大人気のPHPフレームワークの1つです。GitHubでリポジトリが公開されており、スター数はPHPフレームワークの中で1位になっています。*1

なぜLaravelを好きになったのか

一番の理由は、Laravelのコンセプト“Love beautiful code? We do too.”に共感し、惹かれたからです。

f:id:g-editor:20170117170059p:plain 参考:Laravel - The PHP Framework For Web Artisans

また、Laravelはフルスタックなフレームワークかつ手軽にMVCっぽく整えて書けるのも魅力的です。 フロントエンドは通常のHTML5と似た構文が利用できるBladeテンプレートを書けば良いですし、サーバーサイドは通常のCRUD処理であればフレームワークに乗るだけで実装しやすくなっています。設定ファイルの呼び出しやすさ・切り替えやすさなどにも利便性を感じました。

artisanはかしこい

artisanとは、Laravelに同梱されているコマンドラインのインタフェースのことです。サーバを立ち上げたり、DB上にテーブルを作成したりなど、開発に役立つ数多くのコマンドを提供しています。

Laravel歴=PHP歴な私にとっては、PHPをあまり知らなくてもある程度ものが作れて魅力的でした。

布教のきっかけ

仕事(社内ツールの機能拡張)で導入することにしたのがきっかけです。

入社して間もない頃に張り切って「新しいフレームワーク使ってみたいんですけどいいですか?」と上司に相談しました。 既存機能との関係が疎であったため、言語がPHPであれば好きなフレームワーク使っていいよと言われ、そのまま通してみました。 ただ、そのときはLaravelは社内ツール含め、社内での導入事例は全くありません。さらにLaravelを少しでも使ったことがある人も少数という状況でした。

Laravelで開発開始

Laravelでの開発当初は順調に美しいコードが書けたりartisanの手軽さに感動していましたが、 かなりつまずきました。その中でも特に辛かった点を紹介します。

既存のZend Frameworkとの共存

今回拡張することになった社内ツールはZend Frameworkを採用していました。Laravelを導入しようとしていた当初は、既存機能との関係が疎であるため特に問題はないかと思っていました。しかし、主にroutingやアプリケーションの起動周りで一筋縄ではいかないことが開発中に分かりつまずきました。

こちらは、管理画面のURLとLaravel側のディレクトリ構造を再検討することで解決しました。また、この問題はLaravel特有の問題ではなく、PHPの経験があれば解決できる問題でした。

周囲のPHP経験の豊富なエンジニアに相談できたので助かりました。

Laravelについて周りに聞く人がいない

PHP歴が浅く、つまずくたびに「これはLaravelの問題なのか?PHPの問題なのか?」の切り分けに時間がかかってしまいました。また当時は、検索してヒットするのも違うバージョンの記事ばかり。

これについては、勉強したのはもちろん、TwitterでLaravelリファレンスの著者の方に質問することで乗り越えられました。

話は逸れますが、PHPや社内へ導入するにあたっての問題は同僚がかなり助けてくれました。

社内への布教活動開始

開発が一段落しノウハウも蓄積できたので、そのノウハウを社内に共有しはじめました。

活動1. ConfluenceにTipsを書き溜めた

ぐるなびではノウハウ共有にConfluence *2 を使っています。ここにLaravel導入時につまずいた点や、気をつけるべき点などをまとめ、他のプロダクトで導入する際に同じ轍を踏まないように情報を共有しました。

活動2. 社内勉強会で発表

社内勉強会(定期的に行われるエンジニアLT大会)でLaravelについて発表。導入について語りはじめると、この記事のように(笑)長くなってしまうので、Laravelの中でもartisanの手軽さを推してみました。

発表後、参加していたエンジニアから「artisanコマンドだけで簡単なプログラムが作れそうだった。使ってみたい」というフィードバックが得られたので良かったです。

布教活動の現状

上記のLT大会でアンケートを実施しました。その結果は以下の表のとおり。残念ながらLT大会の時点ではまだまだLaravelは知名度すら低い状況でした。

# Laravelへの理解度 結果
1 そもそもLaravelって何? 約70%
2 知ってるけど触ったことない 約15%
3 Hello Worldしました 約15%
4 Laravelのことなら俺に任せろ ほぼ0%

4のほぼ0には、上述の同僚が挙手してくれました。笑

ただ、LT大会から期間も経過しているため、現在はもう少し知名度や経験者は増えていると予想。また機会を見つけてアンケートを実施したいと思います。

次回予告

次回のLaravel記事は以下の3本でお送りします。お楽しみに!

  1. Laravel かいはつしゃ が 5にん に ふえた !
  2. すべて Laravel の 社内ツール が できた!
  3. Laravel が 本番サービス で 稼働中!

We’re Hiring!

新しいフレームワーク、新しいミドルウェア、新しい開発手法などなど、新しい風をぐるなびに吹き込みたいエンジニアWanted!!


松村

サーチサービス開発Gでレストラン検索の開発を担当。キャッチフレーズは「コミュ力の権化」。
社外で女性エンジニアコミュニティ「Geek Women Japan」の代表をしています。
人前で話すのが大好きで社外発表は月1以上!
今楽しみにしているのは推しメンに会える握手会なテナーサックス吹きです。

*1:2017年1月17日現在。Code Search にて検索

*2:Atlassian製のコミュニケーションツール。Qiita:Teamやesaみたいなもの