OpenSCAD コードで3Dモデルを記述するプログラマ向け3DCAD

ec 1358 final デザイン・CADツール

OpenSCADとは コードで3Dモデルを書く「プログラマ向け3DCAD」

OpenSCADは、マウス操作ではなくスクリプト(コード)で3Dモデルを記述する、プログラマ向けの無料3DCADソフトウェアです。公式サイトでは「The Programmers Solid 3D CAD Modeller」と名乗っており、2010年に初版がリリースされて以来、オープンソースコミュニティによって開発が続けられています。

一般的な3DCAD(FreeCADやFusion 360など)がマウスで形状をぐりぐり操作するのに対し、OpenSCADは専用のスクリプト言語で「この直方体からこの円柱を引く」といった処理をコードとして記述します。いわば「3Dモデルをコンパイルする」ソフトウェアで、「3Dコンパイラ」と表現されることもあります。

特徴1 コードで3Dモデルを記述する

OpenSCADの基本は、プリミティブ(基本形状)をコードで組み合わせることです。例えば次のように書きます。

// 直方体(幅10, 奥行き20, 高さ30)
cube([10, 20, 30]);

// 半径5の球
sphere(r=5);

// 直方体から円柱を引く(穴あけ)
difference() {
    cube([40, 40, 10]);
    cylinder(h=12, r=5);
}

F5でプレビュー、F6でレンダリングを実行すると、コード通りの3Dモデルが表示されます。この「設計がコードとして残る」という性質が、OpenSCAD最大の強みです。

特徴2 CSG演算で複雑な形状を作る

OpenSCADはCSG(Constructive Solid Geometry、構成的ソリッド幾何)演算を中核に据えています。基本形状を以下の3つの演算で組み合わせることで、複雑な形状を構築します。

演算 機能 使用例
union() 和(合体) 複数の部品を一体化
difference() 差(引き算) 穴あけ、切り欠き
intersection() 積(重なり) 共通部分だけ残す

さらに hull()(凸包)や minkowski()(ミンコフスキー和)といった高度な演算も備えており、機械部品のような寸法が厳密なモデルを正確に設計できます。

特徴3 パラメトリック設計が自然にできる

コードで設計するということは、変数を使えるということです。寸法を変数化しておけば、変数の値を変更して再レンダリングするだけで形状を一括変更できます。

// パラメトリック設計の例
width = 40;
depth = 40;
height = 10;
hole_r = 5;

difference() {
    cube([width, depth, height]);
    cylinder(h=height+2, r=hole_r);
}

「幅を50に変更したい」となったら、width = 50 と書き換えるだけ。同じ形状のサイズ違いを量産したい場合に非常に強力です。また、コードなのでGitでのバージョン管理とも相性が良く、設計履歴や変更差分を管理できます。

どんな時に使えるか 具体的な利用シーン

OpenSCADは以下のような用途で特に力を発揮します。

  • 3Dプリント用のパラメトリック部品(サイズ変更が頻繁な治具・ホルダー類)
  • 寸法が決まっている機械部品の正確な設計
  • 歯車やネジなど、数式で定義できる機械要素の生成
  • forループを使った格子状の穴あき板など規則的なパターン
  • 数学的な生成やランダム性を使ったジェネレーティブデザイン
  • 研究機関での実験装置開発(同型パーツの量産)

例えば歯車はOpenSCADの得意分野です。歯数・モジュール・圧力角をパラメータ化しておけば、歯数20・30・40と変数を書き換えるだけで、サイズ違いの歯車を瞬時に生成できます。ネジもピッチと径を変数化すれば同様です。測定器具のホルダー、配線のクランプ、部品トレイなど、現場で「あと少しサイズが違うバージョンが欲しい」という場面に強力です。

一方で、曲面を自由にぐりぐり彫るような有機的な形状(フィギュアや彫刻など)には不向きです。そういった用途はBlenderなどのメッシュモデラーが適しています。

コマンドは何に似ている?覚えるのは難しいか

OpenSCADのスクリプト言語は、**C言語風の構文**です。波括弧{}でブロックを囲み、文末にセミコロン、コメントは // や /* */、forループやif文もC言語とほぼ同じ感覚で書けます。

// forループで規則的に穴をあける例
module hole_plate(w, d, pitch) {
    for (x = [0:pitch:w], y = [0:pitch:d]) {
        translate([x, y, 0])
            cylinder(h=10, r=2);
    }
}
difference() {
    cube([60, 60, 5]);
    hole_plate(60, 60, 15);
}

「図形をコマンドで指定する」という感覚は、2D CADに詳しい方ならAutoCADのコマンドライン入力(LINE、CIRCLEと打ち込んで作図する方式)に近いイメージです。ただしAutoCADが対話式(1コマンドずつ実行)なのに対し、OpenSCADはプログラム全体を書いてから一括実行する点が異なります。

覚える必要があるかについては、OpenSCADは独自言語なので「そのまま使える既存コマンド」はありません。ただし、基本命令は cube() sphere() cylinder() translate() rotate() difference() union() など十数個程度で、プログラミング経験者なら数時間で使い始められます。関数呼び出しの形で図形を指定するため、C言語やPython、JavaScriptなどに触れたことがあれば、学習コストはかなり低いと言えます。プログラミング未経験でも、直感的な命令が多いので入門は比較的容易です。

