---
generated_at: 2026-02-25 10:00:00
metrics:
  claims_total: 65
  claims_with_evidence: 63
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：decap-cms-widget-map 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：63 / 65、根拠なし：2
- 優先レビュー（高）
  1. **C-61（不正GeoJSONのエラーハンドリング）**：コード上にtry-catchが存在せず、実際のエラー挙動はOpenLayersライブラリ依存のため要確認
  2. **C-52（olStylesのCSS適用確認）**：olStylesのインポートがCSS文字列として機能するかはバンドラー設定依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/decap-cms-widget-map/src/index.js` - モジュールエントリポイント（Widget関数、エクスポート定義）
- E-02: `packages/decap-cms-widget-map/src/MapPreview.js` - MapPreviewコンポーネント定義
- E-03: `packages/decap-cms-widget-map/src/schema.js` - スキーマ定義オブジェクト
- E-04: `packages/decap-cms-widget-map/src/withMapControl.js` - withMapControl HOFおよびMapControlクラスコンポーネント
- E-05: `packages/decap-cms-widget-map/package.json` - パッケージ構成・依存関係

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | デフォルト引数でWidgetオブジェクトが正しく生成される | E-01 (L7-15) | ○ |
| C-02 | カスタムオプションでデフォルト値が上書きされる | E-01 (L14: `...opts`) | ○ |
| C-03 | name='map'が返却される | E-01 (L9) | ○ |
| C-04 | controlComponentが含まれる | E-01 (L5, L10) | ○ |
| C-05 | previewComponentが含まれる | E-01 (L2, L11) | ○ |
| C-06 | schemaが含まれる | E-01 (L3, L12) | ○ |
| C-07 | 名前付きエクスポートの構成 | E-01 (L17) | ○ |
| C-08 | デフォルトエクスポートがDecapCmsWidgetMapと同一 | E-01 (L17-18) | ○ |
| C-09 | valueが文字列の場合にWidgetPreviewContainer内に表示 | E-02 (L6) | ○ |
| C-10 | valueが空文字列の場合の表示 | E-02 (L6: `value ? value.toString() : null`) | ○ |
| C-11 | valueがnull/undefinedの場合にnullが描画 | E-02 (L6: falsy判定) | ○ |
| C-12 | valueが渡されない場合の挙動 | E-02 (L6, L10: PropTypes.string定義) | ○ |
| C-13 | valueがtoString()を持つオブジェクトの場合 | E-02 (L6: `value.toString()`) | ○ |
| C-14 | propTypesにvalueがstring型で定義 | E-02 (L9-11) | ○ |
| C-15 | スキーマにpropertiesが含まれる | E-03 (L2) | ○ |
| C-16 | decimalsがinteger型で定義 | E-03 (L3) | ○ |
| C-17 | typeがstring型でenum制約を持つ | E-03 (L4) | ○ |
| C-18 | enumにPointが含まれる | E-03 (L4) | ○ |
| C-19 | enumにLineStringが含まれる | E-03 (L4) | ○ |
| C-20 | enumにPolygonが含まれる | E-03 (L4) | ○ |
| C-21 | 引数なしでMapControlクラスが返却 | E-04 (L31-32) | ○ |
| C-22 | カスタムgetFormatでMapControlが返却 | E-04 (L31) | ○ |
| C-23 | カスタムgetMapでMapControlが返却 | E-04 (L31) | ○ |
| C-24 | defaultProps.value='' | E-04 (L41) | ○ |
| C-25 | defaultProps.height='400px' | E-04 (L42) | ○ |
| C-26 | propTypes.onChangeがfunc.isRequired | E-04 (L34) | ○ |
| C-27 | propTypes.fieldがobject.isRequired | E-04 (L35) | ○ |
| C-28 | constructorでmapContainer refが作成 | E-04 (L47) | ○ |
| C-29 | constructorでresizeObserverがnull初期化 | E-04 (L48) | ○ |
| C-30 | valueが空の場合にfeatures空配列で初期化 | E-04 (L57: `value ? [format.readFeature(value)] : []`) | ○ |
| C-31 | GeoJSON文字列でfeatureが読み込まれる | E-04 (L57) | ○ |
| C-32 | features.length > 0でmap.getView().fitが呼ばれる | E-04 (L64-66) | ○ |
| C-33 | features.length === 0でfitが呼ばれない | E-04 (L64: `if (features.length > 0)`) | ○ |
| C-34 | Draw interactionがfield.get('type')で作成 | E-04 (L68) | ○ |
| C-35 | デフォルトで'Point'が使用 | E-04 (L68: `field.get('type', 'Point')`) | ○ |
| C-36 | drawendでonChangeが呼ばれる | E-04 (L72-74) | ○ |
| C-37 | drawendでfeaturesSource.clearが呼ばれる | E-04 (L73) | ○ |
| C-38 | decimalsがfield.get('decimals', 7)で設定 | E-04 (L71) | ○ |
| C-39 | デフォルトdecimals=7 | E-04 (L71: `field.get('decimals', 7)`) | ○ |
| C-40 | ResizeObserverがtargetを監視 | E-04 (L77-81) | ○ |
| C-41 | ResizeObserverコールバックでmap.updateSize | E-04 (L78) | ○ |
| C-42 | カスタムgetFormat使用時の動作 | E-04 (L56: `getFormat ? getFormat(field) : getDefaultFormat(field)`) | ○ |
| C-43 | カスタムgetMap使用時の動作 | E-04 (L63: `getMap ? getMap(target, featuresLayer) : getDefaultMap(target, featuresLayer)`) | ○ |
| C-44 | getFormat未指定時にgetDefaultFormatが使用 | E-04 (L56) | ○ |
| C-45 | getMap未指定時にgetDefaultMapが使用 | E-04 (L63) | ○ |
| C-46 | componentWillUnmountでresizeObserver.disconnect | E-04 (L85-87) | ○ |
| C-47 | resizeObserverがnullの場合エラーなし | E-04 (L85: `if (this.resizeObserver)`) | ○ |
| C-48 | mapContainerのdiv要素が描画 | E-04 (L90-110) | ○ |
| C-49 | heightプロパティがスタイルに反映 | E-04 (L103: `height: ${height}`) | ○ |
| C-50 | デフォルトheight(400px)が反映 | E-04 (L42, L103) | ○ |
| C-51 | classNameWrapperがclassNameに含まれる | E-04 (L98) | ○ |
| C-52 | olStylesがCSS内に含まれる | E-04 (L100: `${olStyles}`) | △ |
| C-53 | getDefaultFormatがGeoJSONインスタンスを返却 | E-04 (L19-21) | ○ |
| C-54 | formatOptionsのdataProjection='EPSG:4326' | E-04 (L15) | ○ |
| C-55 | formatOptionsのfeatureProjection='EPSG:3857' | E-04 (L16) | ○ |
| C-56 | getDefaultMapがMapインスタンスを返却 | E-04 (L23-29) | ○ |
| C-57 | OSM TileLayerがlayersに含まれる | E-04 (L26) | ○ |
| C-58 | featuresLayerがlayersに含まれる | E-04 (L26) | ○ |
| C-59 | View.centerが[0, 0] | E-04 (L27) | ○ |
| C-60 | View.zoomが2 | E-04 (L27) | ○ |
| C-61 | 不正GeoJSONでエラーがスロー | **根拠なし** | △ |
| C-62 | Polygon描画タイプの確認 | E-04 (L68, E-03 L4) | ○ |
| C-63 | decimals=0の境界値 | E-04 (L71) | ○ |
| C-64 | PropTypes.checkPropTypesが呼ばれる | E-04 (L53) | ○ |
| C-65 | formatOptionsオブジェクトの定義確認 | E-04 (L14-17) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-61（不正GeoJSONのエラーハンドリング）**: withMapControl.jsのcomponentDidMount内にtry-catchブロックがないため、不正なGeoJSON文字列が渡された場合のエラーハンドリング挙動はOpenLayers (ol/format/GeoJSON) のreadFeature実装に完全に依存する。ソースコード上で明示的なエラーハンドリングは確認できない。
  - 候補：OpenLayers GeoJSONドキュメント / olソースコード / 実際のテスト実行結果
- **C-52（olStylesのCSS適用）**: `olStyles`はwebpackのCSS loader経由でインポートされるCSS文字列であり、実際にテンプレートリテラル内で展開された際の挙動はバンドラー設定に依存する。
  - 候補：webpack.config.js / babel設定 / 実際のレンダリング結果

## 5) リスクフラグ（レビュー観点）
- **リスク1 (中)**: C-61 - 不正GeoJSON入力時のエラーハンドリングがコード上に存在しないため、ランタイムエラーが発生する可能性がある。テスト時にOpenLayersの実際の挙動を確認する必要がある。
- **リスク0 (低)**: C-52 - olStylesのCSS適用はバンドラー設定依存だが、既存のビルド設定で動作していると推定される。

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースがモジュール内の全ファイル（index.js, MapPreview.js, schema.js, withMapControl.js）をカバーしているか
- [ ] withMapControl.jsの主要ロジック（地図初期化、描画操作、リサイズ対応）が十分にテストされているか
- [ ] 正常系・異常系・境界値の観点が各関数/メソッドに適切に割り当てられているか
- [ ] C-61（不正GeoJSONのエラーハンドリング）について、OpenLayersの実際の挙動を確認し、テストケースの期待結果を修正する必要があるか
- [ ] カスタムgetFormat/getMapの注入パターンが適切にテストされているか
- [ ] componentWillUnmountでのリソース解放が正しくテストされているか
