SlideShare a Scribd company logo
1 of 56
Download to read offline
エキテンとLaravelと私
イアン
私の名はイアン
名前:ブライソン イアン(22)
所属:デザインワン・ジャパン
仕事:エンジニア(PHP, Laravel?)
補足:日英のハーフです
今日のアジェンダ
に、入る前に
を知っていますか?
エキテンは12年目を迎えたオールジャンルの口コミ・ランキングサイト
そう、12年目に突入しているサービス
ユーザーから見たエキテン
エンジニアから見たエキテン
データベース
店舗用
管理画面 一般画面
その他いろいろ
バッチ社内スタッフ用
管理画面
そんななか、
社長「このまま2倍3倍と成長するぞー!」
開発「こんな状態じゃ無理...」
エキテンマイクロサービス化プロジェクト始動
まずは部分的に切り出してみよう!
そこに採用されたのが
 ・PHP 7.1
 ・Laravel 5.4
 ・Blade + Vue.js
 ・レイヤードアーキテクチャ
およそ1年半をかけて切り出し成功!
今後もさらなるマイクロ化に向けて頑張るぞ!
と、まるで全てが順調のようですが
そんなわけはありません
今日は、このマイクロサービス化プロジェクトに
学生時代にLaravelの経験があったことなどを理由に
入社した4月にプロジェクト半ばでジョインし
少しずつ会社・プロジェクトの歴史的経緯を知っていきながら
開発・社内広報担当をやってみた新卒の僕の目を通して思った
うまくいってること・うまくいってないことなどを共有して
何かみなさんの教訓になれば嬉しいです
要するに、イアンの感想を聞いてください
へーーって思ってくれたら嬉しいです
今日のアジェンダ
1. ヤバイこと
2. 良いこともあるよ
3. おまけ(学生向け)
今日のアジェンダ
1. ヤバイこと
2. 良いこともあるよ
3. おまけ(学生向け)
ヤバイこと(その1)
Laravelに乗っかっていない
実際には
× Laravelに乗せなかった
○ Laravelに乗せられなかった
・根幹とも言えるモデルのデータが複数テーブルにまたがる
・一つのモデルを複数テーブルが持っている
・等々
↓
Eloquent ORMが使えず
LaravelのORMが使えないと芋づる式に自作
・Entity: 自作
・Data Access: 自作
・API: 自作
機能的な理由からService Container(DI)なども使えず
Laravelに頼れる部分は思ったより少ない
Laravelに乗っかっていない(まとめ)
外的要因が想像以上にプログラムに影響を与えるケースがある
覚悟を持って突っ込むか、賢い順番で解決しないといけない
※エキテンは突っ込まざるを得なかった
ヤバイこと(その2)
オレオレフレームワークの闇
Laravel + 自作 ≒ オレオレフレームワーク
恐れていたことが起きる...
当時の設計者がやめてしまう
・新しい開発者への共有が大変
・悩まなくていいところで、悩んだりボトルネックになったり
・なんでこうなってるんだ?→真相は闇の中...が稀だが起きる
オレオレフレームワークの闇(まとめ)
開発の初期が少数精鋭になるのはわかる
少数になったときこそ何か残す努力をしないといけない
ヤバイこと(その3)
定めきれなかった方向性
先輩「これ、実はプロトタイプの予定だったんだよ」
・当初のプランはあった
・複雑すぎる、データストアの状況やサービスのロジック
・予想できないことの連続のなかで判断をするのは至難の業
定めきれなかった方向性(まとめ)
予想できないことが起きるのは仕方がない
事業会社にしかできない勇気ある方向転換は時として必要
今日のアジェンダ
1. ヤバイこと
○ Laravelに乗っかっていない
○ オレオレフレームワークの闇
○ 定めきれなかった方向性
2. 良いこともあるよ
3. おまけ(学生向け)
良いこともあるよ(その1)
モダンな開発に近づいた
・古き良きVagrantからDockerに
・CIツール導入で自動テストや
 ブルーグリーンデプロイが可能に
