最初に
この記事はUE4にてアセット群を管理するためにGitLabを試す記事となります。間違いや更に良い方法があった場合にはそっとTwitter( @ろっさむ )やコメント、修正リクエストなどでお知らせ頂けるととても有難いです。
作業環境
記事内で使用する作業環境は以下の通りとなります。
- Unreal Engine:4.23.1
GitLabとは?
以下の記事が参考になります。
アセット管理でGitLabを使うメリット
まず初めに、「チーム開発するにおいてUE4の有料アセットをどこで管理するか?」という問題点があると思います。有料アセットをライセンス的な問題でパブリックリポジトリに置くのはちょっと…となるので、そういった場合には、5人以下の少人数チームであればPerforce、BitbucketやGitHubのプライベートリポジトリが選択肢にあがると思います。
今回はそれ以上の人数でアセットを共有する必要がある場合の、アセットの管理方法となります。先ほどあげたホスティングサービスなどは、5人以上でプライベートリポジトリのコラボレーターを登録しようとすると人数に応じて料金がかかってきます。インディーズゲーム開発ではできるだけコストを削減したいところ…。
そこで目についたのが、GtLabでした。GitLabだとプライベートリポジトリ作成無料、コラボレーターにも制限がない、Wiki自体も使いやすい、といったメリットがあります。現在、私の趣味で立ち上げたプロジェクトでの開発では、アセットの管理をGitLabのプライベートリポジトリで行い、GitHubのパブリックリポジトリでコード管理を行っています。
今回は、GitLabでのプライベートリポジトリ作成と、メンバーを招待してメンバーがリポジトリをCloneできるとところまで行います。
GitLabのアセット用プライベートリポジトリをSubmodule化してUE4エディタから操作できるようにするのは以下の記事で解説を行います。
//TODO
実際に環境構築を行ってみる
GitLabにアカウント登録を行う
以下のURLからGitLabのサイトを開きます。
右上にあるハンバーガーボタンを押下します。
メニュー内の「Register」を押下して登録画面へと移動します。
登録は他のサービスを用いたサインインが可能なので、使用しているサービスがあるならその中から選択したほうが楽かもしれません。僕の場合は、今回はGitHubアカウントから登録を行います。ちなみにうちのプロジェクトではGitHubからGitLabのリポジトリをSubmoduleとして登録しているためなのか、GitHubアカウントとGitLabアカウントを紐づけておかないとCloneできない問題がありました。
GitHubなどを紐づけてアカウントを作成する場合は、パスワードを設定する必要があります(設定しないとCloneやPullができない可能性があります)。右上のアイコンからSettings
を選択し、設定画面を開きます。
左のサイドメニューからPassword
を選択し、パスワード設定画面を開きます。
ここでパスワードを入力して、Save password
を押下してください。
グループを作成する
もしもいくつかのリポジトリを一つのプロジェクト内に属するものとして管理したい場合には、グループを作成してチームメンバーを招待するのがおすすめです。
アカウントを作って最初に見る画面からGitLab内のユーザーが所属することができるグループを作成できます。
もしくは左上のGroups
ボタンを押下して開いたメニューのYour groups
を押下してGroups
画面を開き、New group
ボタンを押下して作成できます。
グループ作成時には以下の項目を埋める必要があります。Visibility level
はプライベートグループであればPrivate
に設定しておいてください。
これでCreate group
を押下し、グループ作成完了です。次はリポジトリを作成します。
リポジトリを作成
リポジトリのみ作成
リポジトリだけを作成する場合は、アカウントを作って最初に見る画面でも作成することが出来ます。
また、左上のProjects
ボタンからYour projects
を押下してProjects
画面を開き、New project
ボタンを押すとプロジェクトを作成する画面へ進むことが出来ます。
グループに属するリポジトリを作成する
左上のGroups
ボタンを押下して開いたメニューのYour groups
を押下してGroups
画面を開き、リポジトリを追加したいグループを選びます。開いたグループ画面から、New project
ボタンを押下します。
リポジトリの設定を行う
リポジトリの基本情報を作成画面で行います。
Project name
はリポジトリ名で、Project URL
では一意のURLを決める必要があります。Project description
はリポジトリ説明で、Visibility Level
ではリポジトリを公開するか否かを決められます。リポジトリが所属しているグループがプライベートの場合はリポジトリの設定もPrivateになります。
Initialize repository with a README
はリポジトリにREADMEを作成するかどうかなので任意で有効にしてください。
メンバーを招待する
グループを作成、またはプライベートリポジトリを作成した場合のどちらも、複数人と作業するためにはメンバーを招待する必要があります。
メンバーのアクセス権限について
ここで予め、メンバーに付与するパーミッションについて解説しておきます。
Groupやリポジトリに対してメンバー招待を行うときは、各メンバーに対してどのような権限を与えるのかを考え、パーミッションを適切に設定する必要があります。
以下はパーミッション毎にできることを示したものです。
パーミッション | できること |
---|---|
Guest | 以下、パブリックなリポジトリでのみ可能. - Clone. - コメントを残す. - コード表示、pull. - Wikiの閲覧. - 自分で作成したissuesの確認. |
Reporter | Guestで可能なことがプライベートリポジトリで可能+以下の項目が可能. - issuesの割り当て. - コードスニペットの作成. - コミット、環境、の確認. - マージリクエストのリスト確認. |
Developer | 上記2つで可能なこと+以下の項目が可能. - ブランチの作成 / 削除 / Push. - マージリクエストの作成 / 割り当て / 管理 / 承認. - コミットステータスの作成 / 更新. - Wikiページの作成 / 編集. |
Maintainer | 上記3つで可能なこと+以下の項目が可能. - チームメンバーの追加 - ブランチの保護を有効 / 無効にする. - プロジェクトを編集、デプロイキー追加、フック構成. - Wikiページの削除. |
Owner | 上記4つで可能なこと+以下の項目が可能. - プロジェクトを別のネームスペースへ移動. - プロジェクトやIssuesを削除. - 通知メールを無効にする. |
基本的には、エンジニアリーダー(又はプロジェクトリーダー)がOwner、同じレベルの権限を持ってほしい副リーダーの方やインフラ担当の方がいればその方をMaintainer、開発に参加してもらう方にはDeveloper、レビューのみを行ってもらう場合にはReporter、それ以外でプライベートリポジトリを確認してもらうだけならGuestとなると思います。
グループにメンバーを招待する
自身のグループ画面を開いて左にあるサイドバーからMembers
を選択します。
メンバーの管理画面を開くとAdd new member to xxx
という文言と共にメンバーのID又はメールアドレスを入力して招待を行うことできる検索バーが表示されます。メンバーの招待を行う際には、招待を行った相手がリポジトリに対してどの程度の権限を持つかを設定することができます。
権限に関しては、基本的に共同開発の場合にはDeveloper
で設定して問題ないと思います。
リポジトリにメンバーを招待する
まずはメンバーを招待したいリポジトリの画面を開きます。開いたら左にあるサイドメニューからSettings > Members
を選択します。
こちらもProject members
での招待と同様に、メンバーの管理画面を開くとAdd new member to xxx
という文言と共にメンバーのID又はメールアドレスを入力して招待を行うことできる検索バーが表示されます。メンバーの招待を行う際には、招待を行った相手がリポジトリに対してどの程度の権限を持つかを設定することができます。
こちらも権限に関しては、基本的に共同開発の場合にはDeveloper
で設定して問題ないと思います。
GitLabを日本語化する
GitLabを日本語化するためには、まずアイコンからProfile
を開きます。
開いたら左のサイドバーからPreferences
を選択し、画面を開いたら下の方へスクロールします。そこでLocalization
という項目があり、言語を選択できるので、ここで日本語
を選択してください。
最後に
今回はプロジェクト都合でGitLabを選択しました。ただ、GitLab自体は選択してよかったと思えるくらいには使いやすいですしおすすめできます。アセット管理で困ってる方はGitLabを使ってみるのもよいではないのでしょうか。