世界を動かす技術を、日本語で。

子供のためのコンピューティング

概要

  • 子供時代のコンピュータ体験 についての思い出
  • 1992年の工業都市 での貴重なコンピュータラボ
  • LOGOやゲーム を通じた初期プログラミング経験
  • 保存できない環境 でのアナログな工夫
  • 30年以上経っても残る記憶 の鮮明さ

幼少期のコンピュータ体験

  • 1992年、8歳時に新しい学校 へ転校、そこにコンピュータラボが存在
  • 小さな工業都市 での珍しい設備、シリカ工場からの中古IBM PC互換機
  • 月に2時間のみのラボ利用、その短い時間で新しい世界を体験
  • ラボ入室時は靴を脱ぐ儀式、「高価な機械なので埃を防ぐ」と先生
  • モノクロCRTモニター、ハードディスクなし、数百KBのRAMのみ
  • 5¼インチフロッピーディスクを使い分け、MS-DOSとLOGOを起動
  • LOGOでのプログラミング、ノートに手書き保存が必須
  • プログラムのテストは自宅で紙とペン、グラフ用紙で結果をなぞる
  • ラボで30分だけ実際に実行、クラスメートとコードを共有
  • 最初の「オープンソース」体験、ノートに鉛筆でコピーし合う文化
  • 先生の課題達成時にはゲームも許可、初めてのゲームはMoon Bugs
  • お気に入りのゲーム はSpace Invaders、Bricks、Grand Prix Circuit
  • Space Invadersへの憧れ、GW-BASICの知識と時間不足で自作は断念
  • 大人になってからAndromeda Invadersを開発、30年越しの夢の実現
  • Digger(Windmill Software)も人気、自己起動ディスクで手順が簡単
  • Grand Prix Circuit(Accolade Inc.)の3D表現に衝撃、GPEGAコマンドで起動
  • 音楽や3D世界の体験、キーボード操作で仮想空間を走る驚き

記憶に残る情景と感覚

  • ラボの複数台PCの動作音やPOSTのビープ音、空調の効いた独特な匂い
  • その匂いは今でも時折どこかで感じる、一瞬で当時に戻る感覚
  • 30年以上経っても色褪せない魔法のような体験、強烈で鮮明な思い出
  • 子供時代のコンピューティング体験が人生の原点、探究心と驚きの記憶

Hackerたちの意見

RPGツールを使っていた頃、たぶん9歳くらいの時に、突然「変数」が理解できた瞬間を今でも覚えてる。HTMLとかは前からやってたから、まるで新しい世界が開けた感じだった。VB6のプログラムも作れるようになって、すべてが一気に「ハマった」んだよね。基本を理解すると、子供やティーンエイジャーの時期はすごく早く進めると思う。だから、うちの子には早いうちからコンピュータの基本を理解させたいな。これが、世界がどうつながっているかを理解する鍵になるから。

私も子供の頃、PHPの「クラス」が何なのか理解するのに苦労したし、なんでそんなものが必要なのかもわからなかった。無駄な抽象に思えたけど、最終的には理解できて、Zend Engineのことが前よりずっとわかるようになった。ソフトウェアエンジニアリングにも興味を持ち始めたし。でも、後にまた目が開かれて、今はクラスを避けるようにしてる。

なんでマイクロソフトが子供たちにプログラミングを促すために手頃なライセンスを用意しなかったのか、ずっと疑問だった。学校のコンピュータ室にはVisual Basicがあったけど、週に1時間しか使えなかったし、図書館のコンピュータにはライセンスの関係で導入できなかった。結局、QBASICしか使えなかったけど、それでも素晴らしかった。でも、やっぱりWindowsアプリを作りたかったんだよね。Visual Basicを手に入れるためには、MSDNの学術サブスクリプションに1000ドルもかかるし。まあ、結果的にはWindowsアプリの代わりに、親のISPのウェブホスティングアカウントでウェブページやJavaScriptゲームを作って、いつか自分の.comドメインを買える日を夢見てたよ。

…営業がCoPilotやMS365のサブスクリプションで学校を攻撃するのに忙しいから、営業の人たちはこれに目を向けてないんだよね。もし学校や大学で子供向けのプログラミング活動を推進したら、もっと早くMS製品にハマる人が増えたと思うけど。

彼らは他の人からBASICを奪うのに忙しかったんだよね。 https://www.folklore.org/MacBasic.html

