计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
generate-workflow-diagram【效率与协作】putiorワークフローデータからテーマ付きMermaidフローチャート図を生成する。 テーマ選択(色覚安全4種を含む9テーマ)、出力モード(コンソール、ファイル、 クリップボード、生文字列)、インタラクティブ機能(クリック可能なノード、 ソース情報)、README・Quarto・R Markdownへの埋め込みを網羅する。 ソースファイルのアノテーション後に視覚的な図を生成する準備ができた時、 ワークフロー変更後に図を再生成する時、または異なるオーディエンスのために テーマや出力形式を切り替える時に使用する。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
putiorワークフローデータからテーマ付きMermaidフローチャート図を生成し、ドキュメントに埋め込む。
put()、put_auto()、または put_merge() からのワークフローデータ"light"; オプション: light, dark, auto, minimal, github, viridis, magma, plasma, cividis)show_source_info、enable_clicks3つのソースのいずれかからワークフローデータを取得する。
library(putior)
# From manual annotations
workflow <- put("./src/")
# From manual annotations, excluding specific files
workflow <- put("./src/", exclude = c("build-workflow\\.Rquot;, "test_"))
# From auto-detection only
workflow <- put_auto("./src/")
# From merged (manual + auto)
workflow <- put_merge("./src/", merge_strategy = "supplement")
ワークフローデータフレームにはアノテーションからの node_type 列が含まれる場合がある。ノードタイプはMermaidの図形を制御する:
node_type | Mermaid図形 | 用途 |
|---|---|---|
"input" | スタジアム ([...]) | データソース、設定ファイル |
"output" | サブルーチン [[...]] | 生成されたアーティファクト、レポート |
"process" | 長方形 [...] | 処理ステップ(デフォルト) |
"decision" | ひし形 {...} | 条件分岐ロジック |
"start" / "end" | スタジアム ([...]) | エントリ/ターミナルノード |
各 node_type は、テーマベースのスタイリング用に対応するCSSクラス(例: class nodeId input;)も受け取る。
期待結果: id、label を含み、任意で input、output、source_file、node_type 列を含む1行以上のデータフレーム。
失敗時: データフレームが空の場合、アノテーションまたはパターンが見つからなかった。まず analyze-codebase-workflow を実行するか、put("./src/", validate = TRUE) でアノテーションが構文的に有効であることを確認する。
ターゲットオーディエンスに適したテーマを選択する。
List all available themes:
get_diagram_themes()
Standard themes
Colorblind-safe themes (viridis family)
追加パラメータ:
direction: 図のフロー方向 — "TD"(上から下、デフォルト)、"LR"(左から右)、"RL"、"BT"show_artifacts: TRUE/FALSE — アーティファクトノード(ファイル、データ)を表示; 大きなワークフローではノイズが多くなる可能性がある(例: 16以上の追加ノード)show_workflow_boundaries: TRUE/FALSE — 各ソースファイルのノードをMermaidサブグラフで囲むsource_info_style: ソースファイル情報のノード上での表示方法(例: サブタイトルとして)node_labels: ノードラベルテキストのフォーマット期待結果: テーマ名が出力される。文脈に基づいて1つを選択する。
失敗時: テーマ名が認識されない場合、put_diagram() は "light" にフォールバックする。スペルを確認する。
put_theme() によるカスタムパレット(任意)9つの組み込みテーマがプロジェクトのパレットに合わない場合、put_theme() でカスタムテーマを作成する。
# Create custom palette — unspecified types inherit from base theme
cyberpunk <- put_theme(
base = "dark",
input = c(fill = "#1a1a2e", stroke = "#00ff88", color = "#00ff88"),
process = c(fill = "#16213e", stroke = "#44ddff", color = "#44ddff"),
output = c(fill = "#0f3460", stroke = "#ff3366", color = "#ff3366"),
decision = c(fill = "#1a1a2e", stroke = "#ffaa33", color = "#ffaa33")
)
# Use the palette parameter (overrides theme when provided)
mermaid_content <- put_diagram(workflow, palette = cyberpunk, output = "raw")
writeLines(mermaid_content, "workflow.mmd")
put_theme() は input、process、output、decision、artifact、start、end のノードタイプを受け付ける。各タイプは名前付きベクトル c(fill = "#hex", stroke = "#hex", color = "#hex") を取る。未設定のタイプは base テーマから継承される。
期待結果: カスタムclassDefラインを含むMermaid出力。node_type による図形は保持され、色のみが変更される。すべてのノードタイプは stroke-width:2px を使用 — put_theme() によるオーバーライドは現在サポートされていない。
失敗時: パレットオブジェクトが putior_theme クラスでない場合、put_diagram() は説明的なエラーを発生させる。生のリストではなく put_theme() の戻り値を渡していることを確認する。
フォールバック — 手動classDef置換: put_theme() が提供する以上の細かい制御が必要な場合(例:タイプごとのストローク幅)、ベーステーマで生成してclassDefラインを手動で置換する:
mermaid_content <- put_diagram(workflow, theme = "dark", output = "raw")
lines <- strsplit(mermaid_content, "\n")[[1]]
lines <- lines[!grepl("^\\s*classDef ", lines)]
custom_defs <- c(" classDef input fill:#1a1a2e,stroke:#00ff88,stroke-width:3px,color:#00ff88")
mermaid_content <- paste(c(lines, custom_defs), collapse = "\n")
希望の出力モードで図を生成する。
# Print to console (default)
cat(put_diagram(workflow, theme = "github"))
# Save to file
writeLines(put_diagram(workflow, theme = "github"), "docs/workflow.md")
# Get raw string for embedding
mermaid_code <- put_diagram(workflow, output = "raw", theme = "github")
# With source file info (shows which file each node comes from)
cat(put_diagram(workflow, theme = "github", show_source_info = TRUE))
# With clickable nodes (for VS Code, RStudio, or file:// protocol)
cat(put_diagram(workflow,
theme = "github",
enable_clicks = TRUE,
click_protocol = "vscode" # or "rstudio", "file"
))
# Full-featured
cat(put_diagram(workflow,
theme = "viridis",
show_source_info = TRUE,
enable_clicks = TRUE,
click_protocol = "vscode"
))
期待結果: flowchart TD(または方向に応じて LR)で始まる有効なMermaidコード。ノードがデータフローを示す矢印で接続されている。
失敗時: 出力がノードのない flowchart TD の場合、ワークフローデータフレームが空である。接続が欠落している場合、ノード間で出力ファイル名が入力ファイル名と完全に一致していることを確認する。
適切なドキュメント形式に図を挿入する。
GitHub README(```mermaidコードフェンス):
## Workflow
```mermaid
flowchart TD
A["Extract Data"] --> B["Transform"]
B --> C["Load"]
```
Quartoドキュメント(knit_childによるネイティブmermaidチャンク):
# Chunk 1: Generate code (visible, foldable)
workflow <- put("./src/")
mermaid_code <- put_diagram(workflow, output = "raw", theme = "github")
# Chunk 2: Output as native mermaid chunk (hidden)
#| output: asis
#| echo: false
mermaid_chunk <- paste0("```{mermaid}\n", mermaid_code, "\n```")
cat(knitr::knit_child(text = mermaid_chunk, quiet = TRUE))
R Markdown(mermaid.js CDNまたはDiagrammeR使用):
DiagrammeR::mermaid(put_diagram(workflow, output = "raw"))
期待結果: ターゲット形式で図が正しくレンダリングされること。GitHubはmermaidコードフェンスをネイティブにレンダリングする。
失敗時: GitHubが図をレンダリングしない場合、コードフェンスが正確に ```mermaid を使用していることを確認する(追加属性なし)。Quartoの場合、{mermaid} チャンクでの直接変数補間はサポートされていないため、knit_child() アプローチが使用されていることを確認する。
put_diagram() が有効なMermaidコードを生成する(flowchart で始まる)put() が行を返さなかったことを意味する。アノテーションが存在し構文的に有効であることを確認するdata.csv と Data.csv は異なる"github" テーマはGitHubレンダリング用に特別に設計されている。%%{init:...}%% テーマブロックは一部のレンダラーで無視される場合がある{mermaid} チャンクはR変数を直接サポートしない。ステップ5で説明した knit_child() テクニックを使用するexclude パラメータを使用してスキャン時にスキップする:
workflow <- put("./src/", exclude = c("build-workflow\\.Rquot;, "build-workflow\\.jsquot;))
show_artifacts = TRUE がノイズ過多: 大きなプロジェクトでは多くのアーティファクトノード(10-20以上)が生成され、図が散らかる。show_artifacts = FALSE を使用し、node_type アノテーションに依存して主要な入出力を明示的にマークするannotate-source-files — 前提条件: 図の生成前にファイルがアノテーションされている必要があるanalyze-codebase-workflow — 自動検出が手動アノテーションを補完できるsetup-putior-ci — CI/CDでの図の再生成を自動化するcreate-quarto-report — Quartoレポートに図を埋め込むbuild-pkgdown-site — pkgdownドキュメントサイトに図を埋め込む