チーム開発 Gitを利用する

最終更新日: 2020年6月18日

はじめに

Gitは「分散バージョン管理システム」として知られています。オープンソースソフトウェアとして公開されているため、無償でダウンロードして利用できます。

ここではGitを使ったWagby EEのリポジトリ管理方法を紹介します。

ワンポイント

Gitは多くの機能を提供しています。ここではページではGitを使った場合のイメージをお伝えしますが、Gitの特徴や詳細な使い方は、書籍またはインターネット上に公開されているガイドをお読みください。

重要

Gitの使い方に関するご質問は、ジャスミンソフトサポートでは受け付けておりません。あらかじめご了承ください。

Gitの概要とインストール

Gitは「ローカルリポジトリ」と「リモートリポジトリ」の二段構成で運用します。開発者ははじめに「ローカルリポジトリ」で対象を管理します。これをリモートリポジトリに push することで、他の開発者と共有することができます。他の開発者がリモートリポジトリから最新の情報を取得することを pull といいます。

図1 ローカルリポジトリとリモートリポジトリの関係
ここで「リポジトリ」とは、Wagby EEの設計情報ではなく、Gitが管理対象とするフォルダおよびファイルを指しています。具体的には Wagby-9.x.x/repository フォルダと Wagby-9.x.x/customize フォルダです。

Gitリポジトリ

Gitの「リモートリポジトリ」を自社で運用することもできます。具体的には Linux OS または Windows Server に Git のサーバソフトウェアをインストールします。しかしその手順は複雑であることと、インターネット上に多くのリモートリポジトリサービスが公開されていることから、本書ではすでに提供されているリモートリポジトリを活用するという方針で説明を行います。

インターネットで利用できる、代表的なGitリポジトリは次のとおりです。

サービス名特徴
GitHub 最も有名。無償利用可能だが、登録した内容はすべて公開される。プライベート利用の場合は有償となる。
Bitbucket アトラシアン社提供。後述するGitクライアント「SourceTree」も無償で提供している。無料版では5ユーザまでリポジトリを共有できる。
CloudForge プライベートリポジトリ作成数制限なし、ユーザ数制限なし。2GBまで無料。
Backlog 日本企業による運営。無料版はない。同社が提供するチケット管理サービスと連携。
2014年11月時点の調査結果です。最新の内容については直接、各サービスをご確認ください。

以降の説明では、Bitbucketを使って説明します。

Bitbucketを利用する

Bitbucketはアトラシアン社が提供するGitリポジトリサービスです。

はじめにアカウントを作成します。

図2 Bitbucketでアカウントを作成する

空のリポジトリを作成します。ここで入力するリポジトリ名は英字を使います。プロジェクトごとに(Bitbucketの)リポジトリを用意するようにします。

図3 空のリポジトリを用意する

注意

リポジトリ名に日本語は使用できません。

リポジトリ作成後、このタイミングでGitクライアントソフトウェア "SourceTree" も入手しておきます。これは Windows/Mac OS Xで動作する、Gitを操作するためのツールです。無償で利用できます。

以降の説明では、この SourceTree を使って操作します。

図4 SourceTreeを入手する

SourceTreeのインストール

SourceTreeをインストールする前に、Wagby EEはインストール済みで、かつビルド処理も行なった状態としてください。

SourceTreeインストール後に、次の手順でリモートリポジトリに管理対象ファイル群を登録します。

  1. ローカルリポジトリを作成
  2. バージョン管理除外ファイルの指定
  3. バージョン管理対象ファイルのcommit
  4. リモートリポジトリとの関連付け
  5. リモートリポジトリへpush
図5 作業フォルダ、ローカルリポジトリ、リモートリポジトリの関係

ローカルリポジトリの作成

SourceTreeをインストール後、最初にローカルリポジトリを作成します。

リポジトリタイプを "Git" とします。 保存先のパス(作業フォルダ)はWagby EE インストールフォルダとします。 リポジトリに名前をつけることができます。日本語を利用できます。

図6 ローカルリポジトリを作成する

この段階では、次のようになっています。

リポジトリ状況
リモートリポジトリ
ローカルリポジトリ
作業フォルダコミットされていないファイルが多数ある。
図7 ローカルリポジトリ作成直後の状態

バージョン管理除外ファイルの指定

「リポジトリ固有の無視リスト」を指定します。

図8 「リポジトリ固有の無視リスト」の設定

テキストエディタで、.gitignoreファイルへ以下を登録します。

.classpath
.project
.settings/
export/
LICENSE.pdf
misc/
repository/branches/
repository/trunk_*/
upload_dir/
version.txt
wagbyapp/
wagbyapp.zip
wagbydesigner/
wagby-licensekey.xml

これにより、repository/trunk, customizeを管理対象とし、それ以外のすべてをバージョン管理対象外とします。

コミット前の作業 (インデックス登録)

「作業ツリーのファイル」にチェックを付けます。

git add コマンドに相当します。
図9 作業ツリーファイルをチェック

コミットボタンを押下します。

git commit コマンドに相当します。
図10 コミットボタン

コミットログを入力後、コミットします。ログはこまめに記載するようにします。

図11 コミットログを記入してコミットする

コミット後に、画面下部の「ログ」タブを選択すると状態を確認できます。 このタイミングで、ブランチmasterが作成されていることがわかります。

図12 ブランチmasterが作成されている

この段階では、次のようになっています。

リポジトリ状況
リモートリポジトリ
ローカルリポジトリ作業フォルダと同期済み。
作業フォルダすべての管理対象ファイルはコミット済み。
図13 最初のコミット直後の状態

