コンテンツにスキップ

コマンドライン機能について

概要

RDEToolKitは、RDE構造化処理の開発と実行を支援する包括的なコマンドラインインターフェースを提供します。プロジェクトの初期化から、Excelインボイスの生成、アーカイブの作成まで、開発ワークフロー全体をサポートします。

前提条件

  • Python 3.9以上
  • rdetoolkitパッケージのインストール

利用可能なコマンド

init: スタートアッププロジェクトの作成

RDE構造化処理のスタートアッププロジェクトを作成します。

1
python3 -m rdetoolkit init [PATHオプション]
1
py -m rdetoolkit init [PATHオプション]

以下のディレクトリとファイル群が生成されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
container
├── data
│   ├── inputdata
│   ├── invoice
│      └── invoice.json
│   └── tasksupport
│       ├── invoice.schema.json
│       └── metadata-def.json
├── main.py
├── modules
└── requirements.txt

各ファイルの説明は以下の通りです。

  • requirements.txt: 構造化プログラム構築で使用したいPythonパッケージを追加してください。必要に応じてpip installを実行してください。
  • modules: 構造化処理で使用したいプログラムを格納してください。
  • main.py: 構造化プログラムの起動処理を定義
  • data/inputdata: 構造化処理対象データファイルを配置してください。
  • data/invoice: ローカル実行させるためには空ファイルでも必要になります。
  • data/tasksupport: 構造化処理の補助するファイル群を配置してください。

ファイル上書きについて

すでに存在するファイルは上書きや生成がスキップされます。

テンプレートを用いた初期化

--template <path> を付けると独自のスタータープロジェクトを流用できます。指定できるのは以下のいずれかです。

  • pyproject.toml または rdeconfig.yaml / rdeconfig.yml そのもの
  • 上記ファイルが格納されたディレクトリ(--template . ならカレントディレクトリ内の pyproject.toml を優先)

設定ファイルには [tool.rdetoolkit.init](pyproject)または init(rdeconfig)セクションを追加し、コピー元を記述します。

1
2
3
4
5
[tool.rdetoolkit.init]
entry_point = "templates/main.py"
modules = "templates/modules"
tasksupport = "templates/tasksupport"
inputdata = "templates/inputdata"

キーの意味:

  • entry_point: container/main.py としてコピーされるファイル。
  • modules: container/modules/ 配下に展開されるファイルまたはディレクトリ。
  • tasksupport: container/data/tasksupport/templates/tasksupport/ の両方へ複製されるファイル/ディレクトリ。
  • inputdata: container/data/inputdata/input/inputdata/ に展開されるディレクトリ。

相対パスは設定ファイルが置かれたディレクトリから解決されるため、テンプレート用リポジトリを別環境でも共有できます。

PATHオプションで直接コピー元を指定する

設定ファイルにパスを書きたくない場合は、--template なしで次のPATHオプションを渡せます(複数併用可)。指定したパスは初期化に使われ、存在する pyproject.toml / rdeconfig.yaml(yml) があれば上書き追記されます(無ければ pyproject.toml を新規作成)。

オプション 役割・コピー先
--entry-point container/main.py としてコピー(ファイル限定)
--modules container/modules/ 以下にコピー(ファイル/ディレクトリ対応)
--tasksupport container/data/tasksupport/templates/tasksupport/ の両方にコピー(ファイル/ディレクトリ対応)
--inputdata container/data/inputdata/input/inputdata/ にコピー(ディレクトリ推奨)
--other (複数可) container/ 以下に任意のファイル/ディレクトリをコピー

相対パスはカレントディレクトリ基準で保存されます。CLIオプションで渡したパスが設定ファイルより優先されます。

CLI出力例(PATHオプション使用時)

以下のように tpl/ 配下にテンプレートを置き、PATHオプションを付けて実行した場合の出力例です。

1
2
3
4
5
6
python3 -m rdetoolkit init \
  --entry-point tpl/custom_main.py \
  --modules tpl/modules \
  --tasksupport tpl/tasksupport \
  --inputdata tpl/inputdata \
  --other tpl/extra.txt --other tpl/extras

