![見出し画像](https://assets.st-note.com/production/uploads/images/133508753/rectangle_large_type_2_231a4deddc4670902fe8be7bd4340fd8.png?width=1200)
【学生に捧ぐ】30年プログラマが学生時代にしていたこと3選
プログラミングを30年以上しているムンペイと申します。
サムライアプスという名前でチーム活動もしています。
私が小学5年生の時に、自営業で新し物好きの父が、仕事で使うために買ったPCを、日中の父不在の時間に借りるようになったことから、プログラミングにはまりました。そんな私が、入門期である学生時代に行っていたことを3つ挙げてみたいと思います。
1.ベーマガの写経
やはり入門期に一番の原動力になったのは、ベーマガの写経です。
私がPCに触り始めた頃は、まだインターネットはなく(※1)、ソフトウェアの入手も、何とかStoreやSteamのような便利なものは当然存在せず、家電量販店のPCコーナーで箱に入ったフロッピーディスクを購入するのが主流の時代でした(CD-ROMもまだありません)。小学生の関心事といえば、やはりゲームをやりたいわけですが、ゲームソフトウェアは多くが5,000円~10,000円程度と今とそう変わらない値段で、小学生には大金でした。
※1:正しくは、一般人は使えなかったという意味です。主に大学の研究者のみがWIDEというネットワークを使っていた時期です。詳細は総務省がよいまとめを書いています。
そんな時代ですので、情報源はほとんどが本だったわけですが、どういう経緯だったか忘れましたが、マイコンBASICマガジン(通称「ベーマガ」)という月刊雑誌に出会いました(※2)。
ベーマガには、BASICという初心者向けのシンプルなプログラミング言語で書かれたプログラムをユーザーが投稿するコーナーがあり、掲載されたプログラムを自分のPCに入力するとゲームができたのです。雑誌なので当然ですが、紙に印刷されたプログラムを目視しながら、自分のPCのターミナルに一言一句間違わないように入力していきます。まさに写経です。
しかし、これを何か月も何年も続けていくと、文法もそうですし、何をするための部分であるかや定番の書き方なども自然と覚えていきました。
そのうち、投稿もしてみたいということにもなり、自分で考えて作ったりもしました。残念ながら掲載はされませんでしたが・・。
※2:この本の思い出はいろいろな方が語っていますので本稿では割愛しますが、当時の熱を感じるまとめがありますのでぜひご参照ください。同世代の人がたくさん投稿していたんだなという発見がありました。
2.NIFTY-Serveで凄いコードを読む
今もそうですが、凄腕プログラマーのコードを読んだ経験は参考になりました。
私のプログラミング入門期はインターネット前夜の時代でしたが、パソコン通信というものがあり、PCが家にきて数年後に、我が家でもパソコン通信を導入しました。最大手のNIFTY-Serveです。
パソコンで通信するという一般的な意味ではなくて、クローズドなパソコン通信サーバーにデータを送ったり取り出したりすることで情報共有する仕組み(やサービス)をパソコン通信と呼びました(※3)。
※3:パソコン通信もいろいろな歴史がありますがWikipediaを貼っておきます。
当時私が出入り・・というかROM(Read Only Member)していたのは、Bio_100%(ばいおひゃくぱーせんと、と読む)が主なメンバーだったSIG(グループ)でした(※4)。Bio_100%は当時は学生や少々上くらいの世代の同人グループでしたが、メンバーはその後 MicrosoftでDirectX を作ったり、ニコニコ動画を実装したり、たまごっちを作ったり、と誰もが知る歴史的な仕事をされています。
Bio_100%もやはりゲームを主に作っていたわけですが、当時の低スペックなPCで、なぜか高速にキャラクタが動き、なぜかマルチトラックの音楽が流れ、面白いゲームを実現していたのです。もちろんBASICではなく、おそらくアセンブラが使われていたと推測します(C言語も当時はコンパイラが微妙だったのではないか)。
※4:公式のヒストリーサイトがあります。
そんなBio_100%が活動しているグループですので、それ以外にも猛者がたくさん集まっていました。
私がソースコード研究した中で一番記憶に残っているのは、かみやん氏のポリゴン描画プログラムです(※5)。グラフィックスの関心が2Dから3Dに移りはじめブームになりだした頃でした。確かProjectDPのほうだったと思いますが、半透明やグラデーションなど様々な機能に対応しながらCPUで高速に描画するために、ジャンプなどの遅い命令を極力避けたコードをコンパイラが生成できるよう、機能ON/OFF毎に全部コードが専用に書かれているという狂気の設計でした!コード自動生成も組み合わせて作られていたように記憶しています。
ちなみに、まもなく3D対応GPUが進化を加速させていき、ポリゴンをCPUで描画することはなくなっていきました。
※5:なんと当時のウェブサイトが維持されていました。リンクは切れまくってますが、ありがたいです。 また、現在はibisPaintの開発元の社長をされているようです(リンク)。
もう一つ覚えているのは、Bio_100%のメンバーでもある戀塚明彦氏の、WinGLというライブラリです。Bio_100%のようなゲームが作れるライブラリで、課金するとソースコードが開示されました。5,000円ほどと当時学生の自分には安くない金額でしたが、その超絶技巧に触れられる貴重な機会ですので購入しました。
3.Windowsアプリ開発用ライブラリを書く
現在Windowsのアプリ開発というと .NET Framework で UWP だとか WFP だとかを使うのが王道で、それ以外にもUnityでやるとかStreamlitでやるとか間接的な方法もあると思います。しかし、当時は Windows も進化の途上で 、Windows API 自体は今にも続く形でほぼ確立していたものの、Windowsアプリ開発用の良いフレームワークは定番が決まっていませんでした。Microsoft の MFC と、Borland の OWL あたりが雌雄だったと思います。どちらかというと、MFC はお堅い感じで垢ぬけない印象、OWL のほうがオブジェクト指向をうまく使っていてお洒落で洗練されていたという評判だったという記憶がありますね。
そんな時代なので、自分でも Windows API をラップしたフレームワークライブラリを作っていました。APIを触ることで Windows のような大きなシステム/OSで必要となる概念を多数学ぶ機会になりました。例えばハンドル(リソース操作のための抽象的な識別子)が代表的です。そのほか、イベント駆動(アクションの応答としてプログラムする考え方)、グラフィカルなユーザーインターフェース(GUI)、入力デバイス、ダイナミックリンク/実行時リンク、などなど。
特に公表などはしていませんでしたが、自分では WinG と組み合わせたサンプルプログラムを開発する時などに使っていました。
学生時代の時間を使えると強い
私は情報系の大学を修了していますが、コンピュータアーキテクチャのような理論的なことは別にすると、プログラミング技術に関しては大学の講義で新しく学んだことはなく、すべて入学前に独学した内容がベースになっています。今でも、言語やフレームワークを新しく覚えることはありますが、考え方はその時のものがベースです。
自分がこうなったのは、当時コンピュータに興味を持ち、学生時代のたくさんの時間を投入できたことがとても大きいと思います。また、ベーマガや、パソコン通信のように、切磋琢磨するコミュニティと環境があったことも必要なことでした。
副業や情報教育でプログラミングへの注目もかつてないほど高まっていますが、プログラミング学習は一夜にしてマスターできるものではなく、時間と努力も必要です。
しかし現在は、ネットワークとSNSの発展で情報の入手とコミュニケーションが容易になりすぎて消費ばかりになっていると感じます。タイパが悪く感じるかもしれませんが、写経のような模倣から始まる学びを経てこそ、自分のものにしていくことができるのではないかと思います・・・が、この話はまたの機会に。
これにて御免!
(見出し画像はCanvaで作りました)
この記事が気に入ったらサポートをしてみませんか?