.gcode ファイルとは?中身と、1 台のプリンター専用である理由
G-code は、プリンターが 1 行ずつ実行する命令をテキストで並べたもので、ノズルをどこへ動かすか、材料をどれだけ押し出すか、何度に保つかを指示します。スライサーが 3D モデルから特定の 1 台のプリンター向けに書き出し、印刷時間、フィラメントの使用量、プレビューをコメントとして加えます。モデルそのものは入っておらず、あるのはノズルの経路だけです。
概要
- 拡張子
- .gcode, .gco, .g
- 種類
- ツールパス(プリンターへの命令)
- 開発元
- EIA RS-274, RepRap
- 規格
- ISO 6983 (CNC)
- アプリなしの macOS
- 知らない:プレビューもサムネイルもなし
情報の確認日:2026年11月4日
1 行に 1 つの命令
各行は、文字と数字から成る「ワード」で組み立てた 1 つの命令です。G1 X10 Y-5 F2400 は「X 10、Y −5 まで 2400 mm/min で直線移動」という意味です。G は移動、M はそれ以外の命令(温度、ファン)、T はツール交換を表します。X、Y、Z は軸、E は押し出す材料、F は速度、S は温度または主軸の回転数です。セミコロンより後はすべてコメントです。
次は実際のファイル、PrusaSlicer 2.9.5 で作った 3DBenchy の、あるレイヤーの始まりです。
;LAYER_CHANGE
;Z:0.6
;HEIGHT:0.2
;BEFORE_LAYER_CHANGE
G92 E0.0
;0.6
G1 E-.7 F2700
G1 X135.159 Y110.836 Z.4 F21000
G1 X136.128 Y110.075 Z.6 F4491.905
;AFTER_LAYER_CHANGE
;0.6
G1 X136.128 Y110.075 F21000
G1 Z.6 F720
G1 E.7 F1500ノズルはフィラメントを引き戻し(E-.7)、0.6 mm の新しいレイヤーへ上がりながら高速で移動し、再びフィラメントを押し出します(E.7)。
G-code の起源は工作機械です。米国では RS-274 規格で定められ、その最後の改訂 RS-274-D は 1979 年のものです。国際的には ISO 6983 で定められています。3D プリントには RepRap プロジェクトを通じて入ってきました。ただし 3D プリンターには共通の規格がありません。Marlin、Klipper、RepRapFirmware、Prusa のファームウェアなど、それぞれが独自の命令と独自の拡張を持っています。
.gcode のほかに、拡張子 .gco と .g も使われます。Klipper は仮想 SD カードからこの 3 つすべてを一覧に表示し、Marlin も同様です。Marlin は 8.3 形式の拡張子が G で始まるファイルをすべて表示します。
スライサーがファイルに書き込むもの
プリンターにとっては命令だけで十分です。しかしスライサーはコメントを加え、そこから印刷についてほとんどすべてが分かります。同じファイルの冒頭です。
; generated by PrusaSlicer 2.9.5 on 2026-07-03 at 11:30:45 UTC
; printer_model = COREONE
; filament_type = PC
; nozzle_diameter = 0.4
; layer_height = 0.2
; temperature = 285
; filament used [mm] = 5786.33
; filament used [g] = 16.98
; filament cost = 1.27
; estimated printing time (normal mode) = 1h 4m 39s
; estimated printing time (silent mode) = 1h 10m 11sさらに、ファイルには次のものが入っています。
- プレビュー:
; thumbnail beginと; thumbnail endのような行のあいだに、テキスト(base64)としてエンコードされています。このファイルには 4 枚あります。プリンターのディスプレイ用の QOI 画像が 3 枚(16 × 16、313 × 173、480 × 240 ピクセル)と、コンピューター用の 380 × 285 の PNG が 1 枚です。 - 経路の各区間の種類。 各区間の前に
;TYPE:External perimeterや;TYPE:Internal infillのような行があります。この Benchy には外周の行が 772 個、内部インフィルの行が 163 個あります。ビューアはこれをもとに経路を色分けします。 - レイヤーの境目:
;LAYER_CHANGE、;Z:、;HEIGHT:。この Benchy には 240 のレイヤーがあります。 - スライサーの全設定:ファイルの末尾、
; prusaslicer_config = beginと= endのあいだにあります。この例では 373 行です。 - ディスプレイ用の印刷の進み具合:
M73 P0 R64のような行が、何パーセント終わったかと残り何分かを示します。QとSはサイレントモードで同じ役割をします。
ただし、コメントの書き方はスライサーごとに違います。経路の種類を、PrusaSlicer は ;TYPE:External perimeter、Cura は ;TYPE:WALL-OUTER、Bambu Studio と OrcaSlicer は ; FEATURE: で示します。ほかのスライサーの目印を知らないビューアは、その部分の経路を色分けできません。
こうしたコメントのせいで、G-code は大きくなります。この Benchy は 180,291 行、4.5 MB で、そのうち 142,090 行が G1 の移動です。同じ印刷をバイナリの .bgcode で保存すると 1.76 MB です。
G-code が 1 台のプリンターにしか合わない理由
G-code は 1 台のプリンターに合わせてスライスされます。ベッドのサイズ、ノズル径、ファームウェア、開始シーケンスです。NIST は 2000 年の報告書で、ある機械向けのプログラムは別のメーカーの機械ではおそらく動かないと、すでに注意を促していました。3D プリンターでも同じです。
Prusa のプリンターは自分で確認します。この Benchy は次の行で始まります。
M862.1 P0.4 A1 F0
M862.3 P "COREONE"
M862.5 P2
M115 U6.5.3+12780M862.1 はノズル径を、M862.3 はプリンターの機種を、M862.5 は G-code のレベルを確認します。M115 U はファームウェアのバージョンを比べます。Prusa のドキュメントによると、ファームウェアのほうが古ければ、プリンターは 30 秒間停止して更新を求めます。機種が合わないと、プリンターは G-code が別の種類のプリンター向けにスライスされたと警告します。Prusa のフォーラムでは、そのまま続けても大丈夫かという質問が出ています。
安全な方法はいつも同じです。自分のプリンター向けにモデルをスライスし直してください。完成した G-code を共有して意味があるのは、同じノズルを付けた同じプリンター同士だけです。
スライサーでは G-code のフレーバーを選びます。PrusaSlicer には Marlin 2 から Klipper、RepRapFirmware まで 10 種類以上あります。Bambu Studio はスライスしたプレートを書き出すとき、プレートごとの G-code を入れた .gcode.3mf パッケージを保存します。
G-code をモデルに戻せるか
戻せません。G-code が持っているのはノズルの経路で、形状ではありません。G-code から STL への変換をうたうサイトは、経路からおおよその立体を組み立てますが、サポートやインフィルもそこに含まれます。それは元のモデルではなく、0.2 mm のレイヤーから滑らかな形が戻ることもありません。モデルが必要なら、デザイナーに STL、3MF、STEP を頼んでください。
Mac、iPad、iPhone で G-code の中を見る方法
macOS には G-code のファイルの種類がありません。テキストエディットではテキストとして開け、Finder には白紙のアイコンが表示されるだけで、プレビューもサムネイルもありません。Windows なら PowerToys で対応できますが、Mac ではアプリが必要です。
- PrusaSlicer G-code Viewer は無料で、PrusaSlicer、Cura、Simplify3D などのスライサーの G-code を読めます。
- gcode.ws などの Web ビューア は、ブラウザの中で経路をレイヤーごとに表示します。gcode.ws 自身、「slow, memory hungry」(遅く、メモリを食う)と書いています。
- ThumbHost3mf は、スライサーがファイルに保存したプレビューから Finder のサムネイルを追加します。
- Preview3D(私のアプリ)は、Mac、iPad、iPhone、Apple Vision Pro で、G-code をウィンドウ、クイックルック、Finder のサムネイルで開きます。
Preview3D が G-code から表示するのは次のとおりです。
- スライサーと同じように種類別に色分けした経路と、その凡例
- 実際の幅で描いた押し出し
- 任意の高さで造形を切り開けるレイヤースライダー
- ヘッダーから読み取った印刷時間、フィラメント、重量、材料
- Finder のサムネイルとして、スライサーがファイルに保存したプレビュー
PrusaSlicer、SuperSlicer、OrcaSlicer、Cura、Bambu Studio の G-code を読めます。

