KiCADのライブラリ管理/バージョン管理を可能な限りGithubと連携する


はじめに

オープンソース開発環境、かつ、ハードウェアを開発する環境として、充実の機能を提供をしてくれるKiCADについて、さらにより良く開発を進めるための思考錯誤を記録しています。
(誰かの何かに役立てば。。)

この記事は

KiCADで部品ライブラリfootprintと呼ばれる部品形状/パターンライブラリ、および作成したプロジェクト自体Github使ってバージョン管理することで、

  • 個人開発のデータバックアップおよびバージョン管理
  • 様々なPC/Mac環境で同一の環境構築が容易に
  • 共同開発もやりやすくなる

と感じて、纏めている記事となります。
なお、この記事ではKiCAD(Mac版) Version: (5.1.8-0-10_14), release buildにて実施しています。

どういった人向けか

KiCADを使って基板(PCB(=Print Circuti Board)とも言います)を設計している方向けの記事です。

やり方

まず、KiCAD標準ライブラリ(部品ライブラリおよびfootprintライブラリ)のGithub連携を進めていきます。
こちらについては、以下が非常に参考となりました。

KiCad5にgithubのライブラリを紐付ける方法

まずはKiCAD標準ライブラリをGithub連携

Githubリポジトリダウンロード(git clone)

Macにgitをインストールした状態で、KiCAD標準ライブラリのGithubリポジトリをダウンロードします。
GithubでのKiCAD標準ライブラリについては以下リンク先のリポジトリがマスターとなります(こちらに連携するイメージです)。

Github -KiCAD EDA-

この例ではホームディレクトリ配下にKiCAD_git_repoディレクトリを作成し、その内部にGithubリポジトリをクローンしています。

$ mkdir ~/KiCAD_git_repo
$ cd ~/KiCAD_git_repo
$ git clone https://github.com/KiCad/kicad-symbols
$ git clone https://github.com/KiCad/kicad-footprints
$ git clone https://github.com/kicad/kicad-packages3d
$ git clone https://github.com/KiCad/kicad-templates.git

これら手順により、以下の様になると思います。

KiCADパス設定

その上で、KiCADの設定側でパス設定を行うことで、KiCAD標準ライブラリのGithub連携が可能となります。
まずは、メニューの設定パスを設定より、パスを設定ウィンドウが開くと思いますので、

その中で、以下4項目を先程Githubダウンロードした各ディレクトリとパスを通してみてください。

  • KICAD_SYMBOL_DIR
  • KICAD_TEMPLATE_DIR
  • KISYS3DMOD
  • KISYSMOD

パスを通すと以下の様になると思います。

KiCADライブラリテーブルファイルのGithub連携

さらに、KiCADで新規プロジェクトを作成した際に、デフォルトで読み込まれるグローバルライブラリを指定するテーブルファイルがあります(主にEeschemaで読み込まれるsym-lib-tableとpcbnewで読み込まれるfp-lib-table)。この読み込み先についても、Github連携を図ります。

まず、事前に確認してほしいのは、以下の様に設定シンボル ライブラリーを管理から開くシンボル ライブラリーウィンドウに記載されているファイル:に続くPATH内容です。

以下が、PATH内容の表示例となります。こちらをメモって頂きつつ、、

同様に、設定フットプリント ライブラリーを管理から開くフットプリント ライブラリーウィンドウに記載されているファイル:に続くPATH内容もメモをお願いします。

次に、上記にてメモした

  • sym-lib-tableのPATH
  • fp-lib-tableのPATH

ひとつ上の階層にターミナルで移動してもらうとsym-lib-tablefp-lib-tableの2つのファイルがあると思いますので、以下を実施します。

  1. sym-lib-tablefp-lib-tableの2つのファイルを削除(元々あったファイルを別名で念の為バックアップする事を推奨)
  2. Github連携しているKiCAD標準ライブラリ内の同名ファイルにシンボリックリンクを貼る

