# VBA2LOBasic 設計書

| 項目 | 内容 |
|---|---|
| 文書名 | VBA2LOBasic 設計書 |
| バージョン | 1.0 |
| 作成日 | 2026-05-12 |
| 対象システム | Python package / GUI / CLI |
| 配置 | `docs/設計書.md` / `docs/設計書.xlsx` |

## 1. はじめに

本書は、`VBA2LOBasic` の目的、構成、機能、データ、セキュリティ、運用観点を引継ぎ可能な粒度で整理する設計書である。

## 2. システム概要

Microsoft Office VBA マクロを LibreOffice Basic へ変換する GUI/CLI ツール

### 2.1 利用者

- Office 移行担当
- LibreOffice 導入担当
- マクロ保守者

### 2.2 スコープ内

- VBA ファイル変換
- xlsm/docm/pptm からの抽出
- Office アプリ文脈の自動判定
- 再帰処理
- レポート/JSON 出力
- dry-run

### 2.3 スコープ外

- 全 Office オブジェクトモデル互換保証
- マクロ実行テスト自動化
- LibreOffice への直接登録

## 3. アーキテクチャ

```mermaid
flowchart LR
  N0["pyproject package"] --> N1
  N1["CLI commands"] --> N2
  N2["GUI entrypoint"] --> N3
  N3["VBA extractor"] --> N4
  N4["converter"] --> N5
  N5["reporter"]
```

### 3.1 技術スタック

| 区分 | 採用技術 | 用途 |
|---|---|---|
| Python package | pyproject.toml | パッケージ/依存関係/エントリーポイント定義 |

### 3.2 主要ファイル

| パス | 役割 |
|---|---|
| `generate_design_doc.py` | 主要ソース/設定ファイル |
| `main.py` | 主要ソース/設定ファイル |
| `pyproject.toml` | 設定 |
| `README.md` | 利用方法・概要 |
| `VBA2LOBasic.spec` | 主要ソース/設定ファイル |
| `tests/conftest.py` | テスト |
| `tests/test_analyzer.py` | テスト |
| `tests/test_confidence.py` | テスト |
| `tests/test_end_to_end.py` | テスト |
| `tests/test_lexer.py` | テスト |
| `tests/test_parser.py` | テスト |
| `tests/test_userform.py` | テスト |
| `tests/test_xml_writer.py` | テスト |
| `tests/__init__.py` | テスト |
| `src/vba2lobasic/cli.py` | 主要ソース/設定ファイル |
| `src/vba2lobasic/gui.py` | 主要ソース/設定ファイル |
| `src/vba2lobasic/main.py` | 主要ソース/設定ファイル |
| `src/vba2lobasic/__init__.py` | 主要ソース/設定ファイル |
| `src/vba2lobasic.egg-info/dependency_links.txt` | 主要ソース/設定ファイル |
| `src/vba2lobasic.egg-info/entry_points.txt` | 主要ソース/設定ファイル |

## 4. データ・設定モデル

| データ | 形式 | 説明 |
|---|---|---|
| 入力 | .xlsm/.docm/.pptm/.bas/.cls/.frm | VBA マクロ |
| 設定 | CLI options | source-app、recursive、encoding |
| 出力 | .bas + report | LibreOffice Basic と変換レポート |

## 5. 機能仕様

| ID | 機能 | 仕様 |
|---|---|---|
| F-01 | 抽出 | マクロ有効 Office 文書から .bas/.cls/.frm を抽出する。 |
| F-02 | 変換 | VBA 構文と Office オブジェクト参照を LibreOffice Basic 向けに変換する。 |
| F-03 | レポート | 警告・エラー・変換概要を表示または JSON 出力する。 |
| F-04 | GUI/CLI | vba2lobasic コマンドと GUI を提供する。 |

## 6. セキュリティ・品質

- Office 文書からマクロを抽出して静的変換し、マクロを実行しない。
- 変換結果は LibreOffice 上でレビュー・テストしてから利用する。

## 7. デプロイ・運用

- pip install .
- vba2lobasic convert path -o output
- pytest で変換ロジックを確認

## 8. 既知の制約と今後の拡張

- 自動変換・自動判定を含む機能は、利用者または担当者レビューを前提とする。
- 本番利用前に対象データ、権限、ログ、バックアップ、例外処理を運用環境に合わせて確認する。
- README と実装差分が出た場合は、実装側を正として本書を更新する。

## 付録 A. 改訂履歴

| 版 | 日付 | 内容 |
|---|---|---|
| 1.0 | 2026-05-12 | 初版作成 |
