# ローマ字変換

LunaticChat では、日本語のテキストをローマ字に変換する機能が提供されています．

## 設定を有効化する

ローマ字変換機能を有効にするには `features.japaneseConversion.enabled` の値を `true` にする必要があります．

```yaml{4}
features:
  # ...
  japaneseConversion:
    enabled: true
```

## 変換の仕組み

LunaticChat はプレイヤーからのテキストを以下の手順で変換を行います．

1. プレイヤーからのテキストがローマ字で構成されているかを検証する
2. メモリキャッシュから該当のフレーズがあるかどうかを調べる
   1. ここで該当フレーズがヒットした場合はそれをサーバーに返す
3. メモリキャッシュに存在していない場合は，ローマ字からひらがなに変換する
4. 変換した文字列を Google IME API へ送り，人が読める形に変換する
5. メモリキャッシュに保存し，それをサーバーに返す

```
┌───────────────────────────────────────────────────┐
│                   User Input                      │
│                  (Romanji Text)                   │
└─────────────────────┬─────────────────────────────┘
                      │
                      ▼
┌───────────────────────────────────────────────────┐
│              RomanjiConverter                     │
│  ┌───────────────────────────────────────────┐    │
│  │  1. Check Memory Cache                    │    │
│  │     └─→ Hit: Return immediately           │    │
│  │                                           │    │
│  │  2. Call Google IME API                   │    │
│  │                                           │    │
│  │  3. Store in Memory Cache                 │    │
│  │                                           │    │
│  │  4. Queue for Disk Save (async)           │    │
│  └───────────────────────────────────────────┘    │
└─────────────────────┬─────────────────────────────┘
                      │
                      ▼
┌───────────────────────────────────────────────────┐
│                  Converted Text                   │
│                 (Japanese Text)                   │
└───────────────────────────────────────────────────┘
```

::: tip ファイルへの保存

メモリキャッシュの内容は負荷にならないよう，設定した秒毎にファイルキャッシュへ自動でセーブします．

:::

## 
