最初に
この記事は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を使ってみるのもよいではないのでしょうか。



















