🛠 箱庭ラボ日記──2026年1月6日箱庭ラボ日記──2026年1月15日


login: UNIX Cシステムプログラミング入門

――もう二十数年前になりますが――
週末、仕事に行き詰まり、
行きつけの小さな本屋で、たまたまこの本を手に取りました。

マーカーで、大事なところに線を引き、
鉛筆で、余白に気づいたことを忘れないように書き込みして、
暇を見つけて、ファイルI/O、通信プログラムを書く。

仕事でわからないことに出くわすと、この本のページをめくる。
そんなことを、日々やっていた時期がありました。

赤い本です。まだ持ってます。

その当時
Unix/LinuxのOS開発をやっている部署の中で席を貰いました。

ある日、当時の社長から、鶴の一言。

「お前を、技術部長の下に入れる。
 1年くらい、勉強してこい。」

この一言で、ぼくの人生の大転換しました。

でもね。

技術部長から与えられた最初の仕事は、
「プログラムを書いて、見せてみろ。」
でした。

そして、ドキドキしながら、書いたプログラムを印刷して、みてもらいました。

『…うーん』

沈黙・・・

「君は、ポインタわかってないね。ファイルI/Oとかシステムコールって知ってる?」

はい、全然しりません。

ごめんなさい。

でしたね。

半年間、C言語だけをひたすら勉強しました。

その当時、その技術部長は、
CPUエミュレータを自作している人でした。

僕が書いたプログラムをコンパイルし、
それをそのエミュレータに流し込む。

すると、

  • CPUレジスタ
  • メモリの中身

がGUIで表示され、
1行ずつステップ実行するたびに、
レジスタの値が変わっていくんです。

「C言語のポインタを理解したいなら、
 CPUの仕組みを知りなさい。」

この言葉。

実はこれ、
Athrillの原点なんですよね。

ポインタの仕組みは、
CPU命令とレジスタの動きを追えば、

「ぜんぜん、難しくない。」

そういうものです。

C言語は、それを抽象化することで、
原理原則を“うまく”隠してしまっている。

だから、
仕組みを知らないと、
突然、意味不明になる。

システムコールとは?

その当時、ぼくが、どうしても知りたかったのは、ポインタそのものではなく、
「OSの仕組み」
でした。

でも、このC言語ってやつ、つまりは、CPUの仕組みを理解しないまま、突き進むことはできなかったのです。

その技術部長は、
そのことを、よくご存知でした。

だから、抽象論ではなく、
CPUエミュレータを使って、
コツコツと教えてくださったんですね。

そして。

「C言語、わかった!」
……でも、まだ、わからない。

そこで行き詰まったのが、

「システムコールとは?」

でした。

C言語で書いたプログラムは、
すべて、アセンブリ言語に翻訳される。

そして最終的には、
機械語命令になる。

それだけのはず、でした。

しかし、ここに
ひとつの壁があったんです。

それが、

システムコール
という、
特殊な命令でした。

その命令を実行すると、CPUはどこに行くのか?

「なんかワクワクしません?」

それがカーネルの世界なんですよ。

いまだに僕はC言語でプログラム書いてます。

ぼくの体には、
C言語が、完全に染み付いているんですわ。
手の先から、脳から、足先まで、すべてです。

このCコードは、
メモリのどこにアクセスし、
CPUがどう動くのか。

コードを見れば、
全部、わかる。

だから。
危険な匂いは、コードを見た瞬間に反射的にわかる。

その当時、技術部長が言われました。

「C言語は、危険なプログラミング言語だ。
 簡単に、メモリ破壊を引き起こす。」

「だから、このプログラミング言語を扱えるのは、
 プロじゃないと、だめなんだ。」

と。

AIがコードを書く時代になりましたが。

今の時代、正直、Cコードと言えど、僕が書くプログラムより、AIが書くコードの方が安全で綺麗です。

とても便利だと思います。

でもね。

仕組みを知らずに、AIが吐き出すコードを鵜呑みにして、ただ動かすだけ。

目的を達成したから、OK。
――それで済むなら、話は簡単です。

使い捨てのコードなら、
それでも、まあ、良いと思います。

でも、それが
プラットフォーム
つまり、基盤をなすコードだとしたら、どうでしょうか。

誰も全体を把握できないコード。
誰も、なぜそうなっているのか説明できないコード。

それは、
動いているだけで、
理解されていないシステムです。

そういうのもアリかもしれないけど、
ぼくは、ちょっと勘弁してほしいって思います。

ちゃんと、
アーキテクチャを描く。
コンポーネントを切る。
インタフェースを定める。

そのうえで、
実装をAIに渡す。
そして、人間がチェックする。

それなら、わかります。

でも、
目的達成だけを理由に、
ブラックボックスを積み上げるのは、
ぼくは好きじゃない。

話は長くなりましたが。

アナログって、いいですよね。

昔は、
レコードを買ってきて、
針をその上にそっと乗せて、
ノイズを感じながら聴く。

コーヒーを淹れて、
湯気の揺らぎを、ぼんやり眺めながら。

紙の本を手でめくり、
大事なところに、鉛筆でコメントを書き入れる。

そして、
「あ、コーヒーこぼしちゃった。」

そのシミも、懐かしい。

記憶に焼きつくんですよね。
あのとき、
「あ、これを理解したい」と思って、
思わず手を伸ばした瞬間に、
コーヒーをこぼした、あの記憶。

ぼくがC言語を覚えて、
体に染み付いているのは、
きっと、そういうことなんだと思います。

おしまい。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP