資料にタイミングチャート書くときって、結構イライラしませんか?

クロックに合わせて線を揃えるのが、面倒!
手ぇ、プルプルするん😩

修正も面倒😭
信号を1本追加すれば、下の信号を全部ずらさなきゃだし
1クロック削ると、後ろの波形も全部ずらさなきゃ
クロックに合わせて線を揃えて、信号を並べて、Busを書いて。
やっと綺麗に描けたと思ったら仕様変更。なんてことも・・・・
そこで今回は、Visio VBAでタイミングチャートを作成・編集できるツールを作ってみました。

ソースコードは GitHub にて公開しています。
▶ Timing Chart Designer ソースコードはこちら
このマクロでできること
今回作ったマクロでは、
- CLK / Digital / Bus信号名を登録
- 波形をクリックして編集
- ガイド線表示
- 信号順の並び替え
- 保存・読込
- 指定位置からの波形をシフト(挿入・削除)
- 指定位置以降の波形削除
といったことができます。

個人的には、描画後も編集できるところがお気に入り
タイミングチャートって、完成したと思った頃に仕様変更が入ったりするんですよね(笑)
そんなときに最初から描き直さなくて済むよう、後から編集できるようにしています。
【編集画面GIF】
マクロの構成ポイント
コード自体はAIと相談しながら作ったので、
ここではアルゴリズムよりも設計の考え方を紹介します。
悩んだのは、信号データをどう管理するかでした。。。
最初は単純に図形を描くだけでしたが、それだと後から編集や並び替えを行うのが難しくなります。
そこで内部では信号情報をバッファとして保持する構成にしています。
信号を追加すると、まずバッファへ登録。
画面上の信号一覧は別途リストボックス用の並び順リストを持ち、その順番に従ってバッファのデータを表示しています。

そのため、
- 信号順変更
- 再描画
- 保存・読込
を比較的シンプルに実現できました。
また、波形の変化点(1→0、0→1になるタイミング)も図形データとして保持しています。
保存/読み込み時はその情報を読み出し、再描画時も同じ状態を復元できるようにしています。
AIと一緒に作ってみた
今回のツールはAIと相談しながら開発しました。
というと

AIにお願いしたら一瞬で完成!

わーい👏
なんてことを想像する方も多いかもしれませんが残念ながら・・・
人間が気持ちよく使えるための闘い
AIが爆速でかなり完成度の高いコードを書いてくれるのですが、間違いもあります。
また、人間が気持ちよく使えるツールを作るためには人間の努力が必要なわけです。
そう、、、一瞬で完成というよりむしろ
「エラー出た~💦」
「ここ使いにくい」
「その動きは違う」
の嵐(笑)
作る → 触る → 直す
を何度も繰り返しています。
コードを書くことより、人間様は
「何を実現したいのか?そして実際にどうなっていたら使いやすいのか?」
を考える方が大事なのかもしれないなぁと感じています。
さらに消費トークンとの闘い
最初に使ったのはClaudeの無料版です。
ただ、無料版なので結構すぐ利用制限に到達します(笑)
こちらのClaudeさんコードには定評がありますが、すぐ制限に達するというもっぱらの噂
※日々進化するAIなので2026年6月現在の状況ではあります。
「よし、ここを変更してっと!」→「上限に達しました」→翌日再開
みたいな感じで、実際には何日もかけて作っていました😂
そして別に回し者ではないのですが…
何日も格闘した末に
ChatGPT Plus の無料体験を試してみました。(禁断の課金への第一歩???)
Codexにプロジェクト一式を渡してみたところ、さすがコード生成特化AI!
うわーーー!っと分析が動き、数分待つと、修正したファイルがDLできる状態まで。
もちろん指示を出すのは人間なんでAIの性能だけではないですが、、、
コード生成AIというより、
優秀なデバッグ相棒という印象でした。
ツールの構成
技術的な詳細はコードを見ていただくとして、ざっくりこんな構成です。
| ファイル | 役割 |
|---|---|
| frmMain.frm | メイン画面 |
| frmAddSignal.frm | 信号管理 |
| frmClkSetting.frm | クロック設定 |
| TimingChart.bas | 描画処理 |
| ThisDocument.cls | マウスイベント |
設計の中心になっているのは信号データを管理するバッファ部分です。
ここを整理したことで、並び替えや再描画もシンプルになりました。
コード配布について
コード一式を配布しています。
記事上部のダウンロードリンクから取得できます。
動作環境は Microsoft Visio デスクトップ版です。
【導入方法】
- VisioでVBAエディタを開く
- frmファイルをインポート
- basファイルをインポート
- clsファイルをインポート
- マクロを実行
詳しい手順は同梱の説明書をご確認ください。
おわりに
Visio VBAの情報は、探してみると意外と少ないんですよね。
でも最近はAIのおかげで、個人でもかなり実用的なツールを作れる時代になりました。
今回のツールも、AIに丸投げして完成したわけではなく、試行錯誤を繰り返しながら少しずつ育てています。

同じように「この作業、毎回面倒なんだよなぁ・・・」
と思っているものがあれば、一度作ってみるのも面白いかもしれません😊