FreeCADのPythonスクリプトとの違い

「コードで図形を作る」という点で、OpenSCADとFreeCADのPythonスクリプトはよく比較されます。概念的には似ていますが、以下の点で明確に異なります。

項目 OpenSCAD FreeCAD Python
言語 独自スクリプト言語(C言語風) Python
設計思想 スクリプトが唯一の正(GUI編集不可) GUIが主役、Pythonは自動化・拡張
ジオメトリエンジン 独自のCSGエンジン OpenCASCADE(本格的なCADカーネル)
STEP出力 不可(STL/OBJ/DXF/SVG等メッシュ中心) 可(CNC・CAM連携に必須)
モデリング自由度 プリミティブ+CSG演算中心 スケッチ→押し出し→フィーチャー(本格CAD)
学習コスト 低い(命令が少なくシンプル) 高い(FreeCADのUIとPython APIの両方)
得意分野 パラメトリック部品の高速生成 本格的な機械設計・CNC加工・アセンブリ

製造現場の視点で最も重要な差は、**STEP形式での出力可否**です。FreeCADはOpenCASCADEカーネルを持つためSTEP(3D CADの標準交換形式)で出力でき、CNC加工やCAMソフトへの受け渡しがスムーズです。一方、OpenSCADはSTLやOBJなどのメッシュ形式が中心で、精度が必要な切削加工用途には向きません。

つまり、3Dプリント用のシンプルな治具・部品ならOpenSCADで十分高速に作れますが、CNC加工や本格的な製品設計ならFreeCAD(Python拡張含む)が圧倒的に有利です。なお、FreeCADにはOpenSCADのワークベンチも用意されており、両者を組み合わせて使うことも可能です。

ライセンス形態 GPLv2の詳細

OpenSCADはGNU GPLv2(General Public License version 2.0)で公開されている完全無料のオープンソースソフトウェアです。GPLv2の条件を整理すると、以下の通りです。

項目 可否 内容
商用利用 可能 販売・業務利用を含めて自由
再配布 可能 無償・有償どちらでも配布可能
改変 可能 ソースコードの変更・改良が可能
私的利用 可能 制限なし
ソース開示 条件あり 再配布時はソースコードを開示する義務
同一ライセンス 条件あり 改変版はGPLv2で公開する義務(コピーレフト)
保証・責任 なし 無保証・無免責(ライアビリティなし)

GPLv2は「商用利用を制限しない」ことを明言しているライセンスです。OpenSCAD本体を業務で使うのはもちろん、配布物に同梱して販売することも可能です。ただし、その場合はソースコードの開示とGPLv2のライセンス表示が必要になります。

重要なのは、OpenSCADで作成した3Dモデル(.scadファイルや出力したSTLデータ)自体は、GPLの影響を受けないという点です。GPLは「ソフトウェア」に対するライセンスであり、CADの出力データはソフトウェアの派生物とはみなされません。つまり、OpenSCADで作った治具や部品を商用製品として販売しても問題ありません。作成した.scadスクリプトも、あなた自身の著作物としてライセンスを自由に選択できます(公開する場合はMITやCCライセンスなど、好きな形態を選べます)。

なお、他人が公開しているOpenSCADライブラリを組み込んで配布する場合は、そのライブラリのライセンスにも注意が必要です。ライブラリごとにライセンスが異なるため、組み合わせる前に確認しましょう。

インストール方法

公式サイト(openscad.org)のDownloadsページから、お使いのOSに対応するインストーラをダウンロードします。

  • Windows版: .exeインストーラ
  • macOS版: .dmg
  • Linux版: .AppImage または snap / apt

Linux(Ubuntu系)の場合は、ターミナルから次のコマンドでもインストールできます。

sudo apt install openscad

インストール後、起動してエディタにコードを書き、F5(プレビュー)、F6(レンダリング)でモデルを確認するのが基本の流れです。

動作環境

  • 対応OS: Windows 10/11(64bit)、macOS 10.13以降、Linux(主要ディストリビューション)
  • CPU: 2GHz以上のデュアルコア(推奨)
  • メモリ: 4GB以上(8GB推奨)
  • GPU: OpenGL 2.0対応

複雑なCSG演算を行う場合はCPU性能が重要になりますが、基本的には非常に軽量なソフトウェアで、古いPCでも問題なく動作します。

最新バージョン情報 2026年現在

長らく安定版は2021年リリースの2021.01が最新でしたが、開発は継続しており、2026年には「2026.0x」のリリース候補が公開されています。開発版(Nightly Build / 開発スナップショット)も頻繁に更新されており、新しい機能を先行して試すことも可能です。日本語メニューへの対応は一部のみで、ドキュメントは英語中心ですが、日本語のユーザーマニュアル(Wikibooks)も整備されています。

まとめ

OpenSCADは、コードで3Dモデルを記述するという独自のアプローチを持つ3DCADです。寸法が決まった機械部品や3Dプリント用パーツの設計、パラメトリックな設計管理に強みを発揮します。GPLv2ライセンスで完全無料、商用利用も自由。作成したモデル自体は自分の著作物として扱えるため、ビジネスでの利用も安心です。

マウス操作のCADがどうも苦手という方や、プログラミングのスキルを設計に活かしたい方は、一度試してみる価値のあるツールです。

主な出典・参考

コメント

タイトルとURLをコピーしました