リモートリポジトリの作成

インターネット側にある、リモートリポジトリ (Bitbucket) と接続します。リモートの設定を開始します。

図14 リモートの設定(1)

リモートリポジトリの詳細設定を行います。

  • 「デフォルトリモート」にチェックをつける。
  • 「URL/パス」に「https://bitbucket.org/${accout}/${repository}.git」を入力する。
    • ${account} はBitbucketのアカウントを入力。
    • ${repository}はBitbucketに作成したリポジトリ名を入力。

例えばアカウントが taro_jasmine、登録したリポジトリ名が customer の場合、次のようになります。

https://bitbucket.org/taro_jasmine/customer.git
git remote add origin ${URL} というコマンドに相当します。
図15 リモートの設定(2)

作業が完了すると、リモートに「origin」が表示されます。これで関連付けは終了です。

図16 リモート「origin」が用意される

リモートリポジトリへpushする

「プッシュ」ボタンを押下します。そのあとに表示されるダイアログで「プッシュ対象」にチェックをつけます。

git push コマンドに相当します。
図17 プッシュボタンを押下する

リモートリポジトリへ反映されたことを示す「origin/master」が表示されます。

図18 リモートリポジトリへの反映

Bitbucketのサイトでも確認できます。

図19 Bitbucketサイトでの確認

プッシュ後は、次のようになっています。

リポジトリ状況
リモートリポジトリ作業フォルダと同期済み。
ローカルリポジトリ作業フォルダと同期済み。
作業フォルダリモートリポジトリ、ローカルリポジトリいずれとも同期済み。
図20 push後の状態

開発のサイクル

同期がとれたところで、設計情報を変更してみます。 ここでは顧客モデルを新規に作成しました。

図21 顧客モデルの作成

顧客モデルの定義は repository/trunk/customer フォルダに用意されています。このフォルダをcommitします。具体的には次の操作を行います。

  1. 「作業ツリーのファイル」にチェックをつける。
  2. 「コミット」ボタンをクリック。コミットログを入力後、コミットされる。(ローカルリポジトリへの登録)
  3. 必要に応じて、リモートリポジトリへpushしてもよい。(リモートリポジトリへの登録)
図22 変更を反映させる

既存ファイルを修正した場合

SourceTree の画面で、変更内容がチェックできます。(図は氏名を必須項目とし、入力サイズを20とした場合です。)

図23 変更内容をチェックする

別の開発者からの利用

別の開発者が、今回設定したリモートリポジトリを使うための手順は次のとおりです。

  1. Wagby EEをインストール(ビルドも行っておく)
  2. リモートリポジトリで管理しているファイル、フォルダを削除する。
    • repository/trunk
    • customize
  3. ローカルリポジトリを作成する。バージョン管理除外ファイルの指定及びcommitは行わない。
  4. リモートリポジトリとの関連付けを行う。
  5. リモートリポジトリからpullする。このとき「マージした変更を即座にコミット」は外すこと。
  6. WagbyDesigner でリポジトリをリロードする。

Wagby EE バージョンアップ時の対応

バージョン管理システムを利用している場合、repository/trunk フォルダ以下に含まれる「システム」系のリポジトリを、バージョンアップしたWagby EEの初期リポジトリに含まれているものに置き換えてください。具体的には次のフォルダが対象です。

  • common- ではじまるフォルダ一式。
  • jfcDesigner ではじまるフォルダ一式。

注意点

システム系リポジトリを開発者がカスタマイズしていた場合、次の手順を行なってください。

  1. 旧バージョンで行なっていたカスタマイズ内容を整理しておく。
  2. 新バージョンに含まれるシステム系リポジトリに入れ替え後、上のカスタマイズ内容を再度、手動で適用する。
例えば juser モデルに項目を追加した場合などです。

テーブル変更を伴う場合

システム系リポジトリの変更では、モデルの追加、および既存モデルへの項目の追加が行われる場合があります。この場合、既存テーブルの drop を行い、再度 create することで変更が反映されます。

drop & create に代わって、開発者は alter table 文を使って手動で変更することもできます。その場合はこちらを参考に行なってください。

Git以外の製品について

ここで紹介した Git は、リモートリポジトリがインターネット上に用意されているため、開発者が遠隔地にいた場合でも共有しやすいというメリットがあります。また、カスタマイズコードを複雑に分岐して開発するという場合に効果を発揮する、さまざまな機能が提供されています。詳細は Git の書籍などをお読みください。

一方で、Git に比べると subversion や cvs の学習難易度は高くありません。はじめてバージョン管理システムを使うという場合は、subversion からはじめてもよいでしょう。subversion を導入する場合も、このドキュメントの指針を参考にすることができます。(除外ファイルの指定などは同様に行ってください。)

トラブルシューティング

Gitで取得したリポジトリをビルドするとエラーになる

repository/trunk/<モデルID>/<モデルID>フォルダ内に ".acl", ".permission", ".principal" フォルダが含まれていない場合、エラーになります。これらの "." ではじまるフォルダも含めて正しく復元できているか、確認してください。

Wagby EEをバージョンアップするとエラーになる

バージョンアップ時に、システムが提供するモデルが変更されることがあります。詳細は各バージョンの「変更履歴 > リポジトリ」の説明をお読みください。この場合、バージョン管理システムに登録されている旧システムモデルの定義を、新システムモデルに置き換える必要があります。(置き換え後は、新しいバージョン用となるため、旧バージョンでビルドすることはできなくなります。)