カテゴリー

  • 日記・コラム・つぶやき
  • 経済・政治・国際

« 死亡児童の写真の教諭、本日逮捕--心理、教育、社会性の発達(34) | トップページ | MSより早く、パネルシステムへ「ピカソ誕生秘話-その7」--アルゴリズム戦記(13) »

世界初、プログラムの自動生成「ピカソ誕生秘話-その6」--アルゴリズム戦記(12)

(「鐘の声 ブログ」記事マップ)

2007/02/09
世界初、プログラムの自動生成「ピカソ誕生秘話-その6」--アルゴリズム戦記(12)

ミニシリーズ:アルゴリズム戦記「ピカソ誕生秘話」(全7回)
-------------------------------------------------------------------------------
1.ヘタの横好きから生まれた「ピカソ誕生秘話-その1」
  --アルゴリズム戦記(7)

2.卸探し、パソコンパッケージ事始め「ピカソ誕生秘話-その2」
  --アルゴリズム戦記(8)

3.創め言葉(Logos)ありき、言葉は人々を結集する「ピカソ誕生秘話-その3」
  --アルゴリズム戦記(9)

4.女神は微笑む、いつの間にかオブジェクト指向「ピカソ誕生秘話-その4」
  --アルゴリズム戦記(10)

5.ユーグリッド原論の世界とマシン語「ピカソ誕生秘話-その5」
  --アルゴリズム戦記(11)

6.世界初、プログラムの自動生成「ピカソ誕生秘話-その6」
  --アルゴリズム戦記(12)

7.MSより早く、パネルシステムへ「ピカソ誕生秘話-その7」
  --アルゴリズム戦記(13)

-------------------------------------------------------------------------------

さて、そもそもの狙いである、プログラムの自動生成について語ろう。
3.創め言葉(Logos)ありき、言葉は人々を結集する「ピカソ誕生秘話-その3」--アルゴリズム戦記(9)には、次のように書いた。
----------------------------------
振り返って見れは、まず、ペイントツールにすべきかベクトル描画ツールにすべきかという問題があると思うのだが、私は何が何でもベクトル描画ツールであることを宣言した。ペイントツールは眼中になかった。描画速度が遅すぎてハナシにならない、と断じていた。実は、ベクトル表示が速度を稼げるに違いないとにらんだことのほかに、描画プログラムの自動生成機能を作るという大それた野望をひそかに持っていたのである。
プログラムをいつまでも人が汗を流して書くというのはあまりにも原始的で、ダサすぎると私は思っていた。
ゲームソフトなどの画面に絵が施されているものを見ると、明らかに絵を描くためのプログラムを手で一つ一つ書いているのがわかる。大変な労力である。労力が大きすぎるので、おのずと絵は荒く、手抜きとしか思えないものになっていた。私には、そんな手抜きの絵が我慢ならなかった。
画面でカーソルを走らせて絵を描くと、その手の動きのとおりのプログラムが自動生成できるとすれば、どんなにかすばらしいことか、思うだけで胸が躍った。当時はまだ、そんな構想をしゃべっても誰も信用してくれなかった。だから、仲間の誰にもこれを口にせず、ひそかな野望にしてプロジェクトを開始したのである。
----------------------------------
ピカソは、画面のドットの集合(ラスター)として絵を捉えるのではなく、「線分(基点、終点、線色、線種)」のようなベクトルデータで画像を保持し再現するようになっている。
画像データにはラスター型とベクトル型があるのだが、ベクトル型である。
ベクトル型の利点は、通常ラスター型に比べてデータのサイズが小さくできる。移動や回転などのアフィン変換処理に強いという点が挙げられる。
実は、このほかにプログラム化できるという利点があると私は予想していた。私がこのお絵かきソフトを開発しようと決意した最大の理由はここにあった。
たとえば、基点、終点、線色、線種をデータとして書き出し、これを読み込んで再生する方法も考えられる。実際ピカソには、当然その機能はもともと備わっていた。このデータをユーザがピカソを離れて使用できるようにするためには、生成したデータのほかに、これを実行するプログラムも提供し、起動するようにしなければ絵が再現しない。このような提案もスタッフの中にはあったが、私はあくまでもプログラムを生成するという当初の私の案にこだわった。スタッフの別案では実行時にファイルを逐次読むので、相当に遅いことがさらにネックと考えられた。この案は、一ひねりして、以下のプログラム自動生成機能の付属機能として、データを"data文"にして生成し、実行速度をやや向上させる方針で採用した。一方、私は、このような機能にどうしても満足はできなかった。
たとえば、「線分(基点、終点、線色、線種)」を、"LINE(x0,y0)-(x1,y1),c,k"のようなステートメントに置き換えることが可能だろうと私はにらんでいた。
当時、ユーザが自由に使用できるパソコンの環境では、BASICが実行できた。絵を描くBASICのコードがあれば、それをユーザの自前のプログラムのサブルーチンに追加すると、画像豊かなプログラムが出来上がる。BASICのコードがピカソで自動的に生成できれば、生産性は一気に向上する。他のソフトたとえばゲームソフトにそのまま組み込むことが可能になるはずであった。私の目算では、良い条件下ではラスター画像の1000の一程度のデータ圧縮が可能で、描画速度は2-30倍速くなると見込まれた。プログラム開発者が手に取るツールとしては魅力十分と思われたのである。
ところで、当時、NECPC8801や富士通FM8などに実装されていたBASICエディタでは、プログラムを書いて普通に保存するとバイナリー形式のプログラムソースが生成する。バイナリー形式のプログラムソースの仕様は不明であった。これをいろいろに解析した見たが、良く分からない。しかし、以前に扱っていた大型計算機のソースコードとは実はテキストコードであった。私は、テキストでプログラムのソースが生成できれば何とかなるさと気楽に考えていた。当時の配下のSE・プログラマは、絶対に無理、社長がまた馬鹿なことを言い始めたと大騒ぎだった。まぁ、新しいことを始めようとするときはたいていそんなものである。ここでへこたれていてはならじと、私も反骨精神が猛然と湧き起こる。
ひょいと、N88BASICマニュアルを見ると、しめしめ、アスキーセーブという機能が書かれていた。saveするファイル名の後ろに",a"を付加するとアスキー形式のファイルができるというのである。当時あったテキストエディタ(wtermなど)で覗いてみると、そのファイルはまさしくただのテキストファイルである。なんと、そのテキストファイルを読み込めば、BASICマシンはそのままそのプログラムを実行をしてしまうのである。さらにはN88BASICエディタに取り入れて、",a"を付加せずにsaveすれば、バイナリーのプログラムソースにも変更できる。バイナリーのプログラムソースに変更すればファイルサイズは2分の一、ロード・セーブの時間も約半分になる。アスキーコードのテキストでプログラムソースファイルを生成しても、それを使用する人がバイナリーのプログラムソースに変更すれば良いだけのことである。
しめた、それならばBASICのステートメントをテキスト形式のファイルにして吐き出してやれば、そのまま実用のプログラムになるはずである。この事実を当時のSEプログラマを集めて説明すると、みなの目の色が変わった。それ行け、という雰囲気になったのである。
実現可能性に確信がないとき、ヒトは意欲を持つことができず、目標に掲げる気にもなれないのである。逆に、実現可能性が示されれば、勇気凛々、心は晴天、それ行けドンドン、という気分になるものである。
とはいえ、行番号の自動生成、255文字制限や改行コードの問題など、プログラムの自動生成のためのハードルは少なくなかったが、いずれもクリアして、この機能は成功したのである。
この機能ができたおかげで、システムハウス、とりわけ当時は20000社あるといわれたゲームメーカ(多くはパパママ経営)がほとんどこのピカソのユーザになったのである。プロに使用されるプロのツールソフト、それは職人冥利に尽きる成果だった。
他社の追随ソフト、物まねソフトの多くは、お絵かきの「お遊びソフト」に過ぎなかったが、私が発案し育てた「ピカソ」はプログラムの自動生成機能を備えたプロ仕様の「開発ツール」だったのである。
それゆえに、ピカソは業務用ソフトに分類され、ゲームの流通とは別の流通経路が必要になったのである
また、実用プログラムの自動生成システムとしては、世界初の快挙ともなった事実を、今もひそかに誇りに思うのである。
思い返せば、コンピュータ科学の当時の権威ある人たちは、だれ一人この快挙を認めてはくれなかったが、今に見ていろ、この成果をいつかは認めさせてやると、まだ若かった私は歯軋りをして誓ったものである。

