プログラミング

A collection of 2 posts
プログラミング

Zigで組込み開発を始める方法——Cを「そのまま」置き換えられる言語がマイコン開発を変える

はじめに——なぜ今、Zigが組込み界隈で注目されるのか マイコン開発といえば、長年C言語が事実上の標準でした。しかしCでの開発には、ターゲットごとにarm-none-eabi-gccのようなクロスコンパイラを別途用意するツールチェイン構築の面倒さ、未定義動作に起因する潜在的なバグ、プリプロセッサマクロが生む読みにくいコードといった課題がつきまといます。モダンな代替としてRustも注目されていますが、所有権やライフタイムといった独自概念の学習コストの高さに、二の足を踏むエンジニアも少なくありません。 こうした中で注目されているのが、システムプログラミング言語のZigです。Zigは既存のC/C++コードベースを壊さずに段階的に改善できる言語として設計されており、公式サイトでは「堅牢、最適、再利用可能なソフトウェア」のための言語兼ツールチェインとして紹介されています。隠れた制御フローや隠れたメモリ割り当てを排したシンプルな設計でありながら、zig ccとしてクロスコンパイル対応のドロップインC/C++コンパイラにもなれるため、C資産と相互運用しながら段階的に導入しやすいのが大きな特徴です
12 min read
プログラミング

Zig入門——「Cの問題を修正した言語」は何が違うのか?仕組みからクロスコンパイル実践まで

はじめに——「Cの問題を修正した言語」とは何か?なぜ今Zigなのか? 「C言語の代替」と公言するプログラミング言語は数多くありますが、その中でもZig(ジグ)は独特の立場を占めています。公式サイトが掲げるのは、Cの再実装でもC++の後継でもなく、「C but with the problems fixed(問題を修正したC)」——Cが半世紀にわたり蓄積してきた課題を、言語設計の段階で解決し直した言語だ、という主張です [1]。 具体的には、隠れた制御フローを排除し(演算子オーバーロード・例外・マクロなし)、メモリ確保を必ず明示させ(アロケータの引数渡し)、ガベージコレクションもランタイムも持たない。そのうえでCの資産を@cImportでそのまま活かせる [1]。この「見た目はC、しかし罠がない」設計思想が、Zigに注目が集まる最大の理由です。 1.0前なのに、なぜBunやTigerBeetleはZigを採用したのか? 意外に思われるかもしれませんが、Zigは2026年9月上旬時点でもまだバージョン0.16.0(2026年4月13日リリース)という1.0未満の言語です [2]
27 min read