猫の小部屋 - ねこのこべや -

猫日誌 -2004-


2004年12月

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Topics

>>> [index] [next] [prev]


12月31日(金)

忙しいと衝動に駆られます。 日々の生活では何でもなかったことが、 忙しくて暇が無くなるととても魅惑的に見えてきます。

決してお金があるわけではないのだけれど、 「こんだけ働いてるんだから」とか「使う暇ないし」とか思い出すと とたんにまだ赤字じゃないよね、という幻想もはたらき、 財布の紐が緩くなります。

結果、普段ならぎゅっと我慢の子だった品々がなぜだか手元にあるのです。 そう、一番活用できないこの時期に・・。

そうやって、なぜだかニンテンドーDSが あたしの部屋にあったりするんですよね。

手のひらゲーセン

ニンテンドーDSは、二つのディスプレイをもった携帯ゲーム機で、 その下がタッチパネルになっているのが特徴です。

Nintendo DS
ニンテンドー DS

こうして写真をながめると、思わず「ああ、やっちゃった。バーチャルボーイの二の舞かしら」という 感想を抱いてしまいがちですが、 実機のほうも、初代ゲームボーイ級のかさばり感に、 結構安っぽい仕上げ、歴代でもっともチープな十字キーやボタンの感触など、 あんまり魅力的でないハードです。

正直なところ いまどきこの大きさ・重さは「携帯ゲーム機」と呼ぶのは苦しい、 持ち運べるけど持ち歩きたくない 携行ゲーム機というポジションがしっくりきます。 タッチパネルという操作デバイスは、片手でスタイラスペンをもち、片手で本体を支えるため、 電車の定番のつり革プレイもできません。

ゲームボーイアドバンスのゲームもできるのですが、 猫はアドバンスのゲームするならアドバンスSPがいいなぁ、コレでやろうとはあんまり思いません。 すくなくともアドバンスの後継としては、失格かしら。

初代GBとの比較 初代GBとの比較(高さ)
圧倒的な嵩張り感

そんな風にブーたれてる猫がDSを買ったのは、 セガのゲーム「きみのためなら死ねる」を買うためです。 魂の芯までセガに汚染された猫は、この久々にセガ度の高いゲームに 居ても立っても居られなくなったのです。ええ、伊達に筐体買えるほどアーケードに通い詰めてないですよっ!

こ、これは、アーケードゲームだぁ!

さて、DSですが、きみ死ねのプレイを始めたとたん、評価が180°回転しました。 うわぁ、、はぅ、、た、愉し〜♪ このゲーム機は凄いイイですっ!

「きみ死ね」はたくさんのミニゲームで出来ています。 たとえば、ヨットを口で拭いて海に落ちた「彼女」の前にピッタリ止めるゲームとか、 迫り来る100匹の暴れ牛をアチョーッ、ホワタァとなぎ払うゲームですとか、 タッチパネルのステアリングをグルグルまわして操作するカーチェイスゲームですとか、 ほんと、いろんなゲームであふれています。

暴れ牛のゲームは丁度ガンシューティングのようなシステムなのです。 ステアリングをグルグル回すゲームは、実は車線移動しかできないのだけれど、 タッチパネルを見ないでグルグルまわしてると、本当に回すデバイスが付いているような 錯覚に襲われます。正確にコマンド入力をしてく様なのじゃない、 思わず入力に力を込めてしまう(そしてそれが愉しい)感覚。 ああ、この感覚。そうだ、これアーケードのゲームだわ。

アーケードの大型筐体ゲームって、車のゲームならハンドルやアクセルが、 自転車のゲームなら本当に漕げる自転車が、ロボットを操縦するなら操縦桿で、 銃を撃つゲームならちゃんと銃がある、こういったゲームがインターフェイスを決めるゲーム、 猫はとっても大好きです。 でも、家庭用のゲーム機なら、ゲーム毎に専用入力デバイスを買っていったら高くてしかたが ありません。だから標準の入力がまずあって、それに併せてゲームを落とし込むのが 当たり前です。

でも猫は、やっぱりロボットはツインスティックで操作したいし、 電車を十字キーで運転してても愉しさ半減、、と思ってしまいます。 で、ニンテンドーDSのタッチパネルなのですが、 猫は実際にゲームするまで「タッチパネル」という入力機器がついているという 先入観にとらわれていました。 タッチパネル、ってそれはそれで愉しそうなデバイスだけれど、「標準」にはチョット無理ぽさそうじゃない? う〜ん、DSって「やっちゃった系」かしらねぇ、、なぁんて思っていました。

でもニンテンドーDSのタッチパネルって、「タッチパネル」というデバイスじゃなくって、 一つ一つのミニゲームに併せてインターフェイスを作れちゃうという 「プログラマブル・インプットデバイス」のことだったんです。 例えばボタン一つとっても、「4ボタンダイヤモンド配置」が向かないゲームってあるじゃないですか。 でもDSなら、ゲームに最適化されたボタン配置を簡単にプログラムできるんです。

