情報科学若手の会2014で発表してきた

LT発表してきました。

最近CIとか継続的デリバリーとか流行ってるけど、
ネット上にあふれている事例は、テスト(ビルド)が頑張れば5分程度で出来たり、
ユーザにすぐに提供できるWebサービスの話が多く、
それ以外の事例に適応した話が全然無いなーと思っていました。

特にスマホアプリでは、一つのjobに時間がかかったり、
ユーザに届けるのにもの凄く時間がかかるため、
良くあるやり方をそのまま持って行っても、
全然上手くいかないんですよね。

ただし、やり方をそっくり持ってくるんじゃなくって、
その手法をやると何がうれしいの?を考えていくと、
自ずとその環境に沿ったいい方法、というのが見つかる気がします。

より実践的なTipsになるので削った補足事項等

  • コンパイルだけに出来ないのか
    • ビルドのほとんどがコンパイル時間なのでそれほど効果がありません…(´・_・`)
  • キャッシュは使っていないのか
    • キャッシュが悪さをする可能性が考えられるため意図的に切っています。
      手元で開発する場合は活用しています。
  • ビルド自体の速度は速くしないのか
    • 分散コンパイル等で早くできますが、Xcodeは対応していないのでAndroidのみになり、
      そんなに効果がありません。
  • スライドで並列ビルドすればいいじゃん!と書いてますが、それも問題があります
    • アップロード先が並列で受け付けていないので、デプロイ時に失敗しまくります
    • 排他制御しようとすると、Jenkinsの仕様とJob割り振りがよろしくないので
      もの凄く辛いことになります。