・実装→レビュー→テスト→デプロイ
 のサイクルがスムーズに
モダンな開発に近づいた(まとめ)
アクセスの70%がマイクロ化されており、
重要な施策が打ちやすくなった
良いこともあるよ(その2)
開発のスピード・質の上昇
・腐敗防止層が頑張ってくれているおかげで
 ドメイン層以上は綺麗に保てている
・影響範囲の限定により大型変更にも強い
開発のスピード・質の上昇(まとめ)
昔と比較して重要ページの改修が爆速でできた
今日のアジェンダ
1. ヤバイこと
○ Laravelに乗っかっていない
○ オレオレフレームワークの闇
○ 定めきれなかった方向性
2. 良いこともあるよ
○ モダンな開発に近づいた
○ 開発のスピード・質の上昇
3. おまけ(学生向け)
おまけ(学生向け)
リファクタは難しいよ
汚いコードを見たときに
【学生時代】
時間かけてでも良いコードにリファクタしよ!
【学生時代】
時間かけてでも良いコードにリファクタしよ!
【会社】
時間かけてでも良いコードにリファクタしよ!
【会社】
時間かけてでも良いコードにリファクタしよ!
企画立案者のお仕事は、サービスの中身の向上
企画立案者のお仕事は、サービスの中身の向上
リファクタリングでは、サービスの中身は変わらない
マイクロサービス化もリファクタ(に見えてしまう)
マイクロサービス化もリファクタ(に見えてしまう)
なぜやるのか、どんな効果があるのかを説明できないといけない
これがめっちゃ難しいんだけどね...笑
今日話したこと
1. ヤバイこと
○ Laravelに乗っかっていない
○ オレオレフレームワークの闇
○ 定めきれなかった方向性
2. 良いこともあるよ
○ モダンな開発に近づいた
○ 開発のスピード・質の上昇
3. おまけ(学生向け)
○ リファクタは難しいよ
ご静聴ありがとうございました

More Related Content

What's hot

Electron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリElectron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリ祐磨 堀
 
インフラエンジニアが プログラミングで業務改善していく話
インフラエンジニアが プログラミングで業務改善していく話インフラエンジニアが プログラミングで業務改善していく話
インフラエンジニアが プログラミングで業務改善していく話Keisuke Matsuda
 
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...Dai FUJIHARA
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組みMasahiro Nishimi
 
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Yuji Otani
 
スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方Yuji Otani
 
Laravel管理画面ジェネレーター
Laravel管理画面ジェネレーターLaravel管理画面ジェネレーター
Laravel管理画面ジェネレーターTakuya Tejima
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )Yuji Otani
 
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Jumpei iwamura
 
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810九州ソフトウェアテスト勉強会Vol.16 発表資料 150810
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810Takayoshi Sakaino
 
副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフトKazuto Ohara
 
PHPカンファレンス2015
PHPカンファレンス2015PHPカンファレンス2015
PHPカンファレンス2015Daisuke Kasuya
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことYuki Okada
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作祐磨 堀
 
非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋div Inc
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Yuji Otani
 
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのかRedmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか祐磨 堀
 
Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦Masaki Yamamoto
 

What's hot (20)

Electron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリElectron で作るはじめてのguiアプリ
Electron で作るはじめてのguiアプリ
 
インフラエンジニアが プログラミングで業務改善していく話
インフラエンジニアが プログラミングで業務改善していく話インフラエンジニアが プログラミングで業務改善していく話
インフラエンジニアが プログラミングで業務改善していく話
 
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
 
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
 
Codevs5.0勉強会
Codevs5.0勉強会Codevs5.0勉強会
Codevs5.0勉強会
 
スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方
 
