て日々

2010年4月


2010年4月30日(金)くもり

今年も連休は山口県の妻の実家で過ごすことに。今週はピアノのレッスンもないので、早めに移動。義父が54度の泡盛を出してきて、俺は一杯で沈没。


2010年4月29日(木)/昭和の日はれ

朝の早いうちにACアダプタを取りに職場へ。歩きながらクチ三味線でゲームのBGMを作曲。天気もよくいい気分。

昼食に味噌煮込みうどんを作ったら大好評。午後、散歩がてら食材の買いものに行く。

懸案のサウンド作り。Garageband と Audacity を使う。サウンドエフェクトがつくとゲームの印象がガラっと変わる。楽しいが、サウンドリソースは外部ファイルを読み込む仕様にせざるを得ず、となるとやはり読み込みエラーへの対処など、考えなきゃならんことも増える。


2010年4月28日(水)はれ

先日から作っている「あのゲーム」のクローン。サウンド周りを別にすれば日曜日に計画したものはだいたい実現できた。一昨日から「?」と思うことしきりだったミョーチキリンなバグが取れて、気分もすっきり。

読書時間確保のため、普段なら歩くところを電車で帰宅。明日はお休みなので家でMacBook Proをいじろうと思って持ち帰ったのはいいが、ACアダプタを忘れている。困ったもんだ。明日の朝とりにいくことにする。

入院中のかがみさんの経過は良好のようだ。ひと安心。歩数計カウント6,992歩。


2010年4月27日(火)あめ

セミナー3回目。テキストに、たとえばの話「エンマコオロギは昆虫である」「スズムシは昆虫である」と書いてあって、そのすぐあとに「カブトムシも同様だが、鳴かないところが異なる」と書いてあったら、そりゃあ「カブトムシは昆虫である」という主張をそこに読み取らねばならないはずだ。さすがに三度めは書かんでもわかるやろう、と著者が判断して、同じでないところだけを強調して書いているのだから。というわけで、行間が読めていない学生さんに少しばかり厳しく指導する。もちろん、うちのゼミ生は昆虫のことを勉強しているわけではない。テキストは前原昭二先生の『数学基礎論入門』だからな。歩数計カウント8,803歩。


2010年4月26日(月)くもり

夕方、妻が「朝日新聞と毎日新聞を買ってきて」とリクエスト。昨日のイベントの記事が載っているからだそうだ。愛媛新聞は詳しく取材していったわりに、今日の紙面には掲載されていなかったという。それで一番町のローソンに寄り、電車で帰宅。歩数計カウント6,729歩。夕暮れどきにロープウェイ街から一番町の界隈を歩くのは、決してそれほど久しぶりというわけでもないはずなのだが、なんだか新鮮だ。

昨日買った藤本裕之の本は面白い。ごくまっとうに Mac OS X のプログラミング環境の解説をしているのだけど、挿入されるご託がやたら多く、かつそれぞれがやたら痛快だ。分類がおかしなことになっている例として「哺乳類と爬虫類とエンマコオロギ」なんて言っているところなんか、絶妙である。

俺がそういうどーでもえーよーなことを面白がっているうちに、かがみさんは心筋梗塞で入院してしまったそうだ。これは大変だ。お大事にして、一刻も早く快復なさってください。


2010年4月25日(日)はれ

午後、妻と子供たち、それと【娘】のご学友のユーリちゃんの4人が、身障者団体と地域の子供たちとの交流イベントに参加。俺も参加する気はあったのだが、応募者多数のため付き添いの大人は一人にしてくれと言われ断念。それでも街へ一緒に出て、別行動で大街道近辺をうろうろした。

三越の南側の地下の「珈琲屋」だったところ、Cafe Marly (カフェ・マルリー) という名の新しい喫茶になっている。行ってみると前の「珈琲屋」とは全然違ったおしゃれな作りである。おすすめの深炒りコーヒーもおいしかったし、なによりも音楽の趣味がたいそう俺好みだった。午後1時から午後2時すぎごろまでリラックスして読書に専念できた。ここにはまた来ることにしよう。

Cafe MarlyでゲームAIの本 (『実例で学ぶゲームAIプログラミング』(Mat Buckland著, オライリー・ジャパン2007年9月)) を読みながら考えた...

いま現在 ActionScriptで試作している「あのゲームのクローン」の最初のプログラムを、けさ wonderfl で公開した。そういう時点でこれからのロードマップ (というのは大げさだけど) を考えると、短期・中期・長期のいろいろな課題がある。短期的には現在のコードの改良で、スコアの計算方法を検討し、サウンドエフェクトをつけ、タイミングを微調整する。これはおそらくすぐにカタがつく。中期的には対戦相手のAIを設計しないといけない。これが目下最大の課題で、なにしろイチから勉強しないといけない。だから今こうしてゲームAIの書物を繙いているわけだ。そしてまた、長期の課題としては、そもそもこういうものを、この先もずっとActionScriptで書き続ける必然性は(俺には)ない、ということがある。いますぐにではないが、たとえば Cocoa に移行すべきではないだろうか...

今回のゲームをテスター【娘】に試してもらったところ、小さくて未発達の子供の手ではパソコンのキーボードでの操作は難しいということがわかった。【娘】はいま小学3年生だが、左利きであることもあって、MacBook Proの矢印キーの操作が上手にできない。人差し指を左矢印キーに置いたままでは薬指で右矢印キーを打つことができないのだ。キーボードは子供の手に合わせた設計にはなっていないし、そもそもゲームのためにあるわけではない。かといって、皆様先刻御承知「落ちものパズルの王道」のユーザインターフェイスがマウスだけで実現できるとも思えない。USBゲームパッドのような外部機器を利用できればいい。Flashでそれをやる方法がないわけではない。たとえば wonderfl でも wonderfl×physical というのをやっているし、WiiFlashなんてのもある。Wiiリモコンで操作できればテスター【娘】は喜んで遊んでくれるだろう。だけど、そもそもがWebアプリケーション開発環境であるFlashは、ことが外部機器との接続という話になったら、もはや最善の選択肢とはいえまい。

