# Issue #09: ノードテンプレート簡素化

## 概要
`railway new node`で生成されるテンプレートを、entryと同様に「デフォルト最小」「--exampleで例示」の思想に統一する。

## 背景
Issue #07でentryの生成を以下の方針に変更した：
- デフォルト: 最小限のテンプレート
- `--example`: 例示を含むテンプレート

nodeも同じ思想に統一することで、CLIの一貫性を保つ。

**注意**: Issue #01-05でnodeの設計が「Context受け取り形式」に変更されるため、テンプレートもそれに合わせる。

## 提案される解決策

### デフォルト動作（シンプルなテンプレート）
```bash
railway new node fetch_data
```

#### 生成されるノード（src/nodes/fetch_data.py）
```python
from railway import node
from railway.core.context import Context

@node
def fetch_data(ctx: Context) -> None:
    """TODO: Implement this node."""
    ctx["fetch_data"] = {}
```

#### 生成されるテスト（tests/nodes/test_fetch_data.py）
```python
import pytest
from railway import Context
from nodes.fetch_data import fetch_data

class TestFetchData:
    def test_fetch_data_basic(self):
        pytest.skip("Implement this test")
```

### `--example`オプション（例示を含むテンプレート）
```bash
railway new node fetch_data --example
```

#### 生成されるノード（src/nodes/fetch_data.py）
```python
from railway import node
from railway.core.context import Context
from loguru import logger

@node
def fetch_data(ctx: Context) -> None:
    """
    Fetch data for the given user.

    Reads:
        ctx.get_param("user_id"): The user ID to fetch data for.

    Writes:
        ctx["fetch_data"]: A dictionary containing the user data.
    """
    user_id = ctx.get_param("user_id")
    logger.info(f"Fetching data for user {user_id}")

    # TODO: Implement actual data fetching
    result = {
        "user_id": user_id,
        "name": "Example User",
        "status": "active",
    }

    logger.info(f"Fetched data: {result}")
    ctx["fetch_data"] = result
```

#### 生成されるテスト（tests/nodes/test_fetch_data.py）
```python
import pytest
from railway import Context
from nodes.fetch_data import fetch_data

class TestFetchData:
    def test_fetch_data_basic(self):
        """Basic test for fetch_data node."""
        # Arrange
        ctx = Context(entry_point="test")
        ctx.register_node("fetch_data")
        ctx.set_param("user_id", 1)

        # Act
        fetch_data(ctx)

        # Assert
        assert "fetch_data" in ctx
        assert ctx["fetch_data"]["user_id"] == 1

    def test_fetch_data_returns_expected_keys(self):
        """Verify the result has expected keys."""
        ctx = Context(entry_point="test")
        ctx.register_node("fetch_data")
        ctx.set_param("user_id", 1)

        fetch_data(ctx)

        expected_keys = {"user_id", "name", "status"}
        assert set(ctx["fetch_data"].keys()) == expected_keys
```

## メリット
- **一貫性**: entry と node で同じCLI体験
- **初心者**: 最小限のコードから始められる
- **学習者**: `--example`で実践的なパターンを学べる
- **新設計対応**: Issue #01-05のContext受け取り形式に準拠

## 優先度
中

## 依存関係
- Issue #01-05: コンテキスト変数アーキテクチャ（先行）

## 関連Issue
- Issue #07: エントリポイントテンプレート簡素化
- Issue #14: ドキュメント更新（entry/node新思想への対応）

## 関連ファイル
- ノードテンプレート生成処理
- テストテンプレート生成処理
- `railway new node`コマンド実装
