de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

VPasCode を用いた PlantUML における変数とプリプロセッサディレクティブの習得

はじめに

PlantUML のプリプロセッサエンジンは、静的な図コードを動的で再利用可能なテンプレートに変換します。これに「Visual Paradigm VPasCode—コードとしての図を描画するためのブラウザベースで AI 強化されたワークスペース—を組み合わせることで、ローカル環境へのインストールなしで、複雑なアーキテクチャの記述、テスト、反復的な改善が可能になります。このガイドでは、VPasCode のワークフローに最適化された、基本的な変数構文から高度なモジュールパターンに至るまでを網羅的に解説します。


1. PlantUML で変数を使用する理由

値のハードコーディングは保守上の悪夢を引き起こします。変数を使用することで、以下が可能になります:

  • 設定の一元化:データベース名やタイムアウト値を一处で変更するだけで、すべての場所で自動的に更新されます。

  • モジュール化の促進:コンテキスト(例:開発環境と本番環境など)に応じて適応する共有テンプレートファイルを作成できます。

  • 反復の削減:ループやマクロを使用して、マイクロサービスクラスターや API エンドポイントなどの反復的な構造を生成できます。

VPasCode では、これらの利点が「ライブプレビューによってさらに強化され、入力する瞬間に変数の変更が即座に反映されるため、その影響をリアルタイムで確認できます。


2. 変数の構文と宣言

最新の PlantUML では、変数に「!$」プレフィックスを使用し、従来の「!define」方式よりも、スコープ制御と型安全性に優れたアプローチを提供します。

基本的な代入(=)

「=」を使用して値を代入または再代入します。

条件付き代入 (?=)

使用 ?=変数がまだ定義されていない場合にのみデフォルト値を設定するために使用します。これは、インクルードファイルによって上書き可能な柔軟なテンプレートを作成する上で極めて重要です。

!$Environment ?= "Staging" 
// $Environment がすでにインクルードファイルによって設定されている場合、この行はスキップされます。

スコープ規則

  • トップレベルで宣言された変数は、スクリプト内でグローバルです。

  • 内の変数は !function または !procedureブロック内の変数は、明示的に管理されない限り、そのスコープに限定されます。


3. データ型と処理

PlantUML は 3 つの主要なデータ型をサポートしています:

型 説明 例
文字列 引用符で囲まれたテキスト。 !$host = "api.example.com"
整数 数学やループ用の整数。 !$port = 8080
JSON 複雑な設定のための構造化データ。 !$config = %str2json("{ 'debug': true }")

ブール値に関する注意: PlantUML は0をfalse、ゼロ以外の数値または空でない文字列をtrueとして扱います。明確にするために%true()および%false()を使用してください。


4. 実践的実装:動的シーケンス図

アクターとメッセージを定義する際、変数は非常に役立ちます。以下はVPasCodeでそのまま使用できる完全な例です。

@startuml
!$client = "MobileApp"
!$gateway = "API_Gateway"
!$authService = "AuthMicroservice"
!$protocol = "HTTPS/JSON"

autonumber

$client -> $gateway : ログインリクエスト ($protocol)
activate $gateway

$gateway -> $authService : トークン検証
activate $authService

alt 有効なトークン
    $authService --> $gateway : 200 OK
else 無効なトークン
    $authService --> $gateway : 401 不正アクセス
end

deactivate $authService
$gateway --> $client : 応答
deactivate $gateway

note right: 環境は !$Environment に設定されています
@enduml

VPasCodeのヒント: $clientを"WebDashboard"と変更すると、図がリアルタイムで更新され、レイアウトの調整を即座に確認できます。


5. 高度な機能:関数と組み込み機能

カスタム関数 (!function)

関数を使用すると、計算や文字列操作を実行し、その結果を直接図のラベルに返すことができます。

@startuml
!function $formatSize($mb)
  !return $mb + " MB"
!endfunction

Alice -> Bob : アップロード制限は $formatSize(50)
@enduml

便利な組み込み関数

  • %variable_exists("$varName"): 変数を使用する前に定義されているか確認し、エラーを防ぎます。

  • %get_variable_value("$varName"): 変数の値を動的に取得し、デバッグに役立ちます。

  • %strlen("$text"): 文字列の長さを取得し、条件付き書式設定に使用します。


6. VPasCode でのワークフローの最適化

VPasCode は、変数駆動型開発体験を向上させるための特定のツールを提供します:

1. リアルタイムプレビューとエラー検出

  • 即時フィードバック: エディタペインで変数の値を変更すると、ダイアグラムが即座に再描画されます。

  • AI 支援デバッグ: 変数プレフィックスを見逃した場合や、スコープエラーがある場合、$AI コード修正ボタンを使用してください。これはプリプロセッサロジックを分析し、自動的に修正を提案します。

2. インクルードによるモジュール設計

VPasCode はブラウザベースですが、コードを論理的なブロックに整理することでモジュール性をシミュレートできます。ローカルワークフローでは、!includeを使用しますが、VPasCode では、共有変数をスクリプトの先頭に配置して簡単にアクセスできるようにできます。

3. ドキュメント用のエクスポート

動的なダイアグラムが完成したら:

  • SVG: 拡張性とテキスト検索機能が必要な技術ドキュメントに最適です。

  • PNG: Slack、Teams、またはメールでの迅速な共有に理想的です。


7. 保守可能なコードのためのベストプラクティス

  1. 命名規則:camelCase または snake_case を一貫して使用してください(例:”$dbName または “$db_name).

  2. デフォルト値: 環境によって上書きされる可能性のある変数には常に “?= を使用してください。

  3. コメント:変数ブロックの上にコメントを追加してその目的を説明してください。特に JSON 設定については重要です。

  4. ロジックをシンプルに保つ:PlantUML はループと条件分岐をサポートしていますが、過度に複雑なロジックは図を読みづらくします。変数は設定に使用し、アプリケーション全体のロジック構築には使用しないでください。


結論

PlantUML の変数とプリプロセッサディレクティブをマスターすることで、図を静的な画像から生きたドキュメントへと変革できます。” を使用するとVPasCodeは、AI 強化された編集機能とライブプレビュー機能により、このプロセスを効率化し、構文ではなくアーキテクチャに集中できるようにします。今日から条件付き代入やカスタム関数の実験を開始し、より堅牢で再利用可能な図テンプレートを作成しましょう。