IT業界ジュニアのためのオススメ書籍(しょっさん編)

昨日、”oshiire*BLOG» Blog Archive » IT業界ビギナーのためのオススメ書籍(しょっさん編)” ということで、結局 Z80かよ、みたいな流れで、ただの思い出話に興じたお話でしたが、折角なので、続けていきます。
今日は「IT業界ジュニア」の方向けです。意味分かりませんね。この後、シニア→エキスパート→エヴァンジェリストと進みます。

そこで、本日も「オススメ書籍」について、とても深く頭を悩ませてみます。

しょっさんオススメの書籍とは

はい、自信を持って次の4冊をご紹介します。ジュニアクラスまでくると、簡単なアセンブラ程度は読めるメンバーになっているので、この程度は読みこなせないと意味がありません。

全部絶版かつX68k絡みかよ( ゚д゚ )クワノッ!!と思わないで、入手できたらぜひ読んでみてもらいたいです。某「はじめて読むxx86」シリーズは、良書なのですが、いかんせん Intel系CPUという重荷を背負った、理解のむずかしいアーキテクチャです。
一度、680×0系のエレガントなアセンブラを経験しておくことで、Intel の大罪を理解しつつ、アーキテクチャの様式美について自分の思想を持つことができるようになります。
しかも、X680x0 はありがたいことに、多くの”X68000 エミュレータ|エミュポータル“が提供されていて、しかも SHARPから BIOS/IPL-ROM/OS が無償で提供されたことで、利用するための垣根は取り払われました。
また、一時期は”ズーム (ゲーム会社) – Wikipedia” において、一部の傑作ゲームのイメージが無償配布されていたなどして、ゲーマー向けにもオススメ感があります。

まず、X680x0 で世紀末の時代を体験して、懐古してください。
ネタで書いてるようですけど、ネタではなく本気のオススメです。ここまでハードウェアへ言及した良書というものはなかなかありません。CPUから、MemoryやVRAM、I/O への Direct Access がどのような経路で、信号が通っていくか、具体的にアセンブラで示すとどのようなIN/OUTになるか、網羅的にここまで具体的に示されている本はないでしょう。とにかくオススメです。
ある特定のハードウェアアーキテクチャを理解していれば、現行のハードウェアでも、それの拡張されたパターンなので理解しやすいと思われます。

この流れで環境本がはいってないとか、素人とか思われた方、あれはまちがいが多いので、ジュニアクラスにはオススメできません。あれは、エキスパートクラスの人がまちがい探しをするための本です。

X68000時代

折角なので、昨日と同じ流れで、X680x0時代を回想します。

「ジュニア」世代というのは、実際に業務に就く直前レベルの扱いで考えています。レベル高すぎんじゃねぇかよ( ゚д゚ )クワノッ!!と思われるかも知れませんが、たいていの会社が、まともな体系だった研修コースを持っていない今、会社にはいる前に基礎は押さえておくべきと、あたしは考えます。
社会に出てからでは、好きに解析するような時間もありません。学生時代はともかくコンピュータの動作原理を学んでください。昼夜を問わず学ぶことで開かれる世界があります。