さらにもうひとつ別の気掛りがある。このごろの Adobe と Apple のやりとりについては、皆さんそれぞれ意見があることだろう。たとえばHMDTの木下さんはブログで「クロスプラットフォームなんて幻想だ」と言い切っている。規約で締め出すAppleのやり方は悪辣であるにせよ、プラットフォーム不依存のFlashアプリなんて、同じだけの労力を注いで彫琢された Cocoa 純正アプリの敵ではないよ、という趣旨だ。ふだん Safari をめったに起動しない Firefox ユーザの俺としては、クロスプラットフォームを全否定はしたくない半面、ソフトウェアの「見ため」に関するかぎり、Macintosh派の木下さんがそう言うのはすごくよくわかる。俺自身、Apple製品の洗練されたユーザーインターフェイスに大きな魅力を感じてもいて、iPad が発売されたらすぐにでも買いたいと思っている。となると、断然 Cocoa が浮上してくるというわけだ。ついでに言えば、iPadの大きなタッチパネルを縦横に活用できるのであれば、落ちものパズルのコントロールとしてパソコンのキーボードなんかよりはるかに自由度が高いはずで、そのぶん、先ほどの問題を別方面から解決できる可能性だって高い。

そうしたことを考えて、現在書いている Flash版では、対CPU戦の機能は盛りこまないことに決め、短期的な改善計画だけを立てた。操作のタイミングの調整は最初のバージョンを公開したあと(テスター【娘】の助言を得て)午前中のうちに目鼻がつけてある。一時停止機能もつけたし。タイミング面では、あとはゲームの進行とともにスピードアップするように改良しよう。それと、ゲームオーバー後に新たにプレイを開始するために最外周のループをつけたい。それができたら多少のサウンドエフェクトをつけ、 Flash版としてはそれで最終としよう。連休中にはできると思う。これはまたずいぶん小さな目標設定だが、何についても能書きばかりで、実際には使いものにならないガラクタだけ残して生きてきた「やるやる詐欺」常習犯の俺にとって、どんなに小さくても、目標を設定しそれを実現することは大切なチャレンジだ。(えーえー、笑いたきゃ笑えって。)

くまのくも

それから大街道の額縁屋さんで額入りのシルクスクリーン版画を買った。なにしろきょうは妻の誕生日なのだ。なんとも妻が大喜びしそうな絵柄。しかも作家は妻と同じ山口県出身。リビングに絵の一枚も飾りたいとは常々思っていたところだし、気になるお値段の方はといえば、【娘】の誕生日に買った ぷよ のぬいぐるみ4個合計よりも安いくらい。お手頃で、家計へのインパクトも些少だ。誕生日プレゼントはこれしかあるまい。プレゼント用に包んでもらった額を持って店を出て、妻子が参加しているイベントが終るのを待つ。その後、がんばったご褒美に子供たちをミスドに連れていってやる。途中、銀天街を歩いて新しい「かわいいものやさん」を素見したり円光寺の境内で遊んだりしながら行く。ミスドは盛況で、5人ぶんの空席もないので、俺だけふたたび別行動。妻子とユーリちゃんはその後、高島屋の観覧車「くるりん」に乗りに行く。お誕生日には、一回タダで乗れるのだ。だが定員4人だから、これまた俺は遠慮する。 ミスドにしても「くるりん」にしても、ユーリちゃんにいらぬ気を使わせないよう「【娘】のパパはちょっと本屋さんに行く用事があってね」と言ってある。そして、それはウソではない。別行動の俺はジュンク堂に行き、Cocoaの参考書を一冊買うことにした。Cocoaプログラミングの入門書は何冊かあったが、目次(と価格)を見て 藤本裕之『Mac OS X/iPhone のための Cocoaプログラミング入門』(ソーテック社2009年7月)を買った。

妻子と再合流後、ユーリちゃんをお母さんの経営する商店まで送っていく。さきほどまで妻子が参加していたイベントが身障者のみなさんと子供たちが協力して街のゴミ拾いをするというものだったので、じゃあ今度もゴミ拾いをして帰ろうという話になった。【娘】とユーリちゃんは帰り道に銀天街のゴミを先を争うように拾って行く。俺も一緒になって目につくゴミをどんどん拾っていった。こうしてみると、普段は決してやろうとしなかったゴミ拾いが面白くなってくるから不思議だ。ほんと、子供には教えられることが多い。(教えることだって多いけどな。)

案の定、妻はプレゼントの額をたいそう喜んでくれた。リビングの、必ずキッチンから見える場所に飾ってくれ、との要望だった。昨日といい今日といい地味ではあるが充実した週末だった。


2010年4月24日(土)はれ

明日はお出かけの予定があるので、午後から市会議員選挙の期日前投票に出かけた。フジグラン松山でもできるのだけど、市役所別館なら隣りの公園と児童館で子供たちが遊べる。週末に児童館にいけば、【娘】の友達がたいていひとりやふたり来ているのだ。【娘】と【息子】が世話になった幼稚園の先生 (いまは勉強しつつアルバイター) が投票所の受付アルバイトをしていた。児童館には【娘】のご学友のユイナちゃんとヒナタちゃんがいた。帰り道、「coffee and books LE WEEK END」という看板(というか黒板)の出た古いビルの二階の店をのぞいてみる。電蓄でLPレコードをかけ、古い画集やグラフ雑誌、よくわからないヨーロッパ言語(たぶんオランダ語かデンマーク語)のペーパーバック、あるいは磯崎新や篠山紀信の週刊本なんて懐しいものもあった。実家に帰ればそういう本がいっぱいあるから寄贈しようかなあなんて話をして、店番の奥さん(本はご主人が集めているそうだ)の名刺をもらってきた。さらにさらに帰り道、千舟町のパワーステーションの隣の知る人ぞ知るお化け屋敷の門のところで無農薬野菜を売っていたので、筍を買うことにし、お化け屋敷の主と話をする機会を得た。昭和20年の終戦直後に、徳島から来た裕福なお百姓さんが故郷の家のたたずまいを再現しようと作った建物らしい。ずっと気になっていたその敷地に、松山に来て19年にして初めて足を踏み入れて拝見したその趣きたるや、なかなかすばらしい。形をそのままに手入れをして、あの「道後の町屋」みたいにすればちょっとした名所になりそうだ。だがまあ、実現すまい。いかんせん、おやじさんの長年のやもめ暮らし。保存状態が悪すぎる。


2010年4月23日(金)はれ

