モダンなクラウドアプリケーション開発のベストプラクティスの一つである「The twelve-Factor App」が取り上げられることが多くなった。ビジネスの変化にICTが遅れずについていくためには、エンタープライズ分野の開発も、このプラクティスを取り入れていくべきだ。本稿では、エンタープライズシステムの開発・運用の視点から、従来行われてきたことと比較しながらTwelve-Factor Appを読み解く。まずは、「アプリケーションの改修を迅速にするためのプラクティス」をみていく。

 前回の10.開発/本番一致に続き、今回は「1.コードベース」を解説する。

1.コードベース


 Twelve-Factor Appは、アプリケーション開発に関するいくつかの概念に対して新しい視点とそれを端的に示す単語を提供している。その単語は、私たちエンタープライズシステムを中心に開発してきた技術者にとっては、少し耳慣れないが、その内容は明快で納得性が高いため理解は難しくない。その一例が「コードベース」と「デプロイ」である。

単一のコードベースが複数のデプロイになる

 Twelve-Factor Appは、ひとつのアプリケーションを「コードベース」と「デプロイ」という2つの視点でとらえる。「コードベース」とは、一つのアプリケーションを構成するコード群であり、バージョン管理システム上の同一リポジトリに格納されるものだ。「デプロイ」は、実行環境上で動作しているアプリケーションそのものである。本番環境上にアプリケーションを展開するという意味で「デプロイ」を使うこともあるが、ここでは「実行環境上で動作しているアプリケーションそのもの」の意味で使う。

 コードベースとデプロイの関係は、オブジェクト指向言語のクラスとインスタンスとの関係に似ている。オブジェクト指向言語においては、同一のクラスが実行時のプロパティ設定によって様々に振る舞いを変えることができる。それと同様に、一つのコードベースから成るアプリケーションも、実行環境に応じた設定により、様々な場所(例:開発環境、テスト環境、本番環境)で動作できるようになる(図1)。つまり、単一のコードベースが複数のデプロイとなり得る。

図1●単一のコードベースが複数のデプロイになる
図1●単一のコードベースが複数のデプロイになる
[画像のクリックで拡大表示]

 Twelve-Factor Appが示すコードベースとデプロイの関係は、エンタープライズシステムの開発においても違いはない。私たちの開発でもソースコードはバージョン管理システムで管理するのが近年では一般的であり、同一のコードに対して異なった設定を与えることにより様々な場所で動作するようにする、という考え方も同じである。