diff --git a/spec.md b/spec.md new file mode 100644 index 0000000000000000000000000000000000000000..a9dbba1636c76b4d45290ccc520aa53fb3d720ce --- /dev/null +++ b/spec.md @@ -0,0 +1,62 @@ +# 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 で新しい非同期処理のパターンなどを利用するために必要な補助的なライブラリです。