コンピュータ14ページ目の日記です

目次

前のページ
2013-06-30 TX-0エミュレータ作成中
2013-07-01 凝集度の高いプログラム
2013-07-03 TX-0エミュレータ進捗
2013-07-04 Mouse In Maze
2013-07-05 追悼:エンゲルバート
2013-07-07 Javascript の Canvas は結構遅い
2013-07-10 TX-0 エミュレータ公開
2013-07-11 WAR GAME
2013-07-15 祝30周年
2013-07-15 ゲームの歴史・ファミコン以前
2013-07-19 ネズミとチーズとマティーニと
2013-07-23 ○○、Fonera やめるってよ。
2013-07-30 LUMIX Phone Update
2013-08-01 ページ4つ
2013-08-04 「迷路のねずみ」動画公開
2013-08-06 新記事投入と、「ニコ動」話のつづき
2013-08-09 家族旅行に行ってきました。
2013-08-22 国立科学博物館
2013-08-23 チューリングのチェスプログラム
2013-08-28 IBM407
次のページ
TX-0エミュレータ作成中  2013-06-30 17:05:33  コンピュータ

▲目次へ ⇒この記事のURL

TX-0 は話が終わったから終了、と思ったのだが、興味深くていまだ研究中です。


OldGood COMPUTER のページに書いた記事だって、もう十分マニアックすぎて、いったい誰向けに書いているのかと自問するような内容です。

なのに、これ以上マニアックなことを研究しても、だれにも訴求しないし、伝えられない。


でも、知的好奇心を刺激される資料がたくさんあるんです。




「不経済タイプライタ」などの存在は記事中に書きました。


タイプライターなら安く買えるのに、わざわざ300万ドルもする TX-0 を占有して、キーボードを打ったらその文字をプリントアウトする、というプログラムを動かす。


同じように、不経済電卓、というのもあります。当時は電卓は高価なものだけど、もっと高価な TX-0 でわざわざ電卓の仕事をさせる。


このふたつは、「ハッカーズ」に載っていたものです。


調べていたら「不経済テープレコーダ」というのもあったらしい。

(ハッカーズでは「不経済」と訳していた語が、「EXPENSIVE」だというのも今回知った)


アナログデジタル変換回路を TX-0 につなげて、音声をデジタル化して、磁気テープにデータとして保存する。

保存したデータを再びデジタルアナログ変換して再生すると、音が聞こえます。


これ、現代でいうサンプリングだよね。1960年代に、こんなことやって遊んでいる。



bitsaver というプロジェクト(?)があるようで、WWI と今回の TX-0 ではずいぶんお世話になった。

当時の資料やソフトウェアを、とにかくデジタル化して保存しておこう、と言う試み。


WWI のソフトは残っていないようなのだけど、TX-0 はずいぶん残されています。

見ているだけで面白い。


音楽コンパイラの存在は知っていたけど、音楽ソースファイルを見て驚いた。

まるっきり、1980年代の MML だ。


必ずオクターブ指定と音長指定が必要だったり、簡略化できるような仕組みはなくて面倒くさいけど、cdefgab と、4分音符なら 4 、8分音符なら 8 …と書き連ねることで音楽を記述する。


少し前に「MML の元祖はどこにあったのだろう」と疑問を持っていたのだけど、これも TX-0 かもしれない。


#ところで、TX-0 に音楽再生機能はない。

 アキュムレータの bit 14 がスピーカーにつながっていたのを利用して、「無理やり」音階を出すプログラムを作っただけ。



さて、ソフトが残っているなら動かしてみたい…と思うし、まさにそのためのプロジェクトが bitsaver なのだろう。

しかし、残念ながら TX-0 のエミュレータはない。興味深いものがたくさんあるのに、動かせない。


…ならば、作ってみますか。


現在 TX-0 エミュレータを試作中。

最初から、完全なエミュレーションはあきらめている。動作速度は違うだろうし、ましてや微妙なマシンクロックタイミングまで合わせようとは思っていない。


だから、音楽演奏のようなことはできない予定。

でも、ライトペンで Tic-Tac-Toe はやりたいな、と思っている。


完成するかどうかも定かではないけど、演算部分は動き始めたところ。

紙テープリーダーとテレタイプ端末のエミュレートも動いていて、紙テープ保存されたテキストファイルを読み込んで印刷することはできる。

(そういうプログラムを TX-0 上で動かせると面白いが、そうではなくて「作った部品」を組み合わせて印刷するようにしてみただけ)


紙テープに記録されたプログラムのフォーマットが正確にわからず、プログラム読み込みがうまくいかない。

アドレス部分は読み込めるのだけど、どうも命令が壊れているように感じる。


なんでもいいし、不完全でよいから、プログラムが動き始めれば俄然やる気が出るのだが。



▲目次へ ⇒この記事のURL

関連ページ

凝集度の高いプログラム【日記 13/07/01】

別年同日の日記

09年 ハムスターその後

14年 ヴァネバー・ブッシュの命日(1974)

16年 Comet


申し訳ありませんが、現在意見投稿をできない状態にしています

凝集度の高いプログラム  2013-07-01 14:24:23  コンピュータ

▲目次へ ⇒この記事のURL

昨日書いたTX-0の紙テープの話。


えーと、まず前提として、TX-0 (だけじゃないけど)の資料やソフトを保存しているサイトがあって、そこで見つけた紙テープイメージをロードしようとしていた。


必ずではないが、ソースコードがある場合は一緒に置いてある。

さらに、これも必ずではないが、ソースコードは紙テープイメージと共に、テキスト化したものも置いてある。


で、ちゃんと読み込めているか試験するために、ソースコードがわかっている紙テープを読もうとしていた。

しかし、ソースとは全然違うデータが入っている。

さらにいえば、ソースイメージが非常に大きくても、ほんのちょっとしか読み込まない。


なんか読み込み方法が間違っているのかな、と思っていたのが昨日の段階。




TX-0 には、3つのモードがある。

プログラム実行モードと、テストモード(ステップ実行ができる)、そして紙テープ読み込みモードだ。


紙テープ読み込みモードで実行を開始すると、紙テープから 1word を読み込んで命令として解釈する。この際、sto (ストア:メモリ書き込み)命令だった場合は、紙テープからもう 1word 読んで AC とする。

つまり、sto とデータを並べれば、メモリ内をデータで埋めることが出来る。


紙テープから読み込むのは「命令」であることに注意。

最後に trn(transfer:分岐) 命令を読み込むと、そこで TX-0 は自動的にプログラム実行モードに切り替わり、指定されたアドレスから、メモリ内のプログラム実行を開始する。



当全、紙テープだからこの形式で書きこまれているのだろうと思っていた。

動作がおかしいので冒頭を解読したら、違っていた。


冒頭に、たった 18word の小さなプログラムが入っている。

おそらくは、紙テープを読み込むためのローダープログラム。まずはこれを解読しないといけない。




というわけで解読し、凝集度に驚いた。


たった 18word だけど、以下の機能を持つ。


・圧縮されたプログラムデータを展開しながら読み込む。

・データのチェックサムを用意し、最後に比較することで読み取りエラーの警告を出す。

・複数のプログラムの紙テープをつないでおくと、次々メモリに読み込む。(リンカに相当する機能)

・もちろん、最後に自動実行できる。この際、実行直前に一時停止し、ユーザーに準備を促すことも可能。


…まぁ、圧縮と言っても、元々のデータは必ず「メモリアドレスと、書き込みデータ」が必要だったので、メモリアドレスを省略しただけだけどね。

最初のアドレスと、最後のアドレスを最初に与えて、後はデータを並べればよいようになっている。これで、紙テープの長さはおよそ半分になる。


リンカ機能も、「紙テープをセロテープで貼ってつなげておく」という単純なものだけど、当時としては十分便利だったようだ。


#このプログラム、解読後に気づいたけど、ちゃんと説明あった

 でも、下に書くように、解読したことは無駄じゃなかった。