以下が手順の参考例となります。

$ cd /Users/jamming6123/Library/Preferences/kicad
$ mv sym-lib-table sym-lib-table_bk_org #元々あったファイルを別名で念の為バックアップしておく
$ ln -s /Users/jamming6123/KiCAD_git_repo/kicad-footprints/sym-lib-table sym-lib-table
$ mv fp-lib-table fp-lib-table_bk_org #元々あったファイルを別名で念の為バックアップしておく
$ ln -s /Users/jamming6123/KiCAD_git_repo/kicad-footprints/fp-lib-table fp-lib-table

うまくいくと以下の様なイメージとなると思います。
(この例では、元々あった同名ファイルのバックアップは別の所に置いています)

一度、KiCADを開き直して(再起動)して、適当なプロジェクトファイルを開いて特にエラーが出ていなければ無事成功です!

プロジェクトファイル一式をGithubバージョン管理する

これで、KiCADが標準的に呼び出すfootprint関連ライブラリのGithub連携がうまくいくと思いますが、さらに追加で、個別で作成していくであろうプロジェクトディレクトリのGithub連携も行っていきます。
これにより、

  • KiCADプロジェクト自体のバージョン管理も出来る
  • 他のマシン(MacだろうがWindowsだろうがlinuxだろうが)とで簡単に環境複製も出来る
  • 共同開発もやりやすくなる

ので、いろいろ便利です。

手順についてですが、以下が非常に参考となります。

初心者用:GitHubにファイルをアップロードする方法(超基本)

まず、対象のKiCADプロジェクトのディレクトリにターミナルで移動します。その上で、上記Githubとの連携手順も参考に以下のような実行例にてアップロードすることで、以降、Githubリポジトリでのバージョン管理が可能となります。
この例では、

上記のように、事前にGithub上にrsp02_LoadSW_OCP_Circuit_v1_2のリポジトリを作成した状態で進めています。

$ cd ~/SpaceTech_GARAGE/KiCad/rsp02_LoadSW_OCP_Circuit_v1_2 #対象のKiCADプロジェクトのディレクトリのPATH
$ git init #当該対象のKiCADプロジェクトディレクトリにgit初期設定を実施
$ git remote add origin https://github.com/planetmbit/KiCAD_LoadSW_OCP_Circuit_v1_2.git #Githubリポジトリと当該ディレクトリの紐付け設定を実施
$ git add . #当該対象のKiCADプロジェクトディレクトリ自体を丸ごとGithubアップロード&連携とする
$ git commit -m "initial commit" #コミットする(コミット時のメッセージは任意の内容でOK)
$ git push origin master #Githubリポジトリにgitプッシュする

これにより、KiCADのプロジェクトディレクトリを丸ごとGithubにてバージョン管理出来る様になりますので、

  • 個人開発のデータバックアップおよびバージョン管理
  • 様々なPC/Mac環境で同一の環境構築が容易に
  • 共同開発もやりやすくなる

が可能となると思います。
なお、プロジェクト固有で作成した部品ライブラリやfootprintライブラリを、当該KiCADのプロジェクトディレクトリ配下に置いておく事で、固有作成ライブラリのバージョン管理やバックアップも可能となりますのでおすすめです。
(よく、プロジェクト固有で追加したfootprintが環境移設にあたって参照出来なるなる等起こると思いますので。。)

注意!:困ったときには

上記のGithubへの初回アップロードですが、私の場合、よくerror: failed to push some refs to〜のような事象に見舞われる事があり、そのときは以下サイトに助けて頂きましたのでご参考まで。。

【git】git pushがrejectされたときの対応方法

さいごに:標準ライブラリのアップデートについて

以下の様に、Githubの標準ライブラリをクローンダウンロードしたKiCAD_git_repoディレクトリ配下のkicad-footprintsなどの4ディレクトリに移動した上で、git pullを定期的に行うことで、ライブラリ最新化が図れます。

参考文献・リンク