Laravel管理画面ジェネレーター
Laravel管理画面ジェネレーターLaravel管理画面ジェネレーター
Laravel管理画面ジェネレーター
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )
 
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話
 
5min ques#1 150806
5min ques#1 1508065min ques#1 150806
5min ques#1 150806
 
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810九州ソフトウェアテスト勉強会Vol.16 発表資料 150810
九州ソフトウェアテスト勉強会Vol.16 発表資料 150810
 
副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト
 
PHPカンファレンス2015
PHPカンファレンス2015PHPカンファレンス2015
PHPカンファレンス2015
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なこと
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作
 
非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋非エンジニアカンファレンス資料の抜粋
非エンジニアカンファレンス資料の抜粋
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのかRedmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
Redmine勉強会vol.1 なぜ組織にはドキュメンテーションが必要なのか
 
Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦
 

Similar to エキテンとLaravelと私

いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介Kouji Hosoda
 
Dev sami 120727_slideshare
Dev sami 120727_slideshareDev sami 120727_slideshare
Dev sami 120727_slideshareToyoshige Oki
 
エンジニアと"協同"してサービスをつくる
エンジニアと"協同"してサービスをつくるエンジニアと"協同"してサービスをつくる
エンジニアと"協同"してサービスをつくるIshikawa Yuya
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト祐磨 堀
 
確定申告ってなんでやるの?.pdf
確定申告ってなんでやるの?.pdf確定申告ってなんでやるの?.pdf
確定申告ってなんでやるの?.pdfssusera9322b
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3虎の穴 開発室
 
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...Peatix Japan
 
0からのウェブディレクション講座:制作・開発編 ver 3.00
0からのウェブディレクション講座:制作・開発編 ver 3.000からのウェブディレクション講座:制作・開発編 ver 3.00
0からのウェブディレクション講座:制作・開発編 ver 3.00Yusuke Kojima
 
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTVue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTLINE Corporation
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」naoki ando
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験gree_tech
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド虎の穴 開発室
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏Yusuke Hirao
 
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツMori Keita
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことMasakazu Muraoka
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情Naoki Yamada
 

Similar to エキテンとLaravelと私 (20)

アンラーニング
アンラーニングアンラーニング
アンラーニング
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介いろいろ見せますLord of Knightsのクライアント開発事例紹介
いろいろ見せますLord of Knightsのクライアント開発事例紹介
 
Dev sami 120727_slideshare
Dev sami 120727_slideshareDev sami 120727_slideshare
Dev sami 120727_slideshare
 
エンジニアと"協同"してサービスをつくる
エンジニアと"協同"してサービスをつくるエンジニアと"協同"してサービスをつくる
エンジニアと"協同"してサービスをつくる
 
事業企画
事業企画事業企画
事業企画
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
 
確定申告ってなんでやるの?.pdf
確定申告ってなんでやるの?.pdf確定申告ってなんでやるの?.pdf
確定申告ってなんでやるの?.pdf
 
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
オタクエンジニアを熱くさせる!モチベーションと効率をあげるチームビルディング_20210611_TechDay#1_3
 
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
社会人になってからでもソフトウェアエンジニアになれる?どんな時代でもなりたい自分でいるために大切なこと [KIKKAKE for Parents#6 イベ...
 
0からのウェブディレクション講座:制作・開発編 ver 3.00
0からのウェブディレクション講座:制作・開発編 ver 3.000からのウェブディレクション講座:制作・開発編 ver 3.00
0からのウェブディレクション講座:制作・開発編 ver 3.00
 
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLTVue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
Vue Fes Japan 2018 LINE株式会社 LunchスポンサーLT
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Deno で始めるフロントエンド
Deno で始めるフロントエンドDeno で始めるフロントエンド
Deno で始めるフロントエンド
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
 
ON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったことON HTML5 FIELD で書き尽くせなかったこと
ON HTML5 FIELD で書き尽くせなかったこと
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
 

エキテンとLaravelと私