開発、テスト、プロダクションはできるだけ同じにする

GitHub で編集する

歴史的に見て、開発(ローカルマシン上でアプリを編集する開発者)とプロダクション(エンドユーザーがアクセスする App Store にデプロイされたアプリ)の間にはかなりのギャップがあります。これらのギャップは3つの領域に現れます。

  • 時間のギャップ:開発者はプロダクションへ移るまでに数日、数週間、数ヶ月かかる作業をしているかもしれません。
  • 人のギャップ:すべての iOS デベロッパがコードを書き、アプリをデプロイする方法を知っているのは1人だけです。
  • ツールのギャップ:開発者はプロダクションとは異なるバージョンを実行するステージングサーバーを使用しているかもしれません。また、デプロイに使用されたものとは異なるバージョンの Xcode を使用しているかもしれません。

iOS-factor アプリは開発とプロダクションのギャップを小さく保つことによって Continuous Deployment のために設計されています。上記の3つのギャップを考えます。

  • 時間のギャップを小さくする:デベロッパーはコードを書いて数日後にはデプロイしてもよいのではないでしょうか。
  • 人のギャップを小さくする:コードを書くデベロッパーはデプロイに密接に関わり、プロダクションでの動作を確認します。これは、iOS アプリケーションのリリースプロセスを完全に自動化し、ドキュメントの代わりにコードでノウハウを宣言することが最良です。
  • ツールのギャップを小さくする:開発とプロダクションを可能な限り同じにします。iOS-factor の Dependencies の原則に従い、.xcode-version ファイルを活用してほかのすべての依存関係を明示的に定義します。

上記を表にまとめます。

  従来の iOS アプリ iOS-factor アプリ
デプロイの間隔 数ヶ月 数日
コード作成者とコード配布者 ひとりがデプロイの方法を知っている デプロイは自動化、理想的にはサーバー上
開発環境とプロダクション環境 異なる 可能な限り同じ