そして、「タッチパネル」を「プログラマブル・インプットデバイス」たらしめているのが、 「デュアルディスプレイ」であるということ。 タッチパネルなゲーム機なら、メインディスプレイをタッチパネルにすれば良いだけですが、 プログラマブルな入力機器とするためには、タッチパネルは「スクリーン」を兼用してはいけないんです。 やりますねっ!任天堂さん!!

もちろん「タッチパネル」は デバイスがプログラマブルだという長所と引き替えに タクタイルが無い、指で触ってデバイスの位置が解らない、といった欠点もあります。 けどニンテンドーDSで遊んでみると、その欠点を補ってあまりあるメリットがあることを 納得させられてしまいました。

キワモノと思えたDSですが、コレは凄い良いかもっ!

|++ month top ++|

12月13日(月)

お久しぶりの猫日誌です。 と、いっても実は11月分の猫日誌がなかなか完成しないから、ずっとアップデートを見送っていたという 事情なので、猫自身が全くさぼっていたわけではありません。(ああ、いいわけがましい・・)

なんで日誌なのに過去分が仕上がらないのという至ってまっとうな疑問については、 猫の計画がまともじゃなかったといいますか・・、 猫宅のファイルサーバの復旧が遅れそうなことをいいことに、 「よし、11月はどうせまとめてUPにするんだし、連作にするわっ」と変な張り切りかたをしてしまったからです。

そして、張り切りすぎて未だに完成せず・・・、ああ、こんなことならもっと区切りよくかいておくんだった・・と、 後悔しきりです。

n進法

猫の毎週月曜の日課は、がんぱれ!!ゲイツ君を読むことと、 闘わないプログラマを読むことだったりするのですが、 これをネタに何かを書いてみようと思ったことは今までありませんでした。 (それは別にたいした理由ではなくって、単に「いっぱいの人が読んでいる文章だからネタが被りそうだわぁ」という ただそれだけなのですが。)

今週の闘わないプログラマは○進数というお題でして、

2進数の「1010」と、10進数の「10」はどちらも数(値)としては同じものであるわけで、単に表記が違っているだけなのですから、「2進法」「2進表現」や「10進法」「10進表現」と呼ぶべきだ

というお話でした。元ネタは結城さんちの日記で、 さらに元ネタは奥村さんちの日記だそうなので、 こうも連鎖するというのはプログラマの琴線に触れるネタなんですね。 確かに闘わないプログラマで出てきた新人くんの誤解は、猫自身も混乱したことありますし、 後進に教えるときにもよく混乱しているのを目にします。それだけ「よくない」表現と実感する機会が多いのね、と再発見です。

で、話をもどして、なぜ今まで「闘わないプログラマ」をネタに書いてこなかった猫が、 今回日誌に書こうと思ったのは、 そういえば、最近予備校の先生をやっているお友達と話していたときもそんな話になったような、 と思い出したからです。うーんなんだかご縁だわ、ということで 思わず筆を執ってしまいました。

それにしても教える側のお話というのはやっぱり面白くって、 たまたま「式の評価」という話になったとき、 彼の口から飛び出した「小数というのは所詮近似表現にすぎない」というのは、 ずっと感じてはいたなにかを、一気に言葉にしてもらって、おもわず「あはっ♪」と、 なってしまいました。

そして、「小数というのは所詮、近似表現にすぎません。」というのは、 n進法を考える上で、結構いい教材になるわね、うんうん、コレ使えるわっ、と思ったわけです。

n進法はAD変換?

整数は離散値です。えぇと、離散値というのは「デジタル」な値のことで、 今の値と次の値の間には何もない、階段のような増え方をする数です。 一方実数というのは連続的に変わることの出来る「アナログ」な値です。 今の値と次の値の間のどこでも選ぶことができます。

実数は、本当は分数で表すのがより自然なのですが、分数って式と解が似てる、、というか同じものでしょう? (「10 ÷ 3」と「10/3」とか) なので分数は、とにかく「値」が欲しい場面では敬遠されがちです。
もちろん本当は「式」も「値」も「=」で繋がれるように、同じモノだけれど(式と値を区別するなんてホントは変な話です。)、 コンピュータとか算数とかでは「解く対象」と「解いた結果」に 分けた方が都合が良いから、分けたがりやさんは答えが離散値(デジタルな値)になることを 望む傾向にあります。

で、 なんとな〜く分数をさけて、整数の物差しでは中途半端な量になっちゃう値を、 それでも離散値で扱いたくなってきたとき、 デジタルな物差しでアナログな値を出来るだけ正確に求めようすれば、 当然物差しの目を細かくすることになります。これが小数です。

小数は、目的の値が「1」(単位量)の積み重ねで表現できないばあい、メッシュの細かさを一時的に 細かくする、という発想です。このとき、網の目を1段細かくするために何個のマスに小分けするのか、 がn進法の「n」です。

