MoonWolf(むーんうるふ)です。

 

今回のテーマは、MoonWolfの秘密。

 

まぁ、たいして隠すような重大は秘密はないのですが、

これをテーマにして語ってみましょう。

 

漫然と語っても、読む人が退屈してしまうといけないので、

Amazon著者として、またプログラマーとして、

この2点に絞り、秘密を語ってみたいと思います。

 

私がプログラミングを始めたのは、13歳のころ、

SEGA-SC3000という、カートリッジ交換型ゲームを

所有していたのですが、

そのなかに、ひとつ、BASICというカートリッジを

買ってもらった事が、プログラミング生活の機縁となりました。

 

ゲーム機のモニターは、アナログのTVのモニター

そのテレビの画面、1画面分だけBASICという

ブロブラム言語が組めるもの。

 

多くの人にとっては、意味不明なカートリッジであったことでしょうが、

私にとっては意味深いものでした。

当時、毎月、マイコンベーシックマガジンという雑誌が刊行されていて、

その中に、色々な機種のPCの素人が作ったゲームが掲載されていたのです。

 

私のSEGA-SC3000も、毎月、ひとつ、

誰かが作ったゲームが掲載されていて、

それは紙面上の情報なため、TVのモニターを見ながら、

一文字、一文字打ち込んでみて、実行してみて、

上手にプログラムを組むと、1画面のBASICでも

こんなに面白いゲームができるのかと感動したものでした。

 

当時のコンピュータ雑誌を見ると、

PC-6001、PC-8001、PC-9001、FM-7、MSX、X1など

様々なPCで動作するゲームなどが紹介されていました。

当時のPCは処理が遅かったので、アドベンチャーゲームが

多かったように覚えています。

 

SEGA-SC3000では、他のPCのように、

市販されているようなアドベンチャーゲームが動かないし、

BASICも1画面分しかできないので、

上位のPCが欲しくてたまりませんでした。

ところがそのPC達の価格が、大人の月収1ヶ月分くらいで、

子供の小遣いや、おとしだまでは、到底買えるものではありませんでした。

 

父親を1年くらいかけて説得し、

FM-new7 を入手。これで、いくらでも長い文章の

BASICが組めるようになりました。

 

PC雑誌に掲載されているアドベンチャーゲームも1つくらい買ってみました。

ソフトの販売方法は、今の人達には全くの理解不能なものだと思いますが、

音楽を録音するカセットテープにプログラムが音として

録音されているものでした。まだフロッピーが出回る前の時代です。

 

30分くらい、そのピーガガガーという音と共に、

プログラムをPCに取り込ませると、

画面にゆっくりと5分くらいかけて1枚の絵が表示されたりしました。

・サラダの国のトマト姫

・エルドラド伝奇

このふたつくらいの名前しか覚えていません。

内容はすっかり忘れています。

 

中学2年の時に高い買い物をして入手したFM-new7は

大学1年まで大事に使うことになりました。

高校での数学や物理の内容は、すぐにゲーム作成のネタになりました。

 

理系の大学に進学し、大学でTurbo Pascalを

正式な履修科目として、教えてもらいました。

 

今でも、その時の感動が忘れられません。

現在のMoonWolfの中に、大学で教えていただいた内容は

しっかりと含まれています。

 

・MS-DOSの使い方

・スパゲティー型プログラミングのBASICと違う高級言語PASCAL

・Typeを使った構造化されたデータ構造

・データベースの作成

・ランダムに並んだ数のソーティング

・正18面体の回転体を2D画面に投射するプログラム

・番外編として、Z80のアセンブラ1000行で四則演算を組む

 

これらの内容は、他の最新技術内容が古くなってしまったのに対比して、

今でも新鮮に頭に残っています。

プログラムの基礎は今も昔も変わりません。普遍性があります。

 

当時のOSは、Windowsが出来る前の、MS-DOSだったのです。

文字の情報として、すべてが表示されるわけですが、

Tree形式でのファイルの扱いなどがとても新鮮でした。

 

さて、それから社会人になってすぐに、

DOS/V PCが日本でも人気が上がり、

よく分からないままに、Windows95を

PCにインストールして、そのすごさを実感していました。

グラフィカルにOSが動くという新鮮な感動です。

 

そして、どうやら、Windows95で動く、PASCALというものが、

ボーランドDelphi(でるふぁい)だということに気づき、

箱にCDと2冊の分厚いマニュアル付きの、Delphiを買いました。

 

ところが、最初に待っていたのは、落胆でした。

Windows95は動くものの、インターネットのブーム前の状態です。

周りに、Delphiのことを話しても、理解する人は一人もいません。

 

私は、付属マニュアルの、オブジェクト指向プログラミングの

説明が全く理解できなかったのです。

 

それでも、マニュアルを少しでも読破したいと思い、

断片的なプログラムを真似して動かしては、

その概念をつかもうとしました。

 

少し動いた!

 

ボタンを押したら、Helloと表示された。

うーん、だから何?

とりあえず、Form1にボタンをたくさんのせて

ボタンを押したら、何かするプログラムを作成してみる。

 

うーん、ボタンを押すと何か起こる、

イベント駆動型のプログラムという事は理解したものの、

根本的な疑問として、

今までのような、メインルーチンが無いのか?

という疑問がしばらく、頭から離れず。

ちなみに、昔のDelphiと、

現在のLazarusとほとんど一緒です。

 

画面の上にメニューがあり、さらに整理されて、

たくさんのコンポーネントが準備されている。

ボタン、メモ、パネル、タブ、画像表示、などなど

たくさんのネタが準備されている。

なるほど、これらを上手に使って、Windows95の

ソフトを自分で作れるという意味なのね?

 

そのコンポーネントの中に、Timer1というものがあり、

その説明を読んでいるうちに、問題が解けていきました。

このDelphiでは、イベント駆動型だけど、

昔の考えのメインルーチンがあるシューティングゲーム作成には

このTimer1を使ったらよいのだな!!!

 

Timer1は、デフォルトが1000msの繰り返しで、

その頻度は自由に変更できて、

30msにでも、その頻度で

いくらでも高速処理するメインルーチンであるかのように

動作してくれると分かり、早速インベーダゲームっぽいものを

作成してみました。

 

今までのPCでは処理速度が追い付かず、

3機くらいのインベーダーが精いっぱいでしたが、

インベーダーを10x4の40機にしても、

動作しました。Timer1でインベーダー処理、

Timer2で自分の機体の処理、

Timer3で弾の当たり判定など、

従来では考えられなかった処理が可能となっていたので

たいへんうれしく思いました。

 

とりあえず少し動いたので、

インベーダー作成の思いは未完成のまま消えていき、

他のものを作りたくなってきました。

大学でならったデータベース的なものを作ってみたり、

マニュアルにあって、意味の分かるものは

ひたすら真似てつくっていきました。

 

仕事が終わった後、自分はプログラムを作っていたのでした。

自分専用のプログラムから、みんなが仕事で使えるものを

作成していきました。

いずれもデータベース的なプログラムでした。

 

本業の仕事のかたらわに、プログラムを作成して、

仕事仲間に配布して、その後のサポートをしていたのですが、

それが他部署に知れ渡り、

どうやら、こいつ、プログラムが組めるらしい、

という噂になってしまい、

そうしたことを専門の1つとする部署に転勤になりました。

 

ここがMoonWolfのプロとしてのプログラマー人生となります。

お題は、SQL DBに接続して、WEB経由で来る要求内容を、

綺麗な表にして、WEBページで返すプログラムを生成することでした。

 

当時のHTML、CSS、JavaScript、VB Script、これらを

すべて利用して、動的にWEB Pageを作成するプログラムを

組ませてもらう環境が与えられました。

 

たった一人での作成、知識はゼロ。

半年ほどでプログラムは完成してリリースされました。

300人程度が毎日使用するものとして。

DBへの接続方法だけは、教わりましたが、

あとは自分で学習して、自分で作成する必要がありました。

 

この後、英語の会計システム導入プロジェクトに任命されて、

私のプログラマーライフは終了です。半年程度でした。

その後は、プログラミンをする人たちを、

ある意味、使って、プロジェクトを進めるメンバなどを経験。

 

プログラミングは自分の中から、消えていきました。

会社としての、システム導入に関わる要件定義、

要件定義から実装へ向けた、方向付け、

会社より任命された人達への確認、偉い人達への確認、

多くの人達への教育、

テスト環境でのテストの作成、それらをテストしてもらう準備、

テストの結果を分析してまとめ上げる技術、

問題を会社の上層部に上げる技術、

会社の上層部のひとをも動かす提案、

などなど、PCが相手ではなく、

偉い人達が相手の仕事になってきました。

しかも、仕事の多くは英語にて。

外資系の企業だったのです。

 

これらの外人と英語で仕事をして、

多忙な生活を送り、高額の給料を稼ぐ生活は

魅力的で、刺激的でしたが、

人生なかなか直線的にうまくいかないものです。

 

今度は、体を壊してしまい、仕事を離れることにしました。

1年以上、しばらく休息して、回復。

 

今度は、人を教えることに関わる仕事を始めました。

以前いた会社は、関わる人が固定化されていましたが、

今度は、幅広い人達に合い、教える関係の仕事に

携わることになりました。

この仕事を10年経験したことになります。

 

時は少し遡り、2020年の5月の頃に戻ります。

日本中、コロナ禍で自粛運動が要請されました。

人に教える仕事も、それに伴い少し仕事が減りました。

 

ここで、単に仕事が減ったと悲しんでいるような私ではありません。

これを契機に、昔やっていた、プログラミングを

もう一度、復活させてみたいと思いました。

 

自分の仕事が効率アップするようなプログラムを

