# デフォルト作業ディレクトリの構成

### 概要

デフォルトでは、コマンダーは構成ファイルやログファイルを `~/.keeper` に保存します。この保存先は、システム全体に適用する場合は環境変数で、特定のセッションのみ変更する場合はコマンドラインパラメーターでカスタマイズできます。

### サポートされている方法

#### コマンドラインパラメータ

特定のセッションで作業ディレクトリを変更する場合は、`--data-dir` を使用します。

```bash
keeper shell --data-dir /tmp/keeper-session
# ディレクトリ: /tmp/keeper-session/.keeper/
```

#### 環境変数

**KEEPER\_DATA\_HOME**

すべてのセッションで使用するコマンダーのデータディレクトリをカスタム設定します。

```bash
export KEEPER_DATA_HOME="/opt/keeper-data"
keeper shell
# ディレクトリ: /opt/keeper-data/.keeper/
```

**XDG\_DATA\_HOME (XDG準拠)**

XDG Baseディレクトリ仕様に従ってユーザーデータを整理します。

```bash
export XDG_DATA_HOME="$HOME/.local/share"
keeper shell
# ディレクトリ: $HOME/.local/share/.keeper/
```

### 優先順位

コマンダーは、次の優先順位 (上から順に優先度が高い) で作業ディレクトリを決定します。

1. **CLI パラメータ** - `--data-dir` フラグ
2. **KEEPER\_DATA\_HOME** - 環境変数
3. **XDG\_DATA\_HOME** - XDG Baseディレクトリ仕様
4. **デフォルト** - `~/.keeper` (従来との互換性のため)

### スマートパス処理

コマンダーは、必要に応じてパスに `.keeper` を自動的に追加します。

#### 自動追加の動作

* 入力: `/Users/john` → 出力: `/Users/john/.keeper`
* 入力: `/Users/john/.keeper` → 出力: `/Users/john/.keeper` (変更なし)

この動作は、CLIパラメーターと `KEEPER_DATA_HOME` 環境変数の両方に適用されます。

#### XDG準拠

XDG\_DATA\_HOME を使用する場合、コマンダーは常に `.keeper` を付加します。

* `XDG_DATA_HOME=/opt/data` → `/opt/data/.keeper` が使用されます

### 使用例

#### 基本的な環境変数の設定

```bash
# カスタムデータディレクトリを設定
export KEEPER_DATA_HOME="/opt/keeper"
keeper shell
# config.json の保存先: /opt/keeper/.keeper/
```

#### XDGベースディレクトリ準拠

```bash
# XDG 仕様に従う
export XDG_DATA_HOME="$HOME/.local/share"
keeper shell
# config.json の保存先: $HOME/.local/share/.keeper/
```

#### セッション限定の上書き

```bash
# テスト用に特定のディレクトリを使用
keeper shell --data-dir /tmp/test-session
# config.json の保存先: /tmp/test-session/.keeper/
```

#### 企業環境

```bash
# 企業全体の構成
export XDG_DATA_HOME="/mnt/userdata/$USER"
keeper shell
# config.json の保存先: /mnt/userdata/john/.keeper/
```

### コマンドライン参照

#### グローバルオプション

```bash
keeper [command] --data-dir <path>
```

**パラメータ**

* `--data-dir <path>`: コマンダーのデータ保存先として使用するディレクトリを指定します (環境変数より優先されます)

**例**

```bash
# カスタムディレクトリを使用
keeper shell --data-dir /custom/path
```

### 環境変数参照

| 変数                 | 説明                     | 例                    |
| ------------------ | ---------------------- | -------------------- |
| `KEEPER_DATA_HOME` | カスタムコマンダーデータディレクトリ     | `/opt/keeper`        |
| `XDG_DATA_HOME`    | ユーザーデータのXDG Baseディレクトリ | `$HOME/.local/share` |

### トラブルシューティング

#### よくある問題

**権限エラー**

指定したディレクトリが書き込み可能であることを確認してください。

```bash
# 権限を確認
ls -la /path/to/parent/directory

# 必要に応じて権限を修正
chmod 755 /path/to/parent/directory
```

**パスが見つからない**

コマンダーはディレクトリを自動生成しますが、親ディレクトリは存在している必要があります。

```bash
# 親ディレクトリを作成
mkdir -p /path/to/parent
keeper --data-dir /path/to/parent/keeper shell
```

**環境変数が機能しない**

環境変数が正しく設定されていることを確認してください。

```bash
# 現在の値を確認
echo $KEEPER_DATA_HOME
echo $XDG_DATA_HOME
```

### 互換性に関する注意

* **後方互換性あり**: 既存の `~/.keeper` を使用した環境は、そのまま引き続き動作します。
* **前方互換性あり**: 新しい環境変数を使用することで、より柔軟な構成が可能になります。
* **クロスプラットフォーム対応**: macOS、Linux、Windowsで動作します。
* **XDG準拠**: Unix標準のデータディレクトリ構成ルールに従っています。
