68歳、まだ夢の途中【vol.12】
「お前には無理だ」と言われた数だけ、コードを書いた
前回(vol.11)で、支援の現場で出会った人たちの話を書きました。
今回は、自分自身の話をします。
40年以上コードを書いてきた中で、何度も言われた言葉がある。「お前には無理だ」——あるいはそれに似た言葉。直接言われたこともあるし、空気で伝わってきたこともある。
そのたびに僕がどうしたか。黙ってキーボードを叩いた。それだけです。
---
## アセンブラ屋の限界
僕のエンジニア人生は、アセンブラから始まりました。
1980年代。コンピュータの心臓部に直接命令を書く、あの低レイヤーの世界です。レジスタの値を一つずつ操作して、メモリのアドレスを手で管理して、1バイトの無駄も許されない世界。
当時は、それが「本物のプログラミング」だった。
でも時代は動く。Cが主流になり、C++が来て、オブジェクト指向が当たり前になった。そのたびに「アセンブラしかできないんだろ?」という目で見られた。
実際、最初のCのコードは酷いものだった。アセンブラの癖が抜けなくて、変数名が `r0` とか `tmp1` とか。「お前のCはアセンブラの翻訳じゃないか」と先輩に笑われた。
悔しかった。でも笑い返す余裕はなかった。
だから夜中にCの教科書を開いた。ポインタの動きを紙に書いて、構造体の使い方を覚えて、翌朝にはもう少しマシなコードを書いた。
---
## 「あいつ、基盤系だから」
基盤系エンジニアという肩書きは、ある種のレッテルでした。
OSやミドルウェア、通信プロトコル、デバイスドライバ。地味で、目に見えない部分を担当する。アプリケーション開発の人たちからすると、別の世界の人間。
プロジェクトの打ち合わせで業務ロジックの話になると、「あいつは基盤系だから、この辺はわからないよ」と言われることがあった。
わからないんじゃない。聞いてもらえなかっただけだ。
でもそこで「わかります」と主張するより、黙って結果を出す方を選んだ。
基盤系だからこそ見える問題がある。アプリケーションの設計者が気づかないボトルネック。メモリリーク。デッドロック。本番環境で初めて顕在化するバグ。
「基盤系のくせに」と言われながら指摘した問題が、リリース直前に大事故を防いだことがある。その時、誰も「ありがとう」とは言わなかった。でも、次のプロジェクトから打ち合わせに呼ばれるようになった。
言葉じゃなくて、コードで証明した。
---
## C++の壁
Cをなんとかモノにした頃、今度はC++が来た。
オブジェクト指向。クラス。継承。ポリモーフィズム。カプセル化。
正直に言います。最初、まったく意味がわからなかった。
アセンブラとCの世界では、データは「メモリ上のバイト列」であり、処理は「命令の列」だった。それがいきなり「オブジェクト」になり、「メッセージを送る」とか「振る舞いを持つ」とか言い出した。
何を言っているんだ、と思った。コンピュータはメモリとCPUでできている。メッセージなんか送れるわけがない。結局はメモリ操作だろう、と。
この考え方が、壁だった。
低レイヤーの知識が、高レイヤーの抽象化を理解する妨げになっていた。「結局はメモリ操作だろう」は正しいけれど、その正しさがC++の設計思想を受け入れることを邪魔していた。
40代前半だったと思います。後輩のエンジニアに「Toshiさん、そのコードはCです。C++ではこう書きます」と直されたことがある。
後輩に直される。プライドが傷ついたか? 正直、傷ついた。でもその後輩のコードは確かに読みやすかった。保守性が高かった。拡張しやすかった。
プライドより、良いコードの方が大事だ。
その日から僕は、後輩に教わる40代のエンジニアになった。
---
## 「定年後に起業? やめとけ」
60歳で定年を迎えた時、再就職という選択肢もあった。
基盤系の経験が40年ある。レガシーシステムの保守要員として、どこかの会社には入れたかもしれない。給料は下がるだろうけど、安定はする。
でも僕は起業を選んだ。マインドシード研究所を立ち上げた。
この時、言われた言葉は一つや二つじゃない。
「定年後は趣味で楽しめばいいじゃないか」
「今さら起業して何するんだ」
「失敗したらどうするんだ」
妻は何も言わなかった。彼女はいつも、僕が何かを始める時に反対しない。代わりに「ご飯は作るから、好きなだけやりなさい」と言ってくれる。
これがどれだけありがたいか。反対されるより辛いのは、無関心だ。妻は無関心ではなかった。ただ、信じて待ってくれていた。
---
## Webを知らない男
起業して最初にぶつかった壁は、技術じゃなかった。
Webだった。
40年間、基盤系をやってきた。OS、デバイスドライバ、通信プロトコル。HTTPは知っていたけど、HTMLをまともに書いたことがなかった。CSSなんて「画面を飾るやつ」くらいの認識。JavaScriptは名前しか知らなかった。
アセンブラでブートローダーを書ける男が、`<div>` タグの意味がわからない。
笑い話みたいですけど、本当の話です。
PHPを初めて触った時、最初に思ったのは「なんて雑な言語だ」でした。型がゆるい。メモリ管理を意識しなくていい。Cの感覚からすると、気持ち悪いくらい自由だった。
でもその「自由さ」が、Webの世界では武器だった。アイデアを素早く形にできる。動くものがすぐ作れる。完璧じゃなくても、まず動かして、それから直す。
アセンブラの世界とは真逆の哲学だった。
---
## AIに教わる68歳
そしてAI。
2024年、ChatGPTが世界を変えた頃。僕は66歳だった。
「AIを使ってサービスを作りたい」と思った時、OpenAIのAPIドキュメントを読んで愕然とした。JSON。REST API。Bearer Token。Node.js。Python。
知らない言葉だらけだった。
でも、ここで諦めなかった理由がある。
AIに聞けるからだ。
わからないことをAIに聞く。AIが教えてくれる。それを実装する。エラーが出る。エラーをAIに聞く。また教えてくれる。その繰り返し。
「68歳がAIに教わりながらコードを書く」——格好悪いですか?
僕はそう思わない。
40歳でC++の書き方を後輩に教わった時と同じだ。教わる相手が人間からAIに変わっただけ。いいコードが書ければ、師匠が誰だろうと関係ない。
実際、AIアシスタントとの共同開発は驚くほど生産的だった。僕のアセンブラ時代の経験——メモリ効率を意識する癖、デバッグの勘、システム全体を俯瞰する視点——は、AIが生成するコードを評価する時に役立った。
AIは速い。でもAIは「なぜそう書くべきか」の判断を間違えることがある。その判断は、40年の経験がある人間の方が正確だ。
若い感性とベテランの判断力。AIの速度と人間の経験。組み合わせれば、年齢はハンディキャップじゃなくなる。
---
## 言われた言葉の一覧
振り返ると、キャリアの節目ごとに「無理だ」と言われてきました。
「アセンブラ屋にCは書けない」——書いた。
「基盤系にアプリの話はわからない」——わかった。
「40代でC++を一から学ぶのは遅い」——学んだ。
「定年後に起業なんて無謀だ」——起業した。
「Webを知らない男にWebサービスは作れない」——作った。
「68歳がAIを使いこなせるわけがない」——使いこなしている。
一つ一つ、コードで答えてきた。
反論はしなかった。議論もしなかった。ただキーボードを叩いて、動くものを見せた。
動くコードは嘘をつかない。年齢も肩書きも関係ない。コンパイルが通るか。テストが通るか。ユーザーが使えるか。それだけが事実だ。
---
## 「無理だ」と言う人の正体
「お前には無理だ」と言う人は、大きく分けて二種類います。
一つは、心配してくれている人。「失敗したら傷つくから」「リスクが高いから」という善意。親や友人に多い。
もう一つは、自分が挑戦しなかった人。自分がやらなかった選択を、他人がやろうとしているのが不安な人。悪気はない。でも「やめとけ」と言うことで、自分の選択を正当化している。
どちらの場合も、言われた側がやるべきことは同じです。
感謝して、聞き流して、コードを書く。
心配してくれている人には「ありがとう、でもやるよ」と。
挑戦しなかった人には、言葉ではなく結果で返す。
---
## 今も言われている
68歳になった今も、言われます。
「もういい年なんだから」
「十分やったんだから休めば」
「体を壊すよ」
体を壊す、は正直怖い。目はかすむし、肩は凝るし、深夜のコーディングの翌朝は起き上がるのに時間がかかる。
でも、パソコンの前に座ってエディタを開くと、不思議と手が動く。
今日はこの関数を直す。今日はこのバグを潰す。今日はこのセキュリティ対策を入れる。
小さな「今日」の積み重ねが、kitemir.jp になった。shop.kitemir.jp になった。asp.kitemir.jp になった。3つのサービスが動いている。課金が動いている。バーチャル試着が動いている。
全部、「お前には無理だ」と言われたことばかりだ。
---
## あなたへ
この記事を読んでいるあなたが何歳かはわかりません。
20代かもしれない。30代かもしれない。僕と同じ60代かもしれない。
年齢は関係ないと言いたいけれど、嘘はつきません。年齢は関係ある。体力は落ちるし、新しいことの吸収は遅くなる。それは事実です。
でも、こうも言える。
**「無理だ」と言われた回数と、それでもコードを書いた回数は、年齢に関係ない。**
20代でも「無理だ」と言われる。50代でも言われる。68歳でも言われる。
大事なのは、言われた後にどうするか。
机に座る。エディタを開く。一行書く。
それだけでいい。一行書いたら、次の一行が書きたくなる。気がついたら朝になっている。気がついたらサービスが動いている。気がついたら「無理だ」と言った人が黙っている。
---
## コードは裏切らない
最後に、僕が40年間信じてきたことを書きます。
**コードは裏切らない。**
人は裏切ることがある。評価は不公平なことがある。運は味方しないことがある。
でもコードは、書いた通りに動く。正しく書けば正しく動くし、間違えれば間違える。そこに忖度はない。年齢への配慮もない。肩書きへの遠慮もない。
この残酷なまでの公平さが、僕は好きです。
68歳だろうが20歳だろうが、正しいコードは正しい。動くものは動く。
「お前には無理だ」と言われた時、反論する必要はない。コードを書けばいい。動くものを見せればいい。
それが、アセンブラの時代から変わらない、僕の戦い方です。
---
## 次回予告
vol.13 では、このシリーズの最終回として、「完成しないサービス」の話をします。
kitemir.jp も、shop.kitemir.jp も、asp.kitemir.jp も、まだ完成していない。たぶん、永遠に完成しない。
でも「完成しない」ことは、悪いことじゃない。
**完成しないサービスと、終わらない開発日記——これが僕の生き方だ。**
それが、68歳のエンジニアの結論です。
---
*68歳、まだ夢の途中。*
*「無理だ」と言われた数だけ、キーボードを叩いた。*
*マインドシード研究所: https://pyol.net/*
*Protect Your Only Life——こころに寄り添うテクノロジー*
