概要

KiCADは、オープンソースのプリント基板設計ツールである。

Docker / Podmanコンテナとして実行することにより、開発環境で簡単に導入できる。
回路設計、PCB設計、ガーバー出力等の様々な用途に適している。

KiCADコンテナの主な機能を以下に示す。

  • KiCAD
    回路エディタ、PCBエディタを含む統合環境
  • kicad-cli
    コマンドラインインターフェース
  • 回路図のエクスポート
    PDF、SVG、ネットリスト形式に対応
  • PCBのエクスポート
    ガーバー、PDF、SVG、STEP形式に対応
  • DRC (デザインルールチェック)
  • 日本語環境対応
    日本語フォントとロケール設定済み



利用可能なバージョン

2026年1月現在、KiCADコンテナイメージで利用可能なバージョンを下表に示す。

タグ 説明
9.0 最新の9.0安定版(推奨)
9.0.x 特定の9.0.xリリース
8.0 最新の8.0安定版
8.0.x 特定の8.0.xリリース
nightly 最新のmaster開発版
nightly-full 最新のmaster開発版(3Dシンボル含む)



Dockerfile / Containerfile

KiCADを使用したDockerfile / Containerfileを作成する。

 # KiCAD Containerfile
 
 ## KiCAD 9.0を使用
 ARG KICAD_VERSION=9.0
 
 FROM docker.io/kicad/kicad:${KICAD_VERSION}
 
 ## rootユーザとして実行することを明示
 USER root
 
 ## 必要なディレクトリを作成して、パーミッションを設定
 RUN mkdir -p /var/lib/apt/lists/partial && \
     chmod -R 755 /var/lib/apt/lists
 
 ## 日本語環境のセットアップ
 RUN apt update && \
     apt install -y --no-install-recommends \
     locales \
     fonts-noto-cjk \
     fonts-noto-cjk-extra \
     && rm -rf /var/lib/apt/lists/*
 
 ## 日本語ロケールの設定
 RUN sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen && \
     locale-gen
 
 ENV LANG=ja_JP.UTF-8 \
     LANGUAGE=ja_JP:ja \
     LC_ALL=ja_JP.UTF-8
 
 ## 作業ディレクトリの設定
 WORKDIR /workspace
 
 ## デフォルトコマンド (GUIの場合)
 CMD ["kicad"]


コンテナイメージをビルドする。

podman build -t kicad:9.0 -f Containerfile .


他のバージョンを使用する場合は、ビルド時にバージョンを指定する。

# KiCAD 8.0を使用する場合
podman build --build-arg KICAD_VERSION=8.0 -t kicad:8.0 -f Containerfile .

# 最新のnightly版 (3Dシンボル含む)
podman build --build-arg KICAD_VERSION=nightly-full -t kicad:nightly -f Containerfile .



KiCADの実行

X11環境

X11環境においてカレントディレクトリをマウントして実行する。

podman run -it --rm \
  -e DISPLAY=${DISPLAY} \
  -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
  -v $(pwd):/workspace \
  kicad:9.0


コマンドオプションの説明を以下に示す。

  • -it
    インタラクティブモード、TTY有効
  • --rm
    コンテナ終了時に自動削除
  • -e DISPLAY=${DISPLAY}
    X11ディスプレイ環境変数を渡す
  • -v /tmp/.X11-unix:/tmp/.X11-unix:ro
    X11ソケットをマウント (画面描画に必要、読み取り専用)
  • -v $(pwd):/workspace
    カレントディレクトリをコンテナ内の/workspaceにマウント


X11転送を許可する必要がある場合は、以下に示すコマンドを実行する。

xhost +local:


Wayland環境

Wayland環境においてカレントディレクトリをマウントして実行する。

podman run -it --rm \
  -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
  -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
  -e QT_QPA_PLATFORM=wayland \
  -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
  -v $(pwd):/workspace \
  kicad:9.0


Wayland環境向けのコマンドオプションの説明を以下に示す。

  • -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY}
    Waylandディスプレイ環境変数を渡す (通常は wayland-0)
  • -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR}
    XDGランタイムディレクトリを渡す (通常は /run/user/1000)
  • -e QT_QPA_PLATFORM=wayland
    QtアプリケーションをWaylandネイティブモードで実行
  • -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro
    Waylandソケットをマウント (読み取り専用)


Waylandソケットのパーミッションエラーが発生する場合は、以下に示すオプションを追加する。

--security-opt label=disable


X11/Wayland自動検出

X11とWaylandを自動検出して実行する例を以下に示す。

# セッションタイプを確認
echo $XDG_SESSION_TYPE

# X11の場合
if [ "$XDG_SESSION_TYPE" = "x11" ]; then
  podman run -it --rm \
    -e DISPLAY=${DISPLAY} \
    -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
    -v $(pwd):/workspace \
    kicad:9.0

# Waylandの場合
elif [ "$XDG_SESSION_TYPE" = "wayland" ]; then
  podman run -it --rm \
    -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
    -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
    -e QT_QPA_PLATFORM=wayland \
    -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
    -v $(pwd):/workspace \
    kicad:9.0
fi


SELinux環境での実行

RHEL、SUSE 16等のSELinuxが有効な環境においては、以下に示すオプションを追加する。

  • X11環境の場合
     podman run -it --rm \
       -e DISPLAY=${DISPLAY} \
       -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
       -v $(pwd):/workspace:Z \
       --security-opt label=type:container_runtime_t \
       kicad:9.0
    


  • Wayland環境の場合
     podman run -it --rm \
       -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
       -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
       -e QT_QPA_PLATFORM=wayland \
       -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
       -v $(pwd):/workspace:Z \
       --security-opt label=type:container_runtime_t \
       kicad:9.0
    


SELinux環境向けの追加オプションを以下に示す。

  • :Z
    SELinuxコンテキストを自動設定 (プライベートアンラベル)
  • --security-opt label=type:container_runtime_t
    SELinuxタイプをコンテナランタイムに設定


特定のディレクトリをマウント

プロジェクトディレクトリを指定してマウントする例を以下に示す。

  • X11環境の場合
     podman run -it --rm \
       -e DISPLAY=${DISPLAY} \
       -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
       -v /home/<ユーザ名>/projects:/workspace \
       kicad:9.0
    


  • Wayland環境の場合
     podman run -it --rm \
       -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
       -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
       -e QT_QPA_PLATFORM=wayland \
       -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
       -v /home/<ユーザ名>/projects:/workspace \
       kicad:9.0
    


複数のディレクトリをマウント

複数のディレクトリを同時にマウントする例を以下に示す。

  • X11環境の場合
     podman run -it --rm \
       -e DISPLAY=${DISPLAY} \
       -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
       -v $(pwd):/workspace \
       -v /home/<ユーザ名>/projects:/projects \
       kicad:9.0
    


  • Wayland環境の場合
     podman run -it --rm \
       -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
       -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
       -e QT_QPA_PLATFORM=wayland \
       -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
       -v $(pwd):/workspace \
       -v /home/<ユーザ名>/projects:/projects \
       kicad:9.0
    


上記コマンドのコマンドにおいて、コンテナ内からは以下に示すパスでアクセスすることができる。

  • /workspace
    カレントディレクトリ
  • /projects
    /home/<ユーザ>/projectsディレクトリ


設定ファイルの永続化

KiCADの設定ファイルを永続化する場合は、以下に示すようにマウントする。

  • X11環境の場合
     podman run -it --rm \
       -e DISPLAY=${DISPLAY} \
       -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
       -v $(pwd):/workspace \
       -v $HOME/.config/kicad:/root/.config/kicad \
       kicad:9.0
    


  • Wayland環境の場合
     podman run -it --rm \
       -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
       -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
       -e QT_QPA_PLATFORM=wayland \
       -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
       -v $(pwd):/workspace \
       -v $HOME/.config/kicad:/root/.config/kicad \
       kicad:9.0
    



起動スクリプト

X11 / Wayland自動検出 (推奨)

 #!/usr/bin/env sh
 # KiCAD起動スクリプト
 
 set -e
 
 # 設定
 IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
 WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
 
 echo "KiCAD起動スクリプト"
 echo "==========================="
 echo "イメージ: ${IMAGE_NAME}"
 echo "ワークスペース: ${WORKSPACE_DIR}"
 echo ""
 
 # セッションタイプの検出
 SESSION_TYPE="${XDG_SESSION_TYPE:-x11}"
 echo "セッションタイプ: ${SESSION_TYPE}"
 
 # SELinux環境の検出
 SELINUX_OPTS=""
 VOLUME_OPTS=""
 if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
 else
    echo "SELinux: 無効または未検出"
 fi
 
 # X11またはWaylandに応じて起動
 if [ "${SESSION_TYPE}" = "wayland" ]; then
    echo "Waylandモードで起動します"
    echo ""
 
    podman run -it --rm \
      -e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
      -e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
      -e QT_QPA_PLATFORM=wayland \
      -v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
      -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
      ${SELINUX_OPTS} \
      "${IMAGE_NAME}" "$@"
 else
    echo "X11モードで起動します"
    echo ""
 
    # X11転送の許可 (X11を使用している場合)
    xhost +local: 2>/dev/null || true
 
    podman run -it --rm \
      -e DISPLAY="${DISPLAY}" \
      -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
      -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
      ${SELINUX_OPTS} \
      "${IMAGE_NAME}" "$@"
 fi


X11向け

 #!/usr/bin/env sh
 # KiCAD起動スクリプト
 
 set -e
 
 # 設定
 IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
 WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
 
 echo "KiCAD起動スクリプト (X11)"
 echo "==========================="
 echo "イメージ: ${IMAGE_NAME}"
 echo "ワークスペース: ${WORKSPACE_DIR}"
 echo ""
 
 # SELinux環境の検出
 SELINUX_OPTS=""
 VOLUME_OPTS=""
 if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
 else
    echo "SELinux: 無効または未検出"
 fi
 
 # X11転送の許可 (X11を使用している場合)
 xhost +local: 2>/dev/null || true
 
 # KiCADを起動
 podman run -it --rm \
   -e DISPLAY="${DISPLAY}" \
   -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
   -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
   ${SELINUX_OPTS} \
   "${IMAGE_NAME}" "$@"


Wayland向け

 #!/usr/bin/env sh
 # KiCAD起動スクリプト (Wayland専用)
 
 set -e
 
 # 設定
 IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
 WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
 
 echo "KiCAD起動スクリプト (Wayland)"
 echo "==========================="
 echo "イメージ: ${IMAGE_NAME}"
 echo "ワークスペース: ${WORKSPACE_DIR}"
 echo ""
 
 # SELinux環境の検出
 SELINUX_OPTS=""
 VOLUME_OPTS=""
 if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
 else
    echo "SELinux: 無効または未検出"
 fi
 
 # KiCADを起動
 podman run -it --rm \
   -e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
   -e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
   -e QT_QPA_PLATFORM=wayland \
   -v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
   -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
   ${SELINUX_OPTS} \
   "${IMAGE_NAME}" "$@"


複数ディレクトリをマウントする場合

 #!/usr/bin/env sh
 # KiCAD起動スクリプト (複数ディレクトリマウント / X11/Wayland自動検出)
 
 set -e
 
 # 設定
 IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
 CURRENT_DIR="$(pwd)"
 PROJECT_DIR="${KICAD_PROJECT_DIR:-/home/user/projects}"
 
 echo "KiCAD起動スクリプト"
 echo "==========================="
 echo "イメージ: ${IMAGE_NAME}"
 echo "カレントディレクトリ: ${CURRENT_DIR} -> /workspace"
 echo "プロジェクトディレクトリ: ${PROJECT_DIR} -> /projects"
 echo ""
 
 # セッションタイプの検出
 SESSION_TYPE="${XDG_SESSION_TYPE:-x11}"
 echo "セッションタイプ: ${SESSION_TYPE}"
 
 # SELinux環境の検出
 SELINUX_OPTS=""
 VOLUME_OPTS=""
 if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
 fi
 
 # X11 または Waylandに応じて起動
 if [ "${SESSION_TYPE}" = "wayland" ]; then
    echo "Waylandモードで起動します"
    echo ""
 
    podman run -it --rm \
      -e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
      -e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
      -e QT_QPA_PLATFORM=wayland \
      -v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
      -v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
      -v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
      ${SELINUX_OPTS} \
      "${IMAGE_NAME}" "$@"
 else
    echo "X11モードで起動します"
    echo ""
 
    # X11転送の許可 (X11を使用している場合)
    xhost +local: 2>/dev/null || true
 
    podman run -it --rm \
      -e DISPLAY="${DISPLAY}" \
      -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
      -v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
      -v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
      ${SELINUX_OPTS} \
      "${IMAGE_NAME}" "$@"
 fi


スクリプトに実行権限を付与する。

chmod u+x run-kicad-gui.sh


スクリプトを実行してKiCADを起動する。

./run-kicad-gui.sh


環境変数でイメージやディレクトリを指定することもできる。

# イメージを指定
KICAD_IMAGE=kicad:8.0 ./run-kicad-gui.sh

# ワークスペースを指定
KICAD_WORKSPACE=/path/to/project ./run-kicad-gui.sh

# 両方を指定
KICAD_IMAGE=kicad:nightly KICAD_WORKSPACE=/path/to/project ./run-kicad-gui.sh



CLI版の実行

kicad-cliを使用してコマンドラインから操作する。

基本

ヘルプを表示する。

podman run --rm kicad:9.0 kicad-cli --help


バージョンを確認する。

podman run --rm kicad:9.0 kicad-cli --version


回路図のエクスポート

回路図をPDFへ変換する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch


回路図をSVGに変換する例を以下に示す。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli sch export svg -o <出力するPDFファイル名>.svg <入力するプロジェクトファイル名>.kicad_sch


ネットリストを出力する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli sch export netlist -o <出力するネットリスト名>.net <入力するプロジェクトファイル名>.kicad_sch


PCBのエクスポート

PCBをガーバーファイルへ出力する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli pcb export gerbers -o ./gerbers/ <入力するプロジェクトファイル名>.kicad_pcb


PCBをPDFへ変換する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli pcb export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_pcb


PCBをSVGへ変換する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli pcb export svg -o <出力するSVGファイル名>.svg <入力するプロジェクトファイル名>.kicad_pcb


PCBを3DモデルSTEP形式でエクスポートする。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli pcb export step -o <出力する3Dモデルファイル名>.step <入力するプロジェクトファイル名>.kicad_pcb


DRC (デザインルールチェック)

PCBのデザインルールチェックを実行する。

podman run --rm \
  -v $(pwd):/workspace \
  kicad:9.0 \
  kicad-cli pcb drc -o <出力するDRCファイル名>.txt <入力するプロジェクトファイル名>.kicad_pcb



CLI実行スクリプト

kicad-cliを簡単に実行するためのスクリプトを作成する。

 #!/usr/bin/env sh
 # KiCAD CLI実行スクリプト
 
 set -e
 
 # 設定
 IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
 WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
 
 # 引数が指定されていない場合はヘルプを表示
 if [ $# -eq 0 ]; then
     echo "KiCAD CLI実行スクリプト"
     echo "======================="
     echo ""
     echo "使用方法:"
     echo "  $0 <kicad-cliコマンド>"
     echo ""
     echo "例:"
     echo "  # ヘルプ表示"
     echo "  $0 --help"
     echo ""
     echo "  # 回路図をPDFに変換"
     echo "  $0 sch export pdf -o output.pdf input.kicad_sch"
     echo ""
     echo "  # PCBをGerberに出力"
     echo "  $0 pcb export gerbers -o ./gerbers/ input.kicad_pcb"
     echo ""
     echo "環境変数:"
     echo "  KICAD_IMAGE     : 使用するイメージ(デフォルト: kicad:9.0)"
     echo "  KICAD_WORKSPACE : ワークスペースディレクトリ(デフォルト: カレントディレクトリ)"
     echo ""
     exit 1
 fi
 
 # SELinux環境の検出
 VOLUME_OPTS=""
 if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
     VOLUME_OPTS=":Z"
 fi
 
 # KiCAD CLIを実行
 podman run --rm \
   -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
   "${IMAGE_NAME}" \
   kicad-cli "$@"


スクリプトに実行権限を付加する。

chmod u+x run-kicad-cli.sh


スクリプトを実行する。

# ヘルプ表示
./run-kicad-cli.sh --help

# 回路図をPDFに変換
./run-kicad-cli.sh sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch

# PCBをガーバーへ出力
./run-kicad-cli.sh pcb export gerbers -o ./gerbers/ <入力するプロジェクトファイル名>.kicad_pcb



CI/CD環境での使用

GitLab CI

 stages:
   - build
   - export
 
 generate_gerbers:
   stage: export
   image: docker.io/kicad/kicad:9.0
   script:
     - kicad-cli pcb export gerbers -o ./gerbers/ project.kicad_pcb
   artifacts:
     paths:
       - gerbers/
     expire_in: 1 week
 
 generate_pdf:
   stage: export
   image: docker.io/kicad/kicad:9.0
   script:
     - kicad-cli sch export pdf -o schematic.pdf project.kicad_sch
     - kicad-cli pcb export pdf -o pcb.pdf project.kicad_pcb
   artifacts:
     paths:
       - schematic.pdf
       - pcb.pdf
     expire_in: 1 week
 
 run_drc:
   stage: build
   image: docker.io/kicad/kicad:9.0
   script:
     - kicad-cli pcb drc -o drc-report.txt project.kicad_pcb
     - cat drc-report.txt
   artifacts:
     paths:
       - drc-report.txt
     expire_in: 1 week


GitHub Actions

 name: KiCAD Export
 
 on:
   push:
     branches: [ main ]
   pull_request:
     branches: [ main ]
 
 jobs:
   export:
     runs-on: ubuntu-latest
     container:
       image: docker.io/kicad/kicad:9.0
     
     steps:
       - name: Checkout
         uses: actions/checkout@v3
       
       - name: Generate Gerbers
         run: |
           kicad-cli pcb export gerbers -o ./gerbers/ project.kicad_pcb
       
       - name: Generate PDFs
         run: |
           kicad-cli sch export pdf -o schematic.pdf project.kicad_sch
           kicad-cli pcb export pdf -o pcb.pdf project.kicad_pcb
       
       - name: Run DRC
         run: |
           kicad-cli pcb drc -o drc-report.txt project.kicad_pcb
       
       - name: Upload Artifacts
         uses: actions/upload-artifact@v3
         with:
           name: kicad-outputs
           path: |
             gerbers/
             *.pdf
             drc-report.txt



トラブルシューティング

GUIが起動しない (X11)

X11転送を許可する。

xhost +local:


DISPLAYが正しく設定されているか確認する。

echo $DISPLAY


XAuthの問題の場合は、以下に示すオプションを追加する。

-v ${HOME}/.Xauthority:/root/.Xauthority:ro


GUIが起動しない (Wayland)

Waylandソケットが存在するか確認する。

ls -la ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}


環境変数が正しく設定されているか確認する。

echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR
echo $XDG_SESSION_TYPE


Waylandソケットのパーミッションエラーの場合は、以下に示すオプションを追加する。

--security-opt label=disable


Qtアプリケーションが正しくWaylandを使用しているか確認する。

# コンテナ内で確認
podman run --rm \
  -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
  -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
  -e QT_QPA_PLATFORM=wayland \
  -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
  kicad:9.0 \
  sh -c 'echo $QT_QPA_PLATFORM'


X11とWaylandの切り替え

セッションタイプを確認する。

echo $XDG_SESSION_TYPE


強制的にX11モードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。

XDG_SESSION_TYPE=x11 ./run-kicad-gui.sh


強制的にWaylandモードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。

XDG_SESSION_TYPE=wayland ./run-kicad-gui.sh


パーミッションエラー

SELinux環境では、ボリュームマウントに:Zオプションを付与する。

-v $(pwd):/workspace:Z


ホスト側のディレクトリのパーミッションを確認する。

ls -la $(pwd)


日本語が表示されない

イメージを再ビルドする。

# Docker
docker build -t kicad:9.0 -f Containerfile . --no-cache

# Podman
podman build -t kicad:9.0 -f Containerfile . --no-cache


日本語フォントがインストールされているか確認する。

# Docker
docker run --rm kicad:9.0 fc-list | grep -i noto

# Podman
podman run --rm kicad:9.0 fc-list | grep -i noto


ファイルが見つからない

ボリュームマウントのパスを確認する。

# コンテナ内でファイルを確認 (Docker)
docker run --rm -v $(pwd):/workspace kicad:9.0 ls -la /workspace

# コンテナ内でファイルを確認 (Podman)
podman run --rm -v $(pwd):/workspace kicad:9.0 ls -la /workspace


作業ディレクトリを確認する。

# Docker
docker run --rm -v $(pwd):/workspace kicad:9.0 pwd

# Podman
podman run --rm -v $(pwd):/workspace kicad:9.0 pwd


コマンドが見つからない

kicad-cliが正しくインストールされているか確認する。

# Docker
docker run --rm kicad:9.0 which kicad-cli
docker run --rm kicad:9.0 kicad-cli --version

# Podman
podman run --rm kicad:9.0 which kicad-cli
podman run --rm kicad:9.0 kicad-cli --version



参考情報

KiCADに関する詳細な情報を知りたい場合は、以下に示すWebサイトを参照すること。