# Lua Language Server 業務運用マニュアル

## 目次

**【基本操作】**
1. [システム概要](#1-システム概要)
2. [インストール・起動手順](#2-インストール起動手順)
3. [エディタ統合](#3-エディタ統合)

**【業務フローに沿った機能】**
4. [【STEP1】コード編集支援機能（入力補助）](#4-step1コード編集支援機能入力補助)
5. [【STEP2】コードナビゲーション機能（定義・参照検索）](#5-step2コードナビゲーション機能定義参照検索)
6. [【STEP3】診断・品質チェック機能（エラー検出）](#6-step3診断品質チェック機能エラー検出)
7. [【STEP4】リファクタリング・整形機能（コード改善）](#7-step4リファクタリング整形機能コード改善)

**【サポート機能】**
8. [設定管理機能](#8-設定管理機能)
9. [CLIコマンド機能](#9-cliコマンド機能)
10. [プラグイン・拡張機能](#10-プラグイン拡張機能)

**【運用ガイド】**
11. [日常業務の流れ](#11-日常業務の流れ)
12. [よくある質問と対処法](#12-よくある質問と対処法)
13. [トラブルシューティング](#13-トラブルシューティング)

---

## 1. システム概要

### 1.1 Lua Language Serverとは

Lua Language Server（LuaLS）は、Lua プログラミング言語向けの Language Server Protocol（LSP）実装です。Visual Studio Code で100万以上のインストールを達成しており、Lua 開発者向けの最も人気の高い言語サーバーです。

コード補完、定義ジャンプ、型チェック、診断機能など、統合開発環境に必要な機能を提供し、Lua 開発をより高速かつ効率的にします。

### 1.2 本システムで行う主要業務

本システムは、主に以下の業務を支援します：

| 業務カテゴリ | 具体的な業務内容 |
|------------|----------------|
| **コード編集支援** | 自動補完、シグネチャヘルプ、スニペット展開、自動require挿入 |
| **コードナビゲーション** | 定義へ移動、型定義へ移動、参照検索、シンボル検索 |
| **コード品質管理** | 構文エラー検出、型チェック、未使用変数検出、スペルチェック |
| **リファクタリング** | 名前変更、コードアクション、自動整形 |
| **情報表示** | ホバー情報、インレイヒント、コードレンズ |

### 1.3 業務フロー概要

本システムにおける業務は、以下の流れで進行します：

```
┌─────────────────────────────────────────────────────────────────┐
│                        業務フロー                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  【STEP 1】コード編集支援                                        │
│      - 自動補完でコードを効率的に入力                             │
│      - シグネチャヘルプで関数の引数を確認                         │
│      ↓                                                          │
│  【STEP 2】コードナビゲーション                                  │
│      - 定義へ移動でコードの構造を理解                             │
│      - 参照検索で影響範囲を把握                                   │
│      ↓                                                          │
│  【STEP 3】診断・品質チェック                                    │
│      - リアルタイム診断でエラーを早期発見                         │
│      - 型チェックで型の整合性を確認                               │
│      ↓                                                          │
│  【STEP 4】リファクタリング・整形                                │
│      - 名前変更でコードを改善                                     │
│      - 自動整形でコードスタイルを統一                             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
```

**役割別の業務概要：**

| 役割 | 主な業務 |
|------|---------|
| **開発者** | コード編集、補完の活用、診断結果の確認、リファクタリング |
| **チームリーダー** | コード品質基準の設定、CI/CD統合の管理、設定の標準化 |

### 1.4 主な機能

| 機能 | 説明 | 業務フローでの位置 |
|------|------|------------------|
| 自動補完 | 変数名・関数名・キーワードの補完候補を表示 | STEP 1 |
| ホバー情報 | シンボルの型情報・ドキュメントを表示 | STEP 1 |
| シグネチャヘルプ | 関数の引数情報を表示 | STEP 1 |
| 定義へ移動 | シンボルの定義位置へジャンプ | STEP 2 |
| 参照検索 | シンボルの使用箇所を一覧表示 | STEP 2 |
| 診断機能 | エラー・警告をリアルタイムで表示 | STEP 3 |
| 名前変更 | シンボル名を一括変更 | STEP 4 |
| コード整形 | EmmyLuaCodeStyleによる自動フォーマット | STEP 4 |
| CLIチェック | CI/CD向けバッチ診断 | 随時利用 |

### 1.5 ユーザー種別

システムには以下のユーザー種別があります：

| ユーザー種別 | 説明 |
|-------------|------|
| VS Code ユーザー | VS Code 拡張機能として使用 |
| NeoVim ユーザー | LSPクライアント経由で使用 |
| Sublime Text ユーザー | LSP パッケージ経由で使用 |
| CLIユーザー | コマンドライン診断ツールとして使用 |

### 1.6 対応環境

**対応Luaバージョン：**
- Lua 5.5, 5.4, 5.3, 5.2, 5.1
- LuaJIT

**対応プラットフォーム：**
- Windows
- Linux
- macOS
- Docker

**対応エディタ：**
- Visual Studio Code（公式拡張）
- NeoVim（nvim-lspconfig）
- Sublime Text（LSP パッケージ）
- その他LSP対応エディタ

---

## 2. インストール・起動手順

### 2.1 VS Code でのインストール

1. VS Code を起動します
2. 拡張機能パネルを開きます（Ctrl+Shift+X / Cmd+Shift+X）
3. 検索ボックスに「sumneko.lua」と入力します
4. 「Lua」拡張機能を選択し、「インストール」ボタンをクリックします
5. インストール完了後、Luaファイルを開くと自動的にLanguage Serverが起動します

### 2.2 ソースからのビルド

**前提条件：**

| OS | 要件 |
| --- | --- |
| Windows | MSVC、Ninja Build System |
| Linux | GCC-9 以上、G++-9 以上、Ninja Build System |
| macOS | Clang、Ninja Build System |

**ビルド手順（Unix/Linux/macOS）：**

```bash
git clone https://github.com/LuaLS/lua-language-server
cd lua-language-server
./make.sh
```

**ビルド手順（Windows）：**

```batch
git clone https://github.com/LuaLS/lua-language-server
cd lua-language-server
make.bat
```

### 2.3 起動方法

**VS Code の場合：**
- Luaファイル（.lua）を開くと自動的に起動します

**コマンドラインの場合：**
```bash
# LSPモードで起動（エディタ連携用）
bin/lua-language-server

# ヘルプを表示
bin/lua-language-server --help

# バージョンを表示
bin/lua-language-server --version
```

### 2.4 初期設定

プロジェクトルートに `.luarc.json` ファイルを作成して設定を行います：

```json
{
    "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
    "runtime": {
        "version": "Lua 5.4"
    },
    "workspace": {
        "library": []
    }
}
```

---

## 3. エディタ統合

### 3.1 VS Code での設定

VS Code の設定（settings.json）で以下の項目を設定できます：

**基本設定：**

| 設定項目 | 説明 | デフォルト値 |
|---------|------|-------------|
| `Lua.runtime.version` | Luaバージョン | Lua 5.4 |
| `Lua.workspace.library` | ライブラリパス | [] |
| `Lua.diagnostics.enable` | 診断の有効化 | true |
| `Lua.completion.enable` | 補完の有効化 | true |
| `Lua.hover.enable` | ホバー情報の有効化 | true |

### 3.2 NeoVim での設定

nvim-lspconfig を使用した設定例：

```lua
require('lspconfig').lua_ls.setup {
    settings = {
        Lua = {
            runtime = {
                version = 'LuaJIT',
            },
            diagnostics = {
                globals = { 'vim' },
            },
            workspace = {
                library = vim.api.nvim_get_runtime_file("", true),
            },
        },
    },
}
```

### 3.3 基本操作

| 操作 | VS Code ショートカット | 機能 |
|------|----------------------|------|
| 補完を手動トリガー | Ctrl+Space | 補完候補を表示 |
| 定義へ移動 | F12 | シンボルの定義位置へジャンプ |
| 参照検索 | Shift+F12 | シンボルの参照箇所を検索 |
| ホバー情報 | マウスホバー / Ctrl+K Ctrl+I | 型情報・ドキュメントを表示 |
| 名前変更 | F2 | シンボル名を一括変更 |
| コードアクション | Ctrl+. | 利用可能なアクションを表示 |
| フォーマット | Shift+Alt+F | コードを整形 |

---

## 4. 【STEP1】コード編集支援機能（入力補助）

> **業務フローでの位置**: コードを入力する際に、効率的な編集を支援する機能群です。

### 4.1 自動補完を使用する

**操作手順：**

1. エディタでLuaファイルを開きます
2. コードを入力し始めると、自動的に補完候補が表示されます
3. 矢印キーで候補を選択し、Tab または Enter で確定します

**補完トリガー文字：**

| トリガー | 補完内容 |
|---------|---------|
| `.` | テーブルフィールド補完 |
| `:` | メソッド補完 |
| 文字入力 | ローカル変数、グローバル変数、キーワード補完 |

**補完候補の種類：**

| アイコン | 種類 | 説明 |
|---------|------|------|
| (f) | Function | 関数 |
| (v) | Variable | 変数 |
| (k) | Keyword | キーワード |
| (m) | Method | メソッド |
| (t) | Table | テーブル |

### 4.2 シグネチャヘルプを確認する

関数を呼び出す際に、引数の情報を確認できます。

**操作手順：**

1. 関数名を入力し、`(` を入力します
2. シグネチャヘルプがポップアップ表示されます
3. 現在入力中の引数がハイライトされます
4. 引数を入力し、`,` を入力すると次の引数情報が表示されます

### 4.3 ホバー情報を確認する

シンボルの詳細情報を確認できます。

**操作手順：**

1. 変数名や関数名にマウスカーソルを合わせます
2. 型情報とドキュメントがポップアップ表示されます

**表示される情報：**
- 型情報（例: `local x: number`）
- LuaDocコメントから抽出された説明
- 関数の場合: 引数・戻り値の情報

### 4.4 自動requireを使用する

外部モジュールの補完と自動require挿入が可能です。

**操作手順：**

1. 使用したいモジュール名を入力します
2. 補完候補に「Import from ...」と表示されます
3. 選択すると、ファイル先頭に `require` 文が自動挿入されます

**設定項目：**
- `Lua.completion.autoRequire`: 自動require機能の有効/無効（デフォルト: true）

---

## 5. 【STEP2】コードナビゲーション機能（定義・参照検索）

> **業務フローでの位置**: コードの構造を理解し、関連箇所を効率的に探索する機能群です。

### 5.1 定義へ移動する

シンボルの定義位置へジャンプします。

**操作手順：**

1. 移動したいシンボル（変数名、関数名など）にカーソルを置きます
2. F12 を押す、または右クリックメニューから「定義へ移動」を選択します
3. 定義位置へジャンプします

**対応するシンボル：**
- ローカル変数
- グローバル変数
- 関数
- テーブルフィールド
- require 文字列（モジュールファイルへジャンプ）
- LuaDoc の `@see` タグ

**注意点・Tips：**
- 定義が複数ある場合は、ピークビューで選択肢が表示されます
- Ctrl+クリック でも定義へ移動できます

### 5.2 型定義へ移動する

変数の型が定義されている位置へジャンプします。

**操作手順：**

1. 変数名にカーソルを置きます
2. 右クリックメニューから「型定義へ移動」を選択します
3. 型の定義位置へジャンプします

### 5.3 参照検索を実行する

シンボルが使用されている箇所を一覧表示します。

**操作手順：**

1. 検索したいシンボルにカーソルを置きます
2. Shift+F12 を押す、または右クリックメニューから「すべての参照を検索」を選択します
3. 参照箇所がサイドパネルに一覧表示されます

**表示される情報：**
- 参照があるファイル名
- 行番号
- 参照箇所のコードスニペット

### 5.4 シンボル検索を実行する

ファイル内またはワークスペース全体でシンボルを検索します。

**ドキュメントシンボル検索：**
1. Ctrl+Shift+O を押します
2. 現在のファイル内のシンボル一覧が表示されます
3. 入力してフィルタリングし、選択してジャンプします

**ワークスペースシンボル検索：**
1. Ctrl+T を押します
2. ワークスペース全体のシンボル一覧が表示されます
3. 入力してフィルタリングし、選択してジャンプします

---

## 6. 【STEP3】診断・品質チェック機能（エラー検出）

> **業務フローでの位置**: コードの問題を早期に発見し、品質を維持する機能群です。

### 6.1 診断情報を確認する

リアルタイムでコードの問題を検出・表示します。

**表示される診断の種類：**

| 重要度 | 表示 | 説明 |
|--------|------|------|
| Error | 赤下線 | 構文エラー、重大な問題 |
| Warning | 黄下線 | 潜在的な問題、非推奨機能 |
| Information | 青下線 | 参考情報 |
| Hint | 灰下線 | 軽微な提案 |

**診断を確認する方法：**

1. コード上の下線にマウスカーソルを合わせます
2. 問題の詳細がツールチップで表示されます
3. 「問題」パネル（Ctrl+Shift+M）で全ての診断を一覧表示できます

### 6.2 主要な診断項目

| 診断コード | 説明 |
|-----------|------|
| `undefined-global` | 未定義のグローバル変数 |
| `unused-local` | 未使用のローカル変数 |
| `unused-function` | 未使用の関数 |
| `duplicate-index` | テーブルの重複キー |
| `type-mismatch` | 型の不一致 |
| `deprecated` | 非推奨APIの使用 |
| `missing-parameter` | 必須引数の欠落 |
| `redundant-parameter` | 余分な引数 |
| `spell-check` | スペルミス |

### 6.3 診断を無効化する

特定の診断を無効化する方法：

**コメントによる無効化：**
```lua
---@diagnostic disable-next-line: undefined-global
print(undefinedVar)

---@diagnostic disable: unused-local
local unusedVar = 1
```

**設定による無効化：**

`.luarc.json` または VS Code 設定で：
```json
{
    "Lua.diagnostics.disable": ["undefined-global", "unused-local"]
}
```

### 6.4 グローバル変数を定義する

未定義グローバルの警告を解消する方法：

**設定による定義：**
```json
{
    "Lua.diagnostics.globals": ["vim", "love", "awesome"]
}
```

**LuaDocによる定義：**
```lua
---@type fun(x: number): number
sin = nil
```

---

## 7. 【STEP4】リファクタリング・整形機能（コード改善）

> **業務フローでの位置**: コードの品質を改善し、可読性を向上させる機能群です。

### 7.1 名前変更を実行する

シンボル名を一括で変更します。

**操作手順：**

1. 変更したいシンボルにカーソルを置きます
2. F2 を押す、または右クリックメニューから「シンボルの名前を変更」を選択します
3. 新しい名前を入力します
4. Enter を押して確定します
5. 全ての参照箇所が自動的に更新されます

**注意点・Tips：**
- 変更前にプレビューで影響範囲を確認できます
- 変更は Ctrl+Z で元に戻せます

### 7.2 コードアクションを実行する

コンテキストに応じた修正提案を適用します。

**操作手順：**

1. 問題がある箇所（下線表示）にカーソルを置きます
2. Ctrl+. を押す、または電球アイコンをクリックします
3. 利用可能なアクションから選択して適用します

**主なコードアクション：**

| アクション | 説明 |
|-----------|------|
| 診断を無効化 | 選択した診断をコメントで無効化 |
| スペルチェックを追加 | 単語を辞書に追加 |
| require文を生成 | 自動require挿入 |
| 未使用変数を削除 | 不要な変数を削除 |

### 7.3 コードを整形する

EmmyLuaCodeStyle によるコード整形を実行します。

**操作手順：**

1. Shift+Alt+F を押す、または右クリックメニューから「ドキュメントのフォーマット」を選択します
2. コード全体が整形されます

**範囲を指定して整形：**
1. 整形したい範囲を選択します
2. Ctrl+K Ctrl+F を押します
3. 選択範囲のみが整形されます

**整形設定：**

`.editorconfig` または `.luarc.json` で設定可能：
```json
{
    "Lua.format.enable": true,
    "Lua.format.defaultConfig": {
        "indent_style": "space",
        "indent_size": "4"
    }
}
```

### 7.4 空白を削除する

ファイル内の末尾空白を削除します。

**操作手順：**

1. コマンドパレット（Ctrl+Shift+P）を開きます
2. 「Lua: Remove Spaces」と入力して実行します
3. 行末の空白が削除されます

---

## 8. 設定管理機能

### 8.1 設定ファイルの構成

**設定ファイルの優先順位（高い順）：**

1. `.luarc.json` / `.luarc.jsonc`（ワークスペースルート）
2. VS Code ワークスペース設定
3. VS Code ユーザー設定
4. デフォルト値

### 8.2 主要な設定項目

**ランタイム設定：**

| 設定項目 | 説明 | 値の例 |
|---------|------|--------|
| `Lua.runtime.version` | Luaバージョン | "Lua 5.4", "LuaJIT" |
| `Lua.runtime.path` | requireパス | ["?.lua", "?/init.lua"] |
| `Lua.runtime.pathStrict` | 厳格なパス解決 | true / false |

**ワークスペース設定：**

| 設定項目 | 説明 | 値の例 |
|---------|------|--------|
| `Lua.workspace.library` | ライブラリパス | ["/path/to/lib"] |
| `Lua.workspace.ignoreDir` | 無視するディレクトリ | [".git", "node_modules"] |
| `Lua.workspace.checkThirdParty` | サードパーティ検出 | true / false |

**診断設定：**

| 設定項目 | 説明 | 値の例 |
|---------|------|--------|
| `Lua.diagnostics.enable` | 診断の有効化 | true / false |
| `Lua.diagnostics.disable` | 無効にする診断 | ["unused-local"] |
| `Lua.diagnostics.globals` | グローバル変数 | ["vim", "love"] |
| `Lua.diagnostics.severity` | 診断重要度 | {"unused-local": "Hint"} |

**補完設定：**

| 設定項目 | 説明 | 値の例 |
|---------|------|--------|
| `Lua.completion.enable` | 補完の有効化 | true / false |
| `Lua.completion.autoRequire` | 自動require | true / false |
| `Lua.completion.callSnippet` | 関数スニペット形式 | "Disable", "Both", "Replace" |

### 8.3 設定ファイルの例

**完全な .luarc.json の例：**

```json
{
    "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
    "runtime": {
        "version": "Lua 5.4",
        "path": [
            "?.lua",
            "?/init.lua"
        ]
    },
    "workspace": {
        "library": [
            "${3rd}/love2d/library"
        ],
        "checkThirdParty": false
    },
    "diagnostics": {
        "enable": true,
        "globals": [
            "love"
        ],
        "disable": [
            "lowercase-global"
        ]
    },
    "completion": {
        "enable": true,
        "autoRequire": true,
        "callSnippet": "Both"
    },
    "hint": {
        "enable": true
    }
}
```

---

## 9. CLIコマンド機能

### 9.1 ヘルプを表示する

**コマンド：**
```bash
lua-language-server --help
```

**出力内容：**
- 利用可能なコマンドライン引数
- 各引数の説明と使用例

### 9.2 バージョンを確認する

**コマンド：**
```bash
lua-language-server --version
```

**出力例：**
```
3.7.4
```

### 9.3 診断チェックを実行する

CI/CDパイプラインで使用できるバッチ診断機能です。

**基本コマンド：**
```bash
lua-language-server --check=/path/to/workspace
```

**オプション：**

| オプション | 説明 | デフォルト |
|-----------|------|----------|
| `--checklevel` | 最小診断レベル | Warning |
| `--check_format` | 出力形式（json/pretty） | pretty |
| `--check_out_path` | JSON出力ファイル | - |
| `--num_threads` | ワーカースレッド数 | 1 |

**使用例：**

```bash
# Warning以上をJSON形式で出力
lua-language-server --check=./src --checklevel=Warning --check_format=json --check_out_path=report.json

# Error以上をPretty形式で出力
lua-language-server --check=./src --checklevel=Error --check_format=pretty
```

**終了コード：**
- 0: 診断パス（エラーなし）
- 1: 診断エラーあり

### 9.4 ドキュメントを生成する

コードからドキュメントを生成します。

**コマンド：**
```bash
lua-language-server --doc=/path/to/workspace --doc_out_path=/path/to/output
```

### 9.5 AST可視化を実行する

ASTをGraphviz DOT形式で出力します。

**コマンド：**
```bash
lua-language-server --visualize=/path/to/file.lua
```

---

## 10. プラグイン・拡張機能

### 10.1 サードパーティライブラリ対応

Lua Language Server は多くのサードパーティライブラリのメタデータを提供しています。

**対応ライブラリ例：**
- LOVE 2D
- OpenResty
- Defold
- Busted
- Cocos2d-x
- その他多数

**設定方法：**

1. 対応ライブラリを使用したプロジェクトを開きます
2. 「サードパーティライブラリを検出しました」の通知が表示されます
3. 「OK」をクリックして適用します

または、手動で設定：
```json
{
    "Lua.workspace.library": [
        "${3rd}/love2d/library"
    ]
}
```

### 10.2 プラグインの使用

カスタムプラグインでLanguage Serverの機能を拡張できます。

**プラグイン設定：**
```json
{
    "Lua.runtime.plugin": "/path/to/plugin.lua"
}
```

### 10.3 LuaDocアノテーション

型情報を明示的に指定するためのアノテーション記法です。

**主要なアノテーション：**

| アノテーション | 説明 | 例 |
|---------------|------|-----|
| `@param` | 関数引数の型 | `---@param name string` |
| `@return` | 戻り値の型 | `---@return number` |
| `@type` | 変数の型 | `---@type table<string, number>` |
| `@class` | クラス定義 | `---@class MyClass` |
| `@field` | フィールド定義 | `---@field name string` |
| `@alias` | 型エイリアス | `---@alias Handler fun(event: Event)` |
| `@overload` | 関数オーバーロード | `---@overload fun(x: string): string` |
| `@generic` | ジェネリック型 | `---@generic T` |
| `@deprecated` | 非推奨マーク | `---@deprecated` |
| `@see` | 参照リンク | `---@see otherFunction` |

**使用例：**
```lua
---@class Person
---@field name string
---@field age number
local Person = {}

---新しいPersonを作成する
---@param name string 名前
---@param age number 年齢
---@return Person
function Person.new(name, age)
    return { name = name, age = age }
end
```

---

## 11. 日常業務の流れ

本セクションでは、業務フローに沿った日常業務の流れを説明します。

```
業務フロー概要（再掲）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【STEP 1】コード編集支援 → 4章参照
    ↓
【STEP 2】コードナビゲーション → 5章参照
    ↓
【STEP 3】診断・品質チェック → 6章参照
    ↓
【STEP 4】リファクタリング・整形 → 7章参照
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

### 11.1 【開発者】STEP1: コードを効率的に入力する

新機能の開発やバグ修正を開始する際の操作フローです。

**操作手順：**

1. プロジェクトをVS Codeで開きます
2. 編集対象のLuaファイルを開きます
3. コードを入力し始めると、自動補完が表示されます
4. Tab または Enter で補完を確定します
5. 関数を呼び出す際は、シグネチャヘルプで引数を確認します
6. 不明な変数や関数はホバー情報で詳細を確認します

### 11.2 【開発者】STEP2: コード構造を理解する

既存のコードを理解する際の操作フローです。

**操作手順：**

1. 調査対象のシンボルにカーソルを置きます
2. F12 で定義へ移動します
3. 必要に応じて Shift+F12 で参照箇所を確認します
4. Ctrl+Shift+O でファイル内のシンボル一覧を確認します
5. Ctrl+T でワークスペース全体からシンボルを検索します

### 11.3 【開発者】STEP3: コード品質を確認する

コードの問題を確認・修正する際の操作フローです。

**操作手順：**

1. コード編集中、リアルタイムで診断結果が表示されます
2. 赤・黄の下線が表示された箇所を確認します
3. 下線にホバーして問題の詳細を確認します
4. 「問題」パネル（Ctrl+Shift+M）で全ての問題を一覧確認します
5. クイックフィックスがある場合は Ctrl+. で適用します

### 11.4 【開発者】STEP4: コードを改善する

リファクタリングとコード整形の操作フローです。

**操作手順：**

1. 名前変更が必要な場合、シンボルに F2 で新しい名前を入力します
2. 整形が必要な場合、Shift+Alt+F でコード全体を整形します
3. コミット前に診断結果を再確認します

### 11.5 【チームリーダー】CI/CD統合

継続的インテグレーションへの統合手順です。

**操作手順：**

1. プロジェクトルートに `.luarc.json` を配置します
2. CI/CDパイプラインに診断チェックを追加します：
   ```yaml
   - name: Lua Lint
     run: lua-language-server --check=./src --checklevel=Warning
   ```
3. 終了コードでビルドの成功/失敗を判定します

---

## 12. よくある質問と対処法

### 12.1 補完に関するQ&A

**Q: 補完候補が表示されません**

A: 以下を確認してください：
- `Lua.completion.enable` が `true` になっているか
- ワークスペースの読み込みが完了しているか（ステータスバーを確認）
- ファイル拡張子が `.lua` であるか

**Q: 自動requireが動作しません**

A: 以下を確認してください：
- `Lua.completion.autoRequire` が `true` になっているか
- `Lua.runtime.path` が正しく設定されているか

### 12.2 診断に関するQ&A

**Q: 正しいコードなのにエラーが表示されます**

A: 以下の方法で対処してください：
- グローバル変数の場合: `Lua.diagnostics.globals` に追加
- 特定の診断を無効化: `Lua.diagnostics.disable` に追加
- 行単位で無効化: `---@diagnostic disable-next-line: <code>` を追加

**Q: 診断が遅い/表示されません**

A: 以下を確認してください：
- ワークスペースが大きすぎる場合、`Lua.workspace.ignoreDir` で除外ディレクトリを設定
- `Lua.workspace.maxPreload` の値を調整

### 12.3 パフォーマンスに関するQ&A

**Q: Language Server の動作が重いです**

A: 以下を試してください：
- `Lua.workspace.maxPreload` を減らす（デフォルト: 5000）
- `Lua.workspace.ignoreDir` で不要なディレクトリを除外
- `Lua.workspace.checkThirdParty` を `false` に設定

---

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

### 13.1 エラーメッセージと対処法

| エラーメッセージ | 原因 | 対処法 |
|----------------|------|--------|
| Workspace not ready | ワークスペース読み込み中 | 読み込み完了を待つ |
| File not found | ファイルが存在しない | ファイルパスを確認 |
| Invalid configuration | 設定ファイルの構文エラー | .luarc.json を確認 |
| Out of memory | メモリ不足 | maxPreload を減らす |

### 13.2 よくあるトラブルと解決方法

**Language Server が起動しない：**

1. VS Code を再起動します
2. 拡張機能を再インストールします
3. ログファイル（`./log/service.log`）を確認します

**設定が反映されない：**

1. `.luarc.json` の構文を確認します
2. VS Code のウィンドウをリロードします（Ctrl+Shift+P → "Reload Window"）
3. 設定の優先順位を確認します

**定義へ移動が動作しない：**

1. ワークスペースの読み込みが完了しているか確認します
2. `Lua.workspace.library` に必要なパスが含まれているか確認します
3. requireパスが正しく設定されているか確認します

### 13.3 ログの確認方法

**ログファイルの場所：**
- デフォルト: `./log/service.log`
- `--logpath` オプションで変更可能

**ログレベルの設定：**
- 環境変数 `LOGLEVEL` で設定
- 値: `trace`, `debug`, `info`, `warn`, `error`

### 13.4 サポートへの連絡方法

問題が解決しない場合は、以下の方法でサポートを受けられます：

1. **GitHub Issues**: https://github.com/LuaLS/lua-language-server/issues
   - バグ報告、機能リクエスト

2. **GitHub Discussions**: https://github.com/LuaLS/lua-language-server/discussions
   - 質問、ディスカッション

**報告時に含める情報：**
- Lua Language Server のバージョン（`--version` で確認）
- エディタとバージョン
- OS とバージョン
- 再現手順
- ログファイルの関連部分

---

## 改訂履歴

| 版数 | 改訂日 | 改訂内容 |
|-----|--------|---------|
| 1.0 | 2026-02-17 | 初版作成 |

---

*本マニュアルは、Lua Language Server のエンドユーザー向け業務運用マニュアルです。*
*システムの更新により、画面や操作方法が変更される場合があります。*