出力(パスは実行環境に依存します):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Ready to develop a structured program for RDE.
Created from template: /private/tmp/rdt-init-check/container/main.py
Created: /private/tmp/rdt-init-check/container/requirements.txt
Created: /private/tmp/rdt-init-check/container/Dockerfile
Populated /private/tmp/rdt-init-check/container/modules from template directory: /private/tmp/rdt-init-check/tpl/modules
Created: /private/tmp/rdt-init-check/container/data/invoice/invoice.json
Populated /private/tmp/rdt-init-check/container/data/tasksupport from template directory: /private/tmp/rdt-init-check/tpl/tasksupport
Populated /private/tmp/rdt-init-check/templates/tasksupport from template directory: /private/tmp/rdt-init-check/tpl/tasksupport
Populated /private/tmp/rdt-init-check/container/data/inputdata from template directory: /private/tmp/rdt-init-check/tpl/inputdata
Populated /private/tmp/rdt-init-check/input/inputdata from template directory: /private/tmp/rdt-init-check/tpl/inputdata
Copied template file /private/tmp/rdt-init-check/tpl/extra.txt into /private/tmp/rdt-init-check/container
Populated /private/tmp/rdt-init-check/container/extras from template directory: /private/tmp/rdt-init-check/tpl/extras
Created: /private/tmp/rdt-init-check/input/invoice/invoice.json

処理後、pyproject.toml(または既存のrdeconfig.yaml)に [tool.rdetoolkit.init] が追記され、渡したパスが相対パスで保存されます。

make-excelinvoice: ExcelInvoiceの生成

invoice.schema.jsonからExcelインボイスを生成します。

1
python3 -m rdetoolkit make-excelinvoice <invoice.schema.json path> -o <save file path> -m <file or folder>
1
py -m rdetoolkit make-excelinvoice <invoice.schema.json path> -o <save file path> -m <file or folder>

オプション

オプション 説明 必須
-o(--output) 出力ファイルパス。ファイルパスの末尾は_excel_invoice.xlsxを付与すること。
-m モードの選択。登録モードの選択。ファイルモードfileかフォルダモードfolderを選択可能。 -

デフォルト出力

-oを指定しない場合は、template_excel_invoice.xlsxというファイル名で、実行ディレクトリ配下に作成されます。

gen-config: rdeconfig.yamlテンプレートの生成

用意されているテンプレート、または対話形式の質問に基づいてrdeconfig.yamlを生成します。

1
python3 -m rdetoolkit gen-config [OUTPUT_DIR] --template <template> [--overwrite] [--lang <ja|en>]
1
py -m rdetoolkit gen-config [OUTPUT_DIR] --template <template> [--overwrite] [--lang <ja|en>]

利用できるテンプレートは以下の通りです。

  • minimal(デフォルト): システム設定とトレースバック設定のみを含む最小構成。
  • full: multidata_tile設定を含む完全なテンプレート。
  • multitile: extended_mode: "MultiDataTile"を有効化したテンプレート。
  • rdeformat: extended_mode: "rdeformat"を有効化したテンプレート。
  • smarttable: SmartTable設定を追加し、save_table_file: trueを設定。
  • interactive: 対話形式で各設定項目を確認。--lang jaで日本語プロンプトに切り替え可能。

オプション

オプション 説明 必須
OUTPUT_DIR rdeconfig.yamlを出力するディレクトリ。省略時はカレントディレクトリに作成されます。 -
--template テンプレート名(minimal, full, multitile, rdeformat, smarttable, interactive)。 -
--overwrite 既存のrdeconfig.yamlがある場合に確認なしで強制上書きします。未指定なら既存時のみ確認を表示します。 -
--lang プロンプトの言語(en または ja)。--template interactive選択時のみ利用できます。 -

インタラクティブモード

--template interactiveを指定すると、システム設定、MultiDataTile設定、SmartTable設定、トレースバック設定について 対話形式で質問されます。回答はrdeconfig.yamlに反映され、プロジェクト開始時から整合した初期値を共有できます。

