2013年07月の日記です

目次

01日 凝集度の高いプログラム
03日 TX-0エミュレータ進捗
04日 Mouse In Maze
05日 追悼:エンゲルバート
07日 Javascript の Canvas は結構遅い
08日 夜光虫
10日 TX-0 エミュレータ公開
11日 WAR GAME
14日 海水浴
15日 祝30周年
15日 ゲームの歴史・ファミコン以前
18日 ハングアウト
19日 ネズミとチーズとマティーニと
21日 カガクのココロ・ふたたび
23日 ○○、Fonera やめるってよ。
25日 プリキュアミュージカル
29日 お泊り保育
30日 LUMIX Phone Update
31日 誕生日


凝集度の高いプログラム  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)


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

夜光虫  2013-07-08 22:38:00  旅行記 ペット 家族

▲目次へ ⇒この記事のURL

夜の海まで、子供を連れて夜光虫を探しに行った。


先週は江ノ島周辺に出たというし、昨日は千葉で出たという。

今日は東京湾で出たというが、わずかながら「逗子方面でも」という話が散見された。


そこで、逗子方面に。

あてずっぽうに走り回り、子供が「おなかすいた」と言うのでレストランへ。


海の近くのレストランで、海を見ながら食事ができる席があった。

そこで海を見ながら、どこの方面を探すか作戦を考えよう…と思っていたら。


眼下に赤潮が広がっていましたよ。

食事の注文もせず、「赤潮赤潮」と写真を撮る変な客。




食事を食べている間に周辺が暗くなってきた。

暗くなってもあまり光は見えない。赤潮だからと言って、必ず夜光虫と言うわけでもないと思うし、違うのか…


と思っていたら、ある程度暗くなったら急に光り始めた。

「光ってる」と子供たちも大興奮。


何事かと近くのお客さんも海を見始め、みんなきれい、きれいと大喜び。




食事をしたら駐車代は2時間無料だったので、車をそのまま置かせてもらい、浜辺に出てみる。

小石を投げ込むと激しく光る。面白がって、子供はどんどん小石を投げる。


大きな石を投げ込むと、光の輪が広がって美しい。

でも、砂利を大量に投げ込むと、小さな光が一斉に広がってこちらの方が幻想的。


写真は結構とったのだけど、カメラの性能の問題と、タイミングの難しさから全然良い写真にならず。

残念。




子供が寝付いたのは10時過ぎ。

明日も保育園あるのにね。平日の夜に子供を連れまわす、ダメ親の日記でした。


▲目次へ ⇒この記事のURL

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

旅行記

ペット

家族

別年同日の日記

02年 料理バンザイ!

06年 サーバー不調?

11年 obsmtp.com


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

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年 エアコン水漏れ


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

海水浴  2013-07-14 21:38:41  旅行記 家族

▲目次へ ⇒この記事のURL

昨日、家族で海に行ってきた。


といっても、何か特筆すべきことがあるわけでもない。

長男が初めて海に行った時などは、親もドキドキものだったし、いろいろ失敗もあった。

でも、すでに安定したもの。


長男長女は、すでに何度か痛い経験をして「日焼けするのは怖い」とわかっている。

だけど、次女はまだわかっていない。


みんなが水着の上からシャツを着ていたのに、次女だけが「いらない」と断固拒否。

保育園ではプールに入るときは水着だけなので、シャツを着ることに違和感を感じたらしい。


でも、結果として次女だけすごく日焼けして痛がっている。

まぁ、みんなある程度は日焼けして痛いわけだが。




それでも、「また行きたい」というので来週にでもまた行こうかと思っている。

湘南の海は、案外早くクラゲ出るから、早いうちに楽しむのが吉。




▲目次へ ⇒この記事のURL

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

旅行記

家族

関連ページ

カガクのココロ・ふたたび【日記 13/07/21】

別年同日の日記

02年 お祝い

07年 最近のうちの子

10年 這えば立て 立てば歩めの…

15年 ジェイ・フォレスター 誕生日(1918)

15年 厄介なバグ

16年 監視ユーザーの問題回避

19年 パスワードの管理方法(令和元年版)


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

祝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-18 18:34:24  その他

▲目次へ ⇒この記事のURL

Google ハングアウトを使ってみたいのだが、うまく動作しない。


おかしいなぁ。google の指定する設定どおりにはなっているはずなのだが…


家庭内 LAN で、端末2つ、アカウント2つで通信を試みるとうまくいく。

しかし、外部の人と通信するとうまくいかない。


実験するにも、いちいち外部の人に頼むのは申し訳ないので、なかなか実験が進まない。


Google は「ファイアーウォールの設定がおかしい」とメッセージを出す。

多分その通りなのだろう。うちの設定は、あまり一般的ではない。



しかし、ハングアウト以外にファイアーウォールに阻まれて動作しない、と言うソフトは(今のところ)見つかっていない。

UDP をそれほど使うソフトがない、と言うせいもあるとは思うが。


仕事で必要なので悩んでいるが、もう少し調べなくては仕方がない。



