コンテンツにスキップ

RDEToolKitクイックスタート

目的

このチュートリアルでは、RDEToolKitを使用して最初の構造化処理を実行し、基本的なワークフローを体験します。所要時間は約15分です。

完了時には、以下のことができるようになります:

  • RDEプロジェクトの基本構造を理解する
  • カスタム構造化処理関数を作成する
  • 構造化処理を実行し、結果を確認する

1. プロジェクトを作成する

目的

RDE構造化処理用のプロジェクトディレクトリを作成し、必要なファイル構造を準備します。

実行するコード

terminal
1
2
3
# プロジェクトディレクトリを作成
mkdir my-rde-project
cd my-rde-project
command_prompt
1
2
3
# プロジェクトディレクトリを作成
mkdir my-rde-project
cd my-rde-project

2. 依存関係を定義する

目的

プロジェクトで使用するPythonパッケージを定義します。

rdetoolkitをインストールする

1
2
3
python3 -m venv .venv
source .venv/bin/activate
pip install "rdetoolkit>=1.4.0"
1
2
3
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install "rdetoolkit>=1.4.0"

期待される結果

pip listコマンドでrdetoolkitがインストールされていることを確認できます。

1
2
3
4
$ pip list
Package                   Version
------------------------- -----------------
rdetoolkit                1.4.0

3. プロジェクト構造を作成する

目的

プロジェクトの基本的なディレクトリ構造を作成します。

実行するコード

1
rdetoolkit init

期待される結果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Ready to develop a structured program for RDE.
Created: /Users/user1/my-rde-project/my-rde-project/container/requirements.txt
Created: /Users/user1/my-rde-project/my-rde-project/container/Dockerfile
Created: /Users/user1/my-rde-project/my-rde-project/container/data/invoice/invoice.json
Created: /Users/user1/my-rde-project/my-rde-project/container/data/tasksupport/invoice.schema.json
Created: /Users/user1/my-rde-project/my-rde-project/container/data/tasksupport/metadata-def.json
Created: /Users/user1/my-rde-project/my-rde-project/templates/tasksupport/invoice.schema.json
Created: /Users/user1/my-rde-project/my-rde-project/templates/tasksupport/metadata-def.json
Created: /Users/user1/my-rde-project/my-rde-project/input/invoice/invoice.json

Check the folder: /Users/user1/my-rde-project/my-rde-project

3. カスタム構造化処理を作成する

目的

データ処理のロジックを含むカスタム関数を作成します。

作成するファイル

container/modules/process.pyを以下のように作成します。

container/modules/process.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from pathlib import Path
import json
import os

from rdetoolkit.models.rde2types import RdeInputDirPaths, RdeOutputResourcePath

def display_message(message):
    """メッセージを表示する補助関数"""
    print(f"[INFO] {message}")

def create_sample_metadata(srcpaths: RdeInputDirPaths):
    """サンプルメタデータを作成する"""
    metadata = {
        "title": "Sample Dataset",
        "description": "RDEToolKit tutorial sample",
        "created_at": "2024-01-01",
        "status": "processed"
    }

    # メタデータファイルを保存
    metadata_path = Path(srcpaths.tasksupport) / "sample_metadata.json"
    metadata_path.parent.mkdir(parents=True, exist_ok=True)
    with metadata_path.open('w', encoding='utf-8') as f:
        json.dump(metadata, f, ensure_ascii=False, indent=2)

    display_message(f"メタデータを保存しました: {metadata_path}")

def dataset(srcpaths: RdeInputDirPaths, resource_paths: RdeOutputResourcePath):
    """
    メインの構造化処理関数

    Args:
        srcpaths: 入力ファイルのパス情報
        resource_paths: 出力リソースのパス情報
    """
    display_message("構造化処理を開始します")

    # 入力パス情報を表示
    display_message(f"入力データディレクトリ: {srcpaths.inputdata}")
    display_message(f"構造化データ出力ディレクトリ: {resource_paths.struct}")
    display_message(f"メタデータ出力ディレクトリ: {resource_paths.meta}")

    # サンプルメタデータを作成
    create_sample_metadata(srcpaths)

    # 入力ファイルの一覧を表示
    if os.path.exists(srcpaths.inputdata):
        files = os.listdir(srcpaths.inputdata)
        display_message(f"入力ファイル数: {len(files)}")
        for file in files:
            display_message(f"  - {file}")

    display_message("構造化処理が完了しました")