version: バージョン確認

rdetoolkitのバージョンを確認します。

1
python3 -m rdetoolkit version
1
py -m rdetoolkit version

artifact: RDE提出用アーカイブの作成

RDEに提出するためのアーカイブ(.zip)を作成します。指定したソースディレクトリを圧縮し、除外パターンに一致するファイルやディレクトリを除外します。

1
python3 -m rdetoolkit artifact --source-dir <ソースディレクトリ> --output-archive <出力アーカイブファイル> --exclude <除外パターン>
1
py -m rdetoolkit artifact --source-dir <ソースディレクトリ> --output-archive <出力アーカイブファイル> --exclude <除外パターン>

オプション

オプション 説明 必須
-s(--source-dir) 圧縮・スキャン対象のソースディレクトリ
-o(--output-archive) 出力アーカイブファイル(例:rde_template.zip) -
-e(--exclude) 除外するディレクトリ名。デフォルトでは 'venv' と 'site-packages' が除外されます -

実行レポート

アーカイブが作成されると、以下のような実行レポートが生成されます:

  • Dockerfileやrequirements.txtの存在確認
  • 含まれるディレクトリとファイルのリスト
  • コードスキャン結果(セキュリティリスクの検出)
  • 外部通信チェック結果

実行レポートのサンプル:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Execution Report

**Execution Date:** 2025-04-08 02:58:44

- **Dockerfile:** [Exists]: 🐳 container/Dockerfile
- **Requirements:** [Exists]: 🐍 container/requirements.txt

## Included Directories

- container/requirements.txt
- container/Dockerfile
- container/vuln.py
- container/external.py

## Code Scan Results

### container/vuln.py

**Description**: Usage of eval() poses the risk of arbitrary code execution.

```python
def insecure():
    value = eval("1+2")
    print(value)

External Communication Check Results

container/external.py

1
2
3
4
5
1:
2: import requests
3: def fetch():
4:     response = requests.get("https://example.com")
5:     return response.text

オプション詳細

  • --output-archiveを指定しない場合、デフォルトのファイル名でアーカイブが作成されます。
  • --excludeオプションは複数回指定することができます(例:--exclude venv --exclude .git)。

シェル補完機能

コマンドやオプションの入力を補完するシェル補完機能を利用できます。Tabキーを押すことでコマンド名やオプション名の候補を表示できます。

対応シェル

  • Bash
  • Zsh
  • Fish
  • PowerShell

インストール方法

--install-completion オプションを使用して、現在使用中のシェルに補完機能をインストールできます:

1
python -m rdetoolkit --install-completion

実行後、シェルを再起動することで補完機能が有効になります。

1
2
# シェルの再起動
exec $SHELL

手動インストール

補完スクリプトの内容を確認してから手動でインストールする場合は、--show-completion オプションを使用します:

1
python -m rdetoolkit --show-completion

表示されたスクリプトを、シェルの設定ファイルに追加してください。

Bashの場合

1
2
python -m rdetoolkit --show-completion >> ~/.bashrc
source ~/.bashrc

Zshの場合

1
2
python -m rdetoolkit --show-completion >> ~/.zshrc
source ~/.zshrc

使用例

補完機能をインストールした後、Tabキーを押すことで候補を表示できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# コマンド名の補完
python -m rdetoolkit <Tab>
# → init, version, gen-config などが表示される

# オプション名の補完
python -m rdetoolkit gen-config --<Tab>
# → --template, --overwrite, --lang などが表示される

# オプション値の補完
python -m rdetoolkit gen-config --template <Tab>
# → static, interactive が表示される

アンインストール

補完機能を削除する場合は、シェルの設定ファイルから該当する行を削除してください。

Bashの場合は ~/.bashrc から、Zshの場合は ~/.zshrc から以下のような行を削除します:

1
eval "$(_RDETOOLKIT_COMPLETE=bash_source python -m rdetoolkit)"

削除後、シェルを再起動してください。

次のステップ