🫠

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

に公開

はじめに:C言語の環境構築、面倒くさくないですか?

WindowsでC言語(またはPython)の勉強を始めようとしたとき、こんな経験はありませんか?

  • MinGWのインストール方法がわからない
  • Visual Studioが重すぎる
  • PATH(環境変数)の設定で失敗して gcc が動かない
  • 友人にコードを渡しても「コンパイルできない」と言われる

「ただ main.c を書いて、exeにして動かしたいだけなのに!」

そんな悩みを解決するために、コンパイラ(Zig)を内包し、インストール不要・設定不要で使えるビルドツールを自作しました。

作ったもの:Portable Zero-Config Build Tool

今回作成したツールは、「ソースコードの横に置いてダブルクリックするだけ」で、自動的にexeファイルを生成してくれます。

特徴

  1. 環境構築ゼロ:Zigコンパイラをツール内部に抱えているため、MinGWなどのインストールが一切不要です。
  2. 設定ファイル不要:フォルダ内の main.c(または main.py)を自動検知してビルドします。
  3. 完全ポータブル: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

使い方

  1. 配布している autobuildtool.exe をダウンロードします。
  2. main.c があるフォルダに入れます。
  3. 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