▲目次へ ⇒この記事のURL

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

その他

別年同日の日記

07年 電車のパン

16年 山登り

18年 年棒制

21年 続・FFMPEG


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

ネズミとチーズとマティーニと  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年 テレビ買った


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

カガクのココロ・ふたたび  2013-07-21 08:31:21  歯車 家族

▲目次へ ⇒この記事のURL

カガクのココロ・ふたたび

2年半ほど前に、マクドナルドのおもちゃが惜しいところで残念だ、と言う日記を書いた。


科学マジックをおもちゃにしたものだったが、その解説が一切なかったから。

科学マジックなら、解説して子供の好奇心をくすぐらなくちゃ、と言う内容だった。




昨日、約束通り今年2回目の海水浴に行き、昼ご飯にマクドナルドに入った。


ポケモンおもちゃが付いてきた。

特に科学おもちゃではないのだが、しくみを解説する小さな紙がついてきた。


そうそう、こういう一言が欲しいのだ。


たった紙切れ一枚。コストにしたらおもちゃひとつに付き数銭だろう。

もっとも、マクドナルドの低価格化の努力は理解できるので、数銭でも付属させるのはつらいのかもしれない。


でも、ほんの数銭の投資が、将来科学好きの子供を産むのだ。


半世紀後に、ノーベル賞をとるような人間が「科学を好きになったのは、子供の時のマクドナルドのおもちゃがきっかけでした」とインタビューに答える日が来るかもしれない。


決して大げさな話じゃないよ。カガクのココロは、どこにだって潜んでいるのだ。



▲目次へ ⇒この記事のURL

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

歯車

家族

関連ページ

カガクのココロ【日記 11/03/08】

別年同日の日記

02年 仕事で忙しい

04年 失速

10年 長男・額に傷

10年 夏風邪とポケモン

15年 インディ500


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

○○、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年 プリンタ購入


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

プリキュアミュージカル  2013-07-25 18:06:33  社会科見学 家族

▲目次へ ⇒この記事のURL

関内ホールに、プリキュアミュージカルを見に行ってきた。

長女(6歳)と次女(4歳)が広告を見て「これ見たい!」と主張したからチケットをとったのだが、そんなこと子供はすっかり忘れていた。

とはいえ、前日に見に行くよ、と言ったら喜んではいたが。


長男(8歳)は、妻と一緒に毎夏恒例のポケモン映画へ。




安いチケットなので2階席。

でも、最前列だったので「前の席が邪魔で見えない」ようなことはなくて助かった。


プリキュアミュージカルは始まったばかりだし、これから全国を回るので内容についてはあまり触れない方が良いだろう。


始まり部分のあらすじだけ書いておけば、プリキュアの4人+キュアエースの5人が、別世界に迷い込む。


その別世界…アニマルランドでは、ジコチューの幹部3人が暗躍していた。

プリキュアに阻まれてなかなか征服できない人間界はとりあえずおいておいて、アニマルランドを征服してジコチューランドに変える計画らしい。


偶然アニマルランドの王女、ミーシャと出会い、危機を救ったプリキュアたちは、アニマルランドの平和のために立ち上がる。




ミュージカルとしてのクオリティは、ピューロランドより低いように思う。

でも、値段も安いのでコストパフォーマンスは悪くない。


変身シーンが3回ある。

そのうち2回は、変身時に舞台が暗転しているが、人が舞台そでに行くのがわかる。


長女は「いま、着替えてきたんでしょ?」と、見破ったつもりで得意顔。


でも、この演出、どうやらワザとだったようだ。

3回目は、暗転もせずに舞台上で変身を行う。


…いや、それだって大人が見たら、やっていることはバレバレなんだけどね。


長女は一瞬驚いた後に、「あー、どうやったかわかった!」と見破って得意満面。

見破って大喜びしている時点で、子供向けとして演出は成功である。


ちなみに、4歳の次女には何が起こっているかわからない。その程度の巧妙さはある。




途中で20分の休憩が入る。


この際、ジコチューの幹部3人が放送席に勝手に入る…という設定の演出がある。

「後半は俺たちのカッコよさに、おしっこちびっちゃうかもよ」と、トイレに行くことを促す。


ジコチューだから勝手な放送をして、その内容でトイレに行くことを勧める、というのはなかなか上手い。



そして休憩あけ。

その3人が、休憩中にちゃんと「わざわざトイレに並んだりしないで、ちゃんと横入りしたか?」などと聞いてくる。

腹減ったら、席に座ったままお菓子食べていいんだぜ?

前に来た方がよく見えるから、他の子を押しのけて前においでよ。


なにせ、「ジコチュー」の言うことだから、やってはならないことを次々言い出す。

でもこれが、子供たちに対する「やってはいけないこと」の警告になっている。


口やかましい禁止事項を連呼するのではなく、キャラクター設定を活かした注意の仕方で、上手い。



ところで、「休憩中」にも、トイレなどに行かない子供向けに「エンディングのダンス」の振り付け講座があった。

