弊社の開発フローについて

さて、一回目の記事は引き続き渡辺が担当いたします。
最初ですので、弊社の開発フローについてお話ししたいと思います。

ざっとですが図にしてみました。
開発時の反映フロー

現在、弊社のソーシャルゲームの開発は、
各プラットフォームのAPIやプロキシを通さなくてはいけない都合上、
ローカルではなくクラウド上に各自の開発環境を持っています。

また、ソースコードを各プロダクトで共用することも多く、
各個人が手動でソースコードを上げるのは手間がかかるため、
自動化して業務効率化を図っています。

1.Gitのpush

GitのホスティングサービスはGitHubを利用しています。
ちなみにPull Request運用の移行黎明期でして、
色々と模索している最中だったりします。

pushに関してはエンジニアのみならず、
ディレクター、デザイナーも含め、ほぼ全員がGitを直接操作しています。
ディレクターはマスター情報を反映する専用のツールがあり、そちらから反映していますが、
反映画面に関してはほぼgitのコマンドを叩くだけになっているため、Git操作の知識は一通り持っているかと思います。
最初の教育コストはそれなりにかかりますが、
それ以上にバージョン管理のメリットを享受できているのではないでしょうか。

2.GitHubから各ツールへ

GitHubにPushされたあと、WebHooksやコラボレーションアプリを通じて、
各ツールへの配信が始まります。

2-1.Scrutinizer

PHPに特化した静的監視ツールです。(あとRubyとPython)
コーディング規約のチェックや、セキュリティ・ホールがないか等の分析を行っています。
もし何らかのアラートが出た場合は、Slackで各個人にフィードバックが飛びます。
こちらに関しては私が過去に外部でLTをしましたので、後ほど別記事でご紹介したいと思います。

2-2.Jenkins

言わずと知れたCIツールです。
ビルドトリガーではPHPUnitを走らせています。
こちらもテストが死んだ場合等はSlackにフィードバックが飛びます。
また、一週間に1回カバレッジや重複コードのチェックも走り、
今週の開発の質を振り返れるようになっています。

2-3.Redmine

弊社ではチケット駆動開発を実践しており、
コミットはすべてRedmineのチケットに紐付きます。
Redmine上でソースコードを閲覧できるようにするため、
ベアリポジトリのコピーをサーバ上に作成し、
チケット情報の更新を行っています。

3.各開発サーバへ配信

上記の各ツールへの配信と平行して、
各開発サーバへのソースコード展開を行います。
こちらに関してはAnsibleという構成管理ツールを使用して、
各サーバへRsyncを行っています。
前述したJenkins、Redmineのソースコード展開もAnsibleで構築されています。


以上、簡単ではありますが、現状の開発反映フローでした。

2011年頃からオンプレミスの環境は廃止しており、
現状ではすべての開発環境がクラウド上で構築されています。

これで満足しているわけではありませんので、
何か良い改善案があればいつでも変更したいと思っています!

 

作者 Jun Watanabe

2010年11月ORATTA入社。エンジニアリーダーと名刺には書いてました。

コメントを残す