組織の規模や、制作する対象の「手を入れ続ける期間」、そして最終的に世に出す時の細かな後処理の多さを勘案して、自動化について調べることにしました。
こういうものは、学習コストが初期段階発生して、後半で楽できるっていうかないとやってられない様なたぐいのものなのですが、そのへんの損益分岐点を超えたぜっていう感覚があったので大急ぎで調べてます。
サーバアプリ面
現状PHPをさわっているのですが、PHPのデプロイシステムってあんまり世に出ているもので定番っていうのがない気がします。
今のところ、ど新規のサービスということもありWAPが5台未満のサービスが多そうなので、SVNから落としてきて環境依存部分を切り替えて、現行のソースをリネームで保管して差し替えるようなスクリプトくんでました。
社内でヒアリングしたところ、Jenkinsによるテストにデプロイも組み込むような噂を聞いたので、とりあえず現行プロジェクトのJenkins対応を進めています。
個人的にはGoogle App Engineのバージョニングは素敵だと思うので、それに似たような仕組みもちょっと作ってみたいです。管理画面でバージョンいつでも切り替えれて、使用中のバージョン以外にも、16.someservice.appspot.com っていうドメインでバージョン16にアクセスできるやつ。
追記:DNSをWildCardにして、mod_vhost_aliasで設定すればサクッとできるみたい。バージョニング用は社内IPから接続できるようにして、動作確認したあと、デフォルト分をgracefulで再起動するか、mvでリネームするかって感じですね。
http://www.artsnet.jp/archives/32
フロント(HTML/CSS/JS)
軽量化が必須なので、こちらも「編集用ファイル」と「配信するファイル」は別になりそうです。CSSはSaSSによるコーディング、JSはminify/連結、画像はSprite処理などをデプロイ時に行うようなワークフローを用意したいと思い調べています。
追記:SaSSについては、Compassというのが良さげなので検証中。Compassで書いたCSSで以下の様な変換をかまします(予定)。
- 小さい画像のsprite化
- media queryを使ったretina画像切り替え
- 複数CSSの結合
- minifyしてサイズ圧縮
ネイティブ(iOS/Android)
こちらもJenkins対応ですね。特にAndroidはこまめに修正をかけれるので、エンジニアじゃなくてもGoogle Playにバイナリアップができる仕組みを用意したいと思っています。
JenkinsでCI(継続的インテグレーション)すればAndroidアプリ開発はもう怖くない(1/2) - @IT
A-Liaison BLOG: Jenkins を iOS アプリ開発に導入してみた (SenTestKit編)
何はなくともJenkins
これらの処理を行うには、すべてJenkinsで一本化しようと思います。iOSもビルドするので、Mac miniサーバを会社で買いまして、せこせこ構築しています。楽しみです。
繰り返しますが、求められる品質や速度、プロジェクトをメンテし続ける寿命に応じて損益分岐点を決め、自分や自分たちの組織で身に付けるべきと思ったら一気に構築するのが楽ちんだと思いました。