自分のコンピュータ人生はBBC Model Bから始まったんだけど、これにはBASICが内蔵されてて、ライセンスもいらなかった。ソフトウェアを書くのにお金を払わなきゃいけないOSって、なんかおかしいなってすぐに気づいたよ。40年後の今、Microsoftの製品を使わずにやってこれたのは成功だね。

ボーランドやGNU gccが市場に入るまで、システムがどれだけ閉じられていたかをみんな忘れがちだよね(MasmやPascalを使わない限り)。MS Visual C++やVBのマニュアルとコンパイラが一時期8千ドル以上してたのを覚えてる(今のドルで言えばほぼ倍だね)。公式ドキュメントなしでアプリを作るのに検索エンジンがどれだけ重要か、みんな過小評価しがち。FOSSを支援することは、便利さ以上の意味があるんだ。閉じられたエコシステムは、どんな年齢でも楽しくなかったってみんな覚えてるから。GW-BasicやVB3.0は子供たちがプログラムを作るのを簡単にしてくれたけど、ライセンス費用以外にも問題があった。Visual Studio以前は、スタンドアロンのバイナリを作るのがほとんどの人にとって難しすぎた。今や、平均的なAAAゲームはSteamで約40GiBもあるし、g++やclangが標準のツールセットになってる。楽しい時代だったな、=3

俺の頃は、大人たちはテクノロジーに全然無知だったよ。コンピュータを起動するのもやっとなのに、プログラミングを教えてくれる人なんていなかった。今は少しはマシになってるといいけどね。

私にとっては「ソースを見る」時代だった。2001年頃、GeocitiesのページからHTMLをコピーして、Notepadで編集してた。プログラミング言語が何かは知らなかったけど、背景色を変えたりマルキーを追加したりすることはできた。その瞬時のフィードバックループ、保存して、Alt+Tabして、リフレッシュするのがすごく楽しかった。

学校にはWindows 3.1の古いマシンがたくさんあって、タッチタイピングのプログラムが入ってた。それが唯一使えるもので、初めての家族用コンピュータは1995年に買ったんだ。確か166MHzのPentiumで、16MBのRAMがあった。値段は3500〜4000ドルくらいだったけど、インフレ調整はしてないよ。追記:3年後にHalf-Lifeのコピーを手に入れたんだけど、発売直後だった。うちのコンピュータはスタンドアロンのグラフィックカードがあったけど、ゲームを動かすのがやっとだった。あの頃は、ゲーマーで最先端のグラフィックを追いかけるのは本当にお金がかかった。前は電動タイプライターを使っていて、主な目的は文書作成やビジネス活動だった。プログラミングの最初の経験はHTMLファイルの編集だった。その後、図書館に行ってプログラミングの本を探したけど、見つけたのはパスカルかデルファイの本だけだった。田舎の小さな町に住んでいて、人口は3000人。そこで「コンピュータにすごく詳しい子供」がいるって聞いて、彼に連絡したんだ。彼の部屋に入った瞬間、大きな「Borland C++」の箱が目に入った。彼は自分が作っている基本的な3Dフライトシミュレーターのクローンや、ドゥームのクローンを見せてくれた。すごく感動したよ。結局、彼はドットコムバブルの時に大成功を収めて、大学をスキップしてそのまま就職した。数年後、高校に入った時、最近町に引っ越してきた半引退の開発者がいて、学校でJavaのプログラミングクラスを教えてくれた。すごく優れた先生で、その瞬間にコンピュータの仕事がしたいと思ったんだ。

自分のキャリアは、二つの大きな幸運のおかげで成り立ってる。最初は、父が1990年代初頭に自営業の出版ビジネスのためにPCを買ったこと。で、そのPCには当時のほとんどのPCと同じようにQBasicと、内向的な子供が遊べるGORILLA.BASみたいなゲームのソースコードがプリインストールされてたんだ。二つ目は、資金がそこそこ潤沢なコンピュータラボがある高校に通ったことと、オープンマインドなコンピュータの先生がいたこと。信頼できるって示せば、基本的に好きなことをやらせてくれた。うちの学校はほとんどがMacだったけど、自分は高校時代にMicrosoftのファンだったから、卒業する頃には学校の新聞のためにWindows NTのファイル&ウェブサーバーを立ち上げる方法を見つけてた。もう一人はLinuxオタクで、学校の製図室でRedHatを使った似たようなことをやらせてもらってた。興味と機会が出会って、色々なことが繋がって、次の25年間は技術に関わってきた。今心配なのは、技術がこんなに閉じられてしまっていること。今の学校で、私たちが持っていたような自由を許しているところは本当に少ないだろうね。スマホにはIDEがプリインストールされてないし、「未承認」のアプリをインストールするだけでも叩かれてる。子供たちのためにも、業界やツール、OSはもっとオープンであるべきだよ。いじれる環境が必要なんだ。そういう環境でこそ、やる気のある子供たちが学ぶから。私たちの優秀な人材が育たないのは、どこかのヘッジファンドのROIを最大化するために物事を閉じてしまったからだ。アメリカの金融化は大きな誤りだった。