【娘】のご学友の ゆうちゃん は、くりくりの目がかわいくて利発な愛されキャラである。【娘】の登校の道で一緒になったので、最初は新婚の海老蔵は毎日エビバーガー食ってるのかなあとか、俺のリュックサックに何が入っているのかとか、そういう四方山話をしていたのだけど、【娘】が俺のリュックには本が入っていると言ったのをきっかけに、ゆうちゃんが熱く語りだしたところによると、ゆうちゃんの去年のクリスマスプレゼントは、なんと本が100冊だったらしい。すばらしい。クリスマスの朝、目がさめてみると、枕元に本が積んであったそうだ。それがまた、5冊づつの山が20列という配列。よく見ると、ページが破れていたり、5巻もののお話が3巻までとか不揃いだったり、BOOK・OFFのシールが貼ってあったり。ゆうちゃんは「けったいなサンタさんやなあ」と思ったそうだ。きっとサンタさんもお疲れだったんだろう。

先週来た学生さんが今週も質問に来て、授業もあり、談話会もあり、なかなか盛りだくさんの一日だった。夕方からいつものピアノのレッスン。多少弾けるようになってくると当然、先生の要求も厳しくなってくる。いままで言いたいことを沢山飲みこんでいたんだろうなあ。というか、いまでもそうなんだろうけど。

市議会議員選挙の選挙戦が大詰めだ。市民コンサートのキヨミさんがある候補のウグイス孃 (たぶんボランティア) になって市内を駆け巡っている。つくづく活動的な人だ。別のある候補の選挙カーには思わず笑ってしまったのだけど、「一週間の選挙戦も残すところあと一日になりました。連日お騒がせいたしまして、大変申しわけございません。」と連呼していた。主義主張がないにしても何か言うことはないのだろうか。

歩数計カウント11,747歩。


2010年4月22日(木)あめ

朝から本格的な雨降りで、職場に着くころには服も荷物もしっぽり濡れている。そして、よりによってこんな日に、オフィスの鍵を忘れてきてしまった。天気のいい日なら歩いて取りに戻ればいい散歩&運動になるところだが、この雨ではそれも苦行でしかない。それとて、入れ違いに妻が出かけてしまっていては話にならない。どうしてもダメなら事務室が開くのを待って合鍵を借りればよい。ひとまず妻に連絡したら、ちょうどいまから出かけようというところだったので、ついでに届けてもらうことにした。それでも小一時間は待たねばならず、けっきょくは合鍵を借りることにした。

夕方はいつもの医者に薬をもらいに行った。歩数計カウント10,252歩。

いままで知らなかったけど、Wiiにはバーチャルコンソールというエミュレーションソフトウェア環境があり、ダウンロード販売されている「ぷよぷよ通」メガドライブ版がプレイできるという。それは聞き捨てならない。だが、そうでなくてもすっかり「ぷよ中毒」(というより「シェゾ中毒」)になっている娘への教育上の配慮として、実行に移すのは週末まで我慢。


2010年4月21日(水)くもり

感心な【娘】さんが早起きしたので、いつもより一本早い電車で登校。パパはそのまま職場に向ったので、普段より20分以上早く職場に到着。もちろん一番乗りだ。そのせいかどうか、一日が長かった。

きょうのセミナーでは、命題論理の推論について議論した。論理式 A そのものと、論理式 A が正しいという判断と、論理式 A が証明できるという判断との区別が致命的に大切なのだけど、最初はなかなかわかりにくいようだ。あまりいい例えでもないかもしれんが

犬 は 漢字である。
犬はワンワン鳴く。
犬のことを英語で dog という。
犬が 人を 噛むことがある。
昨日 犬に噛まれた。

という五つの文での「犬」という語の用法はそれぞれ異なる。それと同じようなことが 式そのものとその真偽とその証明可能性という観点の違いに関連して発生する。つまり対象言語とメタ言語の区別。だが、冷静に考えれば、その区別は五つの「犬」の用法の区別とくらべるとよほど単純かもしれない。

セミナー後半グループの二人も教職志望なので、作文が苦手そうな人には少し厳しいめに「てにをは」を指導することにする。歩数計カウント9,650歩。


2010年4月20日(火)くもり

昨晩大事をとって早く寝たのと、痛む脚に妻がとっておきの膏薬を貼ってくれたのが幸いして、不調を脱することができた。ありがたいことだ。

セミナー前半グループの2回目。発表の仕方は先週よりだいぶよくなったが、まだ上手とはいえない。教員志望のゼミ生にはそのあたりをきちんと指導しないといけない。ともかくも向上が見られるのはいいことだ。

午後7時前まで職場にいて、妻の要望によりフジグラン松山へ買い物に行く。【娘】が明日学校で使う木工用ボンドのほかに、懸案だったものをいくつか買い、酒を買って帰る。歩数計カウント8,875歩。さあ子供を寝かせようという時になって妻がひどく咳き込み始めた。自分も冬場によくやるがこれはかなりつらい。心配だ。

さて、帰り道にはずっとこんな問題を考えていた。将棋盤やチェスボードのようなマス目に数字が書き込まれたボードがあるとしよう。タテヨコに同じ数字が並んでいる領域をクラスターと呼ぶことにする。指定されたマス目を含むクラスターのサイズをコンピュータに計算させたい。このクラスターのサイズ計算にはいろいろ応用があり、たとえばあの「さめがめ」や「ぷよぷよ」にはこれが必須である。先日書いた「塗りつぶしアルゴリズム」を少し変形すれば実現できる。帰宅後ちょっとがんばってプログラムを書いたが、いつものようにActionScriptで書く前に、(なんとなく自宅のVistaくんで ActionScript を書く気がしないものだから) 久しぶりに FreePascal で書いてみた。最終的にちゃんと動くようになるまでに、 Pascal ならではの厳密な型チェックに苦労させられたけれども、これは親切ゆえの厳しさというものであろう。いずれにせよこれができれば「さめがめ」くらいはすぐに書けそうだ。うひひ。


2010年4月19日(月)くもり

土曜日の疲れが出たか、体調がすぐれない。

日記としてはさほど書くこともないので、日記らしくもないことを書こう。要約すれば、「フーリエ変換の魂を回転させると寿司屋台が不一致ぐぁ」という話だ。

2次元と3次元のユークリッド空間の(座標系の)回転については理解できているものとして、高次元の直交変換で行列式が1になるやつ(行列の群 SO(n) に属する変換)を考える。それを我々は「回転」と呼ぶことができるだろうか。3次元では回転は軸をもつ。軸に直交する各面内で2次元の角θの回転を考えそれを積み重ねたものが3次元の回転だ。とすると、2次元の回転は回転角度だけわかればいいので円周上の一点で表示され、3次元の回転は回転軸の方向と回転角度の組であらわされるので、球面の対蹠点を同一視した図形(射影平面)に円周を直積した空間 P(2)×U(1) の点として表示できる。4次元以上の空間の「回転」はどうだろうか。いかなる意味でそれは「回転」だろうか。また、空間が無限次元になったらどうだろうか。たとえばフーリエ変換は関数空間 L2 上で内積を保つ全単射であるという意味では直交変換なのだが、これをも「回転」と呼ぶことができるだろうか。

なぜそんなことを考えたかというと、以前ちょっと読んだ本に、時間と空間の世界観から周期と波数の世界観に移行することで意識や魂のような時間と空間の制約を超越した実在の成り立ちを説明できるという主張があったのを思い出したからだ。たしかディヴィッド・ボームが言い出したことを日本のある超科学の研究者が発展させた「理論」だった。しかしこれは時空間内の現象を見る代わりにフーリエ変換像を見るということだから、つまりは座標系を回転させているにすぎず、実質同じものを見ているはずだ。たとえば、平面のX軸とY軸の直交座標を45度傾けて

$$ \begin{align} U = & (X-Y)/\sqrt{2}\\ V = & (X+Y)/\sqrt{2} \end{align} $$

で定められる U軸とV軸の直交座標に移行すれば、U成分一定の直線はX軸のすべての値を斜め横断しているという意味で、Uという成分はX成分の制約を超えて遍在していると言えるけれど、座標系を回すだけで意識や魂や霊が説明できるものなら、座標変換する前の通常の理論的枠組みでも説明できるはずで、その程度のカラクリでとんでもないことがわかるなんてことはないはずだ。そのときそう考え、人にもそう意見した。もう10年近く前の話だ。いまになってそれを思い出して、間違ったことを言ったとは思わんが、しかし無限次元空間の内積を保つ線形変換を「回転」と呼んだのは早計であったかと反省した次第。われわれの空間認知は3次元に制約されているから、4次元以上の空間の直交変換を「回転」と呼べるかどうかはきちんと検討せにゃならん。

やる気のないあひる

途中の計算をすっとばして結果だけ言えば、4次元の直交変換は、直交座標系をうまくとりなおすことによって

$$ \left( \begin{matrix} \cos\alpha & -\sin\alpha & 0& 0\\ \sin\alpha & \cos\alpha & 0& 0\\ 0 & 0 & \cos\beta & -\sin\beta\\ 0 & 0 & \sin\beta & \cos\beta \end{matrix} \right) $$

という具合にふたつの2次元回転の「直積」として表現することができる。これと同様に、偶数次元のユークリッド空間の回転はいくつかの平面の回転の直積であり、奇数次元のユークリッド空間ではそれに一本の不動の直線が因子として加わる。こうして、高次元空間の回転もいくつかの平面回転を束ねたものになるのではあるが、4次元以上の空間では回転角度の自由度が1より大きくなり、また回転面の選択の自由度も高くなるので、その全体像を図形的に表示するのも3次元回転の場合ほど容易ではない。ましてやフーリエ変換のような無限次元の直交変換となればなおのこと、「回転」という直感に訴えやすいイメージで語ることはかえって誤解のもとかもしれん。

その点反省しつつも、俺は意識や魂が実在だとは思っていない。ハタラキではあるだろうが、ハタラキを越えたところにある実在というものが、いまの俺にはどうもわからないのだ。そして、意識のハタラキの解明にフーリエ変換が利用されるということなら大いにありうる。そういう実証的な研究を積み重ねていった先にしか、魂の正しい理解もありえないと思っている。決して意識や魂や霊を軽視しているわけではないけどな。

やる気のないあひるやる気のないあひるやる気のないあひる

回転といえば、「まわる寿司」を「回転寿司」というのは正しくないと思う。「まわる」は「回転」とは限らない。「ちょっと外回りしてくるわ」と言ってオフィスを出た営業マンは決して屋外で銀盤上の浅田真央みたいにスピンしているわけではない。「周回」とか「巡回」とか「一巡」とか、「まわる」に相当する熟語はいろいろある。回転寿司に行くと、寿司はコンベヤに乗ってぐるぐるまわっているが、コマみたいにぐるぐるまわっているわけではない。だから寿司の「まわる」はどちらかというと「巡回」であって「回転」ではない。では「巡回寿司」といったらより正確になるかというと、ならない。だって、「巡回寿司」ではどう考えたって屋台である。

回る営業マン
外まわりの営業マンの図

男女の性格が「あわない」ことを「性格の不一致」と言ってしまうように、和語を漢字に置き換えるときについ安直な置き換えをしてしまうことはよくあるが、「回転寿司」もそのひとつだ。俺はこういう「ちょっとヘンな日本語」にはかなり厳しいのだけれど、身の回りの「ちょっとヘン」を発見して面白がっているだけだから、別段、訂正を要求するつもりはない。そんなことをしてイケスカナイ奴だなんて思われたくないし、「正しい日本語」なんてものがどこかにあるなんて思っていない。だいいち、この世からちょっとヘンな日本語がなくなってしまったらつまらん。どうせ頭を使うなら、他人の言語を正すなんておせっかいなことよりは、本当に寿司が回転しながら出てくる寿司屋とか、垂直方向にまわる寿司屋とか、しょーもない発想を膨らます方向に使いたい。

他人の言語といえば、週末の宿題として「日記をかいてくるように」と指示された【娘】は、土曜日に動物園に行ったことを日曜日の夜に作文していた。妻の報告によると、なかなか上手に書けていたらしい。きっと新しい家に引っ越したアヒルの気持ちになって

ぐぁっ、ぐぁぐぁぐぁっ。ぐぁっぐぁーぐぁぐぁぐぁっ。ぐぁぐぁぐぁぐぁぐぁぐぁぐぁぐぁ。
ぐぁぐぁぐぁぐぁぐぁぐぁっぐぁ。
「ぐぁーっぐぁっぐぁっぐぁ」
「ぐぁ?」
ぐぁぐぁぐぁぐぁーぐぁぐぁ、ぐぁぐぁぐぁぐぁぐぁぐぁっぐぁ。

などと書いていたのだろう。


2010年4月18日(日)くもり

