---
title: 前提条件
description: NexusArchitectを使う前に必要な準備(Gitリポジトリ、Issueトラッカーの認証、GitLab Epic機能に関する条件)をまとめます
seo:
  image: /ogp.png
---

実際にセッションを通して必要だった前提条件は、次のとおりです。

## Gitリポジトリ

- 対象プロジェクトは**Gitリポジトリ**である必要があります(まだなければ`git init`から始めてください)。
- リモート(GitLabまたはGitHub)にプッシュできる状態であることが必要です。
- **`main`ブランチを、最初に一度リモートへpushしておくこと**が非常に重要です。

:::danger[よくある事故: mainの初回pushを忘れる]
mainブランチの最初のpushを忘れると、GitLab側のdefault branch(標準のブランチ)が、たまたまfeatureブランチになってしまうことがあります。そうなると、あとから作る全ブランチが「差分が実質ゼロ」の壊れた履歴になってしまいます。

もし発生してしまった場合は、ユーザーに確認を取った上で`main`をベースコミットまで`git reset --hard`し、`--force-with-lease`(強制pushの一種。他の人が加えた変更を誤って上書きしないよう、リモートの状態を確認してから実行するオプション)でpushしてください。各featureブランチが元の積み上げ構造を保っていれば、rebaseは不要でdiffが正しく復元されます。
:::

## Issueトラッカーの認証

**GitLab**

`glab` CLIをインストールし、認証済みにしておいてください(`glab auth status`で確認できます)。

**GitHub**

`gh` CLIをインストールし、認証済みにしておいてください(`gh auth status`で確認できます)。

NexusArchitectは、内部でこれらのCLIを実行します。Issueの作成・コメント・ラベル操作・MR/PRの作成・マージは、すべてこのCLI経由で行われます。

## GitLab Epicのグループ/Premium要件

GitLabには、複数のIssueをまとめて管理する**Epic機能**(GitLabが標準で用意している機能)があります。ただし、この機能を使うには2つの条件があります。

- プロジェクトが、個人アカウントではなく**グループ**(複数人・複数プロジェクトをまとめる単位)に所属していること
- そのグループが**Premium/Ultimateプラン**(GitLabの有料プラン)に加入していること

つまり、個人アカウント(個人ネームスペース)配下のプロジェクトでは、このEpic機能をそのまま使えません。その場合、NexusArchitectは自動的に代わりの方法に切り替えます(この切り替えを**フォールバック**と呼びます)。具体的には、Epic・Sub-Epic・Issueをすべて通常のIssueとして作成し、`type::epic`/`type::sub-epic`/`type::issue`というラベルで区別します。さらに、親のdescriptionに、子のIssueへのタスクリスト(`- [ ] #<iid>`)を埋め込みます。

個人アカウントを使う場合は、このラベル+タスクリスト方式で運用されることを前提に計画してください。