以前、タッチタイピングの試験のテキストがネットワーク上のどこに保存されているかを発見したことがあるんだ。それ以降、面白い試験ができたよ… 編集:まあ、思春期の自分には面白かったけどね…

あの頃のグラフィックプログラミングの良かったところは、画面に何かを描くと、それがプログラムが消すまで残っていたことだね。これのおかげで、簡単にかっこいいグラフィックを作れた。例えば、円のポイントを計算して、一つずつ描いていくと、画面には円が描かれていくのが見える。「現代」のグラフィックライブラリ(たぶんSDLも)は、毎フレーム全体を再描画するから、同じ効果を得るためにはプログラムが前に描いたポイントを覚えておかなきゃいけなくなった。前のワークフローはグラフィックプログラミングをすごく楽しくしてくれたのに、今の「高速レンダリングパイプライン」は退屈であまり楽しくない。こういうことが一つずつ、コンピュータの楽しさを奪っていったんだ。

久しぶりだね(もう10年以上経ったけど)。SDLは新しいコンテンツをレンダリングする前にクリア関数を呼ばなければ、画面に内容を残すことができると思う。ただ、ウィンドウのサイズ変更とどうなるかは分からないけど。

SDLは比較的高レベルなAPIで、フレームバッファスタイルのグラフィックスは問題なく動くよ。X11の非合成ウィンドウマネージャーでは、ウィンドウが動くと面白いグリッチが出ることがあると思う。

いわゆる「保持型」と「即時型」のグラフィックスライブラリは、ほとんどのプラットフォームで存在し続けていて、好きな方を選べるよ。

あなたの投稿が、深い記憶の何かを呼び起こした。80年代初頭、IBM PCが登場した時、Herculesのグラフィックカードがすごくて、CGAよりも良いグラフィックスを提供してた。父の友達の家でそれを触って、円を描いたりしてたんだけど、彼のコンピュータではグラフィックスが保持されてたんだ。画面をクリアする方法を見つけなきゃいけなかったけど、私のPCはHerculesカードがなかったから保持されてなかった。今まで何が起こっていたのか理解できなかったよ。

僕はもう年齢的に十分大人で、運も良くて、初めてのコンピュータ体験が小学校のテレタイプだったんだ。町が所有してたミニコンピュータに繋がってたんだよ。接続は音響カプラのモデムとアナログ電話回線で、300ボーだった。すごくワクワクしたのは、すごく基本的なBASICプログラムを書いて、その結果が印刷されるのを見ることだった。CRTなんてなくて、すべてテレタイプを通じてだった。キーボードとガタガタのプリンターだけ。

この音声は300ボーで、普通のオーディオカセットに録音して使えたんだ。再生してモデムに入力すれば、データを取り出せたよ。

1985年にC64を手に入れたんだ。今はエミュレーターやYouTubeの動画でそのグラフィックや音を再体験できるけど、一つだけ忘れられないのは、コンピュータをオンにした瞬間にケースから漂ってくる温まった基板の匂いだね。噂によると、その機械に付いてきたカセットプレーヤーはテープヘッドが設定ミスしてたらしい。インターネットがなかったから、なぜほとんどのゲームがロードできなかったのか誰も知らなかった。でも、プログラムの保存と読み込みはできたんだ。それで、ユーザーマニュアルや図書館で見つけたプログラミング本のゲームリストからプログラムを書き始めて、カセットに保存してた。ユーザーマニュアルには基本的なチュートリアルだけじゃなくて、機械のグラフィックやスプライト、音、他の機能も載ってたから、BASICを書くコツをつかんでいくうちに、ハードウェアで作れるものはほぼ無限だって気づいたんだ。コマンドがハードウェアにどう作用するかはあまり分からなかったけど、特定の数字を特定のアドレスに入力すれば、スプライトを画面に表示させたり動かしたりできるって知ってた。カセットプレーヤーを修理してもらって、テープヘッドの調整を学んで、やっと機械に付いてきたゲームを全部ロードできるようになったとき、プログラミングに夢中になって、欲しかったゲームがそれほど面白く感じなくなったんだ。誰かが座ってそのゲームを作ったって知って、遊ぶ代わりに自分でも同じことができるって学べるんだなって思った。それ以来ずっとプログラミングしてるよ。