うちの子はいつもエンディングを見ながら踊っているが、特に動きが難しい部分を解説。


この時は気づかなかったけど、後半で客席も含めてみんなで踊る演出があった。

それとなく教えておく、というのもなかなか上手い。




悪い部分もある。


劇が始まる前に、前説で、プリキュアがピンチの時は応援してほしい、というお願いがあった。


この時「がんばれプリキュア―」と呼びかけてほしい…と頼んでいたにも関わらず、最初に応援しないといけない局面の応援文句は、これではなかった。


がんばれ、が求められる場面は確かに多いし、その場その場で呼びかけて柔軟に変えるのも構わないのだけど、最初から例外は多くの子供が戸惑っていた。



ちなみに、応援が必要な局面でなくても、プリキュアが舞台に出てくると「がんばれー」と言い続ける子供も多数。

「みんなで応援してね」がちゃんと伝わるような演出がないことが原因。


(本当に必要なときは呼びかけが行われるが、そういうシーンが出てくるのはかなり後半)




まぁ、子供たちは楽しんだようだ。

これを書いている今も、ご機嫌でプリキュアの主題歌を歌っている。


来年もまた見たいと言っている。

チケット取れたら行っても構わないかな、と言うくらいのクオリティはあったので、考慮しておこう。



▲目次へ ⇒この記事のURL

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

社会科見学

家族

別年同日の日記

02年 マクドナルド

03年 またまた久しぶりに日記

04年 姓名判断

18年 ハムスター死去

23年 長女 コロナ陽性


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

お泊り保育  2013-07-29 12:05:53  家族

▲目次へ ⇒この記事のURL

長女が、土日で保育園のお泊り保育に行ってきた。


…と、3年前と同じ書き出しで書いてみる。

そして、僕が体験したわけではないので書くことがないのも同じ。


今年は、いつも花火大会をしていた公園が工事をした関係もあり、花火大会は中止。

お泊り保育が例年よりも早まりました。




長女は、行く前は楽しみなのと同時に不安でいっぱいで、直前になって「やっぱ行きたくない」とか言い出していました。


でも、終わったら「とっても面白かった!」と大興奮。

ただ、1日目の夜にゴキブリが6匹も出たのだとか…


これを聞いた長男、「僕のときは1匹しかでなかったのに」って、やっぱ出ることは出るんだ (^^;

保育園、園舎古いし、周囲は自然がいっぱいだし、仕方ないのだろうね。



で、夕方になって「眠い」とお昼寝。

夕食時に起こすも、「まだ眠い」と調子悪そう。


「それに腕痛い。逆の手も」

なんだろう、と手を持ってみると妙に熱い。おでこに手を当てると、すごい熱。


…38度5分の熱を出していました。

手と腕の痛みは熱による関節痛、かな?


お泊り保育は、楽しかったけど緊張もして疲れたようです。



今日(月曜日)は、保育園をお休みしてゆっくり静養しています。もう熱は下がったみたい。

長男は夏休みで、次女も長女が休みだから、お休み。


雨が降っているし、長女は一応病人なので、兄弟3人で家の中で遊んでいます。



▲目次へ ⇒この記事のURL

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

家族

別年同日の日記

09年 冷蔵庫に乾杯?

15年 モニ太とリモ子のヘッドオンチャンネル

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年 ドライカレー


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

誕生日  2013-07-31 15:09:33  家族

▲目次へ ⇒この記事のURL

誕生日

「お父さんの誕生日会やろうよ」と、長女がうれしいことを言うのでご馳走を作る。


本当の誕生日は、27日だった。

でも、この日は長女は保育園のお泊り保育。


28日に帰ってきて「お誕生日会やろう」と言われたのだけど、その後長女は熱を出す。

29日は保育園を休み、30日になって熱も引いたので保育園へ。


で、大丈夫そうだから誕生日会やるか、と言うことになった。




早めに保育園に迎えに行き、その足でケーキを買いに行く。


長男・次女はすぐに自分の欲しいケーキが決まった。

しかし、長女は決まらない。


「2つどっちにしようか決められない…私こっちにするから、お父さんもう一つの方にして、少し頂戴」

と、長女の意向で僕のケーキが決まる。


家に帰り、急いで夕食の支度。


鶏のから揚げ1キログラムに、フライドポテト 500グラム。

自分の誕生日を祝うために、子供たちの大好物を一生懸命作る。

サラダも作ってご馳走完成。



まぁ、お祝いなのに自分で作る、っていうのは嫌じゃないですよ。

誕生会やりたいというのだって、おいしいものが食べれるからだというのはわかっているし。


それでも、子供に誕生日を祝ってもらうというのは悪くないもの。



普段仕事が忙しい妻も、準備ができたら参加して、珍しくビールなど飲みました。

(僕は普段あまり酒を飲まないのです)



▲目次へ ⇒この記事のURL

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

家族

別年同日の日記

03年 お留守番…

16年 PowerPC 発表(1991)


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


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -