specification.md•7.89 kB
# f0_make_randomvalues 要件定義・仕様書
## 1. システム概要
### 1.1 目的
Functional Graph Database (FGDB)システムにおいて、乱数データを生成する関数ブロック(FB)を提供する。本FBは独立変数を取らず、従属変数として乱数データを生成する基本的なデータ生成機能を実現する。
### 1.2 位置づけ
- **FGDB内での役割**: データ生成源として機能し、他の関数ブロックへの入力データを提供
- **関数表現**: `y = f0()` (独立変数なしの関数)
- **ブロックカテゴリ**: Function Block (FB)
## 2. 機能要件
### 2.1 主要機能
| 機能ID | 機能名 | 説明 |
|--------|--------|------|
| FR-001 | 乱数生成 | 指定された個数の整数乱数を生成する |
| FR-002 | データ保存 | 生成した乱数をCSVファイルとして保存する |
| FR-003 | データ読込 | 保存されたCSVファイルを読み込む |
| FR-004 | データ表示 | 読み込んだデータを標準出力に表示する |
| FR-005 | 関数記述出力 | 抽象関数表現をfunc.txtに出力する |
### 2.2 詳細仕様
#### FR-001: 乱数生成
- **範囲**: 0~999の整数
- **デフォルト生成数**: 5個
- **カスタマイズ**: コマンドライン引数で生成数を指定可能
#### FR-002: データ保存
- **ファイル名**: `data.csv`
- **保存先**: 指定された出力フォルダ
- **フォーマット**: ヘッダー付きCSV(単一列)
#### FR-003: データ読込
- **対応フォーマット**: CSV
- **エラーハンドリング**: ファイル不在時の適切なエラー処理
#### FR-004: データ表示
- **出力先**: 標準出力(stdout)
- **表示形式**: ヘッダーを含む全データの表示
#### FR-005: 関数記述出力
- **ファイル名**: `func.txt`
- **内容**: `y=f0()`
- **用途**: FGDBシステムでの関数実行記述
## 3. 非機能要件
### 3.1 性能要件
| 要件ID | 項目 | 基準値 |
|--------|------|--------|
| NR-001 | 乱数生成速度 | 10,000個/秒以上 |
| NR-002 | メモリ使用量 | 100MB以下 |
| NR-003 | ファイルサイズ | 生成数×10バイト以下 |
### 3.2 品質要件
- **可用性**: エラー発生時の適切なメッセージ出力
- **保守性**: モジュール化されたコード構造
- **移植性**: Python 3.8以上で動作
- **拡張性**: 乱数生成アルゴリズムの変更が容易
## 4. インターフェース仕様
### 4.1 コマンドラインインターフェース
#### 基本実行
```bash
python f0/func.py -o {output_folder}
```
#### パラメータ指定実行
```bash
python f0/func.py -o {output_folder} -n {num}
```
### 4.2 引数仕様
| 引数 | 必須 | デフォルト | 説明 |
|------|------|------------|------|
| `-o`, `--output` | ○ | なし | 出力フォルダパス |
| `-n`, `--number` | × | 5 | 生成する乱数の個数 |
### 4.3 出力仕様
- **正常終了**: 終了コード 0
- **異常終了**: 終了コード 1
- **ログ出力**: 実行状況を標準出力に表示
## 5. データフォーマット
### 5.1 data.csv フォーマット
```
data
1
3
56
23
664
```
- **1行目**: ヘッダー("data"固定)
- **2行目以降**: 生成された乱数(1行1データ)
- **文字コード**: UTF-8
- **改行コード**: LF
### 5.2 func.txt フォーマット
```
y=f0()
```
- **形式**: FGDB関数記述形式
- **文字コード**: UTF-8
## 6. ファイル構成
### 6.1 ディレクトリ構造
```
f0_make_randomvalues/
├── data.csv # 生成データファイル(実行時生成)
├── func.py # メイン実行ファイル
├── lib.py # ライブラリ関数
├── main.py # テストコード
├── func.txt # 関数記述ファイル
├── README.md # ドキュメント
├── requirements.txt # 依存パッケージ
└── specification.md # 本仕様書
```
### 6.2 各ファイルの役割
| ファイル名 | 役割 | 実装言語 |
|------------|------|----------|
| func.py | メイン処理実装 | Python |
| lib.py | 共通関数ライブラリ | Python |
| main.py | 単体テスト実装 | Python |
| data.csv | 出力データ | CSV |
| func.txt | 関数記述 | テキスト |
## 7. 実装詳細
### 7.1 lib.py 実装関数
| 関数名 | 引数 | 戻り値 | 説明 |
|--------|------|--------|------|
| `generate_random_numbers(count)` | count: int | List[int] | 指定数の乱数生成 |
| `save_data_to_csv(data, filepath)` | data: List, filepath: str | None | CSVファイル保存 |
| `load_data_from_csv(filepath)` | filepath: str | List[int] | CSVファイル読込 |
| `display_data(data)` | data: List | None | データ表示 |
| `write_function_notation(filepath)` | filepath: str | None | 関数記述出力 |
### 7.2 エラーハンドリング
| エラー種別 | 処理 |
|------------|------|
| ファイル書込エラー | エラーメッセージ出力後、終了コード1で終了 |
| ディレクトリ作成エラー | 自動的にディレクトリを作成 |
| 引数不正 | 使用方法を表示後、終了コード1で終了 |
## 8. テスト要件
### 8.1 単体テスト
| テストID | テスト内容 | 期待結果 |
|----------|------------|----------|
| UT-001 | デフォルト乱数生成 | 5個の乱数生成 |
| UT-002 | カスタム数乱数生成 | 指定数の乱数生成 |
| UT-003 | CSV保存・読込 | データの一致確認 |
| UT-004 | 関数記述出力 | "y=f0()"の出力確認 |
### 8.2 統合テスト
| テストID | テスト内容 | 期待結果 |
|----------|------------|----------|
| IT-001 | FGDBへの登録 | add_block.pyでの正常登録 |
| IT-002 | operation.txt実行 | 関数実行と結果登録 |
| IT-003 | グラフ表示 | MGとOGでの正常表示 |
## 9. 環境構築
### 9.1 必要環境
- Python: 3.8以上
- OS: Windows 10/11, macOS 10.14+, Linux (Ubuntu 20.04+)
### 9.2 uvを使用した環境構築手順
```bash
# 1. uvのインストール(未インストールの場合)
pip install uv
# 2. プロジェクトディレクトリの作成
mkdir f0_make_randomvalues
cd f0_make_randomvalues
# 3. Python環境の初期化
uv venv
# 4. 仮想環境の有効化
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# 5. 依存パッケージのインストール
uv pip install -r requirements.txt
# 6. 実行確認
python func.py -o output -n 10
```
### 9.3 requirements.txt 内容
```
# 標準ライブラリのみ使用のため、外部依存なし
# Pythonバージョン要件: >=3.8
```
## 10. 制約事項
### 10.1 技術的制約
- Python標準ライブラリのみ使用(外部ライブラリ依存なし)
- 乱数生成にはPythonのrandomモジュールを使用
- ファイルI/Oは同期処理のみ
### 10.2 運用上の制約
- 出力フォルダへの書込権限が必要
- 同時実行時のファイル競合は考慮しない
## 11. 用語定義
| 用語 | 定義 |
|------|------|
| FB (Function Block) | FGDBシステムにおける関数の実装単位 |
| FGDB | Functional Graph Database - 関数実行履歴管理システム |
| MG | Management Graph - 構成要素管理グラフ |
| OG | Operation Graph - 実行履歴管理グラフ |
## 12. 改訂履歴
| バージョン | 日付 | 変更内容 | 作成者 |
|------------|------|----------|--------|
| 1.0 | 2025-01-26 | 初版作成 | FGDB開発チーム |
## 13. 承認
| 役割 | 氏名 | 承認日 |
|------|------|--------|
| プロジェクトマネージャー | - | - |
| 技術リーダー | - | - |
| 品質保証責任者 | - | - |
---
*本仕様書はFGDBシステムのf0_make_randomvalues関数ブロックの要件定義および詳細仕様を記載したものである。*