この時代に彼女を作ると、寝る時間が無くなりますが、10代後半はその程度は何とかなります。ぜひ、この時代に彼女を作っておいてください。会社へ入ってから作るのは、至難の業です。高校→大学の間で必死に彼女を作ることをオススメします。どんな失敗をしても、最悪、卒業すればクリアーされる可能性があります。キャリーオーバーするかも知れませんが(謎

閑話休題

ある程度、自分で好きかってできるようになった上で手にする、高級ワークステーションを前に、人はたいてい次のような活動遍歴を進みます。
この流れに乗れなかったら、IT業界は向かないと思って差し支えありません。たいていのダメ人間はこのような変遷をたどります。

  1. ゲームする
  2. 高級言語でプログラムしてみる
  3. やっぱりアセンブラする
  4. C言語できるオレかっこいい
  5. UNIX環境にしたがる

ゲームする

新しいハードウェアを手に入れてしてみることと言えば、この四半世紀、ほとんどのユーザがそうしてきたように、まず「ゲーム」をします。
新しいハードウェアとセットでゲーム買ってくる人もいますが、新しいハードウェアにすると、過去のハードウェアで動いていた、「重い」ゲームを試してみて、軽くなっていることに感動し、それでしばらく堪能して封印します。

勿論、私もそうです。
当時、モニタ+X68000EXPERT 本体のセットで 5x万円とかしました。今、こんなお金出したら、ステキなサーバが買えます。ちなみにフルラックも定価で買えます。
高専入学にあわせて、祖母が大枚をはたいて一括で購入してくれました。この祖母の活躍がなかったら、私はこの業界に残ることはできなかったと予想できます。ホントに感謝してます。ありがとう、おばあちゃん!!(見てない)

「高専に入ったら、この素敵なマシンでバリバリプログラム書いて、ゲーム作るぞーヽ(`Д´)ノウワァァァン!!」

なんて考えていたこともつかの間、購入当時はいろんな意味でヤバイ年で、1989年に「1台のX68000では不可能。二台必要」とまで言われた、アフターバーナーIIを筆頭に

  • ボスコニアン
  • A-JAX
  • 第四のユニット
  • パックマニア
  • モトス
  • SUPER大戦略68K
  • R-TYPE
  • サンダーブレード
  • ファンタジーゾーン
  • アークス
  • 夢幻戦士ヴァリスII

など、豊作すぎて死ぬしかありませんでした。個人的には、V’BALL やねじ式とかもお気に入りです。他にも、鍛え抜かれたゲームがたくさん「移植」された年でした。
完全体のゲーマー生活を送っていたこの頃は、朝から晩までゲームをやっていても飽き足らず、寝るの? いつ寝るの? 今でしょ! と言わんばかりに朝までゲームに興じる週末を過ごしていました。ホント幸せです。

X68000は、「ゲーマー専用ワークステーション」とも言われ、当時、SHARP のステキ度は世界一で、本気でSHARP への就職も考えたほどでした。その話はここではしないとして、今後もキチガイじみた良作を提供する X68000で「ゲームしない」という選択肢はありえませんでした。

結局のところ、初期ほどではなくても、1GB HDD(FUJITSU製)が壊れるまで、ずっとゲームをやっていました。それくらい、ゲームと相性の良い、素敵なアーキテクチャでした。
とくにフロッピーディスクの I/Oと、アニメーションは完全に分離して進行させられる程度の並行度を持っていたので、ゲームのOP/ED はずっとディスクアクセスしながらも、途中でローディング画面などはいらず、スムーズな展開で、他機種を圧倒するゲームが多かったと記憶しています。ADPCMで喋らせることが主だったのが、最終的にはPCM8 ((1音しか鳴らせない音声合成を簡易フーリエ解析によって、最大8音同時にリアルタイムミキシングして鳴らすという芸術的なプログラム。後にXVIや030向けにPCM16なども)) を使って、BGMのドラムや効果音をミキシングして鳴らすのが当たり前になり、時代を先行しまくっていました。

ゲーム生活で言うと、今でも持っていますが、次の2つのゲームは私の人生を変えたといって過言ではありません。
これらのゲームの所為で、社会人以降、まともにアクションゲームを楽しむことが出来なくなりました。ある意味、ココがアクションゲームの完成形です。

  1. 悪魔城ドラキュラ (X68000版) – Wikipedia
  2. ジェノサイド2 – Wikipedia

ゲームだけで、多分数年は話せる程度なので、この辺でやめておきますが、X680x0時代のゲームは最強でした。たとえ、「ぶたさん」でも妥協を許さない電波新聞社の移植が、とくに群を抜いてキチガイでした。
あと、「かってに移植」シリーズの Ys & Ys2 は、電波新聞社の明後日の方向に向いた移植とは異なり、完全に本物でした。X1/PC88のデータをぶっこ抜いて稼働させるソーサリアンを作った人たちも、今どこでなにをしているか分かりませんが、本当にありがとう。(見てない)

高級言語でプログラムしてみる

ゲームばっかりしていたら、5x万円がもったいないので、まずとっかかりとして、標準添付の”X-BASIC – Wikipedia“から始めました。”BASIC” とは名ばかりで、とっても Cライクな言語仕様で、MSX-BASIC からの流れ者にはとてもツライ時代でした。
なにがツライって、「FORI=0TO100:PRINTI:NEXT」ってやったらエラー出るんですもの。いや、エラーでるの当たり前なんだけどね。MSXとファミベがキチガイだったのね、ゴメンなさい。

また、これまでのBASICにはなかった「関数」も理解を妨げる代物でした。
GOSUB に代表される「サブルーチン」といったものは、似たような処理をさせるために昔から利用していましたし、BASICは Global変数が基本ですから、「関数」による Local変数の仕組みに最初は戸惑います。
意味分かりませんでした。

最初のうちは意味も分からず、ベーマガや”Oh!X – Wikipedia“に乗せられたプログラムを打ち込んでは実行し、修正してみての TRY&ERROR がまた発生です。残念ながら、X-BASICのリファレンスは標準でついてくるもので、何とかなってしまうらしく、X-BASIC入門書みたいなものは見つけられませんでした。
しかたがないので、Oh!X でたまに特集される X-BASIC入門みたいなもので、半泣きで学んでいた記憶があります。

しかし、これを学んだ所為で、C言語に苦労する羽目になります。

やっぱりアセンブラする

1993年前後にパソコン通信を始めます。
パソコン通信を始めるまでは、フリーソフトウェアを手に入れることは難しく、「X68000フリーソフトウェア 最新・ゲーム&ユーティリティ集」など、市場でフリーソフトウェア集を買うことで入手していました。
不思議な話です。

Oh!X や、フリーソフトのムックを読んでいて分かったことは「パソコン通信を始めると、ただでソフトがたくさん手に入る」と勘違いしたことです。
実際、無償のソフトウェアは多く、「ないものは作る」の精神のX680x0ユーザたちは、ほとんどのものを無償で提供していました。従って、ソフトウェア自体は、ほとんど無償で手に入りますが「通信料」が異常でした。
今でこそ、Internet定額料金で通信できる時代ですが、当時は2400baudのOMRONモデムで、都内のホストへ電話を掛けて通信すると、3分で10円かかっていた時代です。深夜でも4分10円くらいだった記憶があります。
そんな中、100KBを超えるような大規模なソフトウェアやデータなどを落とすと言うことは、致命傷の域です。2400baud で単純 300B/s程度です。100KB = 102400 / 300 = 341秒 → 20円!
たったの、とか言わないでください。たいてい 1MBを超えるような容量を落とし始めることになるのは、分かることでしょう。平気で 1日 200円かかるわけです。毎日やったらいくらでしょうか。ダウンロードだけじゃありません。

「電話代 ¥10,000- 超えてるんだけどなんで」

こわい時代です。チリもつもれば何とやらです。高校生がドムドムで働いて得られるお金は、月々 5万もいけば良い方でした。ぁぁこわい。
なんて話をしていたら「100万の請求きたことあるけど、これはいくら何でもおかしい、NTTの料金計算が間違えてるんだから取り消せ」と言って取り消させた猛者を知っています。毎日、北海道のホストに接続してチャットしてたらしいです。猛者です。猛者すぎるので、詳しいことは言いません。

さて、そうやってフリーソフトウェアを入手できるようになって嬉しかったことは「開発環境を無償で揃えられる」ことでした。
SHARP は、Cコンパイラ(数万円)や、アセンブラの入ったボーナスパック的なソフトウェア集(1万円弱くらい?)を準備していましたが、高校生がほいほい買って帰れる値段ではなく、いつもLAOXで涙をのんで帰っていたコロを今でも思い出します。ウソです、今久しぶりに思い出しました。LAOXも忘れてました、ゴメンなさい。

高価で買えなかった私に、パソコン通信ホストが提供してくれたのは、まさかの、本家アセンブラ(+リンカ)を光速 ((まさに光速と言うにふさわしい)) 改造していた「ハイスピードアセンブラ(HAS)」と「ハイスピードリンカ(HLK)」でした。Macroも使えるし、本家と互換あるし、それでいてキチガイのように光速にアセンブル+リンクするという一石何鳥? みたいなソフトウェアでした。
ここでやっと、私は、アセンブラ熱が盛り上がってきます。

何年も掛けて、多くの書籍を購入し、クロック計算しながら緻密にアセンブラで開発したりしていました。ラスタースクロールとか、モニタの垂直帰線にあわせてハードウェアぶったたくとかキチガイじみた所業は、X680x0ならではでした。これまで、X-BASIC でそこそこ高速だけど、制約の多い環境から取り払われて、はじめてアセンブラを手にした私は、MSX時代よりもさらにプログラミングの日々に入ります。
アセンブラとか低水準すぎて、意味わかんねぇよ、と思われるかも知れませんが、Macro展開 ((C言語で言う、プリプロセッサ)) が使えて、Magic number防止に定数定義などもできたお陰で、高水準言語チックな環境を提供していました。

なにが凄かったかというと、後々、公開された「panic」という動画再生アプリケーションがあります。これは、.pan 動画ファイルを再生するのですが、今のビデオ再生とは異なり、データを再生するマクロ言語を用いてアニメーションデータの再生を補助する仕組みでした。この「panic」データ、中身はアセンブラのマクロ展開で作られていて、データの中身にアセンブラで記述して、本家panicの機能を凌駕する意味不明なことも出来ていたと記憶しています。が、情報があまり見つからないので、誰か補足してください。

このように、Macro展開がキチガイだったがために、このMacroだけを使ってゲームを作ったり、アプリケーションを作るようなこともできました。それだけのことがアセンブラでもできるんです。ステキ。
「アセンブラとか…」と思われるかも知れませんが、ハードウェアを直接叩くことができますし、メモリ上でどのようにデータが配置されるか、プログラムがどのように実行されるか、手に取るように分かりますので、アセンブラ+デバッガの開発環境はバグ発見の最速手段でした。
また、この頃はCPUにキャッシュを積んでいなかったので、自己書き換えプログラムという、それこそ猛者だけが踏み込める領域があったりもして、「マシン語理解せずに、コンピュータ語らず」の世界観がそこにはありました。

「IT業界ジュニア」とは言っていますが、アセンブラは、ぜひ「ビギナー」にこそ学んで欲しいと、今日も皆さんに訴え続けます。

C言語できるオレかっこいい

そのうちアセンブラが飽きてきます。時間かかるんです。
それと、人に見せても勿論、自分で見直してみても、注釈入れてあっても理解できなくなってきます。これがアセンブラの運命か。

結局、人は開発効率に勝てないんだな… と、gcc/libc のセットをダウンロードしてみたり、購入したりして、ついに Cでの開発環境を整えます。学校では、まだPascalを習っていて、C言語は来年の必須とかの時代です。一足早く、Cの開発環境を準備した私は、まず「はじめてのC」的な書籍をあさって C言語を学びます。というか、実のところ、中学生の終わりころから C言語はどんなものかというのを見ていましたし、X-BASICを使っていたので、C言語なんともない( ´ー`)y-~~

なんていうのはウソでした。

初めてのコンパイル言語は意味の分からない、理解不能な WARNING と ERROR をたくさんはき続け、やっとコンパイルできたと思っても「システムエラー」や「バスエラー」でX68000自体が停止する始末。
張り切って意味不明な時代を過ごしました。頭を繰り返すは、”時代 (中島みゆきの曲) – Wikipedia” ばかり。
へたに X-BASIC でインタプリタで、適当なデバッグをするやり方を学んでしまったばっかりに、コンパイル言語でのデバッグの方法を思いつくことも理解することもできませんでした。ほんと、余計な言語習得は将来へ影響を与えますねヽ(`Д´)ノプンプン

それでも、C言語で記述しているボクはかっこいい( ´ー`)y-~~ 的な中二病を発症しつつ、だんだん使えるようになってきます。理解できるようになってきます。
そして良く言われる「ポインタと構造体」の壁は、実はなんともないのです。アセンブラをやっていると、ポインタ自体は当たり前のことですし、データは構造体のようにもって処理することが当たり前、どれもこれも当たり前なんです。「こんなことがハードルとか言われる意味が分からないな…」などと思うも、これはアセンブラの恩恵があったからだと考えています。

そう、アセンブラやりたまえ。

※ ただ、未だに共用体を使う状況が分かりません。

UNIX環境にしたがる

そして行きついた先は「UNIX」です。
あこがれるんです、ムダに高くて手に入りそうなところにあるものに。

高専のころ、ハゲと呼ばれていた同級生は、田舎の金持ちで、入学と同時に「NeXT STEP」を買い与えられていました。300万円です。こっち、5x万円だっちゅーの。意味分からん。
また、学校にもイエローケーブル(10BASE-2)でつなぎ合わされたLANに、SUN が8台くらいありました。8人対戦の戦車ゲーム面白かったれす ^q^

うちの学校は富士通から購入しているものがほとんどで、SUNもそうですが、汎用機まで入っていた高専の中でも珍しい高専でした。ただ、汎用機なんてものは JCLたたいて、緑色の文字のコンソール見て、あ、バッチ終わった。オープンリール交換してくる、みたいな寂しい環境で一切の萌えがなかったのですが、SUN OSはちがいました。ネットワークの楽しさ、GUIの表現の素敵さ、HDDのがりがり音、なにもかもがステキです。
たまに、SUNホスト(2台がホストで、6台がダム端)をrebootする機会に、なぜかよく遭遇して、意味不明な起動メッセージを眺めながら「これ全部意味のあるメッセージなんやぞ、そのうち分かるようになるから」みたいなことを若い先生に言われ、「やばい、UNIXステキ」という中二病を発症します。
最近だと Linux原理主義的な人たちも増えてきたので、厨二と言うよりも、宗教戦争的になってきましたが、その話はここではしません。

そんなこんなで、とにかく、なんでもかんでも UNIXにしたがる時期がやってきます。
「やばい! UNIX(系)にしたい!!」と思った貴方、手遅れです。もう、この世界から出られません。あきらめて IT業界に骨を埋めてください。

そして、私は自宅にある X68000の環境を変えに変えまくることになるわけです。
X68000 の標準OSは、Human68k というもので、command.x という shell を起動しますが、これをまず、fish.x へ変えます。c shell互換の shellです。
fish.x は、login.x を呼んで、スタンドアローンの機械にも関わらず、ログインを促します。

最 高 で す。

ログインという、その行為自体が、すでに「萌え」の境地でした。ログインできれば、他になにもいらない、と言わしめるほどに起動時にログインできるという行為は崇高で、心地良い行動でした。
今では最悪です。

そして、GPL提供されている、unix系のコマンドをどんどん集めます。ls.x cp.x mv.x 。あ、「.x」は X68000固有の拡張子で、Windows でいうと「.exe」ですね。実行形式を示します。
なお、fish.x では、fatを専用に拡張した領域に +x フラグをつけたファイルも実行することができたので、拡張子を外して、「ls」「cp」などのコマンドを準備することもできました。

厨 二 の 極 み。

ここで一つ思い出しましたが、まだ、ls などのコマンドが、パソコン通信で手に入らなかったコロ、自分で lsコマンドなどは「アセンブラで作っていました」。これは良かったです。速いんです、実行ファイルが極端に小さいので。数KB です。常にディスクキャッシュにヒットするレベル。
もちろん、全ての機能を満足するようなものではありませんでしたが、ls コマンドをアセンブラで実装したお陰で、ファイル操作には大分強くなりました。
既にあるものを、自分でおこしてみる、というのも一つのお勉強になりそうですね。

さて、結果として、unixベースのだいたいのコマンドは入手し、それらを駆使して、unix環境にいること自体が当たり前の時代がやってきます。
「DOSとかださい」とか、Kernel が Human68k のくせにえらそうになにを言っているんだか、NetBSDも入れられなかったくせに、なんて思います。かろうじて bg でプロセスを実行する機能もありましたが、Human68k は正しくはマルチタスクOS ではなかったので、あくまでも疑似すぎて、残念な感じになることがほとんどでした。DISK I/O waitに一番弱かった記憶があります。よく、それでハングもしました(‘A`)

一時期は、OS/9(正確無比な純然たるマルチタスクOS)も検討しましたが、すぐに闇に葬り去りました。
「環境再構築」は二度とできないレベルに達してしまい、HDDが死んだら、ボクも死ぬ、と言うレベルです。この頃は、バックアップを取ることが不可能に近く、HDDの生き死にが、そのまま人の生き死にに影響を与えていた時代です。カスタマイズしまくった環境ほど、死に近い場所にいるなんて、その時は考えてもみませんでした。

結局のところ、なにを言いたかったか分かりませんが、「アセンブラやっとけ」と言うことは若干伝わったかと感じています。
X680x0 の事を書き始めると、止まらないことが分かったので、今日はこれくらいにしておいてやろうと思います。長々とありがとうございました。

“IT業界ジュニアのためのオススメ書籍(しょっさん編)” への2件の返信

  1. 「ログインという、その行為自体が、すでに「萌え」の境地でした。」わかる

コメントを残す

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