# コマンドラインインターフェース 

<callout>公式[エクスポートスクリプト](https://github.com/EsotericSoftware/spine-scripts/tree/master/export)を使えば、自動的にたくさんのプロジェクトを一括でエクスポートすることができます。</callout>

Spineのコマンドラインインターフェース(CLI)では、コマンドラインからSpineを実行して、テクスチャアトラスのエクスポート、インポート、パックなどを行うことができます。これは、ソフトウェアのビルドプロセスの一環として、すべてのプロジェクトのエクスポートとテクスチャアトラスのパックを自動化するために最もよく使われます。

この方法で実行すると、まずSpineが起動し、1つまたは複数のエクスポートやテクスチャパックを行った後、終了します。

ほとんどのCLIパラメーターはヘッドレスで使用できます。つまり、ユーザーインターフェースを表示するように設定されていないコンピュータ上でも使用できます。ただし、画像やビデオをエクスポートするには、OSのウィンドウシステムとOpenGLが必要です。

# 使用方法

各CLIパラメーターの説明は、Spineを `--help` パラメーターで実行すると表示できます。Spineを `--advanced` パラメーターで実行すると、さらに高度なパラメーターを表示できます。

## エディター

```plain,full-height
Spine [-hvlft] [-x <host:port>] [-u <version>] [<path>]

-h, --help     基本的なCLIヘルプを表示して終了します。
--advanced    高度なCLIヘルプを表示して終了します。
-v, --version   バージョン情報を表示して終了します。
-l, --logout    ログアウト、アクティベーションコードの削除を行います。
-u, --update    ロードするSpineアップデートのバージョン番号を指定します。
-f, --force     Spineアップデートを強制的にダウンロードします。
-x, --proxy     アップデートの確認やダウンロードの際に使用するプロキシサーバーを指定します。
-t, --notimeout アップデートの確認およびダウンロード時のタイムアウトを無効にします。
project.spine   開きたいSpineプロジェクトファイルのパスを指定します。
```

最新のパッチバージョンを実行するには、`-u`または`--update`で使用される[バージョン番号](/spine-versioning#Spineエディターのバージョン番号)のパッチ部分を`xx`で指定します。例えば、最新の4.0バージョンを実行したい場合は、次のようにします:

```plain,full-height
Spine --update 4.0.xx
```

最新の安定版を実行するには、`latest`、`lateststable`、`stable` のいずれかをバージョン番号に指定します。最新のベータ版を実行するには、`latestbeta`または`beta`を指定します。

## エクスポート

```plain,full-height
Spine [-i <path>] [-m] [-o <path>] -e <path>
Spine [-i <path>] [-m] [-o <path>] -e json[+pack]|binary[+pack]

JSON、バイナリ、イメージ、ビデオのエクスポート:
-i, --input   フォルダ、プロジェクト、またはデータファイルへのパス。エクスポート設定JSONを上書きします。
-m, --clean   エクスポートの前にアニメーションのクリーンアップを行います。
-o, --output  エクスポートファイルの出力先パス。エクスポート設定JSONを上書きします。
-e, --export  エクスポート設定JSONファイルへのパスを指定します。
```

エクスポート設定JSONファイルはSpineの `Export(エクスポート)` ダイアログの下部にある `Save(保存)` ボタンをクリックして作成できます。

![](/img/spine-user-guide/command-line-interface/save-export-settings.png)

<callout>エクスポートを行うほとんどのビルドスクリプトでは、`--update` を使ってSpineエディターのバージョンを指定することになります。</callout>

CLIで指定される入力および出力パスはオプションです。指定された場合は、エクスポート設定JSONファイルで指定された入力パスまたは出力パスが上書きされます。

inputパスに入るのは、プロジェクト、JSON、またはバイナリファイルへのパスです。outputパスに入るのは、エクスポート設定に応じて、ファイルまたはフォルダのどちらかになります。

<callout>`--clean-all` を使用すればパラメーターはすべてのエクスポートでクリーンを実行するので、`--clean` をそれぞれのエクスポートに指定する必要はなくなります。</callout>

`--clean` パラメーターを指定すると、エクスポート前にアニメーションの[クリーンアップ](/spine-keys#クリーンアップ)が行われます。これはプロジェクトファイル自体には影響しません。

エクスポート設定JSONファイルへのパスの代わりに `json` または `binary` が指定された場合は、デフォルトの設定でJSONまたはバイナリのエクスポートが実行されます。`json+pack` または `binary+pack` が指定された場合は、デフォルトの設定で[テクスチャパッキング](/spine-texture-packer)も実行されます。

## インポート

```plain,full-height
Spine -i <path> [-s <scale>] -o <path> -r [<name>]

JSON、バイナリ、プロジェクトのスケルトンを別のプロジェクトにインポートします:
-i, --input   インポートするフォルダ、プロジェクト、データファイルへのパスを指定します。
-o, --output  インポート先のプロジェクトファイルへのパスを指定します。存在しない場合は作成されます。
-s, --scale   インポートされるプロジェクトのスケールを設定します。
-r, --import  スケルトンのインポートを行います。スケルトン名は省略可能です。
```

inputパスに入るのは、プロジェクト、JSON、またはバイナリファイルです。または、`.spine`、`.json`、`.skel` ファイルを含むフォルダでも指定できます。

outputパスに入るのはプロジェクトファイルです。

`--scale` が指定されている場合、そのプロジェクトのスケルトンはインポートされる前に[スケール](/spine-import#スケール)が調整されます。

あるプロジェクトが別のプロジェクトにインポートされた場合、すべてのスケルトンがインポートされます。`--import` を使用してスケルトン名が指定され、1 つのスケルトンだけがインポートされた場合は、スケルトンの名前が変更されます。複数のスケルトンがインポートされた場合、スケルトン名は無視され、スケルトンは既存の名前のままとなります。

JSON ファイルまたはバイナリ ファイルがプロジェクトにインポートされ、`--import` を使用してスケルトン名が指定された場合、スケルトンの名前が変更されます。スケルトン名が指定されていない場合、スケルトンはJSONまたはバイナリファイル名から拡張子を除いたものを使用して命名されます。

## クリーンアップ

```plain,full-height
Clean up: Spine -i <path> -m

アニメーションのクリーンアップ:
-i, --input   プロジェクトファイルまたはフォルダへのパスを指定します。
-m, --clean   アニメーションのクリーンアップが行われ、プロジェクトが保存されます。
```

アニメーションの[クリーンアップ](/spine-keys#クリーンアップ)は、プロジェクト内のすべてのアニメーションに対して行われ、プロジェクトファイルは変更された状態で保存されます。

inputパスに入るのは、プロジェクトファイルまたは `.spine` ファイルを含むフォルダです。

## パック

```plain,full-height
Spine -i <path> [-j <path>]... -o <path> -p <name>
Spine -i <path> [-j <path>]... -o <path> [-n <name>] -p <path>

テクスチャアトラスのパッキング:
-i, --input   パックされる画像のフォルダへのパスを指定します。
-o, --output  テクスチャアトラスとPNGファイルの書き込み先へのパスを指定します。
-j, --project メッシュで使用される画像を決定するプロジェクトへのパスを指定します。
-n, --name    テクスチャアトラス名を指定します。これはアトラスとPNGファイルの接頭辞になります。
-p, --pack    テクスチャアトラス名、またはパック設定JSONファイルへのパスを指定します。
```

input および output のパスは、フォルダへのパスです。

`--pack` または `-p` パラメーターには、以下のどちらかが入ります:
* 出力ファイルを書き込む際に使用する[テクスチャアトラス名](/spine-texture-packer#テクスチャアトラス名)。アトラス名を指定した場合、デフォルトのテクスチャパック設定が使用されますが、入力フォルダ内に[pack.json](/spine-texture-packer#JSON設定)ファイルを置くことでカスタマイズすることができます。
* パック設定JSONファイルへのパス。このファイルは、Spineの`テクスチャ・パッカー設定`ダイアログの下部にある`Save(保存)`ボタンをクリックして作成できます。
![](/img/spine-user-guide/command-line-interface/save-packer-settings.png)
名前が指定されていない場合は、パック設定JSONファイルの名前からファイル拡張子を除いたものがテクスチャアトラス名として使用されます。

`--project` には、1つまたは複数のプロジェクトファイルを指定できます。空白削除を有効にしている場合、テクスチャ・パッカーはこれらのプロジェクトを元に各画像ファイルを検索します。その画像ファイルを使用しているメッシュがすべて考慮されるので、空白削除によってメッシュ内のイメージの一部が削除されることはありません。 `--project` または `-j` が指定された場合、テクスチャ・パッカーの `currentProject(現在のプロジェクト)` 設定は無視され、それが `true` に設定されていると見なします。

## アンパック

```plain,full-height
Spine -i <path> -o <path> -c <path>

テクスチャアトラスのアンパッキング:
-i, --input   アトラス画像のフォルダへのパスを指定します。
-o, --output  アンパックされた画像ファイルの書き込み先へのパスを指定します。
-c, --unpack  テクスチャアトラスファイルへのパスを指定します。
```

## 情報

```plain,full-height
Spine -i <path>

プロジェクト情報:
-i, --input   フォルダ、プロジェクト、またはデータファイルへのパスを指定します。
```

各プロジェクトファイルの情報が出力されます。これは、「プロジェクトがどのバージョンのSpineで保存されたか」や、「プロジェクトに含まれるアニメーションの数」などの情報を得るのに役立ちます。

inputパスに入るのは `.spine` ファイルを含むフォルダ、プロジェクトファイル、またはJSONやバイナリデータファイルです。

## 高度な設定

```plain,full-height
高度な設定:
--trace            追加のログおよび診断チェックを有効にします。
--auto-start       自動的に起動します。
--no-auto-start    自動的に起動させなくします。
--ping             各サーバーへのレイテンシーをテストします(通常は4日ごとに実行されます)。
--server x         pingに関係なく、優先するサーバーを設定します(例：jp/us/eu)。
--disable-audio    すべてのオーディオサポートを無効にします。
--pretty-settings  設定ファイルをより綺麗に整形します。
--keys             ホットキーのポップアップをデフォルトで有効にします。
--hide-license     ランチャーで名前やメールアドレスを非表示にします(ストリーミング用など)。
--ui-scale x       インターフェースのスケールを設定します(例：200)。
--icc-profile x    カラーマネジメント用のICCプロファイルファイルのパスを設定します。
--intro            Esoteric Softwareのロゴのイントロを表示します。
--clean-all        すべてのエクスポートでアニメーションのクリーンアップを行います。
--mesh-debug       メッシュ上にデバッグ情報を表示します。
--export-selection エディター選択が画像やビデオのエクスポートで表示されます。
--ignore-unknown   CLIのパラメーターが認識されない場合にエラーにならないようにします。
```

## 例

```plain,full-height
Spine --export /path/to/export.json
Spine --export "/path/with spaces/to/export.json"
Spine --input /path/to/project.spine --output /path/to/output/
      --export /path/to/export.json
Spine -i /path/to/project.spine -o /path/to/output/ -e /path/to/export.json
Spine -i /path/to/project.spine -o /path/to/output/ -e binary+pack
Spine -e /path/to/export1.json -e /path/to/export2.json
Spine -i /path/to/images/ -o /path/to/output/ --pack /path/to/pack.json
Spine -i /path/to/images/ -o /path/to/output/ -n name -p /path/to/pack.json
Spine -i /path/to/project1.spine -o /path/to/output/ -e /path/to/export1.json
      -i /path/to/project2.spine -e /path/to/export2.json -i /path/to/images/
      -o /path/to/output/ -p /path/to/pack.json
Spine -i /path/to/skeleton.json -o /path/to/project.spine -r skeletonName
```

上記のいくつかの例に見られるように、1回のSpine呼び出しで複数のコマンドを指定することができます。

outputパス用のフォルダが存在しない場合は作成されます。

コマンドが失敗した場合、Spineは0以外のエラーコードを返します。

Spineのすべてのサンプルプロジェクトをエクスポートするために使用されている[こちらのエクスポートスクリプト](/git/spine-runtimes/blob/examples/export/export.sh)は、SpineのCLI使用の実例として参考にできます。Windowsユーザーは、[Cygwin](https://www.cygwin.com/)を使用してbashで同様のスクリプトを書くことができます。

## 不明なパラメーター

Spineランチャーは、指定されたパラメーターが許可されているかどうかをチェックしてからSpineエディターに渡します。いくつかのCLIパラメーターがacceptedでない(受け入れられていない)場合、それらのパラメーターは「Spineランチャーがインストールされたときには利用できなかったが、新しいバージョンのSpineエディターでは理解できる」という可能性が考えられます。

その場合、Spineランチャーをダウンロードして再インストールするか、`--ignore-unknown` パラメーターを使用して、Spineランチャーが認識できないパラメーターを許可するようにできます。認識できないパラメーターには警告が表示されますが、Spineエディターにはそのパラメーターが渡されます。Spineエディターがパラメーターを認識できない場合は、無視されます。

# CLIパラメーターによるSpineの実行

## Windows

Spine for Windowsには、`Spine.exe` と `Spine.com` の2つの実行ファイルが付属しています。EXEファイルはGUIアプリケーションで、コンソールウィンドウを表示せずにSpineを起動し、Spineの終了を待ちません。COMファイルはコマンドラインアプリケーションで、Spineの出力をコンソールウィンドウに送り、Spineが終了するのを待ちます。

コマンドラインインターフェースではどちらの実行ファイルも使用できますが、一般的にはCOMファイルを使用することをお勧めします。Spineのインストールフォルダがシステムパス上にあるか、現在の作業ディレクトリにある場合、`Spine`を拡張子なしで指定すると、常に `Spine.com` が実行されます。例えば、以下のようになります:

```
Spine -e C:\path\to\export.json
```

## Mac

Spine for Macを使用する際のコマンドラインエクスポートは、`Spine.app` を開くのではなく、Spineの実行ファイルを直接起動して行います。実行ファイルは `Spine.app` 内の `Spine.app/Contents/MacOS/Spine` にあります。例えば、以下のようになります:

```
/Applications/Spine.app/Contents/MacOS/Spine -e /path/to/export.json
```

## Linux

Spine for Linuxを使用する際のコマンドラインエクスポートは、`Spine.sh` スクリプトを実行することで行います。例えば、以下のようになります:

```
./Spine.sh -e /path/to/export.json
```

[次: 設定](/spine-settings)
[前: インポート](/spine-import)
[Spine ユーザーガイド: 目次]