だから、「n」次第で同じ値でも、 ちょうど網の目が目的の値に当たる場合もあれば、 メッシュをどんどん細かくしていっても永遠にドンピシャにはこない当たり所の悪いことに 成ってしまったりします。所詮離散値(デジタルな値)で実数値(アナログな値)を近似するわけなので、 そういう運の悪い可能性は常につきまといます。

――と、いう風に、小数側でのn進法は「表現の限界」が表面化します。 逆に整数になると、n進法はあまり意味のにものになって、 より「View」としての本質を良く表しているのだけれど、 抽象的すぎてヒトの理解を妨げるのかなぁと思います。

n進法の本質は数に被せる「離散値の網」側の問題であって、「数値」側にはない、 ・・・ということは、猫は小数に話を持ち込んだ方が、「表現の限界」という具体例のおかげで 理解しやすいんじゃないかなぁと思ったりするわけでして。

うーん、、あたしってば文章力ないので、うまく表現できません・・・(^^;

(この文脈だと分数表記を使えば実数を何でも表現できそうですが、 √2とかπとかは分数でも表現できない実数もあります。世の中なかなか上手い表現手段って無いもんですね。)

何が言いたいかというと

ことコンピュータに限ると、進法変換のときに、整数(Integer)は 数値自体が変わらないけど、 小数表現(浮動小数点にかぎらず)だと、数が変わってしまうことがある、というのは プログラマにとって必要なセンスだなぁということです。

コンピュータは離散値(デジタルな値)で全ての数を表現しなくてはいけない宿命を背負っているので、 実数値(アナログな数)は本質的に近似表現するしかなくなってしまうわけです。 デジタルマス目にピッタンコにならない1で割り切れない数については、 どうしても「2進法マス目」によって丸められてしまうんです。

二進法は「2」でしか割り切れないのですが(あたりまえです) 十進法は「2」と「5」で割り切れるので、「5で割り切れるからきれいに十進表示できる数」が 割り切れない数になります。これはズバリ「0.1(十進)」とか「0.01(十進)」とかが割り切れなくなることを 意味している(10(十進)は 2×5なのですよ・・・)ので、非常にタチが悪いです。(TT)

そういえば

ATOKのデフォルトですと「しんすう→進数」は変換できないのですが、「しんほう→進法」は 変換できるは、ひょっとしてひょっとするから・・というのは考えすぎかしら。

おまけ:その猫の友達との話

その猫の友達は予備校の数学の先生なのですが、 この前久々に会ったとき、話の流れで「数学とプログラミング」なんて話題になったのです。

たしか、「教えるのが大変」という話題から、 「算数の教科書に電卓マークがある」→ 「電卓は数学的な道具ではない(だって[=]キーが演算実行]なんですよっ!)」→ 「式と答えは等値だ」→ 「小数は数の近似表現記法にすぎない」 と流れに流れてきたわけです。

結局算数の「答えを導く」というテスト向き指向の中では、 「割り算の式」はあくまで「説くべき式」であってそれが「答えではない」と考えてしまいがちだけれど、 1/3が割り切れないなら1/3という式そのものが「正確な答」であるべきです。

この点多くのプログラム言語も「式をオブジェクトとしてあつかえない」から、 分数を苦手としているわけで、そういうテクノロジの制約のついた道具である電卓を 授業の道具としてつかうのは如何なモノかなぁと思うのです。

計算ミスを成績に含めたくないなら、 そろばんを使うべきだなぁ、と猫はおもいます。 あれはn進法を上手に表現したよいメモリモデルです。 (指を折って二進数を数えるって ようは二進そろばんですし)

更に余談ですが、

算数の授業にコンピュータを使うなら、Lispが良いと思うのです。

Common LISP は数の扱いがしっかりしていて、整数に大きさの制限がなかったり、 分数や複素数が使えます。その際に○○型というコトを考えない自然さが良いです。 特に整数の割り算の場合でもきちんと分数の答えが返ってくるなど コンピュータの算術計算特有のわずらわしさがほぼありません。

たとえば、2 / 6を計算させると、

(/ 2 6)
→1/3

となって、 これを小数で表したいときは、

(float 1/3)
→0.3333333

と、わざわさ小数表現にするというステップが必要になります。

「1の積み重ね」で表現できない数にたいし、「ある決まった数でメッシュを細かくする」小数よりも 「好きなメッシュで区切れる」分数の方が実数を豊かに表現できるきますし、 こと割り算の結果は必ず分数で表せます(というか、それが定義ですね)ので、 表現のデフォルトは分数であるべき、というのは理にかなってます。 だから、これは割り切れる数でも一緒で、

(/ 1 10)
→1/10

(float 1/10)
→0.1

となります。こっちの方が勉強に向いているとおもうのよねぇ・・。

追伸

こんな果てしない(ほど脱線しいく)物語を書かなくてもすむように、 国語の教育はがんばってほしいなと思う三猫でした。マル。

|++ month top ++|

SEO [PR] おまとめローン 冷え性対策 坂本龍馬 動画掲示板 レンタルサーバー SEO