Why Use This
This skill provides specialized capabilities for ingen084's codebase.
Use Cases
- Developing new features in the ingen084 repository
- Refactoring existing code to follow ingen084 standards
- Understanding and working with ingen084's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/ingen084/KyoshinEewViewerIngen/tree/develop/.claude/skills/eew-architecture
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 17, 2026, 04:53 PM
Skill Stats
SKILL.md 74 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: eew-architecture
description: EEW(緊急地震速報)機能のアーキテクチャ解説。EEW関連のコード修正、予報電文・警報電文の処理フロー、キャッシュ管理、ソース優先順位の理解に使用。
user-invocable: false
---
# EEW (緊急地震速報) Architecture
## Instructions
EEW関連のコードを修正・理解する際は以下の手順に従う:
1. **変更対象の特定**: 予報電文か警報電文かを判断し、対応するキャッシュとメソッドを特定
2. **影響範囲の確認**: `EewController`の処理フローを追跡し、関連するイベントを確認
3. **ソース優先順位の考慮**: 複数ソース間の優先順位ルールを理解した上で修正
4. **テストデータの活用**: `EewMock.cs`でテストデータを確認・追加
## Key Files
| ファイル | 役割 |
|---------|------|
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/EewController.cs` | EEW統合管理コントローラ |
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Models/Eew.cs` | EEWデータモデル |
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Controls/EewPanel.axaml` | EEW表示UI |
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/EewTelegramSubscriber.cs` | 電文受信・振り分け |
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Services/Eew/SignalNowFileWatcher.cs` | SNPファイル監視 |
| `src/KyoshinEewViewer/Series/KyoshinMonitor/Models/EewMock.cs` | テスト用モックデータ |
## Dual Cache Architecture
`EewController`は2つの独立したキャッシュを管理:
| キャッシュ | 処理メソッド | 電文タイトル |
|-----------|-------------|-------------|
| `EewCache` | `Update()` | `緊急地震速報(地震動予報)` |
| `WarningEewCache` | `UpdateWarning()` | `緊急地震速報(警報)` |
**重要**: 予報電文と警報電文は**報数(SerialNo)が別々に管理**される。
## Processing Flow
```
[予報電文] → EewTelegramSubscriber → EewController.Update() → EewCache
[警報電文] → EewTelegramSubscriber → EewController.UpdateWarning() → WarningEewCache
↓
InvokeEewUpdated() → 両キャッシュをマージ → EewUpdated イベント発火
```
## Source Priority
`EewSource` enum と優先順位:
- **Dmdata**: 最優先(他ソースを上書き)
- **SignalNowProfessional**: 精度情報のみ補完
- **KyoshinMonitor / Axis**: 基本ソース
詳細なMixEewロジックは[reference.md](reference.md)を参照。
## Examples
**予報電文の新しい報数を追加する場合**:
1. `EewTelegramSubscriber`で電文を受信
2. `EewController.Update()`を呼び出し
3. `EewCache`に新規エントリ追加または既存を更新
4. `InvokeEewUpdated()`でイベント発火
**警報地域を追加表示する場合**:
1. `EewWarningAreas`モデルを確認([reference.md](reference.md)参照)
2. `EewPanel.axaml`のバインディングを確認
3. 必要に応じて`EewController.UpdateWarning()`の処理を修正
## Additional Resources
詳細なモデル・イベント仕様は[reference.md](reference.md)を参照