Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
歴史あるwebサービスに携
わって2年半の間に起きた事
やった事
GMO Pepabo, Inc.
Masataka Kono2015-08-29 第3回ペパボテックカンファレンス
自己紹介
● カラーミーショップのエンジニア
● ペパボに入社して2年半ちょっと
● Webプログラマー歴も2年半です
● みんなからは「ぼいらー」
● PHPerです
● Twitterは @mapyo です
カラーミーショップ
● 10年続くサービス
● 独自フレームワーク
● 大部分はPHP
● Railsでapi
● CoffeeScript
● AngularJS
● エンジニア募集中
今日話したい事
● 僕が入社してから今日までの出来事
● 歴史あるサービスの改善の様子を伝える
● 同じ立場の方の少しでも役に立てば。。。
● 何かをもっとよくする方法はいろいろある
● 話す事でなにかしらのフィードバックを頂きたい
※僕がやっ...
目次 その1
● 入社した当時の状況確認
● GitHub Enterpriseを使うようになった!
● レビューをするようになった
● テストの導入
● Composerが導入された
● 社内用のComposer ライブラリ作った
● ローカ...
目次 その2
● Wheneverでcronの変更を自動化
● MySQL4.0から、5.6へのバージョンアップ
● Eloquent ORMの導入
● 画像サーバをFTPサーバからBayt(S3互換)に
切り替え
● 入社当時と今を比較する
...
入社した当時の状況確認1
● Trac使ってた
● レビューは特に無し
● バージョン管理
SVN + git-svn
● PHPバージョン
PHP5.3, 一部PHP4
入社した当時の状況確認2
● Deploy
Webistrano
● 素のSQL
● テストは特になし
● Composer特に使ってなかった
● 開発環境はMaglica
こんな感じでした。
GitHub Enterpriseを使うようになった
● 全社的に導入されていった
● SVN + git-svnからの脱却!
● GitHubと同じような形で使える!
(当時はGitHubあまり使った事なかった)
● issueたてたり、Pu...
レビューをするようになった
● Pull Requestレビューしやすい!!
● 差分が簡単に見れる
● コードの修正箇所1行1行にコメントを
入れられる
レビューをするようになった
PSRを意識するようになった。
ref. http://www.php-fig.org/
PSRについて
ref. http://www.slideshare.net/yandod/psrphp
PHP-CS-Fixer
● コマンドラインツール
● PSR-1 と PSR-2
● 自動的に修正してくれる
● 僕はvim-php-cs-fixerでvimから整形してます
既存のコードを直す時(僕の場合
1. PHP-CS-Fixer使ったり不要なコメント消す
2. プルリク、レビュー、マージ
3. コードの修正
4. プルリク、レビュー、マージ
プルリクの差分が見やすい!
コードの整形プルリク
コードの整形をした時のプルリクURL
https://github.com/foo/bar/pull/569/files?w=
● ?w= をつける
● git diff -w と同じような形
● レビューしやすい!
● ただし行単位でのコメン...
PHP-CS-FixerとJavaScriptの罠
1. JavaScriptを含むPHPファイルを整形
2. JavaScriptのelse if→elseifに
3. エラーに。。。
しかも、?w=だと、差分として出てこない!!
※かなり前...
レビューをするようになった2
● 順番に毎日交代でレビュー当番
● 共通の認識が産まれる
● コードのここの問題をこうしたいという会話が増
えた
● その問題をどうすればいいんだろうと考える機
会が多くなった
テストの導入
● E2Eテストが作られた
RSpec + Capybara (Ruby)
● ユニットテスト
PHPUnit
● E2Eテストの正常系だけでも作るのオススメ
● 別サーバにファイルをアップするなどあると
ちょっと辛い
Composer導入された 導入前
● ライブラリを探してバージョン管理に追加
● サーバチームにpearのinstallを依頼
何か便利そうなものを入れるにも一手間かかって
いた。
これが簡単に!!!
Composerが導入された 第一形態
● composer.json書く
● composer install
● autoload.phpをrequire
● そのままバージョン管理に追加する
● そのままdeploy!!
PHP5.3.2...
Composerが導入された 第二形態
● deploy時にcomposer installするようにする
● venderディレクトリをgit管理からはずす
● そのままdeploy!!
新しくライブラリ追加する時に差分が膨大にならな
くなっ...
社内用のComposerライブラリ作った
● メインでメンテされているロールが4つ。
● その他もろもろ。
● あるロールのロジックをコピペして別ロール
に。。。
複数のロールで同じようなロジックがあれば共通
化したい!!!
社内用のComposerライブラリ作った
● という事で作りました。
● Composerに対応したGitHubリポジトリの作成
というブログ書きました。
● 新しく何か作る時にこれは別ロールでも使う機
能なのか?を考えるようになった。
 いい...
ローカル開発環境が構築された
● Vagrant + Puppet
● 優秀な新卒氏の一人が研修の一環で作って
いった
● 今まではMaglica上でそれぞれ作ってた
● 何か仕組みを変えた時に他の人に展開するの
が楽になった
● とりあえずp...
Wheneverでcronの変更を自動化
● crontabを管理してくれるGem
● 導入前1
サバチに作業をお願いしていた(手作業)
● 導入前2
手作業でcrontabを編集
● 導入後
コードにcrontabの設定を落としこむ。もちろん...
いい時代になったなぁ(^-^)
MySQLバージョンアップ
● 1年弱かけて4.0→5.0→5.6へバージョンアップ
● めっちゃ古いものから最新のものになってテン
ションがあがった!!!
● 第1回ペパボテックカンファレンスにて発表。
Eloquent ORMの導入
● LaravelについてくるORM
● 今までは素のSQLを書いていた。
● もうちょっと効率的に開発したい
● 意識の高まり・いいタイミングがあった
● 使い方のサンプルを作ってチームメンバーに共有
● 新し...
画像サーバをFTPからBaytへ
● BaytとはS3互換のストレージサーバ
● 既存のFTPとやりとりしているロジックを全て1
つに
● 1つにしたロジックでBaytに切り替えできるよう
に
● ライブラリが5.4〜だったので5.3対応
● ...
入社当時と今を比較する1
● Trac→GitHub Enterprise
● レビューするようになった
● バージョン管理
SVN + git-svn→git
● PHPバージョン
PHP5.3, PHP4はなくなったはず
入社当時と今を比較する2
● Deploy
変わらず Webistrano
● 素のSQL→Eloquent ORM
● テスト書くようになった。
PHPUnit, Capybara
● Composer使用中。社内用Composerライブラ
...
最後に
● 2年半いろいろあったー。
● やっぱりWeb業界は移り変わり激しい
● 今後もバーンとやっていけるように粛々とがん
ばります。
● もし同じような境遇の方々の参考になればさい
わいです。
● 逆によいアドバイス等ありましたら教えて頂...
以上になります!
ありがとうございました!!!
Upcoming SlideShare
Loading in …5
×

歴史あるWebサービスに携わって2年半の間に起きた事やった事

4,797 views

Published on

第3回ペパボテックカンファレンスでの発表資料です
http://pepabo.connpass.com/event/18641/

Published in: Technology

歴史あるWebサービスに携わって2年半の間に起きた事やった事

  1. 1. 歴史あるwebサービスに携 わって2年半の間に起きた事 やった事 GMO Pepabo, Inc. Masataka Kono2015-08-29 第3回ペパボテックカンファレンス
  2. 2. 自己紹介 ● カラーミーショップのエンジニア ● ペパボに入社して2年半ちょっと ● Webプログラマー歴も2年半です ● みんなからは「ぼいらー」 ● PHPerです ● Twitterは @mapyo です
  3. 3. カラーミーショップ ● 10年続くサービス ● 独自フレームワーク ● 大部分はPHP ● Railsでapi ● CoffeeScript ● AngularJS ● エンジニア募集中
  4. 4. 今日話したい事 ● 僕が入社してから今日までの出来事 ● 歴史あるサービスの改善の様子を伝える ● 同じ立場の方の少しでも役に立てば。。。 ● 何かをもっとよくする方法はいろいろある ● 話す事でなにかしらのフィードバックを頂きたい ※僕がやった事もあれば、他の方がやった事もあります。 ※各サービスによっていろいろ状況は違います。 ※昔の記憶は若干曖昧な事があります。
  5. 5. 目次 その1 ● 入社した当時の状況確認 ● GitHub Enterpriseを使うようになった! ● レビューをするようになった ● テストの導入 ● Composerが導入された ● 社内用のComposer ライブラリ作った ● ローカル開発環境が構築された
  6. 6. 目次 その2 ● Wheneverでcronの変更を自動化 ● MySQL4.0から、5.6へのバージョンアップ ● Eloquent ORMの導入 ● 画像サーバをFTPサーバからBayt(S3互換)に 切り替え ● 入社当時と今を比較する ● まとめ
  7. 7. 入社した当時の状況確認1 ● Trac使ってた ● レビューは特に無し ● バージョン管理 SVN + git-svn ● PHPバージョン PHP5.3, 一部PHP4
  8. 8. 入社した当時の状況確認2 ● Deploy Webistrano ● 素のSQL ● テストは特になし ● Composer特に使ってなかった ● 開発環境はMaglica こんな感じでした。
  9. 9. GitHub Enterpriseを使うようになった ● 全社的に導入されていった ● SVN + git-svnからの脱却! ● GitHubと同じような形で使える! (当時はGitHubあまり使った事なかった) ● issueたてたり、Pull Request作ったり ● 今ではこれが当たり前。 ● これがないと仕事にならない。
  10. 10. レビューをするようになった ● Pull Requestレビューしやすい!! ● 差分が簡単に見れる ● コードの修正箇所1行1行にコメントを 入れられる
  11. 11. レビューをするようになった PSRを意識するようになった。 ref. http://www.php-fig.org/
  12. 12. PSRについて ref. http://www.slideshare.net/yandod/psrphp
  13. 13. PHP-CS-Fixer ● コマンドラインツール ● PSR-1 と PSR-2 ● 自動的に修正してくれる ● 僕はvim-php-cs-fixerでvimから整形してます
  14. 14. 既存のコードを直す時(僕の場合 1. PHP-CS-Fixer使ったり不要なコメント消す 2. プルリク、レビュー、マージ 3. コードの修正 4. プルリク、レビュー、マージ プルリクの差分が見やすい!
  15. 15. コードの整形プルリク
  16. 16. コードの整形をした時のプルリクURL https://github.com/foo/bar/pull/569/files?w= ● ?w= をつける ● git diff -w と同じような形 ● レビューしやすい! ● ただし行単位でのコメントはできない
  17. 17. PHP-CS-FixerとJavaScriptの罠 1. JavaScriptを含むPHPファイルを整形 2. JavaScriptのelse if→elseifに 3. エラーに。。。 しかも、?w=だと、差分として出てこない!! ※かなり前の話です!!
  18. 18. レビューをするようになった2 ● 順番に毎日交代でレビュー当番 ● 共通の認識が産まれる ● コードのここの問題をこうしたいという会話が増 えた ● その問題をどうすればいいんだろうと考える機 会が多くなった
  19. 19. テストの導入 ● E2Eテストが作られた RSpec + Capybara (Ruby) ● ユニットテスト PHPUnit ● E2Eテストの正常系だけでも作るのオススメ ● 別サーバにファイルをアップするなどあると ちょっと辛い
  20. 20. Composer導入された 導入前 ● ライブラリを探してバージョン管理に追加 ● サーバチームにpearのinstallを依頼 何か便利そうなものを入れるにも一手間かかって いた。 これが簡単に!!!
  21. 21. Composerが導入された 第一形態 ● composer.json書く ● composer install ● autoload.phpをrequire ● そのままバージョン管理に追加する ● そのままdeploy!! PHP5.3.2以上の環境で導入していないのであれ ば今直ぐ入れるべき!!!
  22. 22. Composerが導入された 第二形態 ● deploy時にcomposer installするようにする ● venderディレクトリをgit管理からはずす ● そのままdeploy!! 新しくライブラリ追加する時に差分が膨大にならな くなって、レビューしやすくなる
  23. 23. 社内用のComposerライブラリ作った ● メインでメンテされているロールが4つ。 ● その他もろもろ。 ● あるロールのロジックをコピペして別ロール に。。。 複数のロールで同じようなロジックがあれば共通 化したい!!!
  24. 24. 社内用のComposerライブラリ作った ● という事で作りました。 ● Composerに対応したGitHubリポジトリの作成 というブログ書きました。 ● 新しく何か作る時にこれは別ロールでも使う機 能なのか?を考えるようになった。  いい効果が産まれた!!(^O^)
  25. 25. ローカル開発環境が構築された ● Vagrant + Puppet ● 優秀な新卒氏の一人が研修の一環で作って いった ● 今まではMaglica上でそれぞれ作ってた ● 何か仕組みを変えた時に他の人に展開するの が楽になった ● とりあえずpuppet applyしてくださいと言える。
  26. 26. Wheneverでcronの変更を自動化 ● crontabを管理してくれるGem ● 導入前1 サバチに作業をお願いしていた(手作業) ● 導入前2 手作業でcrontabを編集 ● 導入後 コードにcrontabの設定を落としこむ。もちろんレビューも。 deployで自動的に反映される
  27. 27. いい時代になったなぁ(^-^)
  28. 28. MySQLバージョンアップ ● 1年弱かけて4.0→5.0→5.6へバージョンアップ ● めっちゃ古いものから最新のものになってテン ションがあがった!!! ● 第1回ペパボテックカンファレンスにて発表。
  29. 29. Eloquent ORMの導入 ● LaravelについてくるORM ● 今までは素のSQLを書いていた。 ● もうちょっと効率的に開発したい ● 意識の高まり・いいタイミングがあった ● 使い方のサンプルを作ってチームメンバーに共有 ● 新しく作ったり、既存のものを直したりする時に置き換える ● もう昔の素のSQLを書いていた時代には戻れない \(^o^)/
  30. 30. 画像サーバをFTPからBaytへ ● BaytとはS3互換のストレージサーバ ● 既存のFTPとやりとりしているロジックを全て1 つに ● 1つにしたロジックでBaytに切り替えできるよう に ● ライブラリが5.4〜だったので5.3対応 ● 既存のリファクタリングが一番辛い
  31. 31. 入社当時と今を比較する1 ● Trac→GitHub Enterprise ● レビューするようになった ● バージョン管理 SVN + git-svn→git ● PHPバージョン PHP5.3, PHP4はなくなったはず
  32. 32. 入社当時と今を比較する2 ● Deploy 変わらず Webistrano ● 素のSQL→Eloquent ORM ● テスト書くようになった。 PHPUnit, Capybara ● Composer使用中。社内用Composerライブラ リあり。 ● Maglica→ローカル開発環境
  33. 33. 最後に ● 2年半いろいろあったー。 ● やっぱりWeb業界は移り変わり激しい ● 今後もバーンとやっていけるように粛々とがん ばります。 ● もし同じような境遇の方々の参考になればさい わいです。 ● 逆によいアドバイス等ありましたら教えて頂ける とありがたいです。
  34. 34. 以上になります! ありがとうございました!!!

×