自己紹介
@pugiemonn といいます。
オンラインサロンプラットフォームを手掛けるシナプス株式会社で開発とマーケティングを担当しています。
今日の話
1年前にレガシー環境に参加したメンバーがレガシーな問題に対して、どのような取り組みを行ってきたかお話します。
開発チームメンバーゼロ問題
社長1人で3年開発していた
- 1人で走るのはつらい
- 突然ユーザー数が増加しはじめピンチに
求人がんばった結果
チームメンバー10名(インターン生含む)になりました✨
バージョン管理されてない問題
1人だったのでバージョン管理など無かった
GitとGithubを導入した結果
- まずはSourceTreeから
- 作業ログがわかるようになった
- 問題発生箇所の調査が容易に
作業がチケット化されていない問題
1人だったのでチケットなど無かった
- 何のタスクかわからない
チケット管理した結果
- 何の作業かわかるようになった
- 現在はBacklogを使用
- Githubとの連携で調査が容易に
デプロイがSFTP問題
FTPクライアントTransmitでアップロード
- ちょっときつい😓😓😓😓😓
デプロイの自動化を進めた結果
- ひとまずgit pullでデプロイするように✨
- 後にシェルを作ってデプロイ✨✨
次はElastic Beanstalkかも✨✨✨
ローカル開発環境が存在しない問題
当時は本番環境が開発環境
- 本番のEC2のコードをそのまま修正
開発環境をVagrantで作成した結果
- ローカル開発環境が誕生✨
- 開発環境をチームで統一化✨✨
- 開発環境の自動化✨✨✨
ちょっとずつ改善されています😘
1つのEC2インスタンスに全部乗っている問題
LAMPが1つのEC2インスタンスに全部入っている
- MySQLもストレージも全部入っている
- 10GBのHD使用率が90%越え
- HDが溢れてしょっちゅう止まる
AWSのサービスに分散
- S3を使用することで、HDが溢れて止まることがなくなる ✨✨✨
DBを手動バックアップ問題
手動でたまにdump
- EC2インスタンスが壊れたりするとまずい
MySQLをRDSに変更
- もしものときも復帰可能に!
1人でがんばっちゃう問題
3日くらい徹夜すればできるはず
- チーム開発経験が少ない
- 1日は72時間あるから大丈夫など迷言増加
大変なときはチームを頼ろう
- 徹夜作業の減少✨
- 負債の減少✨✨
チームに共有する文化ができてきました😘
無駄なコード多すぎ問題
過去のチャレンジの負債
- CMSが何個もリポジトリに
- 1つのコントローラが1万行以上
不要なものを削除したり分割中
- 不要なコード、CMSやライブラリを削除
- コントローラを分割
徐々に見やすくなってます😘

命名適当すぎ問題
読んでもわからないコード
-
s
、test1
のようなアクション名 -
wpprpayment
のような謎の変数名
コーディング規約を入れたり勉強会した結果
- PSR-2を導入
- リーダブルコードの内容を一緒に勉強
少しずつ読みやすくなっていますす😘
型が適当すぎ問題
何でもテキストで判定
- Stringをキーにして判定
- Trueの代わりに1という文字列が返る
APIで返す型だけは担保
- JsonSchemaを導入
APIの不具合が減少😘
参考 : JSON SchemaとPHP
DB管理と設計が適当すぎ問題
開発の度にカラムを足していた
- 1テーブルのカラム数多すぎる
- 型が適当で正規化されていないテーブル
- 必要なカラムだがぱっと見で意味不明なカラム名
正規化して型を指定
- 正規化してテーブルを分割
- 命名を変更、型変更や制限を追加
日々の改善でだんだんわかりやすく😘😘😘
PHPやライブラリ古すぎ問題
バージョンが古い問題
- 遅いだけでなくいろいろ大変
- 新しいライブラリが入れられない
PHPもSDKもバージョンアップ
-
array()
いらずなど - パフォーマンスも改善
CakePHP古すぎ問題
CakePHP1.3系がメインだった
- 1.3
APIに切り出してCake2系に
- 既存ソースを使いたかったのでCakePHPを選択
- APIで主要機能を切り出しCakePHP2.X系に
バグ多すぎ問題
とにかくバグ多すぎ
- 土日にSlackへ緊急対応依頼がとぶ
- 手動テストの限界?
CIでテストを実行した結果
- CircleCIを利用
- PHPUnitとSeleniumでカバー
休日の緊急依頼が減少 😘😘😘
色々ありました
まだまだレガシー感あります
1人で走るのは大変だったけど
チームで走ればなんとかなるかも
すこしずつ楽になっています
一緒に環境をよくしてくれる人募集しています
シナプス株式会社 http://corp.synapse.am/recruit
ありがとうございました
このスライドは 第103回 PHP勉強会@東京 でLTとして発表予定のスライドです。