初日、行ってまいりました。
流行りの環境うんぬんは単なる手段であり、"経営陣を含めたマインドセットの更新が大事"ってのはありますが、そんな話みんな読みたくないでしょ?
僕が調べた現状と、こういう風に持って行きたいという理想の環境を書き出してみました。
現状
- 本番環境
- さくらのマネージドサーバー(FreeBSD)
- ステージング環境
- 共有開発サーバー(社内に古めのCentOS)
- 開発環境
- 共有開発サーバー(社内に古めのCentOS)
- ソースコード管理
- svn
- 共有開発サーバーのコードを担当者一人が全員を代表してsvnにコミットする。バックアップ的な役割
- タスク管理
- 社内の独自タスク管理システム
- デプロイ
- 共有開発サーバーのソースをFTPでアップする
- 開発マシン
- Windows7
- コーディング規約
- PEAR標準コーディング規約をカスタマイズしたもの
- コードレビュー
- なし
- チャット
- IP-Messenger
- ナレッジ共有
- 社内の独自情報共有システム
- 社内の独自日報システム
- 自動テスト
- なし
- サーバー監視
- なし
- エラー管理
- メールが飛ぶ
- ライブラリ利用
- なし
- フレームワーク
- なし(一部Codeigniter)
理想
- 本番環境
- AWS?, DigitalOcean?
- ステージング環境
- 上記サービス上に構築
- 開発環境
- 各自のローカルマシン
- Vagrant?, Docker?, XAMMP?
- 各自のローカルマシン
- ソースコード管理
- github
- タスク管理
- Github Issue?, Pivotal? Trello?これは現状維持でもいいかも。
- デプロイ
- rocketeer
- 開発マシン
- Mac?, Linux?, Windows?
- コーディング規約
- PSR-4
- コードレビュー
- PRベースで行う
- チャット
- Slack
- ナレッジ共有
- Github Wiki?これも現状維持でいいかも
- 自動テスト
- CircleCI
- サーバー監視
- NewRelic
- エラー管理
- Rollbar
- ライブラリ利用
- Composer
- フレームワーク
- Laravel?
感想
正直レガシーPHPの現場というと、"鳴り止まぬクレーム電話"、"デスマ続きで死んだ目をしたプログラマの群れ"などをイメージしてたんですが、現行のシステムでちゃんと商売が回って売上が上がっているし、現状を良くしていきたいというポジティブな雰囲気があったのでそれだけで行ける気がしました。
現行のツール類や開発フローに関しては、皆さんも思ったかもしれませんが、"懐かしい"の一語に付きます。昔は僕らだってみんなこうだったんだよ!
これはレガシーPHP(Legacy PHP)というより古き良きPHP(The good old PHP)と呼びたい感じ。
見えてきた開発環境の今昔
こうやってカテゴリ分けしてみると昔と今で同じ方向ですべてのツールが進んでるように感じます。
昔(って言い切るのはひどいですが)は社内で閉じていて外からは使えません。今のツール群はオープンでどこからでもスマホなどいろんなデバイスで使える傾向にあります。
また、昔のツールは1人または少人数で同期的に使うように出来ていますが、今のツールは多人数・非同期で作業することが前提となっています。
要は「場所・人数・時間」を選ばないように進化してきてるってことですかね。
困っていること
理想に近づけるのにまずやる必要があるのが、みんながひとつの開発環境を使っている現状から個別のローカルで開発してコミットするというフローに変更するところ。
たくさんのサイトが社内の共通開発環境で動いてるのですが、デザイナーも含めてWindowsでローカル開発に変えるには今だとどうするのが一番いいんでしょうか?
XAMPP?Vagrant?Docker?どっかのサーバーに全員分の環境を作る?
もしおすすめがあったら教えていただけるとありがたいです。
世の中のレガシーPHPを減らしたい
レガシーPHPを改善する一連のフローを毎回苦労して行うのは無駄ですよね。レガシーPHPを改善したいと思っている会社さんはたくさんあると思うし、それができる小さい会社やフリーランスのプログラマーもたくさんいると思いますし、求人・お仕事のマッチングもたくさん生まれるのではないかと思います。(前回ご一緒させていただいた @kaz_29さんや@kjirouなど僕が出会えてる人はその本当一部なので)
そこで、上手くいきそうだったらレガシーPHP改善のノウハウを共有するイベントや実際に改善していく集団・コミュニティーが出来たらいいなとおもいます。