BlogKLabは、多くのスマートフォン向けゲームを開発・提供しています。スマートフォン向けゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。このブログでは、KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、広く紹介していきます。そんなふうに考えていた時期が俺にもありました。使って開発環境を構築した事例を紹介します。どちらかというと、ぶっちぎってサーバサイド寄りの話でしかも管理寄りの話だったりもしますが、その他の方々にも何かお役に立てれば幸いです。イメージを配布する、という方法でローカルの開発環境を提供している案件も有ります。それらの案件も息が長くなり、下記のような状況が散見されるようになってきました。個人が検証目的などで言語のバージョンを変えたり追加のエクステンションなどを入れたが、それを元に戻していないその結果、チーム内メンバー間の環境の違いによるトラブル(テストが通らない等)が発生するというけしからん事態になってきました。方向性そこで、次の様な戦略でローカル開発環境をもっと簡単に管理していきましょう、というのが本論となります。環境の再現をコードで表しておくことで、管理が非常に楽になります。リポジトリ経由で気軽に行えるので、配布行為自体もラクになります。個人の好みを配布物に含めない。コードを書く際のエディタやシェルその他(個人にとっての)便利ツールなどは完全に個人の好みの問題であるので、実行環境とは完全に切り離すべきです。実行環境を不可侵にしておけば、心理的障壁はなくなるはずです。上記のようにしておけば、気軽に作り直せるし、配布も簡単だし、良いことずくめです。サーバなど、もろもろのサービスが必要となってきます。コマンドを叩いていたのでは埒が明きませんから、docker-composeを利用して簡潔に管理できるようにしています。下記のような感じです。作成、それ以外はオフィシャルイメージを流用するなどして、サービス群の関連などと共に記述していきます。たたくだけ)を実行してもらうだけなので、実行環境の再現は非常に簡単です。なっているのは、テンプレートとして使用しているためです。そのものを意識しなくてすむような、アダプタ的コマンド集の形をしています。下記のようなインターフェイスを提供しています。実行環境への唯一のエントリーポイントとしておくことで、環境が育ってしまうことが避けられます。dockerize開発に必須なツール達が色々なソフトウェアに依存していることもあると思います。上で実行するようにスクリプト化しておけば、面倒な依存のインストールの負担をかけなくてすみます。永続化するなどの工夫が必要になると思います。依存を少なくし、環境構築がすぱっといくようにしています。サポートしていません。ビルドしておけば、下記のように利用できます。どっかどっか使って、管理のしやすさを念頭に置いたローカル開発環境の事例を紹介しました。サーバとしても利用できます。ここからさらに発展させて、クライアントのテスト実行環境、その他運用上必要なツールの開発に至る、案件の包括的な開発基盤として発展しているケースもありますが、これについてはまた別途紹介したいと思います。