まずは作成してみたいと思いました。

 

ボーランドDelphiを買う気満々でいたのですが、

どうやらボーランドはなくなってしまった。

そのかわり、Lazarus(らざらす)というものが、

オープン・ソースで無料であるではないか!

しかも、昔のDelphiとそっくりなので、

自分としては嬉しいばかり。動作も軽い!

 

使い始めの感覚。うーんかけ算九九のやりかたさえ

忘れている。もう、全部忘れている。

中古の昔のDelphiの本を2冊程買い込んで、

知識を呼び出そうと試みる。

 

プログラムを作っている最中に問題にぶつかった場合、

WEBで調べたら、日本語だけではないく英語のPageまでいれると

解決する場合が多かったです。

 

おかげで、仕事の事務的効率を5倍以上高める

データベース型のプログラムの生成に成功しました。

昔できていたレベルに到達するまでは、

忘れていても、短時間で取り返せるものだと気づきました。

 

ついでに、何十年か前に、作りかけていたインベーダーを

完成するまで作成できました。

 

18歳の頃から読書を重ねてきたのですが、

本のというものは読むものであり、書くものとは

一切思っていませんでした。

 

ある人のひとこと、

 

「あなたが、本を書いたら良いのでは?」

 

という言葉が胸に突き刺さりました。

本を出版するための関連書籍を50冊くらい読み、

Amazon出版なら、自分にもできそうだと

何となく思えてきました。

 

しかし、何を書く?

 

得意なものを書くしかないので、

プログラムの書籍を書きたいと思いました。

作成したインベーダーのゲームを

Lazarus(言語:Pascal)での作成のノウハウを

書いてみたくなり、タイトーさんにお伺いを立てました。

 

結果は、No!

 

著作件に触れる恐れがあるため、お控えください。

というものでした。

 

何を作っても、どれかの著作権に触れそうなくらい

様々なゲームが既にでている。

うーん、自分だけのオリジナルゲームとは?

数学+グラフ+シューティングで出来ないか?

 

Lazarusで数学のグラフを使ったシューティングゲーム

この書籍を、ゲーム作成実況のように書く事にしました。

 

まだ、ゲームが存在しない状態から書き始め、

ゲームが完成していくにつれて、

書籍が仕上がっていく内容にしました。

 

初めての書籍の執筆のと、

ゲームが完成するか分からない不安と、

私のようなものが、果たして本を出版して良いのか?

という不安が、1冊目の出版が完了するまで、

頭を離れませんでした。

 

Amazonの審査を通り、1冊目の本が出版された時の喜びは、

若いときに大学合格で味わったときの喜びと

同じくらいの嬉しさがありました。

 

この時、著者MoonWolf(むーんうるふ)という名前が、

世に発表されることになります。

 

 

 

↑初出版の本であり、火山の爆発のような情熱がこもっています。

今でも、私の書籍の中で人気のある一冊です。

 

知的アウトプットができた!

この嬉しさは、誰かに説明をしてと頼まれても、

上手に説明できる自信はありません。

 

あれから1年が経過して、現在では

英語と日本語の書籍を合わせて、

23冊もの書籍が出版されています。

 

なぜ、プログラムの入門書を書くの?

と、聞かれたら、

 

私のような、孤独なプログラマーを癒したいから。

 

そのように、答えたいと思います。

長年の読書、プログラマー的発想、プロジェクトの経験、

それから人を教えることの経験。

これらが、著者MoonWolf誕生の基礎にあることに

あとから自分で気がつきました。

 

最後に、私の基礎はPascal、Delphi、Lazarusにあることが

この記事にて分かると思います。

 

MoonWolfはその後、ChatGPT4に出会い、

Lazarus入門書を数冊

Python入門書を4冊

JavaScript入門書を1冊

なでしこ入門書を2冊

 

これらを書いています。

Delphi/Lazarusを基礎にもつ者は、

他のプログラム言語を風呂敷でつつむように理解できる。

 

なぜなら、Delphi/LazarusのIDEには、

メインメニュー、コードエディター、メッセージウィンドウ

これらに加えて、

 

・タブに整理されたコンポーネントライブラリー

・コンポ―ネントの属性とメソッドを管理できるオブジェクトインスペクター

・視覚的にプログラムを設計できるフォームエディター

 

この3つがあるからです。

 

他のプログラム環境はこのうちの一部しかありません。

OOP、オブジェクト指向プログラミングの概念はどの言語も共通です。

プログラムの制御、判定、繰り返し、関数なども共通です。

他の少しの差分を埋めるだけで、他の言語が理解できてしまいます。

ChatGPT4のサポートを使いこなすことが前提になります。

 

MoonWolfに注目していただいて、本当に感謝の気持ちでいっぱいです。

読んでいただいた、あなた、もしくは、あなたの周りの人たちが、

少しでも、プログラムの世界に興味が持てたら、私は嬉しく思います。