会員制株式情報サイトのリニューアル案件
・背景 元々レガシーなphpシステムで稼働していたシステムでした。 フレームワークも何も使用されていない素のphpで改修を重ねたシステムで 新規の機能追加や既存機能の改修が非常に工数のかかる状態になっていました。 そこで、 ・メンテナンスしやすく ・外部の人に手伝って頂く場合の環境構築の手間を減らす ことで、一人あたりの開発効率アップと、人数が増えた時にもコミュニケーションロスを抑えることで、よりお客さんに貢献できるシステム開発ができるような環境を整備しました。 ・具体的な構築内容 まず、一度にphpのシステムをリプレースすることは厳しかったため、php環境とrails環境を並行で用意し機能単位で載せ替えていく方式にしました。必然的に各開発者のローカルに複数の環境を構築する必要があるため、手動で行うと新規の参入者にとってハードルが挙がってしまいます。そこで、各環境(php, rails, db, キャッシュサーバ用のredis、フロント用のnginx)をすべてdocker化し、docker-composeで管理することで、環境構築の手間を省けるようにしました。 またrailsの環境については新規に作る部分なのでrails5を選択しましたが、その点においても、私の方でrails5の環境を検証した上で、dockerファイルを更新することで自動的に各開発者にもrails5の環境がセットアップされるようにできたので環境面でのメリットは多かったと思います。 ・構築にあたっての問題点 dockerにすることでのメリットもありましたが、dockerにしたことで発生してしまった問題もあり、そこを解決するのは非常に苦労しました。具体的には私のqiitaアカウントにまとめています(http://qiita.com/pocari/items/456052a291381895f8b3) またrails5にしたことで使おうとしていたライブラリがまだ対応されていないものもあり、どのように対応するかは非常に悩みました。具体的には ・同等の内容でrails5対応されている別のライブラリに変更する (今回のシステムだと、Draperを使おうとしていたがActiveDecoratorに変更した) ・githubのmasterから取得する (redis-railsなどは現在もその状態です) ・パッチを書いてプルリクする (今回のシステムでは複合主キーが必須だったため、composite_primary_keysが必須でしたがrails5.0.0.rc1でエラーになったため、パッチを書いてプルリクし対応(https://github.com/composite-primary-keys/composite_primary_keys/issues/356) 以上のような困難も多々ありましたがトータルでは非常にメンテし易いところまでもっていけたことは非常に勉強になりました。 ・課題 現状レガシーシステムをリプレースしただけですので、フロントまわりなどはまだ生のjavascriptが多々ありそのあたりも改善していこうとしています。