△次の記事: アルゴリズム戦記(13)
http://shyosei.cocolog-nifty.com/shyoseilog/2007/02/ms713_aac4.html
▽前の記事: アルゴリズム戦記(11)
http://shyosei.cocolog-nifty.com/shyoseilog/2007/02/411_2511.html

琵琶


(補1)「鐘の声 ブログ」はリンクフリーです。ただし、「鐘の声 ブログ」の記事の一部または全部を引用または翻案して、公的に発言または発表される場合は、事前にメール等でお知らせください。[→連絡先]
(補2)ブログ「鐘の声」には、10個ほどのシリーズとシリーズ以外の一般記事があります。シリーズの全体構成やシリーズ別の記事一覧は下記(別サイト)にあります。
  ☆「鐘の声」の全体構成(「鐘の声 ブログ」記事マップ)☆ (GO!)
  ・独創力の創り方シリーズ
  ・心理、教育、社会性の発達シリーズ
  ・社長の条件シリーズ
  ・アルゴリズム戦記シリーズ
  ・情報デザイン研究ノートシリーズ
  ・「情報社会学、予見と戦略」シリーズ
  ・感性的研究生活シリーズ
  ・街に活力をシリーズ
  ・交友の記録シリーズ
  ・オヤジと家族のお料理ライフシリーズ
  ・我が家の愛犬様シリーズ
  ・妻が、車に撥ねられるシリーズ
  ・その他、シリーズ外

« 死亡児童の写真の教諭、本日逮捕--心理、教育、社会性の発達(34) | トップページ | MSより早く、パネルシステムへ「ピカソ誕生秘話-その7」--アルゴリズム戦記(13) »

「日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/73834/13773274

この記事へのトラックバック一覧です: 世界初、プログラムの自動生成「ピカソ誕生秘話-その6」--アルゴリズム戦記(12):

« 死亡児童の写真の教諭、本日逮捕--心理、教育、社会性の発達(34) | トップページ | MSより早く、パネルシステムへ「ピカソ誕生秘話-その7」--アルゴリズム戦記(13) »