G-code のプレビューが何の役に立つかは、スライサーを開かずに G-code ファイルの中を見る方法 で詳しく説明しています。
よくある質問
G-code はどの 3D プリンターでも使えますか?
いいえ。特定のプリンター、ノズル、ファームウェアに合わせてスライスされています。別のプリンターでは、ベッドからはみ出して印刷したり、温度が合わなかったり、まったく始まらなかったりすることがあります。
.gcode、.gco、.g の違いは何ですか?
違いはありません。同じテキスト形式で、拡張子が違うだけです。
G-code ファイルのどこに印刷時間とフィラメントの使用量がありますか?
ファイルの冒頭か末尾のコメントにあります。PrusaSlicer は ; estimated printing time (normal mode) と ; filament used [g] を書き込み、Cura と Bambu Studio も独自の形式で似た行を書き込みます。
G-code を編集できますか?
テキストエディタでなら編集できますが、印刷を手で書き換えるのは危険です。温度、レイヤー高さ、材料はスライサーで変更し、モデルをスライスし直してください。
G-code を STL に変換できますか?
元のモデルには戻せません。経路からおおよその立体を組み立てられるだけで、サポートやインフィルもそこに含まれます。
.gcode と .bgcode の違いは何ですか?
入っている命令は同じで、.bgcode はバイナリで圧縮されています。詳しくは .bgcode のページ にあります。
関連ページ
- .bgcode ファイル:PrusaSlicer のバイナリ G-code
- .3mf ファイル:スライサーが G-code を作る元のプロジェクトと、.gcode.3mf パッケージ
- スライサーを開かずに G-code ファイルの中を見る方法
出典
- RepRap wiki:G-code:命令の構文、コメント、拡張子
- NIST:The NIST RS274NGC Interpreter, Version 3:CNC での起源、RS-274-D
- Marlin:G-code と Klipper:G-Codes
- Prusa Knowledge Base:Prusa ファームウェア固有の G-code 命令:M862、M115、M73
- Prusa Knowledge Base:PrusaSlicer G-code Viewer
- PrusaSlicer:G-code 内のサムネイル と 経路の種類の目印
- CuraEngine:G-code の書き出し と OrcaSlicer:経路の種類の目印
- Klipper:仮想 SD カードで扱う拡張子 と Marlin:SD カード上のファイルの一覧
Preview3D が間違った色で表示したのは、どのスライサーの G-code でしたか? apps@xfanta.com まで送ってください。まだ知らない目印を追加します。
Preview3D で開く
STEP、3MF、STL、G-code、BGCODE などを Mac、iPad、iPhone、Vision Pro で。一度の購入で、アカウントもネットワークも不要です。
App Store の Preview3D