OutSystems Platformでは、どのようにチーム開発を行いますか?その2

同じモジュールに対するチームの共同作業

同じモジュールに対して作業を行う複数の開発者のために、OutSystemsは、開発者間で途切れることのない開発サイクルを実現するために必要な、以下の機能を提供します。

  • 比較とマージ
  • コンフリクトの検出と解決
  • 開発者用サンドボックス
  • バージョン管理
  • デプロイにおけるタグ付け機能

開発者は、複数のステージング環境におけるバージョン、リリース、デプロイ、およびすべてのコンポーネントの依存関係を、集中管理コンソールから管理することができます。構成、ビルド、およびバージョンの管理のために複雑なツールをインストールする必要はなく、ツールのセットアップのために専門家を探す必要もありません。

チームは、各環境にどのバージョンがインストールされているかを簡単に確認することができ、また、アプリケーションを自動的にデプロイしたり、1クリックで以前のバージョンにロールバックしたりすることができます。

比較とマージ

OutSystems Platformの開発環境を利用すると、同じモジュールに対して作業を行う開発者は、各自の作業内容をマージすることができます。デフォルトでは、OutSystems Platformは自動的に差異をマージする設定になっていますが、発行する前に比較して、マージするものを手作業で決めるという手順をオプション選択することもできます。

次の図は、発行前に比較およびマージを行う状況を表しています。

上図に示した状況は次のとおりです。

ある開発者が自分の開発環境で当該モジュールのバージョン4を開き、開発を開始しました。
同時に、別の開発者がバージョン4に対して同じ操作を行いました。
両者とも各自が行った変更を発行しました。
この時、以下の処理が行われます。

  1. OutSystems Platformは、両者が開発を開始した時点のバージョン(バージョン4)に基づいて、マージすべき変更内容を判別します。
  2. 修正されたバージョンが検出されるので、2人目の開発者は比較とマージを行うことができます。
  3. 2人目の開発者はマージすべき変更内容をチェックします。
  4. 2人目の開発者はマージを行い、発行します。

以下は、開発者が2つの異なるバージョンを比較するときに行われる視覚的なマージ処理の様子です。



コンフリクトの解決

複数の開発者が同じモジュールに対して作業を行っており、かつ同じ要素を変更しようとしている場合、OutSystems Platformはコンフリクトを特定して、どの変更内容をマージし、発行するかの選択肢を提供することで、コンフリクトの解決を助けます。

次の図は、開発中にコンフリクトに遭遇した状況を表しています。

  1. ある開発者が当該モジュールのバージョン4を自分の開発環境で既に開いており、開発を行っています。
  2. 一方、他の開発者もバージョン4に対して自分の開発環境で同じことを行っています。
  3. 1人目の開発者は、自分が行った変更をバージョン4として発行しましたが、2人目の開発者はバージョン5として発行しました。

この状況では、以下の処理が行われます。

  1. OutSystems Platformは、バージョン4とバージョン5の間でマージすべき変更内容の有無を判別します。 
    2人目の開発者は、比較とマージを行って、コンフリクトを起こしている変更の内どれを残すかを決めることができます。

 以下は、コンフリクトが検出された時の例です。



開発者用サンドボックス

OutSystems Platformには、開発者が自分の開発作業用に使える個人用サンドボックスが備わっています。これを利用することにより、複数の開発者が、互いの作業に影響を及ぼすことなく、同一の開発用サーバーで作業することができます。

すべてのOutSystemsアプリケーションは、開発用サーバー上に共有領域と個別領域(サンドボックス)を持っています。開発者がOutSystemsアプリケーションに対する変更作業を行っている場合、開発テストサイクルの間はその変更を自分の個別領域に対してのみデプロイすることができます。その機能の動作が安定し、チーム内で共有して良い状態になったら、開発者は自分が作成したバージョンのアプリケーションを発行し、共有領域にあるバージョンとマージすることができます。 

バージョン管理

ここまで紹介してきたすべての共同作業機能を支えているのは、OutSystems Platformに内蔵されたバージョン管理エンジンです。このバージョン管理エンジンは、アプリケーションが初めて作成された時点から、アプリケーションの発行が行われる度に、集中リポジトリに透過的に保存されたすべてのバージョン、コンポーネント、およびコネクタを保持します。ユーザーは保持されているバージョン間を行き来し、いつ誰がそれを発行したのかを確認し、以前のバージョンのダウンロードやロールバックを行うことができます。しかし、開発中はこの処理が自動的に行われるため、時間と作業量を節約することができます。

以下は、モジュールのバージョン履歴の例です。以前のバージョンのダウンロードやロールバックを、1クリックで行える点に注目してください。



デプロイにおけるタグ付け機能

OutSystems Platformでは、アプリケーションとその依存関係のスナップショットを取得し、それにバージョン番号をタグ付けし、デプロイ作業時に使用することができます。以下の例では、Vacationsアプリケーションに半日の休暇を申請する機能が追加されたため、そのようにタグ付けされた上で開発が継続しています。

アプリケーションにタグ付けする処理は、インフラの安定性と柔軟性を確保するために非常に重要です。タグ付けは通常、アプリケーション開発が安定したとき、またはマイルストーンに到達したときに行われ、アプリケーションとそのモジュールの状態をいつでも元に戻せるようにしています。

開発チームは、一定の作業が完了する度に、アプリケーションにバージョン番号をタグ付けすることができます。その後、次の作業を開始して、アプリケーションの開発を続けます。それと同時に、タグ付けされたバージョンは、継続中のアプリケーション開発を妨げることなくQAにデプロイすることができます。