FreeCADとは:30,000スター超のオープンソース3D CAD

FreeCADは、GitHub上で30,000以上のスターを獲得しているオープンソースの3Dパラメトリックモデラーである。2012年の公開以来、46,000超のコミットが積み重ねられ、2026年3月にはバージョン1.1がリリースされた。LGPL v2.1ライセンスで配布されており、個人利用・商用利用を問わず無料で使える。

FreeCADの技術基盤は4つのコア技術で構成されている。

  • OpenCASCADE – 産業標準のジオメトリカーネル。STEP、IGES等のCADフォーマットを直接処理する
  • Coin3D – 3Dシーンのレンダリングライブラリ
  • Qt – クロスプラットフォームGUIフレームワーク
  • Python – スクリプティングとマクロの実行基盤

ソースコードの構成はC++が51.3%、Pythonが46.1%。コアエンジンはC++で高速処理し、ユーザー向けのAPIとマクロシステムをPythonで公開するというアーキテクチャだ。AIエージェントフレームワークの比較記事でも触れたように、PythonベースのAPIは拡張性と学習コストのバランスに優れている。

FreeCADのインストール方法:3プラットフォーム対応

FreeCADはWindows、macOS、Linuxの3プラットフォームに対応している。インストール方法は用途に応じて複数ある。

バイナリインストール(推奨)

# Ubuntu/Debian — PPA経由で最新版をインストール
sudo add-apt-repository ppa:freecad-maintainers/freecad-stable
sudo apt update
sudo apt install freecad

# Fedora
sudo dnf install freecad

# macOS(Homebrew)
brew install --cask freecad

# Windows — 公式サイトからインストーラーをダウンロード
# https://github.com/FreeCAD/FreeCAD/releases

WindowsとmacOSは公式リリースページからインストーラーを取得するのが最も確実だ。Linuxではディストリビューションのソフトウェアセンターからも直接導入できる。

ソースからビルド(開発者向け)

FreeCADの開発環境構築にはPixiが推奨されている。

# Pixi のインストール(Linux/macOS)
curl -fsSL https://pixi.sh/install.sh | bash

# リポジトリのクローン
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD FreeCAD-src
cd FreeCAD-src

# ビルドと実行
pixi run configure
pixi run build
pixi run freecad

RAMが限られた環境では pixi run build -j 4 のように並列ジョブ数を制限することで安定したビルドが可能になる。

FreeCADのワークベンチ構造:用途別の設計環境

FreeCADの最大の特徴は「ワークベンチ」と呼ばれるモジュール式の作業環境だ。用途に応じてツールセットを切り替えることで、一つのアプリケーションで機械設計から建築、解析まで対応できる。

