CAM（キャム）とは、コンピュータ支援製造（）の略語。製品の製造を行うために、CADで作成された形状データを入力として、製品形状を成形するNCデータを出力するコンピュータ上のシステムである。出力されたNCデータは、CNC 工作機に送られ、実際の製品の加工を行う。

広義ではテキストベースの自動プログラミングシステムなど、NCデータを出力するシステムをすべてCAMと呼ぶこともある。

 概要 
NCデータは切削する工具の経路を示したテキストデータである。CAM出現以はNCデータ作成を人の手を介して次の様に行った。工具経路を図面やその作図から求め、その経路を点列で再構成し、各点の座標値をテキストデータで出力する。更にこのデータにXYZの座標アドレスや工作機に合わせたGコード、Mコード等の指令情報を付加する。CAMはこの一連の作業をコンピュータ上で行い、自動的にNCデータを出力するシステムである。

 歴史 

 CAM黎明期 
1956年にマサチューセッツ工科大学にてAPT（アプト）と呼ばれるNCプログラム言語がダグラス・テイラー・ロスによって開発された。日本では1972年に純国産のNCプログラム言語が開発された（後にLanc（ランク）と命名）。また、APT言語から派生したFAPT言語やHAPT言語、MINIAPT言語も実用化されている。総称して自動プログラミング装置（自動プロ）と呼ばれていた。これらは、言語専用の命令を記述したプログラムを工作機械用のNCデータに変換する、コンパイラとして実装されていた。以降のCAMとの最大の違いは言語ベースのためにWYSIWYGではないことである。2008年現在でも、APT言語は、いくつかの海外製CAMのCL（カッターロケーション）ファイルとして使用されている。一方、Lanc言語もCAM同様のインターフェースを纏って使用され続けている。

 CAM運用環境の変遷 
CAMの分野では、歴史的にUnixが多く利用されてきたが、これは比較的重い計算を繰り返すために、安定したマルチタスク性を持つOSが必要なことが主な理由である。しかし、Windows系コンピュータのCPU性能が飛躍的に向上したために、計算時間短縮とコスト低下を目的としてWindows系OSへの移行が進み、現在では大部分のCAMシステムがWindows系をプラットホームとしている。また、UnixからWindowsへの移行の流れの中で表舞台から去っていったCAMシステムも数多くある。

Unixは既にCAMの流れの本流ではなくなっているが、持ち前の安定性とマルチタスク性能を望む声も多く、Linuxへの展開も少なからず始まっている。これは、数多くのCAMベンダーがWindows上での動作にデュアルCPUを推奨しているのに対し、同等のシステムがUnix上では、シングルCPUで良好なレスポンスを実現していたこととも無関係ではない。

 CAMの種類 
市販のCAMシステムの多くは切削加工を対象としており、その加工内容から大まかに以下の種類に分類できる。

 面穴加工CAM 
以下の２つの加工を対象としたNCデータを出力する。

 ドリルやタップ工具等を使った穴明け加工
 フェイスミルやエンドミルを使い水平面や垂直面等の平面の加工

 輪郭加工CAM 
主にエンドミルを使い、製品の曲線輪郭を加工するNCデータを出力する。

 表面加工CAM 
主にボールエンドミルを使い曲面を加工するNCデータを出力する。例えば自動車のボディ形状のプレス型成型面の加工はこの種のCMAでNCデータを作成する。

 旋盤用CAM 
旋盤にて回転体形状を削り出すNCデータを出力する。

 切削加工以外のCAM 
切削加工以外にレーザ切断やワイヤー放電、布や紙の裁断等多様な加工のCAMが存在する。

市販CAMシステムは上記種類を個々のソフトウェア製品として販売する場合もあるが、幾つかを合わせて１つの製品とすることもある。また大規模なCAMシステムでは、上記の加工を個々のモジュールとして持つ。

 その他CAMシステムの区分 
加工内容やNCデータの特性から以下の様に呼ばれるCAMが存在する。

 2次元CAM 2.5次元CAM 3次元CAM 
面穴加工や輪郭加工では２次元のCADデータを入力として高さ一定のNCデータを出力するCAMがあり、一般に２次元CAMといわれる。またこれに穴や平面に高さ情報を持つNCデータを出力するCAMを２.５次元CAMと言う。２次元や２.５次元に対して、X軸、Y軸、Z軸を同時に制御するNCデータを出力するCAMを３次元（３D）CAMと言う。

 5軸加工CAM 
一般的なCAMは機械のX軸、Y軸、Z軸の直交３軸を制御するNCデータを出力するが、これに加えて回転軸を制御するNCデータを出力するシステムを５軸加工CAMと呼ぶ。回転軸はA軸、B軸、C軸の3軸であるが、幾何学上2軸を回転させれば全ての傾斜面角度が得られるため、一般にNCデータで制御する回転軸は2軸であり、対象の工作機によってその組み合わせは異なる。このためCAMも回転傾斜ヘッドや回転傾斜テーブルなど各種タイプの工作機に対応している。また直交軸と回転軸を同時に制御するNCデータでは工作機のCNCがもつ工具先端点制御機能を使うことが前提となっている場合が多い。

 CAMの機能 
CAMは効率よくNCデータを作成するため、幾つかの機能を持つ。以下に切削加工を前提に主要なものを紹介する。

 工具経路自動生成 
加工内容にあわせて、工具の経路を自動で生成する機能であり、CAMシステムが基本的に持つ機能。

 穴加工の場合、穴あけやタッピングなどの工具の上下の動きを自動生成する。また、実際の工具経路は生成せず、加工内容に対応する固定サイクルのGコードを出力することもできる。

 輪郭加工は加工対象の輪郭に沿った工具経路を生成するが、工具径補正を使う前提の場合、工具経路ではなく輪郭形状そのものをNCデータとして出力することもできる。また工具径より幅の小さい凹形状等では工具が製品に食い込まないような経路を自動生成する。さらにこの凹形状の削り残し部位を削る小径工具の経路も自動生成すことができる。

 平面や曲面の加工では、工具経路を予め用意されたパターン（方向指定、ジグザグ、面沿い、等高線等）から選択することで形状に沿った工具経路を自動生成する。さらに大きな工具径の工具で削り残しとなった部位を削る小径工具の経路を自動生成する。

 表面加工において、削り代が大きい鋳物やムク材からの加工に対しては、曲面形状に沿うことなく効率よく荒取り加工する工具経路パターン（スパイラル加工、突き加工等）がようされているCAMもある。

 フィーチャー機能 
CADデータの穴やポケット形状等の特徴的な形状に対して、システムが自動で対象形状を見つけ出し、工具経路を自動で生成する機能。工法は下記で説明する工法テーブルから選択することが多い。

 工具テーブル 
使用する工具の情報を予め登録する機能であり、これもCAMが基本的に持つ機能である。工具毎に以下のような情報が登録される。

 工具の種類、長さ、直径、刃先形状等
 NCデータで使用する工具番号、工具長補正番号、工具径補正番号
 切削する材質毎の工具送り速度、回転数、切削油の要否

 工法テーブル 
１つの加工範囲で使用する工具と経路生成方法を、１つの工法として登録する機能。このとき工具の情報は工具テーブルから取得する。例えば、ネジ穴加工の方法としては、センタードリル、下穴、座グリ、タッピングの一連の加工を各種工具と共に１つの工法として登録できる。また表面加工では荒加工から中仕上げ、仕上げ、小径工具による細部加工までの一連の工具を工具経路パターンと共に1つの工法として登録する。

 ポスト（工作機）設定 
出力先の工作機に適合したＮＣデータを出力するための情報を設定する。CAMシステム毎に多少設定内容は異なるが、多くの設定項目がある。例えば、工作機の形状（立て型、横型、門型等）、テーブルサイズ、CNCの種類、ATC（自動工具交換装置）のポット数、通常と異なるGコートの設定、Mコード設定。更に座標値に関して、単位（ミリメートルorインチ）、小数点が無いときの最小設定単位、連続点列の絶対値or 増分値等のＮＣデータの出力形式に関係することも指定できる。

 NCデータ編集 
別々の加工範囲のNCデータに対して、同じ工具のNCデータを1つのNCデータとしてまとめる機能。更に工具毎にまとめたNCデータを加工内容に合わせ適正な加工順に並び替えて出力することもできる。また異なる工具種類のNCデータをATC（工具交換）命令をはさんで1つのファイルとしてまとめることも可能。

 干渉チェック・加工シミュレーション 
個々のNCデータにおいて、工具以外の機械稼働部分（工具ホルダ、アタッチメント等）が、被削材や固定治具と接触しないかをチェックする機能。さらにホルダやアタッチメントを装着した状態でNCデータの工具経路を加工シミュレーションすることも可能。チェックの結果、接触した被削材等の箇所を分を色を変えて示すことができる。

 加工途中形状生成 
1つNCデータの加工後の被削材の形状を再現する機能。実際の加工順に途中形状を生成することで、干渉の部位や発生工程をチェックしたり、加工残りの状況を確認して、次工程の加工内容をより適正なものに修正するために利用する。

 NCデータフォーマット機能 
CAMで生成された工具経路データを、ポスト設定の内容を基に、テキスト形式のNCデータフォーマットに変換する機能。工具経路の点列座標値にはX、Y、Zのアドレスが付加され、GコードやMコードの制御指令、D,Hの工具補正アドレス、工具の送り速度F、回転数Sなどの情報が付加される。最終的にここで作成されたNCデータが出力される。

 CADインターフェース 
CAMはCADから形状データを入力するためIGESやSTEP等の中間ファイルのインターフェースを持つ。さらに主要なCADシステム（CATIA、NX、PTC Creo等）に対してはダイレクトなインターフェースをもつもCAMシステムも多い。更にスキャンした形状データを取り込むため、点列データであるSTL形式データのインターフェースもある。

主なCAMソフトウェア

 ダッソー・システムズ: CATIA、SOLIDWORKS CAM（CAMWorksベース）
 シーメンス: NX、Solid Edge、Solid Edge CAM Pro (旧CAM Express)
 ヘクサゴン (社を買収): AlphaCAM、EdgeCAM、Machining Strategist、PEPS、SurfCAM、VISI、WorkNC / Dental
 Autodesk: Fusion 360（一部機能はFusion 360 Machining Extensionが必要）、Fusion 360 with 、Fusion 360 with FeatureCAM、Inventor CAM (旧HSM)
 (Geometric社を買収): CAMWorks
 OPEN MIND Technologies: 
 Tebis Technische Informationssysteme: 
 CNC Software: 
 3D Systems (社を買収): Cimatron、GibbsCAM
 PTC: PTC Creo
 CGTech: 
 Missler Software: TopSolid
 SPRUT Technology: 、SprutCAM Robot
 Scanvec Amiable: 
 Gravotech: TYPE EDIT、LASERTYPE
 MecSoft Corporation: VisualCAD/CAM、RhinoCAM (Rhinoceros 3D向け)、VisualCAM for SOLIDWORKS (SolidWorks向け)、AlibreCAM (向け)、FreeMill
 C&G Systems: CAM-TOOL
 SolidCAM: SolidCAM
 NTTデータエンジニアリングシステムズ: Space-E
 BobCAD-CAM: -CAM
QARM Pty Ltd: OneCNC