そして、このプログラムの解読中に、自分のページの記述間違いを発見したりもした (^^;

もうなおしてあるけど、改造後の TX-0 には、ループ命令とレジスタ内容の交換命令があった。


ループ命令(tix)は文書に書かれた説明がややこしくて理解できていなかっただけ。


レジスタ交換は、非常に特殊な組み合わせで命令を実行した時だけ「発動」する、隠しコマンド的機能だった。

(ちゃんと資料に書いてあったが、特殊条件なので気づいていなかった)


どちらも、自分でプログラムの流れを追わないと気づかなかった。

特に、レジスタ交換命令。一見すると全く無意味な処理をしているので「どういう意味だろう?」と資料を調べて、やっと特殊動作に気づいた。


書いた記事を修正するとともに、作成中エミュレータの該当機能も修正。



どうやら、ローダプログラムは正常に動くようになったようだ。

何やらデータをロードして、実行を開始しているのがわかる。



…でも、動作がおかしい。というか、暴走しているようにしか思えない。

少なくとも、ローダープログラムに使われる命令は正しく動いているが、他に動作のおかしな命令も多いのだろう。



▲目次へ ⇒この記事のURL

関連ページ

TX-0エミュレータ進捗【日記 13/07/03】

別年同日の日記

05年 再引越し

08年 溶連菌感染症

11年 節電

14年 「我々が考えるように」発表(1945)

14年 NOP 命令が作られた日(1960)

15年 A Dark Room , Candy box! , Cookie Clicker.

16年 PHSサービスが始まった日(1995)

18年 氷川丸


申し訳ありませんが、現在意見投稿をできない状態にしています

TX-0エミュレータ進捗  2013-07-03 17:15:18  コンピュータ

▲目次へ ⇒この記事のURL

TX-0エミュレータ進捗

すっかりTX-0エミュレータを作るのが楽しくなっています。


紙テープ先頭に書かれたローダは完全動作するようになり、いくつか小さなプログラムが動き始めています。


ただ、その動作が「正しい」のかどうか判断するのが難しい。

なにせ、何をするプログラムかもわからない状態ですから。




tst 、と名称についているいくつかのプログラムがありました。

どうやら、TX-0 を改造したりしたときに、動作確認のために使ったプログラムっぽいです。


その中で一番小さな tstDisplay が動作した、と思ったのが昨日のこと。

画面に光の点が走る、と言うだけのプログラム。なるほど、ディスプレイテスト用だ。


…でも、しばらく走らせていると、光の点が出なくなる。

おかしいなぁ、と思ってプログラム解析すると、どうも動作が違う。


エミュレータ上で動くプログラムは、光の点は縦に動きつつ、少しづつ横にずれる。

でも、プログラム解析したら、横座標は変わらないらしい。


…と言うところまで理解できれば、どの命令がおかしいかはわかる。

その命令の実行プログラムにデバッグ用の「ログ表示」を仕込むと、動いていないとわかる。

なにかおかしいらしい。


呼び出し部分のバグを見つけ、修正したら正しい動作になった。




これでプログラムが正しく動作するようになったようなので、次へ。

いちいち解析しないといけないので、短いプログラムがいい。

lightGunTst というのが小さいから、それ行ってみよう。


ライトペン(ライトガン)のプログラムはまだできていないので、先に解析してみる。

どうやら、先のプログラムと同じように光が走り、ライトペンで触れると停止する、と言うプログラムのようだ。


ライトペンの動作を実装し、プログラムを動かす。

…触れると非常に遅くなるが、停止はしない。


ライトペンの実装方法がおかしいかな、とか散々調べてわかった。

元のプログラム、一見「停止する」ように見えるのだが、バグがあって停止はしない。遅くなるだけ。


えーと、半世紀前に作られたプログラムのバグを発見したんですけど、誰に連絡すれば?


まぁ、テスト用プログラムだから、当時も「なにか反応すればよし」だったのだろう。

動作したから次。




なんかわからんが、flexo という小さなプログラムがあった。

動作させると、flexowriter から アルファベットと数字が繰り返し出力される。

うん。一発で動いてた。


でも、動作が速すぎ。

flexowriter がそんなに早いわけないから、wait 入れよう。

当時の flexowriter ってどのくらいの速度だったんだろう。



…調べていて、重大な勘違いを発見する。

TX-0 、5MHz と書いてある文献があったのでその速度で作っていたのだけど、1cycle が 6μsec という資料があった。

5Mhz だと、1cycle は 0.2μだ。速度がかなり違う。


TX-0は16cycle で1命令をこなすので、1秒間に3万命令くらい動くつもりでいた。

同じ資料に「8千命令以上」と書いてあったが、これだと 6μsec と合致する。


というわけで速度調整。

flexowriter の動作速度や、テープリーダーの速度も調整する。

(テープリーダーは TX-0 は 250 line/min とわかったが、穿孔機と flexowriter の速度は不明。

 PDP-1 を参考に、穿孔機 60 line/sec、flexowriter 10文字/sec とする)


…うん。flexo のプログラム、それらしく動いたから終わり。

文字が延々出ていても面白くない。




tssDisplay 、と言うプログラムが2つある。

tss って、tst の間違いじゃないかな?


実は、初期のころに読み込んでみて、全然動かなかった。

というか、画面がガビガビしたので、エミュレータの動作が悪くて暴走しているらしい、と判断した。


ところが、これまで速度調整などして「遅く」なっているので、動作させると一瞬画面が出た。

…一瞬だけで、そのごはやはりガビガビ。


もう一個の tss プログラムを動かしてみると…なぜか、こちらは動いた。


そしてわかった。なるほど、tss、Toggle Switch Storage のテスト用か。

TSS 部分のハードウェアをエミュレートする部分を作ってみる。



そして、TSS のトグルスイッチをパチパチすると、それを8進表記で画面上に表示する。

なんか、はじめて「対話的な」プログラムが動作した。ちょっと感動。


ほぼ同じプログラムらしいが、片方動いて片方動かない。

逆アセンブルして(動作確認のために、簡単なものを作った)、命令を比べると、片方にしか使われていない命令がある。


じゃぁ、この命令の動作がおかしいのかな…と調べると、もともと動作がややこしくて、実装のために「なんとなく」動く部分しか作っていない命令だった。

厳密に動作を作りこむ。


で、動かしてみると、もう一つの tssDisplay も動作した。


画面のフリッカーは結構激しい。

この程度の画面表示でちらつくとなると、もっと残光時間伸ばしたほうがよいのか。


0.25 秒程度にしていたのを、0.5 秒まで伸ばしてみた。

それでキャプチャしたのがこの日記の冒頭の図。

下の方で、画面の「リフレッシュ」を行っているのがわかる。

(縮小されいるとよくわからないので、クリックして拡大してください)




なんか画面も表示されるし、調子に乗って大きなプログラムに手を出してみる。


当初目標の、TicTacToe を読み込むと…なんと動作した!


…けど、動作がへん。

まず、ライトペンの動作が変で、まともに操作できない。


で、無茶苦茶なりに操作してみると、すでに○×を書き込んであるマスに上書きしたりしてしまう。

内部動作もおかしいようだ。


しかし、画面が出たことがちょっと励みになった。ぜひ、こいつを完動させたい。


mouse 、と名付けられたプログラムも動かしてみる。

格子模様が画面に描かれる。…それ以上動作しない。


でも、これはおそらく Mouse in Maze 。


格子模様をライトペンでつついて迷路作るのかな?

ライトペンの動作がどうもおかしいので、まだよくわからない。


こちらもぜひ動作を見てみたいプログラム。

もう少し頑張ります。



▲目次へ ⇒この記事のURL

別年同日の日記

02年 帰ってきました

17年 血液型別性格診断

17年 当たる占いの作り方


申し訳ありませんが、現在意見投稿をできない状態にしています

Mouse In Maze  2013-07-04 16:56:59  コンピュータ

▲目次へ ⇒この記事のURL

Mouse In Maze

まだまだ続くよ TX-0 ネタ。


エミュレータは相変わらず作成中で、Mouse In Maze が動いた。

Tic Tac Toe はなんとなく動いているのだけど、動作がおかしい。すでに記号が書かれたところに上書きできてしまう。

他に、dot4 というゲームと思しきものがなんとなく動くが、画面が崩れていてよくわからない。


つまり、かなり出来上がってきているが、一部の命令に致命的な非互換があるのだろう。



昨日書いた「lightGunTst」と言うプログラムも、動いたと思っていたが実は間違っていた。


バグだと思っていたのが自分の間違いで、ライトペンでポイントすると、「光の点が止まる」のではなく、「別の個所にも光が現れる」のだった。動きは全く止まらない。


ライトペンの動作は、アキュムレータの最上位ビットをセット、なのだけど、この時残りの部分がどうなるかわからなかったのね。


僕は AC の最上位以外をクリアしていた。

しかし、動作を詳細に調べると、該当ビット以外はいじってはならないようだった。


きっと、まだこういう「根本的部分の勘違い」がありそうに思う。


しかし、すでに「小さくて解析しやすい」か「ソースが残っている」プログラムはだいたい動いてしまっていて…


ソースがなかったり、あっても非常に大きいプログラムだと、どこがおかしいのか探すだけで一苦労です。




さて、見てみたいと思っていた Mouse In Maze。

思った以上に素晴らしい出来でした。半世紀前の作品とは思えないくらい。


ライトペンで作った迷路の中を、ネズミがちょろちょろ走り回ります。

尻尾を振りながら滑らかに動くし、遅くなったり速くなったり、速度が一定しないのが非常にネズミらしい。


チーズを見つけると食べるアニメーションが入りますが、最後に3ドットの「食べかす」を残すのも心憎い演出。



もうちょっとエミュレータが安定したら公開して、みんなにも見せたいところです。

エミュレータは JavaScript で組んでいるので、WEB ページ上でそのまま見られる予定。


▲目次へ ⇒この記事のURL

別年同日の日記

04年 コンサート

18年 続・Unity

21年 QNAP TS-251D 購入

21年 251D 使用レビュー


申し訳ありませんが、現在意見投稿をできない状態にしています

追悼:エンゲルバート  2013-07-05 10:14:56  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

エンゲルバートが88歳で亡くなったらしい。

昨日のニュースで知ったが、亡くなったのは7月2日だそうだ。


彼は「マウスの父」と称されることが多いのだが、これはとんでもない過小評価だと思う。

むしろ、マウスは彼の「消し去りたいもの」、いわゆる黒歴史だったはずだ。


(昔のインタビューでは、こんなに普及するならもっといい装置にしたかった、作った当時は出来の悪い「暫定装置」だった、と答えていた。

 最近のインタビューでは、これほど普及した装置を自分が作った、と素直に喜ぶ傾向にあったようだ。)



ダグラス・エンゲルバートが作ったのは、マウスなんかではない。

彼は、現代コンピューターのすべてを作り出したのだ。




追悼を込めて、自分の思い出を語る。


まだ中学生だった 1984年。アメリカで Macintosh というパソコンが発売された。

Apple // が憧れだった頃、その Apple から全く新しいマシンが発売になった、というので興味を持った。

しかも、今までのパソコンとはまったく操作系が違うらしい。


それから数年後、Mac を触らせてもらえる機会に恵まれた。

まだ漢字 Talk が 2.0 のころ。漢字を使うなら漢字 ROM が必要、という当時の常識に反し、Mac ではアメリカと同じハードウェア上で、ソフトウェアのみで漢字を表示していた。


そして、はじめて触ったマウスに感動した。

お絵かきソフト以外に使い道もなく、当時まだめずらしかったマウスの意味が初めて理解できた。


早速自分の MSX 用のマウスを買い(当時は高価な周辺機器だった)、Mac 書道の真似事などして遊んだ。




そんな経験があるので当時理解されなかった HALNOTE を購入し、Mac に憧れる状況が続く。


大学に入ると、マシンルームに Mac が置いてあった。

当然遊びはしたが、憧れのものを触れるようになると、憧れはさらに先へと進んでいく。


Mac はアラン・ケイの Alto をベースにしている、と知り、Smalltalk に興味を持った。


アラン・ケイは、その頃の僕のヒーローだった。

当時のコンピューターの利用方法とは全く違う、グラフィカルな操作体系を一人で考え出した…と思っていたのだ。


しかし、調べるにつれ、そうではないことがわかってきた。

アラン・ケイの前には、ダグラス・エンゲルバートがいた。ケイのシステムは、エンゲルバートのオーグメントを元にしたものだったのだ。




オーグメント…古い名前を NLS と呼ぶが、これは世界で最初のテキスト処理環境だ。


コンピューターが「計算機」であり、計算のみに使われていたころ、コンピューターの能力を使えば文字を操作することもできると気が付き、テキスト環境を作り上げた。


NLS には、世界初の「ラスタースキャン・ディスプレイ」が装備されていた。

NLS には、世界初の「ワードプロセッサ」が作られていた。

NLS には、世界初の「アウトラインプロセッサ」が作られていた。

NLS には、世界初の「オンライン・チャットシステム」が作られていた。

NLS には、世界初の「ビデオ会議システム」が作られていた。


そして、NLS には、世界初の「マウス」が作られていた。


この大発明をした人を、「マウスの発明者」と呼ぶのは過小評価だとわかって貰えるだろうか?




大学4年生の時、卒業研究にハイパーテキストを選択した。


研究室は自然言語処理を専門にしていた。ハイパーテキストは自然言語処理ではないが、教授は僕が強く興味を持っているのを見て、見逃してくれた形だ。

(それでも、ハイパーテキストを研究するには、自然言語処理の研究室が一番ふさわしかった)


ハイパーテキストと GUI は必ずしも表裏一体ではないが、GUI によるテキスト処理、という流れから、アラン・ケイ以前にあった NLS の重要性を示唆してくれたのも、担当教授だった。


さらに、教授はエンゲルバートに数度会ったことがあり、オーグメントについて論じた論文を取り寄せてくれた。


たった一人で、コンピューターを「計算機」から現在の形に変えた。


この頃、エンゲルバートは僕のヒーローだった。





もっとも、エンゲルバートが最初ではない、ということも、最近になってやっと理解できて来た。


NLS は、最初の「ラスタースキャン」ディスプレイは備えたが、ディスプレイ自体は最初ではない。

NLS は、最初の「ワードプロセッサ」を作り出したが、これは現代的な意味での「ワープロ」ではない。


アウトラインプロセッサやチャットに至っては、その仕組み自体がややこしいので「最初」と説明したところで理解して貰いにくい。


結果、わかりやすいのは「マウスの発明者」という説明になるのだろう。



自分がエンゲルバートの説明を書いたころ、彼はまだ僕のヒーローであり続けていた。

だから、彼を非常に偉大に書いてある。




エンゲルバートは、海軍のレーダー技師で、ディスプレイに向き合う仕事だった。

だからディスプレイを接続したコンピューターを着想した。


…と、歴史の本には書いてあった。


今、あったことのある方のお悔やみ記事を読んだところ、そのレーダーではライトペンを使ってレーダー機器と対話できたらしい。

だからこそ、文字を使った対話である「オーグメント」を着想したのだという。


…これ、レーダーと言ってもSAGEのことだ。

すでにコンピューター処理式であり、自分が考えていた、アナログで動作するレーダーではない。


つまり、エンゲルバートは「レーダーと対話」していたのではなく、SAGE システムというコンピューターと対話していたことになる。

エンゲルバートが最初にコンピューターとの対話を着想した、と言うのではないのだ。



エンゲルバートが NLS の開発を開始したのが 1957年。1960年代から本格化したようで、1964年には軍から予算がついている。


同じころ、1958年には TX-0 が学生たちに開放され、学生たちはテキストエディタやチャットシステムなどを作り出している。


…エンゲルバートが「少し先に」テキスト処理を着想したのは事実だが、彼がやらないでも誰かが世界初のテキスト処理を実現しただろう、ということだ。


コンピューターがバッチ処理で計算する、ただの「計算機」から脱却し、対話的な装置になりつつある時代だったのだ。




エンゲルバートがコンピューターを変えた。

今、僕がこうして文章を書いているのも、この文章をあなたが読んでいるのも、彼がいたからなのだ。


彼がいなかったとしても、誰かがやっていただろうとは思う。

しかし、それが彼の偉大さを減じるものではない。


そういう時代に差し掛かっていたとはいえ、正しい方向に導いたの彼なのだから。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

アラン・ケイの誕生日【日記 14/05/17】

ダグラス・エンゲルバートの命日(2013)【日記 14/07/02】

50年代の画面表示技術

ポール・モカペトリスの誕生日(1946)【日記 14/11/18】

ダグラス・エンゲルバート 誕生日(1925)【日記 16/01/30】

別年同日の日記

02年 時差ぼけ

02年 なんと12時間

04年 盆と正月が一緒に来たような…

12年 まだ続くおたふく


申し訳ありませんが、現在意見投稿をできない状態にしています

Javascript の Canvas は結構遅い  2013-07-07 12:31:25  コンピュータ

▲目次へ ⇒この記事のURL

TX-0 エミュの進捗。


自分で納得いくレベルまで出来上がったので、公開しようと複数ブラウザでの動作試験。

…遅い。


僕は Chrome 使いなので、納得いく速度で動いていた。

しかし、Chrome 以外のブラウザでは Canvas は非常に遅いらしい。


IE はまだ許せるレベル。FireFox は遅くて話にならない。


とはいえ、「Chrome 専用です」と公開するのは面白くない。出来るだけ多くのブラウザで動くようにしないと。

ただでさえ興味を持つ人が少ないエミュレータだと思うのに、「自分のブラウザでは動かない」で見てもらえないのは残念だから。


高速化の技法をあれこれ試してみる。

もっとも、当初は Chrome でも遅すぎて話にならず、ある程度高速化技法を使ってあるので、劇的には早くならない。




前提条件を書いておこう。


TX-0 のディスプレイは、511*511 の表示領域を持っていた。

この数字が中途半端に見える説明は今はしない。気になる人は TX-0 の記事を読むように。


さて、511 は現代のコンピューターには扱いづらいので、512x512 の canvas を用意する。

ここに、TX-0 の表示命令が送られたときに描画を行うわけだが…


TX-0 は、VRAM を持たない。というか、当時メモリは高価で、VRAM なんていう発想はなかった。

結果、CPU が直接座標を指定し、表示命令で点を一つ描くことになる。


座標を変えながら点を打ち続ければ、図形を描画できる。


でも、描いた点はすぐに消える。

ディスプレイの表面の蛍光体が、「ビームが当たるとしばらく光る」ようになっているのだけど、多分0.25秒~0.5秒程度で消えたと思う。


#当時の動画が残されていて、ディスプレイを撮影しているのだが、フリッカーが激しい。

 フリッカーが激しいということは、残光時間はそれほど長くなかった、ということだ。

 もっとも、映画カメラには移らなくても、人間の目は暗いあかりでも敏感にとらえられる。

 いろいろな条件を勘案し、0.25~0.5秒程度と推察した。



さて、現代のディスプレイは、1/60 秒程度の周期で描き変えられている。

残光時間もその程度だ、ということだ。TX-0 に比べて、はるかに短い。


だから、TX-0 エミュレータでは、残光時間の長いディスプレイ(長残光ディスプレイ)を再現する必要がある。


「だんだん光が暗くなっていくさま」も再現しようとすると、描画ドット数はその分だけ増加する。

残光時間を長くすれば、書き換えるドットも増えるため、さらに増加する。




一番動作が重かったプログラムは、「lightGunTst」と言うプログラムだ。


ひたすら「隣のドット」に点を描きつつ、その光がライトペンに拾われたときだけ、別のところにも点を打つ。

これだけのプログラム。


シンプルであるがゆえに、単位時間あたりに描くドットの数が多い。

メインループが6ワードしかないので…単純計算で、1秒に1万3千ドットほど書き込む。


画面は 1/60 秒ごとに書き変えるので、1回の「新しい」ドットは 230ドットほど。

残光時間が 0.25秒の設定だと、16段階に暗くなっていくドットを描く。全部で、描き変えは 3700ドット程度。


…というわけで、1/60 秒で 3700ドットを書き込めれば問題はないのだが、Chrome 以外の canvas では遅すぎてこれが難しい。


lightGunTst では、「隣のドット」にひたすら書いていくので、画面上の変更は局所的だ。

一種のダブルバッファで描画しているので、転送を最小限の面積にすると、少し処理速度が上がった。


これで、chrome はほぼ 60 FPS(Frame Per Second: 1秒の描画回数) 出る。

IE だと 58 程度で、遅くはなっているが許容範囲。


FireFox は非常に動作が不安定。

あまり描画速度が安定せず、30~50くらいの間でふらふらし続ける。




内部的には、動作開始からの実時間(マイクロ秒)と、TX-0 の内部的な「クロック」を両方計測していて、それぞれのフレームで「どこまで TX-0 の処理を進めてよいか」を判断している。


このため、描画が一瞬だけ遅くなった場合でも、次のフレームで内部処理が追いつくことがある。

ほぼリアルタイムに動作できる、ということだ。

(もっとも、TX-0 実機の速度を見たことがないので、TX-0 内部クロックの計算は資料をもとに想像しただけのものだ。だいたい動画とはあっているみたいなので、大きくは外していないと思う)


ただ、実時間はどんどん過ぎていくので、遅くなったために一度に計算する量が増えてさらに遅く…という悪循環を起こす可能性がある。

そこで、どんなに実時間から遅れても、1回の処理はTX-0 の 4000 クロック分まで、と上限を決めてある。


これは、通常の内部処理は 2777 クロック分なので、ちょっと多いくらい。

遅れた場合は少しづつ挽回してもよい、と言う程度。




lightGunTst 以外のプログラムは、内部処理も多いため、こんなに描画量は多くない。


そのかわり、描画も局所的ではなく、画面全体に及ぶようになる。

TX-0 が VRAM を持たない特性上、常に描画を「リフレッシュ」し続けるため、常に画面全体が描画されている状態になる。


描画が少ないために速度が上がるかと言うと、画面全体を常に転送し続けることになるので、あまり速度が上がらない。

なかなか微妙な問題だ。






ところで、一種のダブルバッファと描いたが、canvas に対して getImageData した配列に対して書き込みを行い、putImageData で実際の canvas に転送している。


canvas では「1ドットを描く」命令はない。かならず、1ドットの矩形を描くことになり、効率が悪い。実際測定しみると遅い。


配列に対して1ドットを描くのは、アドレスを計算して代入を行うだけ。

TX-0 は白黒2諧調なのだが、実際の画面の色は不明(資料がない。当時の写真もほとんど白黒)なので「オシロスコープの改造ディスプレイだから、緑」ということにしている。


そうなると、1ドットに4つある色情報のうち、緑だけ書き込めばよい。こうやって速度を稼ぐわけだ。




写真と言えば、少なくとも1枚はカラー写真がある。残念ながらディスプレイは点灯していないのだが。


コンソールの色などはなんとなくわかるので、その色に合わせてエミュレータの各種パネルを描いている。


…もっとも、絵心はないのですべてテキスト + CSS 。

完成後に、絵を描いてくれる人がいたら差し替えます (^^;



▲目次へ ⇒この記事のURL

別年同日の日記

02年 手巻き時計

09年 大人がヘルパンギーナにかかると…

15年 どぜう

16年 ドナルド・ミッキー 命日(2007)


申し訳ありませんが、現在意見投稿をできない状態にしています

TX-0 エミュレータ公開  2013-07-10 12:33:07  コンピュータ

▲目次へ ⇒この記事のURL

実は昨日には公開していたんだけどね。


ここしばらく作っていた TX-0 エミュレータですが、ようやく公開できる段階に来ました。

Javascript で書かれているので、インストール不要で楽しめます。



公開は昨日のうちにしてしまったのだけど、実は十分な動作確認をしていませんでした。

Chrome と Firefox と IE10 で動くことを確認していただけ。


その後、Opera と Safari でも動作を確認。IE 9 では動作しないことを確認しました。

使い方の説明なども書いたので、これで正式公開とします。




説明はあとでもう少し拡充予定。


今見ると、当然ながらどのプログラムも単純すぎて、何がすごいのかわからない。


当時の背景をある程度知っていれば、もう少し別の楽しみ方ができます。

そこらへんの説明を書かないとね。





▲目次へ ⇒この記事のURL

別年同日の日記

02年 献血好き?

15年 ファイナルアーチ

15年 ニコラ・テスラ 誕生日(1856)


申し訳ありませんが、現在意見投稿をできない状態にしています

WAR GAME  2013-07-11 16:28:33  コンピュータ

▲目次へ ⇒この記事のURL

1983年の映画に「ウォーゲーム」と言うのがある。

結構有名な映画だし、古典でもあるので見たことがある人も多いのではないかと思う。


僕は中学だったか高校だったかのときに、テレビで放映されたのを見た。


あらすじは先にリンクした Wikipedia を読んでもらうと良いが、自分の記憶では、映画の中に出てくるアメリカ軍の重要コンピューターシステムは、人工知能研究の黎明期のシステムが「拡張を繰り返して」大規模な用途に使われるようになったもの、だった。


このシステム上の軍事演習シミュレーターを、高校生ハッカーがゲームだと思って起動してしまう。

ソ連からの核攻撃のシミュレーション。急に稼働したそのシステムを「事実だ」と誤認した軍が動き始めてしまい、報復核攻撃を行おうとする。


急に展開された米軍の布陣に、ソ連も反応。世界は全面核戦争の危機に…というのが大まかなストーリー。


最終的には、人工知能研究に使われていた初期のころに散々遊んだ「三目ならべ」には勝者がいなかったことを思い出し、全面核戦争にも勝者はいない、とコンピューターが悟り、戦争は回避される。



実際には核ミサイルの発射のような重大事項を、よく確認もせずにコンピューターだけに任せたりはしないし、コンピューターが「悟る」と言うようなこともない。


全面核戦争、という話題にはリアリティがあった世の中だったが、コンピューターの描かれ方はいい加減だな、と思った。




ところが、最近 WhirlwindTX-0 の研究をしていて、ふと気が付いた。

ウォーゲームに出てくるコンピューターのモデルって、この2台を混ぜ合わせたものだ。


Whirlwind(WWI) は、拡張されて SAGE という防衛システムの中核となった。

一方で、WWI はトランジスタによって小型化されて TX-0 となり、人工知能の研究に使われた。

(実際、三目ならべが作られた)


三目ならべは「ゲーム」として作られたのではなくて、人工知能研究の一環だった、というのがミソだ。

αβ刈りも必要ないほど簡単な探索だけど、相手の出方を伺いながら利益を最大限にするためのアルゴリズムを備えている。


#利益を最大限に…というのは、出来ることなら相手に勝つ、そうでなくても引き分けに持ち込んで負けない、と言う意味だ。


同じく、TX-0 で作られた人工知能である MOUSE は、迷路を学習して出口までの最短経路を探そうとするものだった。

ここに、「学習」というキーワードもあるわけだ。


ウォーゲームの作者は、ちゃんとこうしたコンピューターの技術を調査したうえで話を組み立てたのだろう。



三目ならべで人間の相手を出来る TX-0 は、防衛システムの中核を担う SAGE とほぼ同じものである。

TX-0 は三目ならべで、相手の出方を伺いながら「少なくとも引き分けに持ち込む」能力がある。

また、TX-0 は MOUSE で、試行を繰り返しながら学習を行うことが出来る。


これが、話の中で「核戦争シミュレーションを繰り返すことで、この戦いに勝者は居ないことを学ぶ」というコンピューターになったのだろう。


こんなのあり得ない、と当時の自分は笑ったが、それは自分の知識が足りなかったための認識不足だったことになる。

もちろん、コンピューターが自分で「悟る」ようなことは今でもないけれど、それ以外の部分は事実に基づく話だったのだ。




▲目次へ ⇒この記事のURL

関連ページ

NORAD 設立日(1958)【日記 16/05/12】

NORAD 設立日(1958)【日記 16/05/12】

別年同日の日記

02年 STAR WARS

03年 賽の河原

05年 ほたる

06年 風邪

11年 生き物ばんざい

12年 こんにちわ

15年 僕の担当部分

16年 岩田聡 命日(2015)

23年 エアコン水漏れ


申し訳ありませんが、現在意見投稿をできない状態にしています

祝30周年  2013-07-15 11:31:12  コンピュータ

▲目次へ ⇒この記事のURL

今日がファミコン、セガ SG-1000 ともに30周年の日だそうだ。

MSX は少し前に 30周年だったので、8bit 時代の花形ゲーム機は一斉に30周年を迎えたことになる。


数日前から、この日に向けて「本当の発売日」を特定する作業をしていた方もいるようで頭が下がる。

30年も前は今ほど流通もよくなかったし、発売日に店頭にあるとは限らなかった。


でも、新聞広告などで「本日発売」の告知を探し当て、両機種が同日発売であることを特定していた。




昔、ゲーム業界で働いていたころに、セガのお偉いさんが「ファミコンがブームになったので当社も家庭用に乗り出した」と発言していた。


それを聞いたときに、それはおかしいんじゃないか、と思った。

自分の感覚ではセガの方が発売は先だったし、少なくともファミコンブームは発売よりずっと後だ。


当時のセガは急成長しすぎて人材が足りず、発言したのは別業界から招聘された「経営慣れした人」だった。

つまり、ゲーム業界には詳しくない。だから発言が間違っているのだと思っていた。


もしかしたら、「ブーム」というのは間違えているが、任天堂が家庭用に乗り出すという情報を掴んだので、セガも開発を開始した、と言うことはあるかもしれない。


全くの同日発売、というのは偶然ではないと思うので、それくらいの関連ならありそうだ。


当時は任天堂はおもちゃ屋、セガはゲーム屋でライバル視はしていないと思うが、ゲームならセガの方が本業だ、という気持ちはあったかもしれない。



ちなみに、調べてみたら30年前の7月15日は金曜日。

夏休み前の最後の週末を迎える前日だし、月の真ん中の切りのいい日なので、発売日が同日なのは本当に偶然だった可能性もある。




ところで、「MSX をゲーム機扱いするな」という向きもあると思う。でも、あえて同列に並べる。


MSX がプログラムできるからパソコンだ、と言う主張に対しては、ファミコンだって SG-1000 の上位機種の SC-3000 だってプログラムできたよ、と返させていただく。


だって、僕はファミコンを購入したけど、他の機械が羨ましくて友達と貸し借りしていたから。

友達は「ゲームできること」が羨ましくてファミコンを借りたがったけど、僕はプログラムが組みたくて MSX や SC-3000 を借りたのだった。


後に、ファミリーベーシックが発売されたので購入。

僕のページに書かれたパソコン遍歴はファミベから始まっているけど、「所有しなかったけど使った」パソコンがそれ以前にあるのだった。



▲目次へ ⇒この記事のURL

関連ページ

ファミコン・SG-1000の発売日(1983)【日記 15/07/15】

ファミコン・SG-1000の発売日(1983)【日記 15/07/15】

別年同日の日記

15年 ファミコン・SG-1000の発売日(1983)

15年 海外版


申し訳ありませんが、現在意見投稿をできない状態にしています

ゲームの歴史・ファミコン以前  2013-07-15 12:25:07  コンピュータ

▲目次へ ⇒この記事のURL

さて、ファミコン・セガ・MSXの30周年と言うことで、ゲームの歴史の外観でも書こうか。


ファミコン「以前」と「以降」ではゲームは大きく変わったと思う。

歴史的な転換点の一つであったことは確かだ。


ゲームの歴史には、こうした転換点がいくつかある。



ファミコンの前は、日本ではインベーダー、米国ではパックマンがよく取り上げられる。


インベーダーは、日本では大ヒットした。

これ以前のゲームは、ゲーム自体を「回路として」設計していたので複雑なことが出来なかった。


インベーダーはゲームを「ソフトウェアとして」開発した最初のゲームとされていて、ゲームは各段に面白いものになった。

任天堂だって、この頃にゲーム業界に参入したのだ。インベーダー無くしてファミコンはなかった。


米国ではインベーダーブームはなかったので、同様のゲームがパックマンとなる。




インベーダーの前にはブロック崩し、そしてポンがあった。

ポンは2人対戦のテニスゲームで、これを改良して一人でも遊べる「壁打ちテニス」もあった。


この壁打ちテニスで、跳ね返った壁が壊れるようになったのがブロック崩し。

厳密なことはともかく、大体そんな認識であっている。


実は、ポンを作ったノーランブッシュネルは、ポンの前に「コンピュータースペース」というゲームを開発している。


このゲームは非常に面白かったらしい。ルールも適度に複雑で、遊ぶ人ごとに多様な戦術が取れるようになっていた。


しかし、テレビゲームを初めて見る人が多い中で、いきなり「面白すぎる」ゲームを出しても、みんな付いてこれなかった。遊び方が理解されないのだ。


そこで、単純明快でわかりやすいことを目標に、大幅に「ゲーム性を落とした」のがポンだった。

はじめてテレビゲームを遊ぶ人には、その程度の内容の方が好まれたのだった。




コンピュータースペースは、PDP-1 で作られた「スペースウォー!」というゲームを、業務用にアレンジしたものだ。


PDP-1 のスペースウォーはソフトウェアで動いていたが、コンピュータースペースは同じような内容を回路構成で作った。

まだ 4004 も作られていない頃、汎用的にソフトを組める「演算装置」を作るのは、コストがかかりすぎたからだ。


スペースウォー!も、最初からいきなり「多様な戦術」が取れたわけではない。

最初は単純な対戦シューティングゲームだったのが、楽しむ人々の手で次々改良され、緊急避難ワープ機能やブラックホールが追加されてきたのだった。


これは、PDP-1 が当時としては「非常に低価格な」機械だったことが関係している。

高価な機械だと、ゲームなんていう「無駄遣い」はできない。


PDP-1 は、世界で最初の「ホビーコンピューター」だったのだ。


しかし何よりも重要なのは、PDP-1 が作られたときには、すでにプログラムをホビーにするプログラマーが多数存在したことだ。

多数のプログラマーがいるからこそ、スペースウォー!は多数の改良がおこなわれ、本当に面白かった改良だけが残されてきた。




なんでホビーコンピューターが作られるよりも前に、すでにコンピューターをホビーとして使う人々がいたのか。

ここでやっと、ここしばらく記事を書き続けている TX-0 が登場する。


PDP-1 は TX-0 を再設計して作られたものだ。

だから、出来ることはそれほど変わらないが、PDP-1 の方が「やりやすかった」。


TX-0 で、すでにゲームは多数作られていた。PDP-1 は、それをさらに推し進める推進力になった。


TX-0 以前のコンピューターにも、ゲームが作られた記録はある。

しかし、「こんなこともやってみた」と言う程度の実験の域を出ないし、ゲームらしいものが動いていたとしても面白いものではないことが多い。


TX-0 では、PDP-1 と同じように、誰かの作ったものを別の誰かが改良する、というのが当たり前だった。

そして、面白いものだけが残される。結果として面白いプログラムが沢山作られたし、その中にはゲームも混ざっている。


「世界で最初のテレビゲーム」を作り出したわけでもないし、スペースウォー!のような「初期の有名テレビゲーム」があったわけでもない。

でも、TX-0 はゲーム機の歴史の中で重要な地位を占めている。


アメリカではさすがに TX-0 に言及したゲームの歴史サイトが多いようだが、日本ではほとんどない。

もう少し光が当たると面白いのだけど。




…と、自分がそもそもゲーム好きで、コンピューターの歴史を調べるときにも「ゲーム」は重要な軸なので、TX-0 に強い興味を持っているわけです。


当時のソフトが多数残されていることを知り、しかしエミュレータは誰も作っていない(作りかけは2つ見つけたが)ことも知り、それならばと自分でTX-0エミュレータまで作ってしまいました。


気軽に当時のゲームを見てほしい、という欲求が最初からあったので、Javascript で作っています。


初公開時は、「TX-0 の操作法」を知らないとゲームで遊べなかったのですが、その後改良して、ゲームだけなら気軽に遊べるようにしました。

(元の操作も残してあるので、当時の機械の操作そのものを楽しみたい、という人でも大丈夫です)


実は、TX-0 は音も出せたのですが、Javascript の制約でこの部分はありません。

それらは、現在作りかけのエミュレータの作者がいつかどうにかしてくれる…と信じたいです。


#音楽演奏プログラムがあるのだけど、現在のところ、プログラムの実行方法すら不明。



後日追記 2015.7.15

この日記の後、さらにゲームの歴史を掘り下げた記事を書いています。


世界初のテレビゲーム


もっと詳しく知りたい方は、そちらの記事をお読みください。


▲目次へ ⇒この記事のURL

関連ページ

ファミコン・SG-1000の発売日(1983)【日記 15/07/15】

ファミコン・SG-1000の発売日(1983)【日記 15/07/15】

別年同日の日記

15年 ファミコン・SG-1000の発売日(1983)

15年 海外版


申し訳ありませんが、現在意見投稿をできない状態にしています

ネズミとチーズとマティーニと  2013-07-19 01:05:35  コンピュータ

▲目次へ ⇒この記事のURL

ネズミとチーズとマティーニと

Mouse in Maze は、日本では「迷路のネズミ」とも訳されている。

世界最初のテレビゲームとも呼ばれる…とは以前も書いたけど、僕も実物で遊ぶまで半信半疑だった。


「ユーザーが作った迷路を、ネズミがゴールまでいく」というのがゲームだとは思えなかったのだ。

迷路を抜けるのを見ているだけなら、デモプログラムでしょ?


でも、遊んでみてわかった。これは明らかにゲームだ。


「迷路のネズミ」以前にも「テレビゲーム」は作られていて、そちらの方が古い、とされることもある。

そのことは否定しない。どれが最初だ、という論争は見解の相違も含むため不毛だから。



そして、「迷路のネズミ」に隠しキャラが入っていたのに驚いた。

こういう遊び心こそが、これが「ゲーム」である証拠だと思う。


でも、隠しキャラって、ゲームの歴史としては「ゼビウス以降」ということにされているよね。


「迷路のネズミ」以前には、ゲームのキャラクターは存在しない。ただの点とか記号だ。

はじめてキャラクターを作ったゲームで、すでに隠しキャラクターが作られていたというのは、すごいことだと思う。




「迷路のネズミ」にキャラクターを差し替えた別バージョンがあった、というのは「ハッカーズ」にも書いてあった。


「迷路のネズミ」のプログラムを見つけ、動作するようになった時、別バージョンの方も見てみたいと思った。

しかし、残念ながらどこにもプログラムはなかった。


長い時代を経る間に失われたのだろう…と残念に思っていたら、そうじゃなかった。

正確には、「別バージョン」ではなく、「隠しキャラ」だったのだ。



「迷路のネズミ」を遊ぶ際に、簡単な操作を行うことでチーズがマティーニグラスに変わる。

これは、VIP だけに許される…と説明に書いてあった。


そう、隠しキャラと言っても何のことはない、ちゃんと説明があったのだ。

ただ、あくまでも「隠し」扱いだったようで、「こんな操作すると何が起きるかな?」的に軽く触れているだけ。だから気づかなかった。



この操作、難しくはないが、TX-0 の操作を理解している必要はある。

当時から「ゲームのプログラムを読み込ませる操作だけ理解していて、ゲームを遊ぶ」人はいたらしい。


だから、VIP だけに許される、というのはちゃんと TX-0 を理解している人だけが見られる、と言う意味だ。




エミュレータで遊んでいると、少し動作がおかしいところがあるように感じた。

これが元からあるバグなのか、エミュレータのバグなのかわからないため、「迷路のネズミ」のプログラムを解析している。


非常に巨大なプログラムの上、当時のプログラムなのでスパゲティ具合が半端ではない。

どうもどこかの段階で元ソースは失われたらしく、パッチあてに次ぐパッチあてで機能が拡張されている。


空いている隙間メモリにプログラムを突っ込んで、ジャンプしまくって動かしている状態だ。

解析を拒んでいるとしか思えない。


でも、解析してわかってきたこともある。



ネズミは、単に迷路を進むだけではなく「体力」が設定されている。

歩きすぎて疲れると停止してしまう。続行不可能なわけで、ゲームオーバーだ。


遊んでいて停止してしまうのはバグだと思っていたけど、これはゲームを難しくする演出だったのだ。




ネズミがチーズを食べる(もしくはマティーニを飲む)と体力が回復する。

チーズはゴールなのだが、3つまで置けるのでうまく配置し、迷路を隅々まで探索させることが目的になる。


そして、無事ゴールしたらもう一度スタートする。

2回目は、ネズミが迷路を覚えているため、無駄な道は通らない。


1度目に時間がかかった迷路を、2回目はスマートに解く。

これが可能な迷路をうまく設計するのが、このゲームの楽しみだ。


#TX-0 実機では、迷路を記録しておく方法も用意されていた。(紙テープにパンチする)

 今のところ、エミュレータでは紙テープパンチ機能がないため、保存はできない。


体力だけでなく、ネズミがあまり頭がよくないのもゲームを難しくしている。

ネズミがどのような行動をとるか、試行錯誤しながら人工知能のルーチンを理解する必要がある。




もう一つ、これはプログラムの都合上の制約があって、チーズを複数置くときは、それらが「最短経路」上になくてはならない。


2回目はスマートに解く、という都合上の制約なのだが、袋小路にチーズを置くことはできない。

これを明確にするためか、チーズを食べると、その時の進行方向に対して「前」と「後ろ」に見えない壁ができた状態になり、後戻りはできなくなる。


そのため、これもややこしいのだが「途中のチーズを食べたら、曲がらなくてはならない」という制約が生まれる。


なんか変な制約でバグっぽく感じる。

だからプログラムを解析していたのだけど、「学習の都合」だという気がしてきた。



というわけで、遊んでみたい方はTX-0 エミュレータで迷路のネズミを遊ぶことが出来ます。



▲目次へ ⇒この記事のURL

関連ページ

ゲームの歴史・ファミコン以前【日記 13/07/15】

別年同日の日記

12年 三連休

18年 テレビ買った


申し訳ありませんが、現在意見投稿をできない状態にしています

○○、Fonera やめるってよ。  2013-07-23 11:45:15  コンピュータ

▲目次へ ⇒この記事のURL

○○の部分は僕の本名で(笑)


ここ1週間ほど、Google ハングアウトを使おうとしてうまくいかない、ということで悩んでいました。


原因を究明したところ、最終的に、Fonera をやめるかハングアウトを諦めるか2択になったのですが、ハングアウトは仕事で必要なので Fonera をやめることにした次第。


誤解がないように先に書きますが、ハングアウトと Fonera の相性が悪いわけではありません。

ただ、僕の場合別の事情もあって、どちらか片方しか取れなかったというだけ。




そもそも Fonera なんて知らない人が多いでしょうね。


Fon という無線ネットワークサービスがあり、そこに参加する人を Fonera と呼びます。


Fonera には2つのタイプがありますが、基本的には「僕の家の無線 LAN を他の人も使っていいから、僕にもあなたの家の無線 LAN 使わせて」という構造です。


他の人が無線 LAN を使うとなるとセキュリティが気になる人もいると思いますが、Fon が販売している無線 LAN ルーターを使っていれば心配無用。


非常に巧妙な仕組みで、セキュリティを守りながら他の人に無線を解放してくれます。


#わかる人のために解説すれば、無線電波を時分割して、「プライベート」と「フリー」の2つのアクセスを可能にします。

 このうち、フリーアクセスの電波は、LAN 側とは異なるアドレスを DHCP で発行し、ルーターの WAN 側にしかアクセスできません。つまり、自動で DMZ を作り出します。

 プライベートの電波は、LAN 側のアドレスを DHCP で発行し(設定で無効にすることも可能)、LAN 側にも WAN 側にも自由にアクセスできます。




ところで、僕は自宅で仕事をしているので、仕事用の電話番号を持っています。

これに IP 電話を使用しています。PC を使用していなくても、普通に電話として受け取れる必要があります。


というわけで、ルーターには IP 電話(VoIP)を電話機に接続する機能が必要。


でも、Fon は VoIP には対応していません。

そこで、VoIP 対応のルーターと、Fon を同時に使うことになります。


VoIP はネットワークサービスプロバイダが提供しているため、VoIP ルーターがプロバイダへの接続をする…つまり、ルーターとして機能する必要があります。


Fon は、フリーアクセスから来たパケットを WAN 側に送るため、家庭内 LAN の中に置くのではなく、ルータとして機能する必要があります。


…あら、接続先は1つなのに、ルーターが2台になっちゃった。

大丈夫。 Fon には、WAN 側に接続する方法を選ぶ機能があります。


通常、プロバイダ接続には PPPoE を使いますが、固定 IP にすることも可能です。

そこで、


・VoIP ルーターは WAN 側としてPPPoE でプロバイダに接続し、LAN 側として内部ネット A に接続する。

・Fon ルーターは WAN 側として内部ネット A に接続し、LAN 側として内部ネット B に接続する。


という構成をとっていました。


内部ネット A は、フリーアクセスのパケットも通るため、危険なエリアです。

内部ネット B は、完全に家庭内の LAN です。



これで何の問題もなし。


実は、ルーターではアドレス変換処理(NAT)が行われています。


NAT というのは、ネットワークの住所である「IP アドレス」を、適切に変換する技術です。

現在、IP アドレスはネットワークの急激な膨張で足りなくなっており、すべてのパソコンに IP アドレスを付けることが出来ません。


そこで、家庭内に複数台のパソコンがある場合は、「家庭内だけの仮の」アドレスをつけておきます。


その状態でプロバイダなどから「一つだけ」本物の IP アドレスをもらい、通信を行う際に、通信データの「送信元」として、仮のアドレスから本物のアドレスに、NAT によって変換してもらうのです。

後で外部のコンピューターから「返信」が来た際も、NAT が適切に変換してくれるため、家庭内の正しいパソコンに届きます。



2個もはさむと無駄に処理を重ねることになりますが、特に問題はありません。

TCP パケットも問題なく通りますし、UDP を使った traceroute なども問題ありませんでした。




ところが、ハングアウトはダメだった。


TCP の場合、返信パケットには特別なビットが付与されるため、ファイアーウォールなどではこれを見て外部からのパケットを通すか通さないか判断します。


UDP にはこのビットはありませんが、内部からアクセスした先を覚えて置き、そこからすぐにパケットが来た場合は「返信だろう」と判断します。



ハングアウトなどのサービスでは、通話するユーザーが直接パケットを送り合うのが基本です。

しかし、そのためにはお互いが本物のアドレスを持っている必要があります。


しかし、現在のネットワーク上では、ほとんどの端末が NAT によって「隠されて」います。


そこで、ハングアウトでは巧妙な方法を使います。


・通信するさいは、まず Google のサーバーにアクセスを行います。

 Google のサーバーは仲介を行い、相手に通信開始を伝えます。

 (Google サーバーには本物のアドレスがあるため、両者がそれぞれアクセス可能です)


・通信を開始する際、お互いの端末は、自分の周囲の環境を調べます。

 NAT には何種類もの実現方法があり、それぞれに「クセ」があります。

 このクセを調べておくと、後で役立つのです。


・Google サーバーは、お互いの調べた「自分の環境のクセ」を相手に送信します。

 このあと、「せーの」で両者が同時に通信を開始します。


・NAT は、基本的に「通信した相手からすぐにデータが届いたら、返信だと考える」ようになっています。

 せーの、での同時通信が成功すれば、それぞれのデータが「相手からの返信」だとみられ、NAT に受け入れられます。


・以降はお互いにデータを送り続けますが、送っているデータが「返信である」とNAT をだまし続けるために、NAT のクセにあわせて適切な処理を行います。



以上は、わかりやすく書いたシナリオで、技術的な正当性は不明です。


Google はプログラムの詳細を明らかにしていませんし、断片的な情報を組み合わせると「多分こういうことだろう」と判ってくる、と言う程度のものです。



そしてどうやら、大事なのは「NAT のクセ」の部分。

NAT を2重に重ねていると、両方の NAT の特徴が混ざってしまって「どういう NAT かわからない」という判断になってしまうようなのです。


いろいろルータの設定を試して、ハングアウトでの通信が成功することもありました。

その場合でも安定性が悪く、同じ状況で再接続しても繋がらなかったりします。




つまりは2重 NAT ではハングアウトは使えないのです。


VoIP か Fon のどちらかを諦めれば、2重 NAT はなくせます。

VoIP は仕事で使用している電話なので、なくすわけにはいきません。


Fon は…以前、便利に「他人の無線電波」を使わせてもらっていたこともありました。

ただ、他人と言うより、 Livedoor の電波だったんですよね。


一時期 Livedoor と Fon が提携していて、Fon の ID で入れる時があったのです。

Fon は「民家」に設置されるため、住宅地の中に入らないと使えないことが多いです。

でも、Livedoor は繁華街にあることも多く、外出時に使うことが出来ました。


今は提携も解消し、ここ3年くらい、外出時に Fon で接続を試みたことはありません。


というわけで、Fon を諦めることにします。公開を続けたかったけど、苦渋の決断。




先に説明した通り、Fon ルーターには LAN と WAN への接続機能があります。

WAN への接続ポートにケーブルを接続しないと、自動的にフリーアクセス電波も出なくなります。


この状態でも、家庭内無線 LAN の基地としては使えるため、家庭内での使い勝手は変わりません。



後は家庭内の設定変更方法を熟考して…

ルーター以外の設定をいじらず、公開サーバーの停止時間も3分ほどで新たな設定になりました。


ハングアウトも問題なし。



Fon 自体の思想は好きなので、たとえ自分が外出時に使わなくても、フリースポットを公開しておきたかったのだけどね…



▲目次へ ⇒この記事のURL

関連ページ

NTT工事延期【日記 15/11/27】

別年同日の日記

02年 免許更新

09年 ゲーム解禁

14年 高柳健次郎の命日(1990)

15年 夏風邪

18年 LED 電球

19年 のみかい

22年 プリンタ購入


申し訳ありませんが、現在意見投稿をできない状態にしています

LUMIX Phone Update  2013-07-30 11:48:18  コンピュータ

▲目次へ ⇒この記事のURL

以前に書いたLUMIX Phone の不具合だが、どうやら解消したようだ。


アップデートがあったのは7月2日だったらしいのだが、僕が気づいたのは11日。

アップデート内容としては、LINE 使用時の不具合の解消…となっている。


僕は LINE 使ってないし、一番の不具合である「不意の暴走」を解消した、とは書かれていない。

でも、こっそり直っていることを期待して、アップデート。


…その後2週間少し使っているが、暴走していない。

それまでは、実感として五分五分くらいの率で、週に一度は暴走していた。


それが2週間問題なしなのだから、不具合は「こっそり」修正された、と考える。



ちゃんと「解消しましたよ」と言ってくれれば安心なのだけど、理由もなく暴走するというのは一番恥ずかしいバグなので、そんなバグがあったことすら認めたくないのかもね。


ともかく、生産終了して1年半もする機種を、いまだにアップデートしてくれる姿勢は賞賛したい。


暴走バグと言う、電話としては致命的な不具合があったよ、というネガティブな情報を過去に書いた責任として、パナソニックさんはちゃんと面倒見てくれたよ、という訂正情報を書く次第です。

(やっぱ暴走する、という再訂正記事を書くことにならなければいいけど)




▲目次へ ⇒この記事のURL

関連ページ

LUMIX Phone 不具合【日記 13/05/31】

別年同日の日記

02年 白バイ

04年 何とかなりそうです

09年 大人が手足口病にかかると…

16年 相模原JAXA公開日

18年 ドライカレー


申し訳ありませんが、現在意見投稿をできない状態にしています

ページ4つ  2013-08-01 15:58:19  コンピュータ

▲目次へ ⇒この記事のURL

TX-0 の「迷路のネズミ」の遊び方を書いた。


テレビゲームの歴史に興味がある人には、ぜひ遊んでほしいゲームだった。


でも、遊び方が結構複雑で、何が面白いのか気づくまでに時間がかかる。

遊び方ページでは、遊びのポイントと、複雑な TX-0 の操作方法の両方をまとめた。


…なにぶん、プログラマーがプログラマーのために作ったゲームなので、コンピューターの知識がないと操作するのも難しいかもしれない。




日記の方にすっかり書きそびれていたが、少し前に「80年代の画面表示技術」を書いた。


こちらは、実はずっと以前から書きたかったもの。


一応、今年の正月に書きたいという意思表明をしているので、新年の抱負を夏にやっと果たしたことになる…のかな (^^;


こちらは、実は3本だて。

先にリンクしたのが、基礎技術編。


別だてで、MSX 編ファミコン編がある。



実は、7月15日がファミコン・SG-1000 の30周年だった、と聞いて一気に書いたもの。

書きたいと思っていても、そういうきっかけがないとなかなか書くことができない。



これも、実は3回くらい、書いては全部消して、を繰り返していたのだけどね。

その繰り返しで「入り込んだらややこしくなる脇道」が理解できて来たから、一気に書き上げられただけで。


それでも、書き進めるうちにずいぶんややこしくなったのでした。

最初は画面技術をざっくり書くだけのつもりだったのに、一部のゲームが使った技法とかにも踏み込んじゃったから。




▲目次へ ⇒この記事のURL

別年同日の日記

07年 SPAM 対策

14年 夏の家族旅行(箱根) 1/3

14年 夏の家族旅行(箱根) 2/3

14年 夏の家族旅行(箱根) 3/3

16年 Microsoft Office 発売日 (1989)

17年 最高峰登頂記

23年 長女のコロナその後


申し訳ありませんが、現在意見投稿をできない状態にしています

「迷路のねずみ」動画公開  2013-08-04 09:46:28  コンピュータ

▲目次へ ⇒この記事のURL

相変わらず TX-0 の話です。すみません。


「迷路のねずみ」の説明がややこしいので、これは動画でも作らんと仕方ないな、と思って作ってみた。

YouTubeニコニコ動画にアップした。


そして、YouTube のものを、「迷路のねずみ」説明ページに埋め込んだ。

文字だけで説明するよりも、ずっとわかりやすくなったと思う。




ところで、YouTube もニコニコもそれほど見ない。

だからシステムがよくわかっていない。


わかっていないなりに、一応勉強してからアップロードした。

郷に入れば郷に従え、だから、礼儀作法は守らないと。

(勉強不足で守れていない、という批判があれば教えてください。修正できるならいたします。)


ニコニコは時々見て、質問などがあれば返信すること、と書かれているページがあったので、翌日見に行ってみる。


コメントは残念ながら「おお」という一つしかなかったが、思ったより多くの人に見られていた。

夕方上げて、翌朝…公開から12時間で300人くらいだったかな。


誰かがタグをつけてくれていた。

タグに関しては、一応調べて付けたのだが、不慣れでよくわからなかった。適切なタグを付けてくれる人がいるならばありがたい。


しかし「世界の新着動画完走組」ってどういう意味だろう。



…調べてみたら、ニコニコ生放送に「世界の新着動画」というのがあるらしい。

生放送自体一切見たことないのだが、投稿された動画をみんなに見てもらい、生放送なので途中途中で「続きを見るか」とアンケートをとるらしい。


で、半数以上が「見たい」と答えなければ、そこで打ち切り。

このシステムで最後まで視聴されたものが「完走組」のタグをもらえるのだとか。

このタグがついた動画は、あるていど品質が保証されていることになる。



…はじめて作った動画だが、なんか名誉なことらしい。ありがたい限り。


夜になり追記


ニコニコのシステムがわかっていないなりにいじっていたら、「世界の新着動画」の録画を見ることができた。

その場で流れたコメントは、アップした動画には反映されないようだ。でも、反応が見られてよかった。


で、日曜(つまり今日)の夜(5時~7時)に、1週間分の「完走組」をまとめて再放映するのを知った。

この時も、ふたたび審査がある。最後まで見られなかったからと言って名誉剥奪、ということはないが、やっぱ見てほしい。

僕もリアルタイムに見たかったが、子供たちの夜ご飯の時間に2時間も時間をとるわけにいかない。



後で確認したら、最初の「世界の新着動画」の録画は見られなくなっており、かわりに「完走組」まとめ放送が見られるようになっていた。


もう自分が関われない状況で、最後まで見てもらえるのかドキドキしながら録画を見る。

…無事最後まで見てもらえたようだ。ほっとした。




いろいろ調べていて知ったが、そもそも「世界の新着動画」は、その日の新着投稿から「ランダムに」選んで審査する仕組みらしい。

なので、取り上げられた時点で運が良かったことになる。


気に入ってくれた人もすでに数人いるようだし、何かまた動画を作るのも面白いかな、とは思う。

でも、今はネタがないなぁ。



▲目次へ ⇒この記事のURL

別年同日の日記

11年 家族旅行

11年 家族旅行2日目

16年 手相占い特別版

20年 梅雨明け


申し訳ありませんが、現在意見投稿をできない状態にしています

新記事投入と、「ニコ動」話のつづき  2013-08-06 23:54:49  コンピュータ

▲目次へ ⇒この記事のURL

50年代の画面表示技術を公開しました。


名前の通り、先日公開した80年代の画面表示技術と対になっています。


80年代がラスタースキャン技術の話で、50年代がベクタースキャン技術の話。


もっとも、50年代と言いながら60年代も含まれるし、80年代 ATARI ゲームの話まで入っています。



いつか画面表示技術の話をまとめたい、と思っていたのですが、これでやっと形にできました。




ついでに、2日前に書いた話の続き。


ニコニコ動画をたいして使ったこともないのに、せっかく動画作ったのでアップしてみたら、「世界の新着動画完走組」というタグがついてびっくり…と言う話でした。


「名誉なことらしい」とはわかったのだけど、知れば知るほど…初心者がこんなもの貰っていいの?



世界の新着動画、と言う生放送は、毎日7時間半やっているらしい。

30分か1時間刻みで、ジャンルごとにその日の投稿動画をランダムに放送する。


で、1分ごとにアンケートを集計して、結果が悪いと打ち切られる。

生放送だけど録画を後で見られるようになっていたのでみたら、それはもう、ばっさばっさと打ち切られる。


大抵は最初の1分目で打ち切り。良くても2分。

3分行ったら、かなり興味を持たれているということだと思う。こうなると最後まで行けるのかもしれない?


(全部見たわけではないのでよくわからないけど)



平均1分半とすれば、7時間半で 300 本の動画を流すことができる。


これに対し、最後まで「完走」できるのは、多い日で4本、0本の日もある。

平均2本とすれば、完走は 150本に1本の栄誉と言うことになる。



でも、これは「ランダムに選ばれて」放送されるのだ。

実際には、選ばれもしなかった動画がもっとたくさんある。


現在の総動画数が、9602956 本だそうだ。

「世界の新着動画完走組」と言うタグ(自動で付けられるし、ユーザーはつけられない)が付いた動画は、7134 件あった。


1346本に1本しか選ばれない、と言うことになる。


まぁ、この制度が始まる前の投稿など、選ばれようのない動画も含んだ数字だけど、貴重な栄誉だということはよくわかった。



翌日追記

「週間世界の完走動画」というのもある。

週に一度、完走組だけを集め、その中からランダムに放映するものだそうだ。


…?

1週間分でも、「ランダム」を入れないといけないほど多い?


先日分は、37本放映されたようだ。

一週間に、これ以上は「完走」していることになるので、一日5本以上は完走が存在することになる。


どうも、「完走」タグは、すでにタグが上限いっぱいだったりするとつかないようで、タグで検索した僕の調査方法が間違えていることになる。



僕の動画、運よく「週刊」でも紹介され、完走した。

完走は37本中18本あったらしい。


そして、完走するとつく、という「完走動画完走」タグはついていなかった。

調べても、同じときに放映された動画で、このタグが付いているものはなかった。


どうもよくわからん。システムがバグ含みなのかな?



▲目次へ ⇒この記事のURL

別年同日の日記

02年 富士山

05年 病名判明

14年 Copyright 表記について

18年 C言語で会話

23年 ハムスター永眠


申し訳ありませんが、現在意見投稿をできない状態にしています

家族旅行に行ってきました。  2013-08-09 22:43:57  コンピュータ 家族

▲目次へ ⇒この記事のURL

8日、9日で家族旅行に行ってきました。


えーと、詳細は今年は旅行ページに近日中に書こうと思います。

いままで家族旅行は日記扱いだったけど、最近 WEB サイト復活プロジェクト推進中(?)なので。



それはさておき、今回旅行中に初めて「ツイート」ってもんをしてみました。

ツイッターはじめて2か月程度なのですが、いろんなしがらみで、外出中にツイートしたことは一度もなかったのです。


…朝子供が起きる前とか、そういう時には可能。

でも、子供の面倒見ながらツイッターとかできない、とよくわかりました。




でも、昼ご飯前に軽食を食べに入った店で、「これは面白い」と思った写真を1件送りました。

その後は忙しくて、帰宅まで一切ツイッターにアクセスせず。


先ほど帰宅してみてみたら…RPG なら、混乱して数ターン動けない状態。



えーと、リツイート数が千超えてる。

非公式RTもかなりの数に上るようだ。


「ジャミラ」って言葉検索しみてたら、リツイートやメンションでなく、いろいろ話題にされている。




すでに自分の手を離れているものなので、何を言っても仕方がない話なのだけど…


・怪獣の絵がシュールだ、と言うネタではないです。


・ジャミラが懐かしい。よく服被って遊んだ、と言うネタでもないです。


・水が弱点のジャミラだから、水は控えてね、というネタでもないです。


・ジャミラは可愛そうな怪獣(理由は後で)なのに、こんなところでネタにするのは不謹慎、という意図でもないです。



本来ジャミラは人間で、宇宙開発の犠牲となり、水がない星に不時着します。

そして、水なしで何とか生き延びようとした結果、怪獣になります。


彼は(いろいろあって)地球で暴れ、退治されます。

でも、彼だってなりたくて怪獣になったわけではないのです。水さえあれば…


その、水のない苦しみを知っている彼が「節水」を訴えかけているのが せつない という話です。



「節水」の2文字だけで涙が出てきます。絶対守らねば、と思います。

節水を呼びかけるのに、これほど適役の人選を僕は他に知りません。



でも、この節水ステッカーを貼ってあった遊園地では「本日は非常に熱いので、熱中症に気を付けてください」と繰り返し放送していたよ。


こまめに水分をとること。それは、無駄な水ではないから、そこで「節水」は持ち出さない。

命を守るために使う水は、ジャミラも喜んでくれると思うよ。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

関連ページ

夏の家族旅行2013

別年同日の日記

07年 寝返り

10年 3度目の正直

10年 映画

12年 夏の家族旅行(1日目)

12年 夏の家族旅行(2日目)

16年 宇宙からの初メール(1991)

18年 夏の家族旅行

18年 理科ハウス


申し訳ありませんが、現在意見投稿をできない状態にしています

国立科学博物館  2013-08-22 10:53:32  コンピュータ 社会科見学 家族

▲目次へ ⇒この記事のURL

国立科学博物館

時々日記に登場する、JAMSTEC に努める妻の知人から、上野にある国立科学発物館で開催中の「深海」展のチケットをいただいた。

開催前にいただいていたが、昨日やっと家族で見に行く。


平日だというのにすごい混雑。

保育園の子2人はあまりの人込みで、途中から「つまらない。早く出たい。」と言い出す。


小学生の長男はそれなりに興味深く見ているが、混雑で思うように見られないのは多少面倒なようだ。



つまらないと言うには多少訳があり、展示の内容の多くが見たことのあるものだから。

協力しているのは JAMSTEC と新江ノ島水族館、それにすみだ水族館のようだ。


元々 JAMSTEC の本拠地と江の水は立地が近いせいもあり、仲が良い。江の水にも深海コーナーとかがあったりする。

そして、家からは上野に行くよりも、JAMSTEC や江の水に行く方が近い。

結果として、展示内容の多くはすでに見たことのあるものだった。




僕は過去に数回科博に言っているが、どういうわけか「コンピューターの歴史」コーナーを見られていなかった。

このサイトのページ構成を見てもらってもわかるように、一番の興味分野にもかかわらず、なぜか行くたびに展示入れ替え中だったり、企画展の都合で閉鎖中だったり、見られなかったのだ。


今回初めて見ることができた。

実は、深海展よりも僕にとってはこちらがメイン。



科学技術の発展コーナー。

コンピューターだけでなく、伊能忠敬の使った道具や、和式時計、からくり人形もある。


子供たちにこれが何であるか解説。

学芸員ではないが、近くにいた親子もなんとなく解説をきいている。

お父さん、こういうの語り始めると熱いよ~(笑)


しばらく前にスプライン曲線の歴史について書いたのだが、技術の発展コーナーの片隅に、なんの説明もないまま、製図用具(スプラインと呼ばれる道具)が展示されていた。


…といっても、製図用具そのものではなく、展示用にアクリル板で作られた「イメージ」だけどね。

これでも十分。あとで記事に写真追加しておこう。



高柳博士が最初にテレビの実験を行った機械の復元も置いてあり、数時間ごとにデモを行っていた。

これも写真を撮ってきたので、あとで「80年代の画面技術」の走査線の話のところに追加しよう。



しかし、この実験装置、存在は知っていたけど「ビデオみたいに決められた表示を出すだけ」だと思っていた。

撮影側もちゃんと再現してあって、手などを出せばちゃんと動画として写る。素晴らしい。


タイガー計算機や計算尺については、僕が子供に熱く語っているのでボランティアの人が寄ってきた。

触ってもよいタイガー計算機や計算尺もあり、日によっては出せるのだけど、今日は都合が悪くて出せない、と謝られた。


それはちょっと残念だけど、いろいろ突っ込んだ質問をしてみた。

…ボランティアなので、突っ込んだことになるとわからないとのことだった (^^;;



リレー計算機や真空管計算機については、もう言わずもがな。

と言っても、実際ここらへんになるといじったことがあるわけでもなく、それほど語れない。

ただ原理を教えられるのみ。



というわけで、楽しい科博見学でした…が、特別展と常設展示見て1日じゃ足りないね。

科博はちょっとしたテーマパークなので、1日じゃ回りきれない。また行きたいところ。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

社会科見学

家族

関連ページ

国立科学博物館【日記 16/01/10】

国立科学博物館【日記 16/01/10】

田谷の洞窟再訪【日記 13/08/26】

田谷の洞窟再訪【日記 13/08/26】

別年同日の日記

04年 大忙しです

17年 夏の家族旅行 2017

17年 下田海中水族館

17年 とうてんぽーる

17年 アニマルキングダム・動物園エリア

17年 アニマルキングダム・遊園地エリア

17年 アニマルキングダム・2周目~帰路

19年 SVG うねうね

20年 iPhone SE 購入

20年 Lenovo Ideapad C340 購入

21年 ワクチン接種


申し訳ありませんが、現在意見投稿をできない状態にしています

チューリングのチェスプログラム  2013-08-23 16:37:46  コンピュータ

▲目次へ ⇒この記事のURL

いささか旧聞に属することだが、昨年は「アラン・チューリング生誕100年」のお祭りだったらしい。


僕のページ、古いコンピューターとか扱っているし、チューリングももちろん重要人物なのだけど、昨年までは「死に体」だったので、こういう細かな話題を追いかけていなかった。


今年の春になり、次女が無事保育園の「3歳児クラス」になり、手がかからなくなったから WEB 更新を復活した、と言う感じなので…




先日までに書いている「迷路のねずみ」からの流れで、古いテレビゲームの歴史を洗い出してみよう、と思った。


テレビゲームではないが、最初はバベジだ。「機械が人間の相手をしてゲームができる」なんて考え始めたのは彼だから。

もっとも、彼もケンペレンのチェス人形を見て、「これはインチキだけど、本当に作れるのでは?」と思ったのだけど。


#人間の遊び相手になる機械、というテーマは非常に古く遡れる。

 極論すれば、原人の子供が遊んだらしい木製の人形が遺跡から発掘されている。

 多分、その人形を相手に「ごっこ遊び」でもしたのだろう。

 人間の遊びの相手をできる機械、の始祖である。



チューリングもチェスの研究をしている。

で、調べたら先に書いた「生誕100年」の話に突き当たった。


チェスは研究だけだと思ったら、コンピューターのプログラムまで作っていたそうだ。

ただ、当時のコンピューターでは容量も足りず、実際には動かせなかった。


しかし、生誕100年記念で、実際にプログラムされたそうだ。


そして、カスパロフ(世界初の、「コンピューターに負けたチェスチャンピオン」ですよ!)と対戦して、チューリングのプログラムはたった16手で敗れ去った。


カスパロフは、非常に弱いプログラムを称賛したそうだ。

「なんでも最初の一歩は大変なのだ」と。



…さすがチャンピオン。非常に紳士な態度だ。


僕も、8行ほど上で「コンピューターに負けたチャンピオン」と書いて笑いを取ろうとしたのを改めよう。

彼の名誉のために言っておけば、彼はコンピューターが「試合(6回勝負)の最初から最後まで、同じアルゴリズム」だと信じていた。


しかし、プログラマー側は、1試合ごとにアルゴリズム変更をしていた。

彼はコンピューターが次々と予想もしない手を繰り出してくるのに戸惑い、最後は「バグのせいで」とんでもない変則的な手を打ったことで混乱する。


コンピューターは何か、自分でも気づかないようなすごいものを見通しているのではなかろうか?

この不安で彼の思考は無茶苦茶になり、冷静なら勝てる試合を「投了」してしまった。


つまり、彼はコンピューターに負けたのではない。プログラマーとの心理戦と、ちょっとしたトラブルに負けたのだ。




それはさておき、いろいろとチューリングのチェス研究を調べたのだが、最終的にテレビゲームの歴史では使わないことにしました。


でも、せっかく調べたので書いておきます。



彼が作ったプログラムについて。


チューリングは、マンチェスター markI のプログラムを実際作成しています。

なので、それ用の記法とかつかっているのかな…? とおもったら、そんなことはありませんでした。


いろいろなところで「プログラム」と言われているのだけど、アルゴリズムを書いただけ。


しかも、前提として「コンピューターはコマの動かし方はわかっている」「ルールも熟知しており、違反はしない」などの条件の下で「どのコマを、どのように動かすべきか」を決定するものです。


えーと、実際にチェスができるプログラムが作られたのは 1965年ごろですが、最初のころは「ルールを教える」だけで苦労した模様。


そして、肝心のアルゴリズムがこちらで公開されていました。


10ページありますが、解説なども含むので実際のアルゴリズム部分はわずか。

詳細に読み込んでいませんが、「取れる」コマを点数化し、自分の手番だけでなく相手の動きも読み、自分の点数と相手の点数の差が一番大きいものを採用する…

と、今でも使われる「min-max法」に相当することを言っているようです。α-β狩りは無しのブルートフォースアタック。(まぁ、相手の手番までしか読まないのでそれほど量は多くないですが)


完全なプログラムの形式で示されているのであれば作ってみようかとも思ったのですが、「基本のチェスプログラム」をほとんど作らなくてはならないようなので、ちょっとパス。


興味がある人は、パラメーターなどをチューリングの定めたものに合わせて作ってみてください。



ゲームの歴史で調べたのは、バベジの夢をチューリングが引き継いだ形になっているから。

でも、チューリングの研究は、ここで行き止まり。



バベジは、チェスは難しすぎると気づき、マルバツに研究対象を変えている。

テレビゲームの初期には、マルバツが2つも作られている。


だから、テレビゲームはバベジの影響を受けてはいるけど、チューリングの影響はない、ということになる。


実際には一連の流れで、マルバツがまともに動き始めたらすぐチェスの研究が始まっている。

この際には、チューリングの研究も多分参照されていると思う。


でも、チェス研究はテレビゲームの最初期から見ると「ずいぶんと後」(1965年に、やっと満足のいくプログラムが完成している)だし、話がややこしくなるから思い切って割愛。



▲目次へ ⇒この記事のURL

関連ページ

コンピューターが、チェスの世界チャンピオンに勝った日(1997)【日記 15/05/11】

世界初の…

ドナルド・ミッキー 命日(2007)【日記 16/07/07】

世界最初のテレビゲームって結局どれなの?【日記 13/09/03】

別年同日の日記

02年 DVD作成

11年 節電その後(その2)

12年 サーバー故障


申し訳ありませんが、現在意見投稿をできない状態にしています

IBM407  2013-08-28 12:46:28  コンピュータ 歯車

▲目次へ ⇒この記事のURL

Twitter でシャープ公式アカウントがこんなのつぶやいてた。



強いかどうかと言うより、僕としては機種が気になった。


1960年当時だと、コンピューターは非常に巨大、かつ繊細な機器だ。

しかし、写真に写っているものは「箱」に収められているようだし、これだけで完成しているような印象を受ける。


とすると、DEC のミニコンピューターかな?

…と思って調べたが、DEC が商業的に成功した PDP-8 を作るのは 1965年だった。


最初は「横倒しにして運んでいる」ように見えた。当時のコンピューターは、大抵縦長だからだ。

でも、よく見ると板にあけられた(おそらく排熱のための)スリットは、この状態で正しそうだ。


横長でこの大きさだと、これは制御卓部分で、コンピューター本体は別に存在するのかもしれない。


運んでいる荷物の一番手前の部分、箱の上側に、斜めになっている部品が見える。

これ、パンチカードを納める読み取り機だな、とわかる。


#知らない人がこの写真見ても思わないだろうけど、特徴のある形状なのです。


となると、その奥にあるのはプリンタか。

排熱のスリットがあるのだから、写真手前が、実際に使うときには「奥」になるのだろうな。


パンチカードを使うのなら IBM だろう、と思って IBM の当時のコンピューターを調べる。

当時なら IBM 709 か、と思ったけど制御パネルは縦型のようだ。写真のものとは違う。


709 のもとになった 704 も調べたが、こちらも違うようだ。


しかし、こういう写真は大抵「制御パネル」や「本体」ばかりで、パンチカード読み取り機やプリンタと言う周辺機器は写真が少ない。


じゃぁ、と考えて「IBM パンチカード読み取り機」で写真検索してみる。


すると、どうもそれっぽい写真が見つかる。写真の元ページを見に行くと、どうやら IBM 407 タビュレーターと書いてある。


そうか! タビューレータか!





コンピューターだと思って探していたからわからなかった。


さすがに背面から撮った写真は見つけられなかったが、左の写真など、横のパネルの開閉部分など同じだとわかる。

多分、シャープ(写真には「~電機」と書いてあるが、これはシャープの昔の企業名、早川電機だろう)に運び込まれたのは IBM 407 で間違いないと思われる。


#この写真はPaulさんのページから引用。個人で IBM650 持っているって…すごい趣味だ。

 (リンク先では、もっと大きな元サイズの画像が見られる)


全体像としてはこちらの写真がわかりやすい。

シャープさんの写真とは正反対の位置から写したものなので、同じものであるとわかりにくいけど。


タビュレータは、パンチカードを読み取り、作表(テーブル化、つまり「タビュレート」)する機械。

407 の場合、作表の前段階として集計作業ができるので「会計機」とも呼ばれる。


左端に、パンチカードの束を置く場所がある。シャープの写真では、手前にあった部分だ。

置いたパンチカードは一枚づつ読み取られる。


装置上中央には、プリンタがある。ここで読み取ったデータを直接プリントアウトしたり、もしくは集計した結果をプリントアウトしたりできる。


右端横側にはハンドルが付いている。

この部分、引き出しのようになっていて、開けることができる。


引き出しを開けた状態が、この写真だ。


407 会計機は非常に高機能だったので、どのような作業を行うか、ここの配線を変えることでプログラムできた。

線(コード)を配するため、「コーディング」と呼んだ。


このプログラム方法は、ENIAC などと同じだと思っていい。


#詳細な2つの写真は、コロンビア大学より引用。こちらもリンク先で大きな画像が見られる。



407 会計機は、僕のページにたびたび出てくる書籍「ハッカーズ」の冒頭に出てくる機械だ。


「ハッカーズ」は初期のコンピューターハッカーの生活に迫ったドキュメンタリーだが、最初に扱うマシンはコンピューターではなく、この 407会計機だ。

当時はコンピューターは何百万ドルもするもので、一般人は触ることすら許されなかった。


というか、407も触ることは許されなかったのだが、704本体ほど厳重な管理はされていなかったため、ハッカーたちが夜中に忍び込んで、勝手に「遊んだ」様子が描かれている。



ちなみに、うちにある「ハッカーズ」は第3版第5刷だが、非常に誤記が多い。

407は、話をしている最中に急に「704」と名前が変わったりする。


先に書いた通り、IBM 704 コンピューターと言うものが実際にあるし、704 は 407 を周辺機器として使えるように設計してある。


英語原文を読んでみたところ、「407」の名称は1回だけ使われ、以降はすべて「it」だった。


日本語で「それ」が多いとわかりにくいため、訳者がわかりやすく、すべてを「407号」と書こうとしたようだ。しかし、間違えて途中から「704号」になり、余計に混乱させている。


#そもそも、「407」は機械の型番であり、個体を識別する「407号」ではないのだが。




407 はコンピューターではないが、IBM 704 コンピューターの重要な周辺機器だった。

だから、シャープ公式氏のいう「コンピューター搬入中」は間違いではない、と思う。


もしかしたら、704/709 は導入しておらず、407 だけの可能性もある。

それでも、ノイマン式ではなく、計算式にも制限がある(データ集計しかできない)というだけで、自動計算機(広い意味でのコンピューター)ではある。


なかなか面白い写真を見せてもらった。ありがとうございます。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

関連ページ

訂正・NOP命令の誕生

IBM - SSEC

ハーマン・ホレリス 命日(1929)【日記 15/11/17】

別年同日の日記

09年 ドーラと類似のアニメ

14年 ミヒャエル・エンデの命日(1995)

17年 よるのどうぶつえん 2017 in 金沢動物園


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -