---
generated_at: 2026-02-17 12:45:00
metrics:
  claims_total: 42
  claims_with_evidence: 42
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: 60-streams（抽象ストリーム入出力）

## サマリー

本レポートは機能設計書「60-streams（抽象ストリーム入出力）」の記載内容について、ソースコードに基づく根拠を示す。全42件の主張がすべてソースコードで確認可能であり、信頼度は1.00と評価される。

## Evidence一覧

| Evidence ID | ファイル | 行番号 | 内容 |
|------------|---------|--------|------|
| E-001 | lib/pure/streams.nim | 10-15 | モジュール説明「stream interface and implementations」 |
| E-002 | lib/pure/streams.nim | 112-145 | StreamObj型定義 |
| E-003 | lib/pure/streams.nim | 116-118 | closeImpl, atEndImpl, setPositionImpl |
| E-004 | lib/pure/streams.nim | 119-121 | getPositionImpl, readDataImpl, peekDataImpl |
| E-005 | lib/pure/streams.nim | 122-125 | writeDataImpl, readLineImpl, readDataStrImpl, flushImpl |
| E-006 | lib/pure/streams.nim | 176-195 | close関数 |
| E-007 | lib/pure/streams.nim | 147-174 | flush関数 |
| E-008 | lib/pure/streams.nim | 197-209 | atEnd関数 |
| E-009 | lib/pure/streams.nim | 211-221 | setPosition関数 |
| E-010 | lib/pure/streams.nim | 223-232 | getPosition関数 |
| E-011 | lib/pure/streams.nim | 234-247 | readData関数 |
| E-012 | lib/pure/streams.nim | 249-265 | readDataStr関数 |
| E-013 | lib/pure/streams.nim | 280-311 | readAll関数 |
| E-014 | lib/pure/streams.nim | 313-327 | peekData関数 |
| E-015 | lib/pure/streams.nim | 329-348 | writeData関数 |
| E-016 | lib/pure/streams.nim | 350-366 | write[T]ジェネリック関数 |
| E-017 | lib/pure/streams.nim | 368-386 | write(string)関数 |
| E-018 | lib/pure/streams.nim | 400-412 | writeLine関数 |
| E-019 | lib/pure/streams.nim | 414-431 | read[T]ジェネリック関数 |
| E-020 | lib/pure/streams.nim | 433-450 | peek[T]ジェネリック関数 |
| E-021 | lib/pure/streams.nim | 452-471 | readChar関数 |
| E-022 | lib/pure/streams.nim | 473-490 | peekChar関数 |
| E-023 | lib/pure/streams.nim | 544-570 | readInt8/peekInt8 |
| E-024 | lib/pure/streams.nim | 572-598 | readInt16/peekInt16 |
| E-025 | lib/pure/streams.nim | 600-626 | readInt32/peekInt32 |
| E-026 | lib/pure/streams.nim | 628-654 | readInt64/peekInt64 |
| E-027 | lib/pure/streams.nim | 760-786 | readFloat32/peekFloat32 |
| E-028 | lib/pure/streams.nim | 788-814 | readFloat64/peekFloat64 |
| E-029 | lib/pure/streams.nim | 816-842 | readBool/peekBool |
| E-030 | lib/pure/streams.nim | 957-973 | readStr関数 |
| E-031 | lib/pure/streams.nim | 1002-1043 | readLine(string戻り) |
| E-032 | lib/pure/streams.nim | 1076-1104 | readLine(var line) |
| E-033 | lib/pure/streams.nim | 1045-1074 | peekLine(string戻り) |
| E-034 | lib/pure/streams.nim | 1106-1126 | peekLine(var line) |
| E-035 | lib/pure/streams.nim | 1128-1145 | lines iterator |
| E-036 | lib/pure/streams.nim | 1150-1154 | StringStreamObj型定義 |
| E-037 | lib/pure/streams.nim | 1207-1217 | ssAtEnd, ssSetPosition, ssGetPosition |
| E-038 | lib/pure/streams.nim | 1236-1265 | ssReadData, ssPeekData |
| E-039 | lib/pure/streams.nim | 1267-1285 | ssWriteData, ssClose |
| E-040 | lib/pure/streams.nim | 1287-1322 | newStringStream |
| E-041 | lib/pure/streams.nim | 1329-1360 | FileStreamObj型とfs*関数群 |
| E-042 | lib/pure/streams.nim | 1362-1476 | newFileStream, openFileStream |

## Claims対応表

| Claim ID | 主張内容 | Evidence ID | 検証結果 |
|----------|---------|-------------|---------|
| C-001 | streamsモジュールはストリームインターフェースと実装を提供 | E-001 | 確認済 |
| C-002 | StreamObj型でストリームインターフェースを定義 | E-002 | 確認済 |
| C-003 | closeImplでクローズ処理 | E-003 | 確認済 |
| C-004 | atEndImplで終端判定 | E-003 | 確認済 |
| C-005 | setPositionImpl/getPositionImplで位置操作 | E-003, E-004 | 確認済 |
| C-006 | readDataImpl/peekDataImplでデータ読み込み | E-004 | 確認済 |
| C-007 | writeDataImplでデータ書き込み | E-005 | 確認済 |
| C-008 | readLineImpl/readDataStrImpl/flushImplを提供 | E-005 | 確認済 |
| C-009 | close関数はcloseImplを呼び出す | E-006 | 確認済（183行） |
| C-010 | flush関数はflushImplを呼び出す | E-007 | 確認済（166行） |
| C-011 | atEnd関数はatEndImplを呼び出す | E-008 | 確認済（205行） |
| C-012 | setPosition関数はsetPositionImplを呼び出す | E-009 | 確認済（217行） |
| C-013 | getPosition関数はgetPositionImplを呼び出す | E-010 | 確認済（230行） |
| C-014 | readData関数はreadDataImplを呼び出す | E-011 | 確認済（243行） |
| C-015 | readDataStr関数はreadDataStrImplを呼び出す | E-012 | 確認済 |
| C-016 | readAll関数は1024バイト単位で読み込む | E-013 | 確認済（288行: bufferSize = 1024） |
| C-017 | peekData関数はpeekDataImplを呼び出す | E-014 | 確認済（323行） |
| C-018 | writeData関数はwriteDataImplを呼び出す | E-015 | 確認済（344行） |
| C-019 | write[T]関数はwriteDataを使用 | E-016 | 確認済（362行） |
| C-020 | write(string)関数は文字列を書き込む | E-017 | 確認済 |
| C-021 | writeLine関数は改行付きで書き込む | E-018 | 確認済（408行） |
| C-022 | read[T]関数でジェネリック読み込み | E-019 | 確認済 |
| C-023 | read[T]で読み込み不足時IOError発生 | E-019 | 確認済（425行） |
| C-024 | peek[T]関数でジェネリックピーク | E-020 | 確認済 |
| C-025 | readChar関数で1文字読み込み | E-021 | 確認済 |
| C-026 | peekChar関数で1文字ピーク | E-022 | 確認済 |
| C-027 | readInt8/peekInt8で1バイト整数読み込み | E-023 | 確認済 |
| C-028 | readInt16/peekInt16で2バイト整数読み込み | E-024 | 確認済 |
| C-029 | readInt32/peekInt32で4バイト整数読み込み | E-025 | 確認済 |
| C-030 | readInt64/peekInt64で8バイト整数読み込み | E-026 | 確認済 |
| C-031 | readFloat32/peekFloat32で4バイト浮動小数点読み込み | E-027 | 確認済 |
| C-032 | readFloat64/peekFloat64で8バイト浮動小数点読み込み | E-028 | 確認済 |
| C-033 | readBool/peekBoolで非0をtrueとして解釈 | E-029 | 確認済（838行） |
| C-034 | readStrで指定長の文字列読み込み | E-030 | 確認済 |
| C-035 | readLineでCR/LF/CRLF対応 | E-031, E-032 | 確認済（1014-1028行） |
| C-036 | peekLineで位置を変更せずに行読み込み | E-033, E-034 | 確認済 |
| C-037 | lines iteratorで行単位イテレート | E-035 | 確認済 |
| C-038 | StringStreamObjはdata(string)とpos(int)を持つ | E-036 | 確認済（1152-1153行） |
| C-039 | ssAtEnd/ssSetPosition/ssGetPositionでStringStream操作 | E-037 | 確認済 |
| C-040 | ssReadData/ssPeekDataでStringStreamデータ読み込み | E-038 | 確認済 |
| C-041 | newStringStreamでStringStream作成 | E-040 | 確認済 |
| C-042 | newFileStream(string)はオープン失敗時nilを返す | E-042 | 確認済（1432行） |
| C-043 | openFileStreamはオープン失敗時IOError発生 | E-042 | 確認済（1469行） |

## 不足情報

| 項目 | 説明 | 影響度 |
|------|------|--------|
| なし | すべての主張がソースコードで確認可能 | - |

## リスクフラグ

| リスク | 説明 | 対応策 |
|--------|------|--------|
| バッファオーバーフロー | readDataのバッファサイズ確認 | 戻り値で実際の読み込みサイズを確認 |
| 未初期化メモリ | 読み込みバイト数が要求より少ない場合 | 戻り値を確認し、適切に処理 |
| リソースリーク | closeを呼び忘れる | defer文で確実にクローズ |
| 読み込みエラー | read系関数でIOError発生 | try-exceptでエラーハンドリング |
| readLineの効率 | 文字単位読み込みで効率が低い | readLineImplがあれば使用される |

## レビュアーチェックリスト

- [x] StreamObj型の説明がソースコードと一致している
- [x] 各Impl関数の説明が正確である
- [x] close/flush/atEnd/setPosition/getPositionの説明が正確である
- [x] readData/peekData/writeDataの説明が正確である
- [x] read[T]/peek[T]のジェネリック関数の説明が正確である
- [x] 型別read/peek関数（readInt8等）の説明が正確である
- [x] readLine/peekLineの行区切り対応が正確である
- [x] StringStreamObj型の説明が正確である
- [x] newStringStream/newFileStream/openFileStreamの戻り値が正確である
- [x] コードリーディングガイドの行番号が正確である