4. メインスクリプトを作成する

目的

RDEToolKitのワークフローを起動するエントリーポイントを作成します。

作成するファイル

container/main.py を以下のように書き換えます。

main.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import rdetoolkit

from modules import process

def main():
    """メイン実行関数"""
    print("=== RDEToolKit チュートリアル ===")

    # RDE構造化処理を実行
    result = rdetoolkit.workflows.run(custom_dataset_function=process.dataset)

    # 結果を表示
    print("\n=== 処理結果 ===")
    print(f"実行ステータス: {result}")

    return result

if __name__ == "__main__":
    main()

5. サンプルデータを準備する

目的

構造化処理をテストするためのサンプルデータ(data/inputdata/sample_data.txt)を作成します。

作成するファイル

container/data/inputdata/sample_data.txt
1
2
3
4
5
6
7
Sample Research Data
====================

This is a sample data file for RDEToolKit tutorial.
Created: 2024-01-01
Type: Text Data
Status: Ready for processing

6. 構造化処理を実行する

目的

作成したプロジェクトでRDE構造化処理を実行し、動作を確認します。

実行するコード

dataディレクトリと同じディレクトリに移動しmain.pyを実行します。

terminal
1
2
3
# 構造化処理を実行
cd container
python main.py

期待される結果

以下のような出力が表示されます:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
=== RDEToolKit チュートリアル ===
[INFO] 構造化処理を開始します
[INFO] 入力データディレクトリ: data/inputdata
[INFO] 構造化データ出力ディレクトリ: data/structured
[INFO] メタデータ出力ディレクトリ: data/meta
[INFO] メタデータを保存しました: data/tasksupport/sample_metadata.json
[INFO] 入力ファイル数: 1
[INFO]   - sample_data.txt
[INFO] 構造化処理が完了しました

=== 処理結果 ===
実行ステータス: {
  "statuses": [
    {
      "run_id": "0000",
      "title": "toy dataset",
      "status": "success",
      "mode": "invoice",
      "error_code": null,
      "error_message": null,
      "target": "data/inputdata",
      "stacktrace": null
    }
  ]
}

7. 結果を確認する

dataディレクトリを確認してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
data
├── attachment
├── inputdata
│   └── sample_data.txt
├── invoice
│   └── invoice.json
├── invoice_patch
├── logs
│   └── rdesys.log
├── main_image
├── meta
├── nonshared_raw
│   └── sample_data.txt
├── other_image
├── raw
├── structured
├── tasksupport
│   ├── invoice.schema.json
│   ├── metadata-def.json
│   └── sample_metadata.json
├── temp
└── thumbnail

おめでとうございます!

RDEToolKitを使用した最初の構造化処理が完了しました。

達成したこと

✅ RDEプロジェクトの基本構造を作成 ✅ カスタム構造化処理関数を実装 ✅ 構造化処理ワークフローを実行 ✅ 処理結果の確認方法を習得

学んだ重要な概念

  • プロジェクト構造: data/inputdata/, data/tasksupport/, modules/の役割
  • カスタム関数: RdeInputDirPathsRdeOutputResourcePathの使用方法
  • ワークフロー実行: rdetoolkit.workflows.run()の基本的な使い方

次のステップ

さらに詳しく学ぶには:

  1. 構造化処理の概念 - 処理フローの詳細理解
  2. 設定ファイル - 動作のカスタマイズ方法
  3. API リファレンス - 利用可能な全機能の確認

次の実践

実際の研究データを使用して、より複雑な構造化処理を試してみましょう。データの種類に応じて、適切な処理モードを選択することが重要です。