graph TD A["FreeCAD コア
OpenCASCADE + Python API"] --> B["Part Design
パラメトリック
ソリッドモデリング"] A --> C["Sketcher
2Dスケッチ
拘束付き作図"] A --> D["FEM
有限要素法
構造解析"] A --> E["BIM
建築情報
モデリング"] A --> F["CAM
CNC加工
ツールパス生成"] A --> G["TechDraw
2D図面
技術図面出力"] A --> H["Mesh
メッシュ処理
STL編集"] B --> I["STEP / IGES
エクスポート"] D --> J["解析結果
可視化"] E --> K["IFC
エクスポート"] F --> L["G-code
出力"] H --> M["STL / OBJ
3Dプリント"] style A fill:#2c3e50,color:#fff style B fill:#3498db,color:#fff style C fill:#3498db,color:#fff style D fill:#e74c3c,color:#fff style E fill:#27ae60,color:#fff style F fill:#f39c12,color:#fff style G fill:#9b59b6,color:#fff style H fill:#1abc9c,color:#fff

主要ワークベンチの役割を整理する。

  • Part Design – パラメトリックソリッドモデリングの中核。スケッチからの押し出し、回転、フィレット、ポケット等の操作で3D形状を構築する
  • Sketcher – 拘束ベースの2Dスケッチ。寸法拘束、幾何拘束を使って正確な2Dプロファイルを作成する
  • FEM(Finite Element Method) – 有限要素法による構造解析。応力、変形、熱分布等のシミュレーションが可能
  • BIM – 建築情報モデリング。壁、床、屋根などの建築要素を作成し、IFCフォーマットでエクスポートする
  • CAM – CNC加工のツールパス生成。G-codeを出力して工作機械を制御する
  • TechDraw – 3Dモデルから2D技術図面を自動生成する
  • Mesh – STLやOBJなどのメッシュデータを編集・修復する。3Dプリント向けのデータ準備に使う

さらにアドオンマネージャーからサードパーティ製ワークベンチを追加できる。ロボットシミュレーション、CFD(数値流体力学)、測地データ処理などの専門モジュールが提供されている。

FreeCAD vs 商用CAD:機能比較

FreeCADを商用CADと比較する際、最も重要な判断基準はコスト、機能範囲、エコシステムの3点だ。

項目 FreeCAD 1.1 Fusion 360 SolidWorks Blender
価格 無料(LGPL) 年額約10万円〜 年額約80万円〜 無料(GPL)
パラメトリック設計 対応 対応 対応 非対応
FEM解析 標準搭載 有料拡張 有料拡張 非対応
BIM/建築 標準搭載 非対応 非対応 アドオン
CAM/CNC 標準搭載 標準搭載 有料拡張 非対応
Python API 全機能公開 限定的 マクロ(VBA) 全機能公開
ファイル形式 STEP/IGES/STL/OBJ/IFC/DXF/SVG/DAE STEP/STL/DXF等 STEP/IGES/STL等 OBJ/FBX/STL等
プラットフォーム Win/Mac/Linux Win/Mac Winのみ Win/Mac/Linux
オフライン動作 完全対応 クラウド依存 完全対応 完全対応
ソースコード 公開(GitHub) 非公開 非公開 公開(Git)

FreeCADの強みは「パラメトリック設計+FEM+BIM+CAM」を1つの無料ツールで提供している点にある。Blenderは3Dモデリングとレンダリングに強いが、パラメトリック設計やFEM解析には対応していない。Fusion 360はクラウド依存でオフライン作業に制約がある。SolidWorksはWindows専用かつ高額なライセンス料が必要だ。

一方、FreeCADの弱点も明確にある。複雑なNURBS曲面操作の精度は商用CADに及ばず、大規模アセンブリ(数千部品)のパフォーマンスにも課題が残る。UIの洗練度も商用製品と比較すると改善の余地がある。

FreeCADのPythonマクロ活用:設計自動化の実践

FreeCADの最大の技術的優位性はPython APIの充実度にある。GUIで行える操作のほぼすべてをPythonスクリプトで自動化できる。

Pythonコンソールでの基本操作

FreeCADにはPythonコンソールが内蔵されており、対話的にオブジェクトを操作できる。以下はPythonコンソールから直方体を作成する例だ。

import FreeCAD as App
import Part

# 新規ドキュメントを作成
doc = App.newDocument("MyProject")

# 直方体を作成(幅100mm x 奥行50mm x 高さ30mm)
box = doc.addObject("Part::Box", "MyBox")
box.Length = 100.0  # X方向
box.Width = 50.0    # Y方向
box.Height = 30.0   # Z方向

# 円柱を作成(半径15mm x 高さ40mm)
cylinder = doc.addObject("Part::Cylinder", "MyCylinder")
cylinder.Radius = 15.0
cylinder.Height = 40.0
cylinder.Placement.Base = App.Vector(50, 25, 30)  # 直方体の上に配置

# ブーリアン結合(直方体と円柱を統合)
fusion = doc.addObject("Part::Fuse", "FusedShape")
fusion.Shape1 = box
fusion.Shape2 = cylinder

# ドキュメントを再計算して結果を確認
doc.recompute()

# STEP形式でエクスポート
Part.export([fusion], "/tmp/my_part.step")
print("エクスポート完了: /tmp/my_part.step")

このスクリプトでは、直方体と円柱をプログラムで生成し、ブーリアン演算で結合した後、業界標準のSTEPフォーマットでエクスポートしている。同じ操作をGUIで行うと5〜10分かかるが、スクリプトなら1秒以下で完了する。

パラメトリック設計の自動化マクロ

設計パラメータを変数化し、複数バリエーションを一括生成するマクロの例を示す。

import FreeCAD as App
import Part
import os

def generate_bracket(width, height, thickness, hole_diameter, output_dir):
    """
    L字ブラケットを自動生成してSTEPファイルに出力する。
    パラメータを変えて複数バリエーションを一括生成可能。
    """
    doc = App.newDocument("Bracket")

    # ベースプレート
    base = Part.makeBox(width, thickness, height)

    # 垂直プレート
    vertical = Part.makeBox(thickness, thickness, height)

    # L字形状に結合
    bracket = base.fuse(vertical)

    # ボルト穴を作成
    hole = Part.makeCylinder(
        hole_diameter / 2,
        thickness + 2,
        App.Vector(width / 2, -1, height / 2),
        App.Vector(0, 1, 0)
    )
    bracket = bracket.cut(hole)

    # エクスポート
    filename = f"bracket_{width}x{height}x{thickness}_hole{hole_diameter}.step"
    filepath = os.path.join(output_dir, filename)
    Part.export([bracket], filepath)
    App.closeDocument("Bracket")
    return filepath

# パラメータバリエーションを一括生成
output_dir = "/tmp/brackets"
os.makedirs(output_dir, exist_ok=True)

variants = [
    {"width": 50, "height": 40, "thickness": 5, "hole_diameter": 8},
    {"width": 80, "height": 60, "thickness": 8, "hole_diameter": 10},
    {"width": 120, "height": 80, "thickness": 10, "hole_diameter": 12},
]

for v in variants:
    path = generate_bracket(**v, output_dir=output_dir)
    print(f"生成完了: {path}")

このようなパラメトリック自動化は、製品の寸法バリエーションが多い場合や、設計変更を頻繁に行うプロジェクトで威力を発揮する。手作業で1バリエーションずつモデリングする必要がなくなり、設計工数を大幅に削減できる。

コマンドラインからのバッチ処理

FreeCADはGUIを起動せずにコマンドラインからPythonスクリプトを実行できる。CI/CDパイプラインへの組み込みや、サーバーサイドでの自動処理に有用だ。

# GUIなしでスクリプトを実行(ヘッドレスモード)
freecadcmd my_script.py

# マクロを指定して実行
freecad --run-macro /path/to/macro.py

# STEPファイルを読み込んでSTLにバッチ変換
freecadcmd -c "
import Part
shape = Part.read('/input/model.step')
mesh = shape.tessellate(0.1)
import Mesh
Mesh.export([shape], '/output/model.stl')
"

Google Colab MCPサーバーのようなクラウド実行環境と組み合わせれば、リモートでFreeCADスクリプトを実行し、結果をブラウザ上で確認するワークフローも構築できる。

FreeCADのファイルフォーマットと実践活用パターン

FreeCADは産業標準の幅広いフォーマットに対応している。

インポート/エクスポート対応:

  • STEP (.step, .stp) – 3D CADデータ交換の国際標準。他のCADソフトとの互換性が最も高い
  • IGES (.iges, .igs) – 旧来のCADデータ交換フォーマット。レガシーシステムとの連携に使用
  • STL (.stl) – 3Dプリンター向けのメッシュデータ。FDM/SLA問わずほぼ全てのスライサーで読み込み可能
  • OBJ (.obj) – 3Dモデルの汎用フォーマット。テクスチャ情報を含む
  • IFC (.ifc) – 建築情報モデリングの国際標準。BIMワークベンチで生成
  • DXF (.dxf) – 2D CADデータのデファクトスタンダード。TechDrawワークベンチから出力
  • SVG (.svg) – ベクターグラフィックス。2D図面のWeb表示に使用
  • DAE (.dae) – COLLADAフォーマット。ゲームエンジンやVR環境との連携

ネイティブ形式:

  • FCStd – FreeCADの標準ファイル形式。内部的にはZIP圧縮されたXMLとバイナリデータの集合体。展開すると Document.xml(モデル構造)、GuiDocument.xml(表示設定)等のファイルが確認でき、gitでの差分追跡が可能になる

3Dプリント向けワークフロー

FreeCADからの3Dプリントは、Part DesignまたはSketcherで形状を作成し、Meshワークベンチでメッシュ化、STLエクスポートという流れになる。スライサーソフト(Cura、PrusaSlicer等)に渡す前にメッシュの修復(穴埋め、法線修正)もFreeCAD上で完結する。

FEM解析の活用

構造解析が必要な設計では、FEMワークベンチを使って応力分布や変形量を事前に確認できる。外部ソルバー(CalculiX、Elmer)と連携し、静的解析、熱伝導解析、固有値解析などに対応する。有料CADでは別途ライセンスが必要なFEM機能が、FreeCADでは標準で利用可能だ。

gitによる設計データのバージョン管理

FCStdファイルをそのままgitリポジトリに格納してバージョン管理できる。ZIP内のXMLファイルを展開して管理すれば、設計変更の差分が git diff で確認可能になる。チーム開発では、ブランチを切って並行作業し、Pull Requestでレビューするというソフトウェア開発と同じワークフローが設計データにも適用できる。

FreeCAD AI連携 — Claude Code・Codex CLIで設計を自動化する3パターン

FreeCADは「freecad ai」というクエリで継続的に検索されている。背景には、Python APIを通じてClaude CodeやCodex CLIから3D設計を自然言語で指示できる動きがある。実際の連携パターンを3つ整理した。

連携パターン 想定シナリオ 実装の難易度 期待される効果
Claude Code × FreeCAD MCP 「直径10mmの穴を5mmピッチで4個開けて」と自然言語で指示 中(MCPサーバー実装) パラメトリック設計の試行錯誤が10倍速
Codex CLI × FreeCADマクロ 既存マクロのリファクタ・テスト追加・関数抽出 低(CodexのCLI標準機能) 設計者でもPythonマクロを書ける
GPT-5 Vision × DXFインポート スケッチ画像をアップ→DXF→FreeCADプロジェクトに自動変換 高(Vision API + 形状補正) ホワイトボード設計が即座にCADへ

最も導入しやすいのはCodex CLI × マクロ生成だ。FreeCADの組み込みPythonコンソールに貼り付けるだけのスニペット生成なら、Codex標準の対話モードで完結する。

# Codex CLI が生成する FreeCAD マクロの例
import FreeCAD as App
import Part

doc = App.newDocument("AutoBracket")
# ベースプレート 100x60x5mm
plate = doc.addObject("Part::Box", "Plate")
plate.Length = 100
plate.Width = 60
plate.Height = 5

# ボルト穴 4個(コーナーに配置)
for i, (x, y) in enumerate([(10,10), (90,10), (10,50), (90,50)]):
    hole = doc.addObject("Part::Cylinder", f"Hole_{i}")
    hole.Radius = 3
    hole.Height = 5
    hole.Placement.Base = App.Vector(x, y, 0)

doc.recompute()

注意点: 現状FreeCAD公式のClaude / GPT統合プラグインは存在しない(2026年5月時点)。AI連携はCAD側の自動化APIを叩くPythonスクリプトを介する形になる。今後MCPサーバー実装が増えれば、もう1段階自然言語との距離が縮まると見られる。

FreeCAD 1.1の新機能と今後の展望

2026年3月にリリースされたFreeCAD 1.1では、パフォーマンスの改善とワークベンチの機能強化が行われた。5,400以上のフォーク、543のウォッチャーという活発なコミュニティが継続的な開発を支えている。

FreeCADは「商用CADに匹敵する機能を無料で」という明確な目標を持つプロジェクトだ。Python APIの充実度、ワークベンチのモジュール設計、業界標準フォーマットへの対応という3つの柱が、個人開発者からスタートアップ、教育機関まで幅広い利用者層を支えている。

CADツールの選定でコストが障壁になっている場合、FreeCADは最初に検討すべき選択肢だ。特にPythonによる設計自動化と、FEM解析・BIM・CAMの標準搭載は、有料CADでも上位プランでしか提供されない機能である。

参照ソース