最初にC64を買うのに十分なお金しかなかったのを覚えてるし、打ち込んだプログラムのチェックサムが合ったときは本当にホッとした。儚い瞬間だったけど、それがなければカートリッジのプログラムだった。次に買ったのはテープドライブで、最後にハードドライブだった。Apple IIやSinclair、Ti99などの競合機器と比べても、機能に対してはまだお得だと思う。

MSDOSの起動を最適化して、ゲーム用に十分なメモリを確保する技術を覚えてる人いる? gorillas.basを調べたりしたこともあったな。僕にとって、これがもっと学びたい、実験したいって気持ちに繋がったと思う。実際、息子にも似たようなクリエイティブな探求を促したいんだけど、今のゲームや動画に引き込まれてどうなるか分からない。

かなり前のことだけど、少しだけ覚えてる。設定ファイルをめちゃくちゃにしちゃって、隣の家に走っていって、動いてる設定ファイルのコピーを作ったこともあったな。(Himem.sys?)

そうそう、DEVICE(HIGH)の行をいじったり、FILES=やBUFFERS=を調整したり、MEMMAKER.EXEを何度も実行したりしてたけど、結局本物にはなれなかったんだよね。本物っていうのは、メーカーがやりたいことじゃなくて、自分がやりたいことをマシンにさせることだと思う。今の子供たちには、Luaみたいな合理的なモッディングAPIを持つゲームを探してあげるといいかも。理想的には、マルチプレイで友達に自分の作品を見せられるようなやつね。そこから、Luaを使って全体のゲームを完全にコントロールできるLÖVEみたいなパッケージを見つけて、プログラミングをリアルにするために必要なことを探求できるように手助けしてあげるといいよ。もし下位レベルに興味があれば、もっと深く掘り下げる手伝いもしてあげてね。でも、モッディングやスクリプティングが始めるには一番いい場所だと思う。

確かに:config.sys、autoexec.bat、EMS、HIGHMEM、そしてあのひどい初期のサウンドブラスターのドライバーやマウスドライバー、ネットワークドライバー…一番動かすのが難しかったのはQuarantineだったかな。でも、間違いなく最高のゲームの一つだったよ。あの時代にしてはすごく想像力豊かだったし、オーストラリア製だし!後に有名になるバンドの音楽も使われてたし!

僕も若い頃からコンピュータを使い始めて、大好きだったし、若い頃には自分の任天堂も手に入れたんだ。今の反スクリーンの流行には複雑な気持ちがある。息子はまだ小さいし、妻は彼にスクリーンを全く使わせたくないみたい。TikTokやFacebookは使わせたくないけど、もしかしたらApple IIを買ったり、Raspberry Piのエミュレーターをセットアップして、オンラインでは遊べない昔のゲームをやらせるかもしれない。

今、うちの子供たちも同じような状況だよ。厳格な「スクリーン禁止」の考え方は、子供の健康に関する非技術的なリーダーたちが持っている広い視点だと思うし、その気持ちは理解できる。ただ、子供の頃に技術をいじったり実験したりできたことで生計を立てている身としては、もっとバランスの取れたアプローチを考えている。エアギャップのLinuxボックスをセットアップするかもしれないし(WindowsはXPの頃からずいぶん進化したけど、全然違う方向に行っちゃったし)、子供たちに「自由にやらせる」つもり。そうすれば、大手テクノロジーのサイコループにハマったり、YouTubeのカラフルなドーパミンマシンに吸い込まれたりすることもないと思う。これが「スクリーン禁止」の背後にある全ての動機だと思う。適切な露出が不可欠だと思うんだ。

この投稿にアップボートしたのは、a) 人々の初めてのプログラミング体験の思い出を聞くのが大好きだからと、b) Susamのウェブサイトがシンプルで素晴らしいから。広告もないし、AIアプリのダウンロードを促すこともないし、動画もテキストをサポートしてるのがいいね。大好きだよ!