# GetADocUI 仕様書

## 1. 概要
`GetADocUI` は、AsciiDoc 形式のドキュメントテンプレートを生成するためのデスクトップアプリケーションです。
ユーザーは GUI を通じて、出力先、ファイル名、ドキュメントの種類、および各種オプションを指定し、定型化された AsciiDoc ファイルの雛形を迅速に作成できます。

- **プロジェクト名:** GetADoc
- **開発元:** SCREEN Graphic Solutions Co., Ltd.

## 2. 主な機能
### 2.1. テンプレート生成
- ユーザーが指定したフォルダに、指定したファイル名で AsciiDoc のテンプレート (`.adoc`) ファイルを生成します。
- 実際のファイル生成処理は、内部で `getADoc.bat` バッチファイルを実行することで行われます。

### 2.2. 設定可能なオプション
ユーザーは UI 上で以下の項目を設定できます。

- **出力フォルダ:** テンプレートを保存するディレクトリ。
- **ファイル名:** 作成する `.adoc` ファイルの名前。
- **ドキュメントフォーマット:** 生成するドキュメントの種類を選択します。
  - ノーマル
  - QnA 形式
  - 基本設計資料
  - 議事録 など
- **オプション:**
  - `icon`: カスタムアイコンを使用するかどうか。
  - `screen`: SCREEN ロゴを含めるかどうか。
  - `sepa`: ドキュメントを分割形式にするかどうか。
  - `free`: フリーページを追加するかどうか。
  - `drawio`: Draw.io の作図ファイル (`.drawio`) を含めるかどうか。

### 2.3. ユーザーインターフェース
- WPF を使用して構築されています。
- UI 上の表示言語を日本語と英語で切り替える機能があります。
- ファイル名に使用できない文字 (`\ / : * ? " < > |`) が入力された場合、自動的に削除する機能を持っています。

## 3. 技術仕様
- **フレームワーク:** .NET Framework 4.6
- **言語:** C#
- **UI フレームワーク:** WPF
- **主要な処理:**
  - UI から受け取った設定値を引数として、`RunBatch.cs` クラスが `System.Diagnostics.Process` を使用して `getADoc.bat` を実行します。
  - `ViewModel.cs` で MVVM パターンに基づいたデータバインディングと UI ロジックが実装されています。

## 4. 内部処理の流れ
1. ユーザーが UI 上で出力先やオプションを設定し、「作成」ボタンをクリックします。
2. `MainWindow.xaml.cs` が `ViewModel` のコマンドを実行します。
3. `ViewModel` は入力されたファイル名を検証（使用不可文字の除去）します。
4. `RunBatch.cs` の `Run` メソッドが呼び出されます。
5. `Run` メソッドは、UI で設定されたオプションをコマンドライン引数に変換し、`getADoc.bat` を実行します。
   - 例: `getADoc.bat --icon --sepa --lang ja ...`
6. `getADoc.bat` が引数に基づいて AsciiDoc テンプレートファイル一式を生成します。

## 5. 外部ライブラリ (NuGet)
本プロジェクトでは、以下の NuGet パッケージを利用しています。

- **Microsoft.WindowsAPICodePack-Shell**
  - **目的:** Windows のネイティブな機能や UI を .NET から簡単に利用するためのライブラリ。
  - **使用箇所:** 主に「出力フォルダ」を選択する際の、モダンなフォルダ選択ダイアログ (`CommonOpenFileDialog`) の表示に使用されています。

- **Microsoft.Bcl.AsyncInterfaces, System.Threading.Tasks.Extensions など**
  - **目的:** 他のライブラリの依存関係、または古い .NET Framework で新しい非同期処理のパターンなどを利用するために必要な補助的なライブラリです。
