🫠
【Windows】C言語の環境構築が面倒すぎるので、Zig内包の「置くだけビルドツール」を自作した話

はじめに:C言語の環境構築、面倒くさくないですか?
WindowsでC言語(またはPython)の勉強を始めようとしたとき、こんな経験はありませんか?
- MinGWのインストール方法がわからない
- Visual Studioが重すぎる
- PATH(環境変数)の設定で失敗して
gccが動かない - 友人にコードを渡しても「コンパイルできない」と言われる
「ただ main.c を書いて、exeにして動かしたいだけなのに!」
そんな悩みを解決するために、コンパイラ(Zig)を内包し、インストール不要・設定不要で使えるビルドツールを自作しました。
作ったもの:Portable Zero-Config Build Tool
今回作成したツールは、「ソースコードの横に置いてダブルクリックするだけ」で、自動的にexeファイルを生成してくれます。
特徴
- 環境構築ゼロ:Zigコンパイラをツール内部に抱えているため、MinGWなどのインストールが一切不要です。
-
設定ファイル不要:フォルダ内の
main.c(またはmain.py)を自動検知してビルドします。 - 完全ポータブル:USBメモリに入れて持ち運んでも動きます。
技術的な仕組み(どうやって動いているか)
このツールは Python で記述されており、以下の技術を組み合わせて実現しています。
1. Zig を Cコンパイラとして使う
「C言語のコンパイラなのにZig?」と思われるかもしれませんが、Zigには zig cc という強力な機能があり、C/C++コンパイラ(Clang互換)として振る舞うことができます。
このツールでは、軽量なZigのバイナリを同梱し、内部で以下のようなコマンドを自動発行しています。
# ツール内部で実行されているコマンドのイメージ
zig cc main.c -O2 -std=c11 -target x86_64-windows-gnu -o main.exe
これにより、Windows環境でありながら、追加の依存関係なしにC11準拠のコンパイルを実現しています。
2. PyInstallerによるワンファイル化
PythonスクリプトとZigコンパイラ一式(zig.exe やライブラリフォルダ)を、PyInstallerを使って一つのexeファイルに固めています。
実行時には一時フォルダ(_MEIPASS)にコンパイラが展開され、ビルド処理を行います。
コードの一部抜粋:
# 内部のZigパスを解決するロジック
if hasattr(sys, "_MEIPASS"):
bundled_zig = Path(sys._MEIPASS) / "zig" / "zig.exe"
if bundled_zig.exists():
return bundled_zig
使い方
- 配布している autobuildtool.exe をダウンロードします。
- main.c があるフォルダに入れます。
- autobuildtool.exe を実行します。
これだけで、同じフォルダにビルド済みの main.exe が生成されます。
配布先
「環境構築で詰まってプログラミングを諦めてほしくない」という思いで公開しています。もしよければ試してみてください。
▼ BOOTH(国内向け)
[https://programshop.booth.pm/items/7895631]
▼ Gumroad(International / 英語)
[https://ryotaka65.gumroad.com/l/portable-c-builder?_gl=1*9q4csc*_ga*MTQ4MTUxNTY1MS4xNzY4ODQ0Nzgx*_ga_6LJN6D94N6*czE3Njg4NDQ3ODEkbzEkZzEkdDE3Njg4NDk5MDYkajE3JGwwJGgw]
おわりに
Zigのクロスコンパイル機能とPythonのグルー言語としての使いやすさを組み合わせることで、非常にポータブルな開発環境が作れました。
「学校のPCで勝手にインストールできない」「サクッとC言語を書きたい」という場面で役立てば嬉しいです。
Discussion