子供たちが教会の日曜学校に行っているあいだジュンク堂書店に行く。アルティン『ガロア理論入門』が ちくま学芸文庫 に収録されたので、さっそく購入。帰宅して昼食後、春休みに借りた本の返却のためコミセンの図書館に行き、歩いて帰宅。静かな日曜日である。


2010年4月17日(土)はれ

昨晩思いついた「部分的にしか思い出せない情景」というActionScriptコードを朝のうちに書いた。他のwonderflユーザからは特に注目もされなかったが、自分ではそれなりにいい感じだと思ったし、妻も喜んでくれたので、よしとする。このコードや昨日の「平均化しないモザイク処理」のように写真を素材にするコードを書いたおかげで、携帯電話のカメラをひさびさに活用するようになった。これは自分にとってなかなか大きなプラスの副作用だ。というのも、写真を撮るということはつまり外界の風景に目を向けるということだからだ。

茜屋の暖簾 ロープウェイ街の和楽器店 日赤病院前のツツジ
素材にするために昨日撮った写真
左から 茜屋の暖簾, ロープウェイ街の和楽器屋さん, 赤十字病院前のツツジ

ひさびさの晴天なので、午後からは1月19日の日記に書いたような事情でちょっとだけお手伝いしたアヒルの新しい家を見ようと とべ動物園 へ行った。子供たちよりも妻が楽しんでいる様子だった。帰り道にジョープラに寄って軽い夕食。


2010年4月16日(金)くもり

午前中、Μ教授んとこのゼミの学生が質問に来た。ルベーグ積分のテキストを読むことにしたそうだが、第1章の点集合論のところでちょっとわからない所があったようだ。見ると、ちょっと絵を描いて説明すればわかってくれそうな話だった。黒板に、正方形と円が互いに入れ子になっている図を描いてふたことみこと説明したら、さいわい学生くんはそれで分かってくれたようだ。

その式を「あきらかに成立する」と書いたとき、まず間違いなく、著者は俺が黒板に描いてみせたような絵を思い浮べていたはずだ。そして読者が同じような絵を思い浮べるなり紙に描くなりして「ふんふん」と理解してくれることを期待している。

さて、数学の専門書の第1章というのはわりかし曲者で、たいていは第2章以降の本論の予備知識として必要なことを大急ぎでまとめてある。それは記法を提示するためであり、また、「これくらいはわかっているものとして書きますからね」という確認でもある。著者が本当に書きたいことはもっと先のほうにある。そういう本の場合、著者が書きたかった本論の部分をとにかく読みはじめ、躓いたら基本事項を再確認するために第1章に戻る、という読み方がよい。運わるく第1章で躓いた場合には、いくらその本を読んで考えてもわからない。他の部分はともかく、予備知識の紹介の部分だけは、「読めばわかる」ようには書いてないからだ。その予備知識の部分をちゃんと書いた別の本を勉強してから戻ってこないといけない。第1章でいきなり躓くのは、おそらくは読み方がよくないからで、読者の頭が悪いからではない。

午後の演習は∀と∃がテーマだった。授業のあと、質問がたくさん出た。ずっとこの調子でいけたらいいな。夕方からピアノのレッスン。夕食は茜屋のラーメン。

あかねやラーメン

新書一冊に何日もかけて情けない限りだが、とにかくも『ゲームの教科書』(ちくまプリマー新書)を読み終えた。久石譲『感動をつくれますか』(角川Oneテーマ新書)でもそうだったが、クリエイティブな仕事というものについて人が誤解しがちな「才能」「ヒラメキ」のイメージに対抗して、著者たちはもっと実際的に、自分の知識や経験を素材にしてそれを合理的に作品にまでまとめ上げていく作業の大切さを最初に語る。そのうえで、プロデューサ、プランナー、ディレクター、プログラマ、サウンド・クリエータ、ビジュアル・アーチスト、テスターといった職種のそれぞれについて、どんな仕事であるかを説明し、性格上の適性についても言及する。さらに、ゲームクリエータ、とくにプランナーの一日の仕事ぶりを開発当初、中間審査前、リリース直前の3時期について紹介している。だから、つづめて言えば、これは若い人たち向けのゲーム業界の案内書なのだけど、第1章にあった「そもそもゲームとは」というような話も面白かった。

歩数計カウント11,468歩。


2010年4月15日(木)あめ

三年生の専門科目の講義、きょうが初日。昨年度まではとくにテキストを決めずにやっていて、方針が定まらずに苦労した。そのことへの反省と、後期に位相幾何の授業をするため位相空間の話を前期のうちに済ませたいという野心もあって、鈴木晋一『位相入門』(サイエンス社)を指定テキストにした。第2章から始めて、一回に一セクションの見当で進めば前期で距離空間と位相空間の初歩の話がひととおり終わるのだけど、さてそううまく行きますかどうか。

先日からアイコンエディタだの塗りつぶしアルゴリズムのテスト実装だの、マス目に色がついたり消えたりというものばかり書いている。それならというのできょうはライフゲームを作ってみた。初期画面を好きに編集できるといいのだけど、それはまだできない。それよりはアイコンエディタに機能を追加して、早いとこ使いものになるようにしなくちゃ。

歩数計カウント10,261歩。ようやく一万歩を越えた。


2010年4月14日(水)くもり

水曜日のセミナー初日。あくまでスケジュールの都合で二組に分けただけなので、火曜日のセミナーと同じテキストで同じように進める。

昨日言ったようなわけで塗りつぶしのコードを書いた(→塗りつぶしアルゴリズムのテスト実装)。塗りつぶしの部分はちゃんと動いてはいるが、それ以外の部分は動作テスト用に適当に作ったもので、視覚的に面白いものではない。

さて、昨日の話は、有限時間で計算が終わるかどうかを有限時間内に100パーセント確実に判定する方法が存在しないという話だったけれども、神さまならぬ我々は「だいじょうぶ、百万年後に計算が済みますよ」と言われたって困るわけだから(って、そもそも全知全能の神さまにはコンピュータなんか必要ないし)、本当に必要とされるのは、実際的な時間で計算が終了するかどうかを、実用上十分な精度で、実際的な時間で判定してくれる方法だろう。となると、これは全く別問題だ。よく知らないけれども、すでにいろいろ研究されているはずだ。少し調べてみなければ。

歩数計カウント9,848歩。


2010年4月13日(火)くもり

