筆者は KiCad で作った回路図や基板パターンを Git でバージョン管理しており、コミット間の差分を視覚的に確認したいと思いました。調べて見つけたのが「KiRI」というツールでした。しかしこれは外部依存が多く、インストールに不安があり使わないことにしました。その後も少し調べたのですが良いツールが見つからず(kicad_gitdiff_cli と KiCad-Diff はそのときは見つけられなかった)、自作することにしました。このツールで差分を表示する様子を下図に示します。
差分を視覚的に確認したいと思った直接のきっかけは、基板を修正後、Git にコミットせず何日も時間が経ち、何を修正したのか分からなくなったことです。git diff で S 式の差分は見えますが、それだけではよく分かりませんでした。X を検索しても、やはりテキストの diff では実際何をどう変更したか分からないよね、という意見ばかりでした。KiCad はファイルをテキスト形式で保存するため、バイナリファイルになってしまう CAD よりは Git と相性が良いものの、差分が分かりやすいわけではありません。
KiCad Diff Visualizer という名前のツールを作りました。回路図と基板の両方の差分表示に対応しています。他のツールと違い、Git だけでなく自動バックアップ(bakcups ディレクトリ)間の差分表示にも対応しています。OSS として uchan-nos/kicad-diff-visualizer で公開しています。
このツールはローカルマシンで Web サーバとして起動し、Web ブラウザから使う仕組みです。ブラウザからコミット ID を 2 つ指定し、それらの間の差分を表示します。コミットの片方に WORK(ワーキングツリーの意味)を指定することで、まだコミットしていない差分も表示できます。先に示した画像は銅箔面(F.Cu)の差分を表示した様子です。赤は古い基板のみにある部分、水色は新しい基板のみにある部分です。白は差がないことを意味します。
公開から 3 週間弱しか経っていない割に GitHub リポジトリには 40 スターが付いていて、そこそこに注目されているのかなと思います。皆さんも、使ってみて良いなと思ったらスターをいただけると嬉しいです。また、バグ報告、バグ修正や機能追加のプルリクエストは歓迎しますので、何かあれば送ってください。
KiCad Diff Visualizer は Windows 11 の WSL2 上で動く Ubuntu で開発・動作確認していますので、同じ環境ならうまく動く可能性が高いです。WSL ではない純粋な Linux 環境でも動くことが報告されています。Python3 が動く環境なら多くの環境で動くのではないかと思っています。動いた/動かない報告を GitHub リポジトリに送っていただけると幸いです。
インストールは大きく 2 つの作業が必要です。
git clone
するのがおすすめですpython3
と git
コマンドを使えるようにしますsudo apt install python3 git
でインストールできますsudo apt install python3-jinja2
でインストールできますサーバの起動方法は、KiCad プロジェクトが保存されたディレクトリに移動して run_server.sh を実行するだけです。
$ cd /path/to/kicad_project_dir
$ /path/to/kicad-diff-visualizer/run_server.sh
/path/to/kicad_project_dir
は .kicad_pro ファイルが置いてあるディレクトリを、/path/to/kicad-diff-visualizer
は KiCad Diff Visualizer の Git リポジトリをダウンロード(git clone)したディレクトリを指定してください。
以上で Web サーバが起動します。Web ブラウザで http://localhost:8000/ にアクセスしてください。
KiCad に付属する kicad-cli を使い、回路図や基板を SVG 画像として書き出します。この時点では画像は白黒です。その SVG を編集し、古い画像は赤(ff0000)、新しい画像は水色(00ffff)に変更します。最後に古い画像の上に新しい画像を重ねることで、共通部分は白(ffffff)、差がある部分はそれぞれの色になるという仕組みです。
SVG 画像として出力して重ねれば差分が分かるというのがコアになるアイデアですが、「類似のツール」で見るように、皆考えることは同じようですね。新旧の色をどうするか、といった細かい部分に違いはあるものの、コアアイデアはどのツールにも共通しているようです。
KiCad の差分表示をしたくて見つけた幾つかのツールを紹介します。
これらに共通するのは Git のコミット間での差分が表示できることと、KiCad 7 以上に付属する kicad-cli を利用している点です。これは筆者が作ったツールでも同じです。みんな考えることは一緒なんですね。