# 🚀 インストールガイド

ApexEloquent の導入経路は2つあります。どちらも入るソースは同じです。経路の比較 (デプロイ時のテスト実行やカバレッジ計算の違い) は [Installing Apex Stem](/ja/apex-stem/docs/apex-stem-installation) にまとめています。

| 経路 | 向いている場面 | 事前準備 |
|---|---|---|
| **Unlocked Package (推奨)** | 新規プロジェクト、本番組織 | Salesforce CLI と組織へのログインだけ |
| **Git Submodule** | submodule 運用中の既存プロジェクト、v2 系が必要な場合 | [事前準備](/ja/apex-stem/docs/apex-eloquent-prerequisites) をすべて (make 含む) |


## 📦 Unlocked Package で導入する (推奨)

[事前準備](/ja/apex-stem/docs/apex-eloquent-prerequisites) のうち「Salesforce CLI のセットアップ」と「対象組織の確認」まで済んでいれば、コマンド1つで入ります。make のセットアップは不要です。

```bash
$ sf package install -p 04tgK000000HaGnQAK -o <対象組織> -w 10
```

ブラウザからインストールする場合は `https://login.salesforce.com/packaging/installPackage.apexp?p0=04tgK000000HaGnQAK` を開きます (Sandbox は `test.salesforce.com` に読み替え)。

現在のバージョンは **v3.5.0** です。過去バージョンの install ID は [GitHub Releases](https://github.com/krile136/ApexEloquent/releases) に載っています。

パッケージとして導入すると、ApexEloquent 同梱のテストは **`RunLocalTests` の対象外**になり、コードも**組織のカバレッジ計算から除外**されます。組織側の設定が原因でフレームワークのテストが失敗する問題そのものが起きなくなります。

:::warning
パッケージで配布しているのは **v3 系のみ**です。v3 系は SOQL / DML の既定がユーザーモード (FLS を尊重) なので、既存組織にそのまま入れると項目権限の不足で落ちることがあります。v2 系 (システムモード既定) が必要な場合は、下の Git Submodule で保守ブランチを指定してください。判断材料は [ApexEloquent ガイド](/ja/apex-stem/docs/apex-eloquent-guide) の冒頭を参照してください。
:::

### 更新

新しいバージョンの install ID で同じコマンドを実行するだけです。インストール済みのパッケージが上書き更新されます。組織に入っているバージョンは `sf package installed list -o <対象組織>` で確認できます。


## 📥 Git Submodule で導入する

### パッケージの取得 (初回のみ)

```bash
$ cd force-app/main/default/classes
$ git submodule add https://github.com/krile136/ApexEloquent.git ApexEloquent
```

これでリポジトリに `ApexEloquent` ディレクトリが追加され、ソース管理に組み込まれます。既にあるリポジトリをクローンした側は、`git submodule update --init --recursive` を忘れないでください。

### v2 系を使う場合

上のコマンドは既定ブランチ (`main`) を取るので、**v3 系**が入ります。先に v2 系で入れておきたい場合は、保守ブランチを指定します。

```bash
$ git submodule add -b v2.2.x https://github.com/krile136/ApexEloquent.git ApexEloquent
```

機能は v3 系と同等で、違いは実行モードだけです。

### 組織へのデプロイ

[事前準備](/ja/apex-stem/docs/apex-eloquent-prerequisites) をすべて済ませた上で、取得したクラスをデプロイします。

```bash
$ make install
```

`make install` は内部で Salesforce CLI のデプロイコマンドを呼び出します。

Submodule 経路では ApexEloquent 同梱のテストがローカルテストとして実行され、**カバレッジ要件 75% に寄与する形**になります。ただし、**組織側の設定や無効化された標準項目が原因でテストが失敗する場合**は、`*_T.cls` テストクラスを適宜調整するか、Unlocked Package 経路への切り替えを検討してください。

### 更新

プロジェクトのルートから以下のコマンドを実行します。

```bash
$ cd force-app/main/default/classes/ApexEloquent
$ git pull
$ make install
```

:::warning
`git pull` は追従しているブランチの先頭を取ります。**v2 系 (`v2.2.x`) を使っている場合、`main` に切り替えてから pull すると v3 系に飛びます**。実行モードの既定が変わる破壊的変更なので、意図せず跨がないよう、いま何を追従しているかを `git branch --show-current` で確認してから更新してください。
:::

:::warning
Submodule は親リポジトリがどのコミットを参照しているかという情報 (ポインタ) を保持しています。本番環境で一貫性を保つには、`git submodule update --remote` で参照を最新版に自動更新し、親リポジトリ側でもコミットすることをおすすめします。
:::


## 🔗 ガイドへ戻る

← [ApexEloquent ガイドへ戻る](/ja/apex-stem/docs/apex-eloquent-guide)