火曜日のセミナー初日。前原昭二『数学基礎論入門』を一年かけて丁寧に読もうという計画だ。きょうは第1章を読んだ。まったくの初心者には、ここに書いてあることの意味はまだわからなくて当然なので、しばしば話の流れを止めてコメントを差しはさんだ。きょうの宿題は「命題論理の公理として掲げられている三つの式の真理値表を書いてくること」だ。来週以降の進行については、ミニマムとしては前期のうちに第5章を終えること、できれば第6章を片づけること、というおおまかな目標のみ提示し、ゼミ生ふたりに相談させることにした。水曜日のゼミも同じ方針で進める。そのさいの進度の調整はこちらの役目だ。後期には、4人のゼミ生が一堂に会して第7章以降の本題に入る部分を読めるようにしたいものだ。

wonderflを利用すると、Webブラウザ(とFlash Playerプラグイン)さえあればどこででもActionScriptプログラムの開発とテストができる。Flashプログラムとして組み込まれたエディタにプログラムを入力すると、自動的にコンパイルされ、即座に実行される。この機能は大変便利だ。大変便利なのだけど、実は意外な(でもないか)落し穴がある。トップページにある Build from Scratch というリンクをクリックして現れるエディタのテンプレートコード

package { import flash.display.Sprite; public class FlashTest extends Sprite { public function FlashTest() { // write as3 code here.. } } }

これの // write as3 code here.. の次の行に、やおら

while(1){}

とたった10文字のコードを書けば(って、実際にやっちゃダメだよ)、それで終りだ。ブラウザ(のFlash Playerプラグイン)がハングして、強制終了するしかなくなる。しかもこのコードはサーバ側に無事に保存されていて、再編集しようとすればもう一度自動的に実行されてしまうから、編集画面で修正することもできず、マイページに行ってコード自体を削除するほかない。

編集と実行をブラウザアプリケーションというひとつのタスクの中で並行して実行するのは、実はけっこう危険なことなのだ。ここに挙げた例(くれぐれも実習なんかしないように)は殊更に分かりやすく単純化してあるが、while文を書くときには、つねにこの危険が付きまとう。エディタにコードを入力する端からどんどんコンパイルして実行してくれるということは、while構文の中身を書き終える前の思いがけないタイミングで実行が始まってしまう(そして無限ループに飛び込みコードがパァになる)可能性があるということだ。だから、ブラウザ単一ウィンドウ方式での開発は、複雑なループ制御や再帰呼び出しを利用した本格的なアルゴリズムの実装には向かない。Flashのビジュアルコンピューティングを気軽に体験してもらうことが wonderfl の存在理由なのだろうから、おそらく、そういう「重たい」コーディングに用いることは、もともと意図されていないに違いない。

さてそこで、久々の数学ネタ。といっても、常連読者の藤沢(あれ? 所沢でしたっけ?)のKさんや静岡のYさんにはおなじみの話題だ。

上に言ったような事情があるから、終了しないプログラムと終了するプログラムを、実行前に見わけられると助かる。プログラムをコンパイルする時 (でも何時でも、とにかく実行前) に、このコードが無限ループを含むかどうか前もって判定できれば好ましい。これができれば、編集とコンパイル/実行が同一タスク内で実行されても、危険を予知してプログラマに警告することができるから、頭かかえながらリセットボタンを押すこともなくなって助かるぞとは、誰だって考える。実際この問題は、歴史上最初の電子計算機が実現される前から、すでに研究されていた。

あっさり結論から言ってしまうと、かの アラン・チューリング [1912-1954, イギリス](リンク先はWikipedia) が発見した「停止問題に関するチューリングの定理」によると、プログラムを見てそれが「停止する」か「いつまでも動き続ける」か (プログラムの停止性) を100パーセント確実に判定する方法は (順当だが残念なことに) 存在しない。

もちろん、個々のケースとしては、判定できる場合もある。さきほどの

while(1){}

( ) 内がゼロでない間 { } 内を実行せよ、というインストラクションの記述だから、見るからに無限ループだし

i = 0; while(i<100){ i = i + 1; }

であればループを100回繰り返して終了することがすぐにわかる。だがそんなものは見ればわかるわけで、わざわざ特別なテストにかけるには及ばない。見ただけでは判断しかねるものを判断するために、「プログラムの停止性を判定するプログラム」が必要とされるのだ。チューリングの定理は、そういう「停止性判定プログラム」の「完璧バージョン」が原理的に実現不可能であることを主張する。そして、次に述べるように、その証明を辿るのも、それほど難しくはない。

プログラムは、実行前にはテキストなりバイナリなりのデータとして計算機に読み込まれるが、実行されれば計算機の動作・機能、すなわちファンクションとなる。このファンクションとしてのプログラムとデータとしてのプログラムを区別するために、ファンクション P を記述する(データとしての)プログラム を |P| と書くことにしよう。ソースコード|P|をコンパイルして実行したときのコンピュータの動作を、入力に出力を対応させる函数とみて P と書くというふうに理解してもらえればいい。

さてそこで、「停止性判定プログラム・完璧バージョン」が仮に存在したとしよう。そいつをいま H と呼ぶと、その動作はたとえば

条件(h):
プログラム P にデータ x を入力して実行したとき、
計算が無事終了するなら H(|P|,x)=1,
P(x) の計算が永遠に終らないなら H(|P|,x)=0

と記述できる。このプログラム H から、

function G(y) { while (H(y,y)) {}; return 0; }

というプログラム G を作ってみる。

すると、

プログラム P にデータ |P| を入力したとき、
P(|P|) の計算が無事終了するなら G(|P|) の計算は終了せず G の実行は永遠に続く
P(|P|) の計算が永遠に終らないなら G(|P|)=0 が出力されて G の実行は終了する

ということになる。ちょっとややこしいが、要するに

条件(g):  G(|P|)の計算が終了する⇔ P(|P|)の計算が終了しない

をすべてのプログラム P についてみたすようなプログラム G が作れることになる。しかし、このプログラム G|G| を入力して実行すると、上の条件(g)の|P||G|である場合を考えて

G(|G|) の計算が終了する⇔ G(|G|) の計算が終了しない

となり、矛盾に至る。したがって、すべてのプログラムPに対して条件(h)をみたすようなプログラム H (すなわち停止性判定プログラム・完璧バージョン) は存在しない。[証明終]

以上がチューリングの定理の証明なのだけど、実際のところ、プログラムの構文的な正しさの判定プログラムの存在やユニバーサル計算機の存在(いいかえればコンパイラの実現可能性)のような肯定的な結果と合わせて考えないと、その真価を正しく評価することはできないようにも思う。

で、なんでこんな話をいきなり始めたかというと、そりゃ、お絵描きソフトなどに必須の「塗りつぶし」のアルゴリズムをActionScriptで実装しようとして失敗したからである。学生時代に勉強してアセンブラで実装したことがあるのだけど、なにせかれこれ四半世紀前のことだからな。もちろん BitmapData オブジェクトに対する塗りつぶしメソッドは ActionScript の標準ライブラリにあらかじめ用意されている。今回作りたかったのは自前のデータ構造に対する塗りつぶしで、そうなると自分で書くしかない。そして、塗りつぶしアルゴリズムはスタック操作あるいはある種の再帰呼び出しで記述されるから、まさに上で言ったような危険と隣あわせのコードになるのだ。


2010年4月12日(月)あめ

【娘】の9歳の誕生日。アニバーサリー果子夢で作ってもらったケーキのデコレーションは きれいずきん と もぐら先生 のイラストである。「ぷよぷよ」がらみの題材にしてくれと言い出すのではないかと心配していたが、言ったところでママが拒否権を発動したに違いない。パパからは ぷよ のぬいぐるみのうち (先に買ってあった みどりぷよ を除く) 4色をプレゼントした。ママからはクローバーの柄のファンシー文具セット。そして、あとで気がついてみると、くす玉Flashを本人の前でお披露目するのをすっかり忘れていた。

きれいずきんのケーキ/ろうそくを吹き消さんとしている【娘】/ママのプレゼントは文具セット/パパのプレゼントはぷよぬい

歩数計カウント9,816歩。


2010年4月11日(日)くもり

昨日、本を片づけているうちに「もう少しBOOK-OFFに持っていきゃよかった」という気になったので、今度は宮西のBOOK-OFFへ。1,600円ちょっと。南江戸のセブンスターで食材を買うついでに【娘】と【息子】のパジャマを買った。

明日は【娘】の9歳の誕生日なので、先日からそれに備えてこんなものを作っていた。それを、子供らが寝しずまってから、妻のブログwonderfl で先行公開。そして、これを作るに先立って紙吹雪の仕組みの部分だけ金曜日に別のFlash作品 (“紙ふぶき”) として公開したのだけど、コーディングのとき実際の紙吹雪の動きを観察するために刻んで投げた紙きれが、実は仕事上必要なメモだった。そのことに気づいたのは、週明け月曜日(12日)になってからだった。


2010年4月10日(土)くもり

本を段ボール箱一杯ぶん、中央通りのBOOK-OFFへ持っていく。2,000円弱。二階のOFF-HOUSEで妻が三段ボックスを500円で買って、リビングお片づけ開始。俺は二階の本の整理。

駐車場の地面にひな菊

BOOK-OFFの駐車場に可憐なデイジーの花。なんでもノースポールとか言う種類らしい。


2010年4月9日(金)あめ

最近では「俺は気が小さい」と言っても誰も信じてくれないのだけど、毎年4月の開講時期になると胃が痛い。いつも授業の準備がうまく進まないうちに開講日を迎えるので、いろいろ取りこし苦労をしてしまうのだ。とはいえ、実際には案ずるより産むが易しなことが多い。初日の授業。金曜日は二年生の演習。昨年同様、数学での論理演算子 “→” の用法の説明に「宿題をしたらプリンを食べてよい」を引き合いに出した。それで昨年は娘にプリンを買って帰ったのだけど、きょうは、娘が歯医者でがんばったから、ドーナツを買って帰ってくれと妻からの連絡。うちでは、子供が医者に行っておとなしく処置を受けたあとにはドーナツを食べるという不文律があるのだ。

小雨のなか、ピアノのレッスンに向かう。午後からの予期せぬ雨、大学街から町の中心へ向う電車、4月の第2金曜日、夕方6時すぎ、という組み合せの必然的帰結として、電車はずいぶん混んでいた。平日は職場に置いてあるMacBookを週末には家に持ち帰るので、金曜日は普段より荷物が多い。傘もあってちょっと苦労した。

ピアノのレッスン後、予定どおりミスドに寄る。さいわいドーナツ1個100円セール中である。家族4人にひとつずつ、それぞれが好みそうなものを選ぶ。貯めたポイントの有効期限が近いので、お皿3枚と交換してもらった。ドーナツの箱とお皿3枚でますます荷物が増える。それから、駅の売店で自分と妻のためのお酒を各1缶買ったけど、いつになく売店にお客が多かったので、いつもより一本遅い電車で帰宅。歩数計カウント7,859歩。


2010年4月8日(木)はれ

歩数計カウント8,908歩。このごろ歩数が伸びないなあ。


2010年4月7日(水)くもり

手元のActionScript 3.0リファレンス本が Adobe Flash CS3 向け (Flash Player 9向け) なこともあって、いままでよくわかっていなかったのだが、Flash CS 4 と Flash Player 10 では API が強化されクラスの数が大幅に増えている。とくに flash.events.SampleDataEvent というイベントクラスに注目。これはサンプリングされたサウンドデータを再生するために用意されたものだ。いままではMP3圧縮された外部ファイルを読み込んで再生するしかないと思っていたサウンドまわりのプログラミングの可能性がこれで広がる。しばらく遊んでみよう。あと、Jedit X の構文カラーリング規則も作り直さないと。

家の Vista くんと職場の XP パソコンと MacBook Pro に 統計計算ソフトウェア環境 R をインストールした。Mac OS X版には GNU FORTRAN コンパイラが追加パッケージとして用意されているので、ついでにこれも入れてみた。FORTRANも俺が大学で教わった頃(1985年ごろ)と比較してだいぶ変わったらしい。

歩数計カウント6,860歩。


2010年4月6日(火)くもり

妻子が戻ってきた。やっと家らしくなった。

昨日作った ActionScript の作品 (これです) はなかなか評判がよく、瞬間的には wonderflのページビューで第2位まで上がった。大変うれしい。やっていることは単純で、たくさん(360個)の小さな玉が一点から四方に広がり、壁に反射して戻ってきて反対側の壁にぶつかるというのをただ繰り返すだけ。ただ、その玉が伸縮自在の糸で数珠つなぎになっているものだから、それぞれの玉がいったり来たりするうちにどんどん複雑なアラベスク模様が織りなされる。再生して中心部分を見つめていると、そのうちなんだか瞑想的な気分になってくる。スティーブ・ライヒの音楽、ラシェール・カルテットが吹き込んだサクソフォンアンサンブル版「ニューヨーク・カウンターポイント」なんかBGMにかけるとよいかも。ただ、ひどく重い (大きな負荷がCPUにかかる) ので、このアニメーションを再生しながらたとえば iTunes で音楽をかけるというのは「CPUくんごめんね」って感じで気が引ける。

歩数計カウント7,916歩。


2010年4月5日(月)くもり

今年度前期の卒業研究ゼミの打ち合わせ。四人のゼミ生と指導教員の都合がなかなか合わないので二手に分けることにした。火曜の午前と水曜の午後に二人ずつ相手をする。毎年前期は就職活動や教育実習が入ってゼミが崩壊しがちなのだが、二手に分けていればリスクが分散されるメリットもあるし、ひとりひとりの理解度にあわせてちゃんと面倒を見れそうだ。もちろん、こちらの仕事は増えるのだけどね。

歩数計カウント9,866歩。


2010年4月4日(日)はれ

ええっと、このページの読み込みが遅い場合、こちらの URL http://www.tenasaku.com/tenasaku/tepipi/diary201004.html を試してください。

昨日の「て日々」を書いてアップロードして、ブラウザで確認しようとしたら、なぜかMacBookでは読み込みの途中でつっかえる。SafariでもFirefoxでもOperaでも、はてはターミナル上の curl コマンドでも同じ症状が出る。最初はブラウザのレンダリングの癖かと思って文書のレイアウトを変えたりスタイルシートを無効にしたりを試したけれど、それでも昨日の日記の途中でつっかえる。ローカルな元データでは問題ないし、レンダリングをしない curl でも同じ症状が出るからには、ブラウザの問題ではない。無線LANのせいか (no...有線接続でも症状は軽減はするが解消はしない)、裏で走っている ClamXav のせいか (no...停止しても症状が改善しない)、などと試していくが、原因がわからない。スクリプトを通さないファイル直接指定 (http://www.tenasaku.com/tenasaku/tepipi/diary201004.html) は問題なくあっという間に読み込み表示されるから、ネットワーク経路上の問題ではない。となると、最新のページを表示するためサーバに置いた Perl スクリプトが怪しい。このスクリプトは最新月の日記ファイルを選び出し、そのコンテンツに必要最小限の書き換えを施すフィルタになっている。このフィルタの動作をおかしくする何かを昨日の日記に書いてしまったのかもしれない。どないなってるんじゃろうか。読者のみなさんのところではどうですか? って、こうなると読んでもらえているのかどうかが不安なわけだけど。

午後、コミセンの図書館へ本を返しに行った。家族全員の分、全部で15冊あり、俺と【息子】は大きめの本ばかりだったからなかなか重かった。幸町公園の桜がきれいだった。市民病院近くの生協マーケットで買いものをして電車で帰宅。夕食は塩鯖の焙ったやつと大根菜のおひたし。


2010年4月3日(土)はれ

庚申庵のしだれ桜:2010年4月3日

午後、散歩に出た。いい天気だ。庚申庵のしだれ桜がみごとに満開だった。このぶんだと堀端の桜も見頃だろうと足を運んだら、堀之内公園になにか人だかり。流鏑馬をやっているらしい。直線コースの馬場を馬で駆けながら弓矢で的を射る。人垣にさえぎられてよくは見えなかったが、衣装も進行も古式に則ってやっているらしかった。審査員席みたいなところに座っているひとたちが甲冑に身を固めた完全武装だったのが印象的だった。戦時に流鏑馬なんかやらんかったんとちゃうかと思うけど。そうこうするうちに、次の射手が駆け出す番になったので、写真のひとつも撮れるかと携帯電話をかざして待っていたら、一の的に着く前に落馬して射手が気絶しまった。あら大変。馬場の係の人たちがあわてて駆け寄っていたが、会場アナウンスの人はのんびりと解説を続けている。あまり心配なかったのだろうと思いたい。

南口から堀之内を出て堀端を西口までまわり、もと来た道を戻る。味酒町から萱町・古町にかけての、少しだけ時の流れに乗り遅れたような町並みが俺は大好きだ。とくにこんな天気の春の日には、“そして彼は目の前に広がる夢の1シーンのような昔の風景に溶け込んでゆき、そのまま帰ってきませんでした。オシマイ” となってもいいや、なんて気持ちになる。二代目枝雀の名演で知られる『天神山』を思いだす。「この世は夢の浮世や。ああやって花見に行かはる人らぁは、一夜のええ夢を見てはるんやと、こう思いなはれ」「そうか。そしたら、わてら毎晩ウナサレてんのん?」わはは。


2010年4月2日(金)はれ

お昼まえ、職場近くの家の庭で鶯がいい声で鳴いていた。少し肌寒いが冬の寒さではない。桜も満開だしね。夕方、いつものようにピアノのレッスン。中間部はまだまだイメージがつかめない。夕食後、帰省中の妻から電話。

月が改まったので、いよいよ先日作った「て日々」月次更新スクリプトの出番だ。やっぱり少しバグがあったので、いそいそと修正。オマケに使いかたを間違えて先月分のデータがパァになった。しゃあないからサーバから逆輸入する。これについては安全確認の仕組みをスクリプトに入れておこう。それから、Flex 4 SDK (4.0.0) をMacBook Proにインストールした。どう変ったか、これから少しいじってみる。

歩数計カウント7,032歩。


2010年4月1日(木)くもり

エイプリル・フールなのだが、ウソをつこうにも相手がおらん。それでも、なにか気の利いたウソはないかと考えているうちに、うちのくまのむうむうたんを連れて部署部署を回って「きょう付け採用の新人のむうむうたんです」と挨拶まわりをさせるとかいうのを考えた。学生さんたちの定期検診をやっていたので、曲がりなりにも学生である妻にメールして「代わりに受診しといたから」と言ったら、返事に「ありがとう。でも月経周期はなんて答えた?」ときた。即座にこういう反応が返ってくるところが、さすがわが妻である。

午後、ひどく強い風が吹いて、オフィスの扇風機が負けていた。夕食は定番のひき肉の味噌炒め。歩数計カウント8,233歩。夜半から大粒の雨。