だだもれ

2013年07月31日

malloc本の乱数の章は、最初は線形合同法、MWC、XorShiftを 紹介して終わりにするつもりだった。しかし、 ページを食いすぎる上に天下りになるのでMWCに絞ることにした。 しかし、MWCをいきなり説明しても天下りになるので、 軽く思いつきで自作した後に、有理数の小数展開をし、 逆順化して除算を乗算に変換し、素敵なひらめきを入れてMWCにする。 つまり、MWCを発明する過程を辿ってもらう。 あとはこの面白さを削らずにどれだけコンパクトに書けるかが問題になる。

2013年07月30日

会社ってこええな。 ワタミの死んだ人の話もこの前読んで、労働組合にも機能があったんだなと思った。 これどうしたらいいんだろう。 どこにも弱い人はいる。能力で劣る状況になっても、 かといって自力で訓練してどうにかする方向に行けない人はいる。 私もいつそこに落ちるか知れたものではない。 自業自得な面が全くないということはないだろうし、 実質的には弱さは罪なのだから、こういうのも仕方ないと言ってしまうことはできる。 しかし、それで片づけてしまえば、結局は強者にとっても居心地の悪い社会になる。

仕組みを設計して負担をどこにどれくらい押しつけるかを考えることは 誰かえらい人にやってもらおう。 私は能力を訓練するコストを下げる方を考える。 パイの配分の話ばかりではパイが大きくならない。

労働組合は本来の目的のためだけに動いていればいいと思う。 なぜ左翼と結ぶのか。原発関係ねえよ。

安倍氏はメディアに露出した際に「経済指標が良くなってる」 系の話をするのをやめた方がいいと思う。 その言葉は大半の人に刺さらない。 同じことを言うにしても、もっと言いようがあるはずだ。

アベノミクスは失敗するとすごいことになるかもしれない。 成功すればいいが、その場合も予期しない副作用があるかもしれない。 定期預金につっこんで放置はマズいと思う。 しかし投資とか貯蓄とかについて考えるのは不浄というイメージがあるのか、 下手にやって失敗するより何もしない方がマシという認識なのか、 とにかくあまり語られない。 確かに、投資について語っている人にはおかしい人が多いし、 商業サイトでそれを語っていればおおむねそれは宣伝あるいは誘導だから、 そう思うのも無理もない。 しかし、何も知らないままでいるのもヤバいだろう。 勉強するのにそれほどの手間がかかるわけでもないと思うのだが、 それは私がそこに適性があるからなんだろうな。

誰か止めてやれよと思うことは多い。もちろん自分では止めないのだが。 小さいことを例にすれば、 技術用語の読みが間違って定着してはずかしいことになっているような時だ。 恥をかかせないように訂正するのは難しい。 そういえば昔、破綻を「はじょう」と読んでる先輩がいた。 もちろん私は修正しなかった。

自分がそういうことをやっている可能性は常にあるし、 それを人が指摘してくれると期待しない方がいい、ということでもある。 自分がやっていることが正しいかどうかは、自分で証明しなくてはならない。 証明し、積極的に周りから肯定されない限りは、正しいと思ってはいけない。 実際前の本に書いたことは、ほとんど全て不安だった。 私はあれを自信満々で書いたわけではない。今でも不安だ。 なにせ「初めてやってみた」という程度の事が山ほどあるのである。 そんなものを本にするとかひどくね?と今でも思う。 しかし自身満々で教えることの危険を思えば、 いつまでも不安なままでいる方がいいだろう。 教わる側は自信のない人に教わるのは嫌かもしれないが、 中学生でもあるまいし、教師がいつも正しいなんて子供じみた考えで 教わってほしくはない。積極的に「オレこう思うけど正しいかはわからない」 と言おうと思う。「この本にはオレはこう思う、ということを書いた。 どうするかは自分で決めろ」が私のスタンスで、それでいいと思う。

2013年07月29日

いや、さすがに「プロテスタンティズムの倫理と資本主義の精神」 はいきなりは辛いと思う。「こんな雰囲気の本もあるよ」 という程度で渡した。あんまり真面目に取らなくていい。すまん。 最初の1,2ページ読めば著者の問題意識がわかって面白いかなあと。

この本の何が面白いか。一言で言えば、 普通は資本主義と言えば欲望によって回る世界だと思われているのに、 この著者はむしろ禁欲的な精神が今の資本主義を作り上げた、 と言っているところが面白いのだ。まあそれ自体は正直面白いだけで どうでもいいのだが、 それが私の感覚にすごく馴染むなあ、と思ったわけである。

今の社会が欲望を刺激することで回っているのは間違いない。 しかし、物を作る側はしばしば欲望とは程遠いところで 日々修行のように仕事に取り組んでいる。 ゲーム作りもまさにそれだ。 まあゲームの場合、あまり欲望から離れた所にいると つまらんものしか作れなくなるので難しいのだが、 しかし基本的には多数の職人が自分の専門をコツコツと 積み重ねるのが今のゲーム作りであり、このイメージは それほど外れていない。

娯楽であっても工業製品の一種であり、職人気質は必要だ。 しかし、娯楽である以上、単なる工業製品になってはダメで、 職人気質がマイナスになることも多い。 そのバランスを取るのが恐ろしく難しいのだ。 それぞれの人間の中でバランスを取れれば最高だが、 それは難しいので、人ごとに「おまえは職人でいい」「おまえは娯楽を考えろ」 と分業することになる。しかし、この分業がチームの意識を分断し、 無責任と無関心の源になることもあり、難しい。 糊になるような人がちゃんといればいいが、 そういう人はそう多くないし、 それができる人がいても、その人の糊としての能力を活かせる 配置にしなくてはうまく行かない。

2013年07月27日

カップうどん買ってきた。どちらもうまいとは言い難いが、 正直嫌いじゃない。しかし、比べてどちらがいいかとか言うレベルには 両方とも達してない。そして直後から胃が重い。 せっかくなので、前にひつじこの実家でもらってきてなかなか消費 できなかったワインを飲み尽してしまうことにした。 おいしいのだが、時間的にも体調的にも余裕がなかったのである。

MinGWのgccで64ビットバイナリを吐けるのかと思ったら、 ご丁寧に日本語で「残念ですが未実装です」とか言われた。 64ビット版は別配布のようだな。

intやunsignedが8バイトの可能性がある。 4バイトの変数に入れる時にはandしてビットを削っておいた方が無難だろう。 コンパイラに対して「わかってやってる」ことを示しておかないと警告が 出たり、甚だしい場合には実行時エラーになったりする。

CGを思いつきと寄せ集めでやるのはもうやめたい。 「キューブマップ適当にぼかしたいんだけど」的なことはそろそろやめてもいい頃だろう。 あれはぼかすんじゃなくて、BRDFの分布関数を前計算してテーブルにしておくんだよ。 そりゃ目で見ればぼけて見えるけど、そういうことじゃないんだって! キューブマップを使って映り込みを表現するようになってもう10年くらい経つわけで、 そろそろもうちょっと理屈を導入してもバチは当たらない。

しかし、CGにはまっとうな理論を勉強する手段がない。 ないと言うと言いすぎだが、 少なくとも「これ一冊読めばとりあえず原理がわかってそれなりなものが作れる」 という便利な本がない。 physically based renderingやrealtime renderingが近い位置にいるが、 英語で読める奴は少数だし、先立つ数学の素養がないと話にならないし、 どちらも実装の話はしていないから物につなげるにはかなりの努力がいる。

しかし、どうにも書く気がしないまま今に至っている。 本来ならそういう本はCGの専門家が書くべきで、私のようなニワカ素人が 書いていいものではない。理論面技術面ではツッコミ所が満載になるのは わかり切っており、間違いなくそこを叩かれる。 まして前より読者のレベルが上がるはずだから、 余計にツッコミが厳しくなるだろう。

それに、安く上げたければUnityなりなんなりを外から買ってきて使えば良く、 描画に関係したプログラマなんてもうほとんどいらんだろう、という思いもある。 絵を綺麗にしたいのであれば、そしてそれが利益につながるのであれば、 そこにはコストを割くべきだ。描画担当プログラマはきちんと基礎から勉強すべきである。 そうする価値がある。だからそこで手を抜くという選択自体がおかしい。 そこで手を抜きたいと言うならば、それは絵なんてそれなりでいいと言っているに 等しいのであって、だったらライブラリを買ってくればいいではないか。

それでも、本は書いた方がいい気がしてきた。それも濃厚に。 専門家が書いてくれればいいと思っていたが、 専門家が書くような本を読める奴は放っておいても英語を漁ってどうにかするだろう。 私が相手にすべきは、2004年前後の私だ。 つまり「シェーダって何?そもそも絵とか興味ないんだけど。 え?マジで?オレが描画やんの?」 みたいな状況の人を短期間でどうにかするのが目的である。 そういう状況の人は良く見るからな。 というか、描画担当の大半はそういう人だよね?他もそうなんじゃないかなあきっと。

私がここまで来るのに何をしなければならなかったかを考えてみれば、 私が今いる場所まで一冊の本で来られるだけでも十分価値がある。 さんざん英語の論文やら変なSDKのサンプルやら本やらを漁ったし、 さらに3つの製品(1つは出なかったが)でシェーダの設計と実装を、 1つの製品でGPU抽象化ライブラリを書いた。 数学の本に至っては30冊以上は買っているが、理解できている気は未だにしない。 実際全然わかってない。年に一回か二回CEDECその他ですごい人と話すが、 その度に丸三日くらい落ちこむ。

そういうわけで、到底私が最短距離を歩んできたとは思えない。 明らかに無駄なことをしていた時間は大量にあった。 無駄に見えて無駄でない経験というのはあるものだが、 技術に限定して言えばほとんど内容を落とすことなく楽に1/10くらいには短縮できる。 CGをやったことがないプログラマを、基礎を理解して 360やPS3の中堅レベルのゲームがやっていた程度のものを実装できる、 という程度まで半年で連れていけるはずだ。周辺の数学や物理も一緒に扱ってしまえば、 他に一切本がいらない状態は作れるはずである。 前回は「数学は他で勉強しろ、って書けばいいじゃん。ページ無駄だろ」 とさんざん言われたが、私はそれはやらない。 私はそういう本は嫌いだ。勉強なんてせずに済めばそれに越したことはない。 本を選ぶのも面倒くさいし、読むのも面倒くさいし、読んで得たことを 取捨選択したり組み立てたりするのも面倒くさいのである。 そんなのを好きでやる奴はマゾだ。あるいは趣味人だ。 勉強をしている間はゲームを作れない、ということの重みをもっと考えた方がいい。 我々は物を生産することに対して給料を払われているのであって、 勉強だけしている奴は役立たずなのである。まあ大抵の人は勉強しなさすぎだけどな。

そして、もし今から本を書くのであれば、 今から研究する部分も入ってくる。 前書いた本に書いた内容の半分以上は、 本を書いている最中に研究して確認したものだ。 それまでは理解があやふやだったり、 そもそもやったこともなかったりしているのである。

やろう。いずれ。

今日は「プロテスタンティズムの倫理と資本主義の精神」 を斜め読みしていたのだが、自分がどうおかしいかがなんとなくわかった気がする。 この本には、「イギリス人とかアメリカ人は働き方がおかしい、ありゃなんだ?」 という疑問への答えがえんえんと書いてある。 なんであいつらはあんなに必死に働くのか?という疑問だ。 結論から言えば、「あれは宗教」ということになる。

キリスト教において、神が「こいつはいい人間だ」と思う人間は天国へ行く。 それを信じている人にとっては、自分が天国へ行けるのかどうかは死活的に重要である。 プロテスタントの登場以前においては、 教会の言うことをそれなりに守っていれば、 おおよそ自分は天国へ行けると信じることができた。 多少悪事を犯しても、神父さんに懺悔したり、 教会に寄付したりしてそれを帳消しにできた。 カトリックは異端には厳しかったが、悪人には優しかったわけである。

しかし、ある時気合の入りすぎた人が現れて、 「こうすれば天国へ行ける!とか人間ごときが言うこと自体が神を冒涜している!」 とか言い始めた。天国行きかどうかは神が決めることで、 人が決めることではない。だから、いいことをすれば天国へ行ける、 なんて思うこと自体がおかしい、と言うのである。ひどい話で、 こうなると誰が天国へ行けるのかは全くわからないことになってしまう。 努力のしようもない。 そんな厳しいことを言う人はいじめられておしまいだろう、 と思うのだが、いろいろあってそういう人達の教えが流行ってしまった。 たぶんカトリックの坊さん達が激しく堕落しているのを見てみんな怒っていたのだろう。 「あんな生臭坊主どもに金を払って本当に天国に行けんのか?」 と思ったのかもしれない。 また、坊主と対立していた貴族やら王様が煽ったのかもしれない。

さて、そんなものが流行ってしまうと、いろんな影響が出てくる。 「どうせ天国に行けるかどうかなんてわからないんだから、もうどうでもいいや」 と思えればある意味良かったのだろうが、 当時の人達は本気でキリシタンだったので、そうはならなかった。 「自分が天国行きなのであれば、天国行きにふさわしい人間であるはずだ」 というわけのわからん論理によって、 いい人として振る舞うことで自分を安心させようとしたのである。 24時間いい人として振る舞わねばならない緊張感にさらされたわけだ。 「いい人になれば、天国行き」ではなく「天国行きだとすれば、オレはいい人のはず」 という逆転がすごい。

さて問題はこの「いい人」であるための手段だが、 カトリック時代とはかなり違ってくる。 まず神父に懺悔するというのは神父の権威がなくなれば成立しない。 教会に金を払うのも、教会の権威がなくなれば成立しない。 教会や神父がしていることがいいこと、というルールが消えれば、 当然そうなる。葬式やら結婚やらの作法なども元々は教会ルールで いろいろとやっていたわけだが、それで天国に行けるわけではないとなれば それを守る意味も消える。つまり、「宗教っぽい行動」 をちゃんとやればオーケー、というところが消えてしまったのである。 これが合理的な行動をもたらした。科学が庶民に下りてくる下地になるわけだ。

では、一体何をすれば「いい人」でいられるのか。 もう「日々の仕事」しか残っていない。丁度社会がそれなりに分業化してきていた こともあって、自分が食うための仕事、という以外に、 誰かに何かを提供するための仕事、というイメージもそれなりにできてきたのだろう。 仕事を真面目にやることが「いい人」の条件だ、という話になってくる。 それが人を助け喜ばせるのだから、 これは立派にキリスト教で言う「隣人愛」になるわけだ。

そしてもう一段すごいことになる。隣人愛としての仕事だから、 仕事をうまくやれば人がより喜ぶことになる。人がより喜ぶように仕事をすれば、 普通は金が溜まる。つまり、金が隣人愛の尺度になってしまうのである。 本来なら金が溜まればパーッと使う。 しかし、この思想に毒された人間は、もっと金を溜めようとする。 「後々不安だからとっておこう」という話ではない。 金はさらに隣人愛を発揮するために使うのだ。つまり、投資を行う。利益を増やす。 仕事を改良する。これが、元々のなれあいで成立していた社会を 根底から破壊してしまうことになる。何もかもが競争にさらされる 現代社会はこうして産まれたというのである。

アメリカ人やイギリス人が、例えばイタリア人なんかと比べて明らかにおかしいのは そういうことによるのだろう、という話をこの本ではしているわけだ。 後ろ半分は読んでないし、前半分も斜め読みなので合っているかは知らない。 このストーリーはわかりやすくて面白い。本当にそうかは知らんが、 物語として納得がいく。

さて、日本人もたぶんこのアメリカ人やイギリス人の異常性に似たものを持っている。 江戸時代くらいまではそうでもなかったと聞くが、 明治から昭和にかけてはかなりこんな感じだった印象がある。 そうでなければこんなに裕福になってないだろう。 キリスト教でもないのに何故そんなことになったのだろうか。 そして、この「人に奉仕してないと落ちつかない」「無駄が許せない」 「消費は悪」「合理性バンザイ」という生物として異常な精神性が、 私の根底にあることに気づいて愕然とした。 「おまえ何が楽しくて生きてるんだよ」という奴である。

もちろん私はそれほど徹底しているわけではなく、 コンビニで菓子は買うし、二郎は食うし、 肉体の喜びとしてのピアノやヴァイオリンを好む わけで、そんなに気合が入っているわけではない。 しかし、敢えて客観的に見てみようと思えば、 私のこの性質は平均よりはだいぶ端に寄っている。 周りを見渡してみればそれは明らかだ。 私はしょっちゅう「もっとうまくやればもっと良くなるのに」 「なぜもっと良くしようとしないのか」と思って、 何かのきっかけで暴走的に行動を起こしたりするわけだが、 普通はそうはならない。 私は単純に、会社がつぶれたら困るから、とかいう合理的な理由で やっているつもりでいたが、どう考えても合理的な領域を逸脱している。 とりわけ本はそうだ。「有名になっておけばあとでいろいろ便利だろう」 という打算はそりゃあるが、それで説明つくレベルじゃないし、 そもそもそんなことはあまり真面目には考えていない。 こう言うと自分に酔っているようで気持ち悪いのだが、 私は前回も今回も人の役に立とうと思って本を書いている。おかしい。

絶対この仕事しても給料増えないぞ。減ることはあるだろうが。 仮に有名になっても、 叩かれる頻度が上がるだけで、リアルな生活にプラスは何一つない。 逆にこの本の出来が悪ければ、その罪は私が一人で背負うことになる。一生だ。 この「罪の意識」は客観的なものでなく主観的なものだからどうにもならない。 前の本で説明をしくじったり、間違ったりしたところは今でも気に病んでいる。 改訂してすっきりしない限り、いつまでも続くだろうし、 改訂しても、今出ているものを買ってくれた人がいる事実にかわりはない。 出版社も会社もそれに関しては何もできない。 プラスはあるか?たぶんさしてない。 前の本を書いても私に意味のある権威はつかなかった。今回もつかないだろう。 なぜなら、本が初心者用だからだ。優れた最新技術で云々みたいなのはない。 だから、プロレベルの人達には評価されない。 一応前の奴の評判はいいので、それは救いだが、 私はプロに囲まれて生活しており、 そのプロの人達の私に対する印象が変化しない限り、 私にとって実質的な意味はないのである。 twitterで誉めてもらっても、アニメに出てきても、うれしいだけだ。

ひつじこはちゃんと楽しむことを知っている。 金を使う楽しみ方でないだけで、無理をしてケチっているわけではない。 実際、ピースボートに100万出した経験があるあたり、金をケチる性質は微塵もない。 今回の出産でも赤ちゃんと一緒にいるために追加料金払って個室取る予定だし。 私にとってひつじこが楽しむための金は無駄でないので、それを払うことに抵抗はない。 しかし、私が楽しむために金を払うことは私にとって基本的には罪だ。 コンビニ菓子や二郎は私の弱さだと思っている。 しかし、そもそもその物の見方自体が異常、ということをこの本は言っている。

あー。でもまあ、まあいいか。ひつじこは好いてくれてるわけだし、 私のその異常性が人の役に立つものを生み出すなら、それはそれでいい。 パンダは寄れば臭いし危ないかもしれんが、離れて見ている分にはかわいいし有益だ。 そして私自身がパンダであることを苦痛に思わないのであれば、それで誰も損しない。 まあ大変なのは産まれながらにしてパンダの檻に入れられているオタマだな。

ところでさっきの話の続きだが、今のイギリス人やアメリカ人は、 昔の人ほど本気でキリシタンではない。しかし変わらずおかしなくらい働く。 これは、本気でキリシタンだった頃に作られた社会や仕組みが、 キリシタンかどうかに関係なく続くくらい巨大なものになってしまったからである。 皆はいいものを求める。いいものを提供するにはがんばらないといけない。 がんばらないと、人が求めてくれない。金が溜まらない。消えてしまう。 死なないためには、働くしかない。しかも、そこそこの働きで すませてのんびり生活するということが許されない。 全てが競争にさらされている。努力しなければ死ぬのである。 競争を緩めるために会社同士で話し合って「ほどほどにしましょう」 とか言うと「カルテルだ!」とか「談合だ!」とか言って叩かれる。 もはや信仰もクソもない。この状況で正気を保つには、 「人の役に立つってうれしいよね」という生物学的に見れば異常な仕組みが 精神の根底にないといけない。それを正気と呼ぶかどうかはともかくとして、 それなしで幸せに生きるのはかなり難しくなる。 明治から昭和にかけての日本では、 国民国家という概念が神の役割を果たしたんだろうな。 「お国のために」と言うとアレだが、それはつまりは拡大された隣人愛だ。

あーそう考えると、「がんばる人が報われる社会」ってヤバい。 教育をタダにして全員に機会を与えるとかいうのも、 考えようによっては「言い訳の余地をなくして全員を競争につっこむ」 ということでもある。 「あの人は親が金持ちだからねえ」と言って済ませられる社会の方が ある意味優しいのだろう。 とすれば、このまま経済的に没落するのも悪いことではないのか。 貧乏になれば治安は悪くなるし、もろもろ悪いことも起きるが、 資源を巡って大戦争、とかにならないでおだやかに事が推移するのであれば、 誰もがスマフォを持ってネット接続することに変わりはないだろうし、 必要なカロリーを得られないほど飢えることもそうないだろう。 相対的には貧乏でも、これまで生まれた人類のほとんどよりは はるかに裕福な生活を送れる。民主党とかの左翼はそういう方向へ持っていこうと していたんだろうか。だとすれば、それはそんなに悪いことでもないのかもしれない。 私は嫌だが。

できない奴を切り捨てるのと、できない奴にできない状態を許さず努力を強いるのと、 どちらが厳しいだろうか。私は圧倒的に後者の考えだ。 できない奴ができるようになる方法を考える。 実はできないままの方が幸せなのかもしれない、とか、 できるようになりたいとそもそも思っていないのかもしれない、 という可能性を私は無視している。私はそれを許さない。 そして、例えば教え方が改良されて、できるようになりやすくなれば、 できない人でいることはよりダメになる。 例えばプログラミングを習得する率を高められたとすれば、 それでもできない人の地位は今よりも下がることになるだろう。 それが良いことなのか?と問われると、なんとも言えない。 だからといって私がそこに関して躊躇することはないのだが。 私はできないことを許さない。そいつをできないままにしておく私も許さない。

2013年07月26日

黒澤乱数というのを知った。「x^=0x9630;x-=6553;x=rotateLeft(x, 2);」 で16ビットではそこそこ価値がある。そしてパラメータは改良の余地がある。

ビット演算と加算を混ぜることで、加算の周期を損わずにビットを攪乱できる。 さらにローテートを入れて攪乱の度合いを増すことができる。 しかし、これは32ビットに拡張できない。 パラメータの検索空間が2^70にもなるからだ。 しかもたぶん良いパラメータである確率は相当低い。 しかし16ビットなら2^37で、総当たりが可能な量である。 そして確率はそれほど悪くないことが想像できる。 それでも総当たりは遅すぎるので、 乱数でパラメータを選んで性質がいいのが出るのを待つことになるが、 それほど待たされずに見つかる。 そういうわけで、黒澤乱数の32ビットへの拡張は 何かしらの理論が見つかるか、コンピュータが10億倍くらい 速くならないと辛い。 やはり思いつきで数学的な裏付けがない理論は使いにくいのである。

Xorshiftの欠点は0が出ないことだ。Xorshift操作を1個削って定数加算に 取り換えることでこの欠点は消せる。 しかしそうすることで理論の助けを全て失い、 乱数性はやってみるまでわからず、周期の見積りすら不可能になる。 パラメータ空間が2^44でかなり大きく、しかも周期を知るために 回す回数まで考慮すると呼び出し回数が2^76オーダーになる。 これはお手上げだ。これも良いパラメータである確率はかなり低いので、 ランダムにパラメータを生成しても、おそらくいいものは見つからない。 何かしらの理論がないとダメだろうなこれも。

実用にならないにしても、こういったアプローチは面白い。 そして、既存のMWCやXorShiftがいかに優れているかがよくわかる。 思いつきで作る手法にもポテンシャルはあるが、運用上の問題を解決するのが 容易ではないのである。そのうちヒマになったらMTも理解したいな。

やっぱり乗法系の乱数が数学的な扱いが楽でいいんだろう。 MWC、素数法線形合同法、Xorshift、といったあたりだ。 とりわけ古来からの整数論がそのまま使える前二つは扱いやすい。 パラメータ空間はそこそこ大きいが、当たりの確率が高いので問題にならない。 加算や乗算はビット境界をまたぐ演算なので、 多少適当でもビットが混ざりやすく、乱数の性質が高くなりやすいのである。 ビット演算系はビットをまたがないために、下手なパラメータだと ビットの攪乱が遅くなったり、変なところで収束したりしやすい。

今のマシンで回せる回数は2^40くらいが限度だ。 これが2^64になるには、2000万倍の高速化が必要になる。 生きてるうちに見られるかどうか怪しい数字だ。 今の2000万倍速いPCとかスマフォってどんななんだろう。

CPUのコア数がキロコアとかメガコアとかでクロックと同様に表示 されるようにでもならない限り、そういう桁での高速化はないよなあ。

2013年07月25日

前書きが難しい。

ちらりと調べればこのへんのことが良く言われている。 これを満たしてればいい、ってもんでもないしなあ。

そのへんにある本の前書きを見る。 売れてるらしい本がいきなり「裏付けのない一般論」 で始まっている。腹立たしい。 「完璧を目指しすぎて遅れちゃったゴメン」と書いてあってイヤミだ。 これで完璧かよ。

吉田武氏の本の前書きは好きだが、気合いが入りすぎていて引かれそうだ。 書きたいことを書きすぎている。伝えたいことが多すぎるのだろう。

中田育男氏の「コンパイラ」の前書きは素晴らしくいい。 1行で何の本かがわかり、数行で特徴がわかる。 「本書はコンパイラをわかりやすく解説した入門書である」。 シンプルだ。これ以上引くことも足すこともない。 しかし、これでいいのは、 この本を開いた段階でその人はコンパイラに興味を持っているからだ。 これをそのままマネすると、おそらく演出不足で伝わらないだろう。 なんといってもこっちの対象読者は広いのである。 もっとも、実際に読み始めてみれば本当の対象がおそろしく狭いことは すぐにわかるのだろうが。

ガベコレ本。大学の先生の前書きは大学の先生っぽくて良くない。 作者の前書きもいきなり引用で、しかもあまり気が利いていない。 もっとも、他にこの題材の本がないから、特徴を言い立てる必要もない。 つまり、この本は前書きがさして重要なわけではない。

ドラッカーのマネジメントの書き出しは頭のいい人の脳をくすぐるような始まり方だ。 単刀直入とは言い難い。これは参考にならんなあ。 ところで今見たのは原書なのだが、日本語訳とは似ても似つかん印象がある。 今ここにないので確認できんが。

日本語訳は訳者が好き放題切り捨てて回った抄訳なのだが、 私にとってはそちらの方が刺さる印象がある。 イノベーションと企業家精神の日本語版の書き出しは、 「本書はイノベーションと企業家精神を生み出すための原理と方法を示している。 企業家の性格や心理ではなく、姿勢と行動について述べた。」とあるが、 たぶん原書は全然違うんだろう。上田訳を読むのは、 言うならば吹替で映画を見るようなものなのであり、 読者はそれを了解しておく必要がある。嫌ならもっと正確な訳があるので そっちを読めばいいだろう。

rubyの本。いきなり著者じゃない人の言葉がでしゃばっていてよくわからんが、 rubyの性質上仕方ないし、読者はすでにrubyを選ぶ理由を持った人なのだ。 rubyの作者の言葉は重いだろう。したがって参考にならん。

手元にあるjava入門書2冊。 片方は「学生を実験台にしてテストしたからわかりやすさは折り紙 つきよ!」という主張が入っている。また、他の言語の知識はいらないよ、 と言って初心者にアピールしている。 しかし、直後に「この決まりを守ってやらないとわからない」という脅しが 全てを台無しにしている。そりゃ教授にやれって言われりゃ学生もやるわな、 という話になる。 また、「なぜjavaで始めるの?」という疑問に答えていない。 そして、到達点がわからない。つまり、何ができるようになるのかがわからない。 もう一冊は前書きが質素すぎてメッセージ性が何も伝わってこない。 「わかりやすくしました」と言われても、わかりにくく書こうと思って書くことは ないわけで、類書との差別化ポイントが伝わってこない。 そして到達点がわからない。これらは参考になる前書きではない。

統計の教科書。大学の先生が書いた感じのダメな前書きの見本。 「近年重要」とかいいから。そして「ノンパラメトリック手法も入れた」 とか言われても、読む方初心者なんだからわからんだろ。

Cの絵本。絵だからわかりやすいよ!という主張はよくわかる。 Cって難しいよね? プログラミングの論理以前にそもそも言語仕様が難しいよね? といった「難しいよねアピール」はいい。著者が難しいと言っていれば、 理解できない自分がアホというわけではないと安心する。 その後で「でも大丈夫」と続ければ効果的だ。 まあ根本的に、このレベルでわからん奴にCやらせるのが間違いだろ、とか、 Cの歴史とか関係ないからさっさと本題に入れよ、 とか中身についてはいろいろ言いたいことも あるが、売れるのはわかる。

この筋で前書き書くなら、2段落目で「なので絵にしてみました!」って書くけどなあ 私なら。1段落目は「難しいアピール」をもっとくだけた感じでやりたい。 というか、そんな感じで書けばいいんじゃなかろうか今回。 なんかちょっとヒントになったぞ。

よくわかるPHPの教科書。簡潔だがいい前書き。 「サンプル打ちこんで説明されても、 その場では動くけど自作しようとするとダメだよね」 「だから違うやり方を試してみたよ!」 実にわかりやすい論理展開。そうか他とは違うのか、なら行けるんじゃないか。 そう思える。ただ、到達点がわからないんだよなあ。 「この本読んだら何ができんの?」は欲しいだろう。 しかし参考になる。

シャンドールピアノ教本の前書きがいいなあ。300年間いろんな本が出たが、 この本はそれをまとめてどうこうするようなもんじゃない、みたいな感じ。 いきなり新しい何かを持ち込むことを匂わせている。 ただ、少々知性をくすぐる方向に寄せすぎている嫌いはある。 訳の関係かもしれん。つうかこの本、普通にピアノ弾いてる人読むのか? 習ってた先生とかこの手の本読まないと思うなあ。 それにしてもこの本は本当にいい本だ。前書きに この本の何が新しいのかが簡潔かつ劇的に示されている。

ピアノ弾きたいなあ。そういえば 何日か前に5絃のバイオリンが弾きたくなって、脳内演奏しまくっていたが、 今許されるのはそこまでだ。それにC絃をバイオリンにつけても張力不足で いい音が鳴らんのはわかっている。マイクで増幅する前提でしか使えない楽器だ。 でもそれでも楽しいよなあ。もっともビオラの方がいい気もしなくもない。 触ったことはないが。

音楽と縁を切って1年経ったか。でもバッハ脳は健在だな。 いくらでもそれっぽいものが鳴る。しかし、完全にバイオリン仕様に戻ってしまった。 自分がショパンエチュードやベトソナを弾いていたことが全く信じられない。 手の感覚がもうない。

ヴィジュアル複素解析の前書きもいい。「え?何の話?」と思わせて、数行後に それがこの本の特徴を表現していることがわかる。 しかし、こういう華麗な手法はしくじるとイヤミなだけになる。 私には向いてない。テクニックに頼るのはやめよう。

さてどうしたものか。とりあえず一回コミットして好き放題書き直せる状態にしよう。

いろいろ聞こえてくる。今は無視だ。聞かない。聞かないぞ。

へー。 私はその手の常識が必要な場所を避けて生きているのでどうでもいいのだが。

物事はうまく行かないのが当たり前だし、 うまく行く時も問題に満ち満ちているのが当たり前だ。 いちいち解決しようと考えていたらキリがない。 問題はつきあうもので解決するものじゃない、 と思うくらいでもいい。 だいたい、問題は大抵氷山の一角であって、 根本から断たねばどうにもならない。 目に見えている問題を通して根本に迫ることもできるし、 それが現場で唯一できることでもあるのだが、 それが解決せねば耐えられないほどの問題でないならば放置するのも手だ。

周りを見渡せば問題なんていくらでもあるが、 それに首をいちいちつっこんでいたら何もできなくなるし、 仮にそれを解決したとしてもさしたる意味はなく、 そして結局はいろいろあって解決できないだろう。 私は本を書こう。総合的に考えてそれが一番いい。 私がそれらの問題を直接解決することを、世界は望んでいない。

2013年07月24日

中身わからないのでコピペ、というのは仕事でならやむをえんが、 自発的な勉強ではやりたくない。私はそう思う。 なぜ自発的に買う本で直接仕事になるわけでもない課題をやるのに 意味がわからんストレスを味わいながらコピペせねばならんのかと思うわけだ。 しかし、「意味がわからんストレス」よりも、「なんか動いたよろこび」 の方が大きいというのであればそれも理だ。仕方ない。

つうか、プログラミング言語の勉強は語学の勉強とは違う。 英語の勉強に似た所はあるが、それは英会話ではなく、英語で小説を書く方に ずっと似ている。英会話は英語圏に産まれれば知性で劣ってもできるが、 英語で小説を書くことは、英語圏に産まれても知性がなくてはできない。 これらを一緒にするなと言いたい。

血糖値が乱高下した方が成長ホルモンが出るというデータがあるが、 成長ホルモンと成長はどっちが原因でどっちが結果だ? 成長ホルモンを人為的につぶして背が伸びないことを確認した研究はあるのか? また、そもそも生体は複雑系であり、 入ってくる物質(=食べ物)の組成が大きく変わっても通用するかどうかは はなはだ疑わしい。 澱粉抜きで生きる場合、既存の医学や栄養学のいくらかの部分は 役立たずになる。

オタマは糖質制限とは言いつつも、大量の乳糖を牛乳から得ており、 仮に牛乳を1リットル飲んでいるとすれば、50gの糖質を摂取していることになる。 ゆるい糖質制限だ。これを削って良くなるのか悪くなるのかはわからないが、 今は皮膚症状がコントロール可能な範囲であり、 皮膚のためだけに減らす理由はない。 減らして何が起こるかもわからないし、そもそも減らすのが困難だ。 そういうわけで、現状維持でいい。 果物も、ブルーベリー、ラズベリー、いちご、というあたりなら それほど糖質は多くない。

ブルーベリーの糖質量が10g程度。いちごが7g。ラズベリーが5.5g。 最近ブルーベリーを食わなくなってきたがいい傾向か。 ラズベリーといちごにシフトしよう。りんごとか桃とかの「日本魔改造果物」 は13とか14とかあるから、冷凍輸入フルーツに頼るのは悪くない。 ごめん日本の農家。一昨年去年と柑橘類を100kg以上買ってたのにな。 手のひら返しすぎだ。米農家にも本当申しわけない。 累計で見たらトン単位で買ってると思うんだよな。 同様に北海道のじゃがいもかぼちゃ農家にも申しわけない。 先日通販フォームの入ったお手紙が届いたが、 もはやジャガイモとカボチャは買えない。 大豆だけなら買ってもいいけどなあ。

うん。大豆を買う時はあそこにしよう。あと年一回とうもろこしを買うくらいは 娯楽としていいかもしれない。枝豆とかあったらそれも。

なんであれ極力生産者から直接買いたいのだが、 糖質制限をするとそれが難しくなる。 国産の肉を直販で買うことは不可能ではないが、値段が倍から3倍になる。 チーズもあるにはあるが、 ゴーダ4kgなんてものを売ってる国内の直販サイトは知らない。 うちの食生活はグローバル化一直線である。

まあ豚肉は辛うじて可能かもなあ。キロ2000円を許容すればいい。 質も良かろうし、一回試してみるか。 しかし問題は値段よりも利便性で、 スライス肉の便利さを捨てて、自力で塊をスライスせねばならない上に、 冷凍で来た場合解凍が面倒くさい。

解凍法は何が良いか。解凍温度は低いほど良い。つまり 冷蔵庫に放りこんで次の日、というのが一番いい。 ただし、時間がかかりすぎる。1kgのブロックとかだと一晩経っても解凍できない。 アルミバットにのせても、なにせ塊で分厚いので効果は劇的とは言えない。 パックされていて水が漏れないものであれば、 氷水につけて冷蔵庫に入れるのがいいのだろう。水の熱伝導性のおかげで いくらか速くなる。問題は場所を食うことだ。さまざまなサイズの密封可能 な四角いタッパーを用意しておくべきだろう。 普段は入れ子にしてしまっておければ場所を食わない。

鶏肉は結局脂が気持ち悪いので買わなくなっている。 あの気持ち悪さは何なんだろう。品質の問題なのか、 鶏である限り避けられないのか。

畜産用語でレンダリングって屑肉から脂を取り出すことを言うのな。 renderは何かをどうにかしてうれしい何かを取り出したり、うれしい何かにしたりする 抽象的な動詞で、白い紙や絵の具をどうにかして絵といううれしいものにしたり、 屑肉をどうにかしてうれしい脂を抜き出したり、 金持ちであることが人に影響力といううれしいものをもたらしたり、 みたいな意味で使われる。

原始根はp-1回掛けると1になる。 (p-1)/2回掛けると、-1になる。1でないもので2乗して1になるのは-1だけだ。 だから、(p-1)/2回掛けた所で-1、つまりp-1になっていなければ原始根ではない。 このことから、原始根であるかどうかを調べるのに必要なループ回数は半分になる。

x^2≡aと書けるaは原始根ではない。では一般にx^k≡aと書けるaは原始根ではない、 と言えるだろうか。言えない。11を法にして8は原始根で反例がある。 1...pまでの原始根を探す時には、2乗した時に出てきた数を候補から消すことで 半分にはなるのだが、それ以上に削る手が思い浮かばない。

Xorshiftが2回で日常的に使える適当乱数が作れたらいいなあと思ったが、ダメだ。 ビット単位で見ると長い時間同じ値でい続ける傾向がある。 どれか1つはビットが変わるので周期は長く、また線形合同法みたいに 平面に乗ったりもしないのだが、しかし隣合う値の相関が高すぎて話にならない。 8連続奇数とかになりやすい。3回ないとダメなんだなあこれ。 適当乱数としてはMWCが最強なのかやはり。

x = 65289*(x & 0xffff) + (x >> 16)がかなり素敵な乱数なわけだが、 計算が4つもある。しかもレイテンシが長くなりがちな掛け算が混ざっている。 多少質で劣ってもいいからもっと単純な計算の乱数はないか。

足す、引く、掛ける、割る、割って余り、and、or、xor、shift、not、 が今のCPUが普通に持っていてC/C++で書ける命令の全てだ。 しかしビットシャッフルやパック、アンパックなどのSIMD系命令も 選択肢に入れると いろんな乱数アルゴリズムが作れるんだろうな。

線形合同法は法を素数にしないとゴミ同然だ。危険すぎていかにコードが短くても 安んじて使えない。しかし、考えてみれば、線形合同法でも上半分は それほどひどくはないのだ。ということは上半分だけ使う線形合同法は 簡易乱数として良いのではないか。 また、乗数を16ビット定数にしておけば命令サイズの小さな即値乗算命令になりやすい。 16ビットでいい乗数があるといいなあ。ちょっと探させておくか。

x = 253*x; out = x>>16;が思いの他いいのだが。8ビットでいいじゃん。 周期が10億あるし、数万回しか呼ばないなら統計的にもたぶん問題ない。 intelだと8bit即値乗算命令になるせいか、滅法速い。 これ以上速い乱数は私には思いつけん。 加減算シフトxorを合わせて4回未満で乱数を構成できれば勝てるかもしれんが、 全然思い浮かばない。遅れフィボナッチみたいな奴か?とも思うが、 添字アクセス足したら超えるな。 そもそも中に配列持つアルゴリズムは好かん。

2013年07月23日

乱数は奥が深いが、ぶっちゃけどうでもいい分野である。 ただしそれは、乱数が重要でないということではない。 すでに十分使える手法が安く手に入るということだ。 MWC2系統の出力をXorShiftで加工して出来る2^62周期の 乱数は品質的に十分であり、速度や容量、使い勝手の面からも 申し分ない。 しかしそれはそれとして、乱数について考える経験は 多くの副産物をもたらしてくれる。 計算とは何かということ。テストの設計。マシンアーキテクチャ。 整数論の基礎。そしてリスク管理。 年単位で取り組む話題ではないが、 若いうちに多少の時間を割いて考えておくのは悪いことではない。 その「多少の時間」を極力小さくしつつも最大の効果を得られるように、 何らかの教材を用意しておくのは悪いことではないだろう。 malloc本が終わったら考えよう。

とりあえずmalloc本でも乱数は扱うが、 30ページかそこらで軽く扱って終わりにしよう。 XorShiftはページ数が少ないと天下りになりすぎるので、 MWCだろうな。除算を削る工夫は知的にも面白い。 2羃剰余の線形合同法は完全に無視すれば良かろう。そうすれば、 乗算のみのものだけで構成できる。 MWCの出力は16ビットで一向に差し支えない。乱択アルゴリズムの類には 精度はさして必要ないのだ。

さて、テトリス本の前書きを再検討せねば。あと校正が若干来てるから対応と。

PC帰ってこないなあ。

これ 読んで、すごくピクミンやりたくなった。 そして、こういう人が上にいて仕事するってどんなだろうと思った。

いかん逃避してる場合じゃない。前書きから考え直そう。 しかし、どう考え直すかの方針が定まらない。

「なんでオレに聞きに来ないんだろう」と思うことが多いが、この傲慢はいかんな。 だいたい私だったら聞きに行かないわけで。 本を書いて、それを通して伝えるのが一番速い。

いろいろと見て前書きをどうするか考えているわけだが、定まらない。 そもそも私は既存の本にケンカを売るために書いているのであって、 既存の本を読んで参考にするのはなかなか難しいのだ。 「おまえ、これでプログラミングの根本がわかるとか言うわけ?」 みたいな感想ばかりが出てくる。 「プログラミングの勉強は英語と同じ。真似してナンボですよ」 と言っている本に至っては、今ここで焼き捨てたい。 その側面があることは否定しないし、程度の問題ではあるが、 前書きでそうもはっきりと 「意味なんてわからんでいいからコピペして動くもの作ろうぜ」 と言われるとさすがに腹が立つ。 しかしこれが共感を呼んで売れたわけだし、 私自身よくわかっていないものをコピペに近い状態で売り物に組み込んだ ことは数知れずある。それが効果的であることはわからんでもないのだ。 それなら考える能力がなくても一応成果が出るし、 元々素質がある人間であれば、そこから始めてもいずれは 自分で考えて物を作るようになるだろう。否定する理由はない。

2013年07月22日

今後6年かけてうちらの税金から中核派に1億円とか渡すわけだ。 中核派が秘書と称して議員会館に入りびたるのだろう。 しかし、別に今回が初めてというわけでもないのではなかろうか。 左翼な政治家なんていくらでもいるわけで、 そういう人がテロ屋とつながっているケースだってあるだろう。 そもそも危険な友達を持っている人は左翼以外にもいるはずで、 そういうのが当選することはこれまでもあったはずだ。 今回の件でそういうことに関して皆の監視が強まれば、 ケガの功名と言えるかもしれない。 アベノミクスがうまく行けば、それは民主党の手柄と言えなくもないしな。 連中に政権を取られたからこそ、自民党はここまでハデなことをやっているわけだ。 まあうまく行くとは思っていないんだが。

投票率が低いのは、それだけ問題がないからだ。 少子化はともかく高齢化はこの国がそれだけいい国になった証拠である。 もう少し貧乏になれば自然にマシになるんじゃなかろうか。 そして、貧乏になることはおおよそ決まっている。 先進国で今より相対的な豊かさが増す国なんてまずないだろう。 世界には有限の資源がたくさんあるわけで、 全体の人口が減り始めるまではそれを奪い合うことになる。 うちらは貧乏に慣れるべきだ。

と言いつつも、最近贅沢の度合いが激しい。かなり良くない。 産まれてひつじこが動けるようになったら一旦綱紀粛正をはからねば。

最近準主食級になっている枝豆だが、かなり糖質が多い。 100gあたり4.3gだ。蛋白質11.5g、脂質6.1g。 ゆで大豆は、糖質2.7g、蛋白質16g、脂質9g。 あと枝豆の廃棄率は50%。400gで198円だと100g100円。 蛋白質コストで見ると、1gあたり9円近く、卵の倍以上になる。 やわいチーズとか加工肉並に贅沢品だ。まあ今は仕方ない。

「中国に立ち向かう日本、つき従う韓国」を読んだ。 ネトウヨ全開だが、まあ別にいいだろう。

韓国は結構な確率で中国側に行く。日本は ちょっと前まではデフォルトで左翼な感じだったのに、 今ではそうでもなくなっている。 しかも、アメリカに守ってもらおうと言える雰囲気でもなくなりつつある。 アメリカの相対的な強さが落ちてきているからだ。 そう考えると、自力で戦争できる状態にしておかないとマズいというのは 自然な考えではある。アメリカが嫌がらず、中国が攻めあぐね、 韓国にナメられない程度の軍事力及び外交姿勢が必要なんだろう。

戦前の日本の調子に乗りっぷりが再来するのではないかと恐れる人はいるし、 絶対にないとは言えない。 しかし、あれは原爆以前で、かつ植民地全盛の時代の話だ。 他の国の本土に十万単位の兵を送りこんで云々、 というようなマネはよほどのことがない限りできない。 ああなる危険は当時に比べうれば低いだろう。 短期的には国全体で一丸となって侵略をやらかせるような エネルギーがこの国にあるとも思えん。

尖閣は領土問題があることを認めてもいいんじゃね?と思ったこともあったが、 「領土問題がある場所なんだからドンパチしてもいいよね?」 と中国が言って攻めてくる可能性を考えていなかった。 そうだよな。紛争地域なんだから戦闘があっても不思議じゃない。 「第三者はすっこんでろ。これは俺達の戦いだ」 と言うことにはそれなりに説得力がある。 なにせ戦争は犯罪ではなく、仮に犯罪だったとしても誰も止められる人はいないのである。 実効支配する側は断じて無視すべきなわけだ。よくわかった。 国の行動を制限できる法なんて世界にはないのだ。 法で守られているのではなく、その法を都合良く思う強い国があるから 守られているだけなのである。なんだかんだ言って世界はまだ 戦国時代なのだろう。

いずれ経済統合が進んで世界中がもっと均一になればわからんが、 生きているうちにそうなる見込みはまずない。 資源制約を克服する道が見えないわけで、奪い合いは避けられないだろう。 太陽電池は多少は状況を改善してくれるかもしれないが、 30年かそこらで劇的な解決策になるとは思えない。

北朝鮮がアメリカ側について、韓国が中国に行く、というのもありうるのか。 おもしろい。

パワポが進まん。まずいな。

2013年07月19日

XorShift。13,17,5以外にも使えなくもないパラメータはある。 しかし、13,17,5には及ばない。 N個の箱にN個ボールを投げて、24%しか入ってないようなケースがあるのは どう考えてもマズいだろう。もっとも13,17,5ですら43%まで落ちるケースがある。 60-66%の範囲ならまあいいかと思えるが、ちょっと見るビット変えたり、 隣り合う呼び出しでビット混ぜて使ったりするだけでこうなるのだからたまらない。

というわけで、全パラメータをしらみつぶしに評価して 使えるものを探し出すプログラムを書いたが、 Xorshiftだと左右左に限ってすら31x31x31通りあり、 あまりにも時間がかかる。 並列化に逃げる前にすべきことがあるだろう。 1個づつフルのテストをかけていくのではなく、 全パターンにまず粗いテストをかけてふるい落とし、 また少し強いテストにかけてふるい落とし、 という方向にしないといつまで経っても全体像が見えないことになる。 そして本来ならその前に数学を使って等価なものをはじいておくべきなのだが、 それが難しい。AB=B^tA^tは回転行列なら言えるが、これ2を法とする謎空間だからな。 行列演算に関してどういう法則が成り立つかはいちいち考えて証明せんといかん。

乱数かランダムかどうかを確認する全てのテストを含むようなテストはないのか。 計算量は指数オーダーでもいいから。 その完全な方法からサンプリングで間引いたものを つかえばそれなりにいいテストになるんじゃないのか。

1ビットづつならべたとして、 「これまで出たビットから、これから出るあらゆるビットを 予測できない」ということが言えればいいんだよなたぶん。 次のビットが、過去の全てのビットと相関を持たないことが言えればいいと。 kビット後のビットと相関がないことを確認する、 みたいなのはそのサブセットなわけだ。

32ビットXorshiftの行列をTとする。 これを二乗するとT^2、さらに二乗するとT^4となる。 これを32回繰り返すとT^(2^32)が出来上がるが、もしT^(2^32-1)が単位行列に なるのであれば、T^(2^32)=Tになるはずである。 したがって、32回二乗してTに戻ってこない行列は、周期最大ではありえない。 このチェックを入れることで、XorShiftで使えるパラメータを見つける作業が 劇的に速くなる。64ビットなら64回二乗すればいい。 さて、逆は言えるか。T^(2^32)=Tならば、T^(2^32-1)=Iは言えるか。 これも言える。だがここに罠がある。T^k=Iとなるような最小のkが 2^32-1であるとは限らない点だ。だから、 このチェックは完全ではなく、周期が短い奴も残ってしまう。 面白いなあ。実装してみた。これがあれば長周期のXorshiftのパラメータも 生成できるわけだな。しかしビットが増えるほど組み合わせの数が 激しく増えるわけで、64ビットがせいぜいだろう。それ以上の周期いらんだろうし。

1,3,10の左右左XorShiftのクソさ加減は面白い。最大周期を持つくせに、 驚くほどランダムでない数列を生成する。 これはx=x+1で生成する数列が最大周期なのにまるでランダムでないのと良く似ている。 ビット演算でもそういうものが作れるんだな。 そしてこれは、M系列であってもランダムとは限らないということを意味している。 たまたま+1加算と同一になるようなM系列が出てこないとは限らんのではないのか? たぶんそこまでひどいものはないんだろうが。

結城氏と同じ土俵で戦う気はしないな...

XorShiftのパラメータ検索を、それなりな評価付きでも たぶん丸一日あれば終わりそうなくらいに高速化できた。 バイナリ行列演算で周期が短いのをはじく効果は絶大だ。 案外難しい理屈抜きでも実用になるところまで行けるなこのアルゴリズム。 今の速いコンピュータがあれば大抵のことはゴリ押しできるのだ。

MWCのパラメータ検索はもっと簡単で。 65535から1づつ小さくしながら統計チェックをするだけだ。 大半は周期が短いために、統計チェックで早々にはじかれる。 周期が短いものは小さな試行回数の検定であっさり消えるので速度的に負担にならない。 また、3万以下の下半分は周期が短くなる率が高く、ますます消えやすい。 たぶんそう残らない。MWCは16ビットしか吐けない上に周期もXorshiftに比べて 短くなるのが欠点だが、Xorshiftに比べると、 適当なパラメータでもそんなにひどい統計特性にならない印象がある。 もちろん選びに選んだ13,17,5みたいなのには勝てないのだが、 Xorshiftでいう1,3,10みたいにひどいものはまず出てこない。 そうすると、質に多少目をつむれば、かなりバリエーション豊かな パラメータを選べるわけで、それは多数の系列を安全に使えることを意味する。 その使い勝手の良さは他の手法にはない。 相関がない系列をたくさん使いたい!みたいな用途は多いのだ。 周期がべらぼうに長いものを用意して初期値を散らして使っても行けるが、 それをやると容量はかなり無駄になる。 最終的にはピクセルシェーダの各ピクセルで別の系列を走らせる くらいのことはしたいのであって、それならMWCは最高なのではないか。

2013年07月18日

校正対応を来てる範囲で片づけた。 一部本質的すぎて完全に対応できないネタもあるので、 これから悩む。

有理数計算ライブラリを作っておくと便利だな。 いろいろと使う。

今日の夜は乱数のまとめを作っておこう。

なんか全然関係ないものを作ってしまった。 だが、これ案外便利だ。あとで完成させておこう。 やっぱり、私プログラミング得意なんじゃないかなあ。 しかし上を見ると果てしない。 それに、各分野まんべんなく二流以下だ。 どこか一つでも世界の先端にいればかっこいいんだが、 まったくそういうことはない。 単一の分野で専門家になろうという気がさらさら起こらない。 そして、根本的に数学がダメなので、 ほとんどの分野では一流になれる見込みがない。

2013年07月17日

集団で何かを作る時に、目的、目標、期日みたいなものが 明らかでないというのはありえんし、 それを人に強いる役目の人間がいないというのもまたありえん。 しかし、現実にはそのありえん状況はありふれており、 それでも物ができることはある。 それに、いわゆるマネジメントをまともにやることが 最終的な利益につながることを証明するのは不可能だ。 売れない製品に優れた手法を導入しても説得力はないし、 製品が売れた原因が優れた開発手法にあるなんてことはまずありえない。

考えれば考えるほど、私は本を書いているのが最も貢献できる方法な 気がしてくる。他のことに手を出そうと考えることは多いが、 現実は諸々の状況がからみあった複雑な系で、 それをほどくところからやらねばどうにもならないことが多い。 あまりにも効率が悪すぎる。 歴史的経緯を断ち切るには権限と権威が必要だが、 それを私は持っていない。 消火よりは防火の方がコストは安いし、 長期で見れば教育以上に安いインフラ整備はない。 肉眼で見える風景は敢えて見ないようにした方がいい気がしてきた。

原発ゼロとか言ってる人には入れない。 そういう人を飼っている党にも入れない。 と、そう言ってしまいたいが。

X240sが出る。だが解像度がまともな奴は年末なので、 少なくともそれまでは買わない。 薄くなるらしいが、そうなると不安なのが頑丈さだ。 今まで薄くしなかった理由があったわけだろう? そして、バッテリーを交換できなくなる。 予備が必要ないくらい電池がもつならいいんだが。

駆動時間、公称9時間で実3.5時間、とか詐欺すぎるな... 輝度最大かつCPU/GPUを全コア最大出力で測定してほしい。 あと無線も。それで何時間もつんだろう。

つうか、そういうベンチマーク作ろうかな。 電池の残存量を取るAPIってwindowsにあるんだろか。 でもまあ、1分ごとにファイルに時刻を書き出していれば、 電池がなくなって強制終了されるまでの時間はわかる。 それでいい気がする。

風邪が来たか。ひつじことオタマのが3日ほど遅れて来たようだ。 用心は不可能だから覚悟はしていたが。 にしても、吐き気とは厄介だ。

ふとしたきっかけで2003年あたりの仕事メールを眺めていた。 仕事してるなあ私。つうかゲーム作ってるなあ。 そして、開発の仕方が頭おかしい。 なんでそんなことがメールで来てるんだよ!データに入れとけよ!的な。 しかし今にして思えば、 今風で「まとも」な開発のやり方ではあのゲームを作れる気がしない。 たぶんあれで良かったのだ。

どれくらい頭おかしい開発か。デモシーンの類を例にすれば、 アーティストはデモシーンを3Dツール上で作って、 必要とあればムービーを作り、 それに使ったモデルと一緒にプログラマに渡し、 「いい感じによろしく」で終わりである。 3Dツールから何かを吐き出して、それを再生する、 なんてフローではない。 全てハードコーディングだ。caseが時刻な長大なswitch文が そこら中にあるのが普通である。 当時新人だった私はそれが嫌で嫌で仕方がなかったので、 Softimageのエクスポータを書いて、 シーンをそのまま吐き出し、それを再生できるようにした。 とはいえ、ゲームモデルをさしこむとか、 特定のアニメーションをさせるとか、台詞ウィンドウに台詞を出すとか、 効果音を出す、みたいなことは当時の状況では どうにもならなかったので、自分で補助データファイルのフォーマットを 決めてそれを手書きし、それを合わせて再生エンジンに 食わせるという手法を取った。 だいぶマシにはなったが、デモごとに発生する作業は それなりに残っており、当然ちゃんと動くかを チェックせねばならない。 だが、それが良かったのだろう。 再生エンジンだけ作ってあとはデータドリブン、 みたいな作りであれば、私はゲームの中身に 触れないままになっただろう。 いろんな人とやりとりをし、ゲームのいろんな場所をいじれたのは、 開発の仕方が、今の基準で言えば「頭おかしい」ものだったからである。 「この部品はx2.4y-13z1.37に出しといて」とメールで言われるような フローだからこそ、視野が狭くならずに済んだのだ。

原始的な作業フローが100%悪ではないことに気づいたのは 2008年くらいだろうか。それまでは自動化、専門化、カプセル化、 局地化に邁進していて気づけなかった。 効率化が全体としての品質に負の影響を与える可能性は否定できない。極端な話、 コンパイル時間が長い方がゲームが面白くなる、 ということすらありうるのである。それも容易にそういう状況が想像できる。 日本のゲームの黄金期は 非効率で原始的で頭のおかしい開発体制によって産み出されていたのであって、 それを考えなしに捨て去ることが善とは限らない。 それが世界に遅れを取った大きな原因と言われてはいるが、 これからもそうかはわからない。 娯楽は最終的には作り出す人間の質で決まる。 技術や作業工程に左右される部分が大きいうちは、まだ過渡期なのだ。 優秀な作業員や効率のいい工場があっても、 面白い物を思いつき、作りこめる人間がいなくては話にならん。

unityはそのうち触らざるを得なくなる気がする。 unityから逃げて部署を移ったはずなのだが、やはり逃げられんか。 まあいい機会だな。たぶん勉強になるだろう。

鈴木氏のtwitter見てると、かなり応援したくなってくるな。 民主党だしなあと思っていたが、明らかに受かりそうな人に 入れて死に票になるよりは、4位5位あたりに変な人が入ってこないように そのあたりで戦う人に入れる方が有意義な気もしてきた。 まあもう少し考えよう。

2013年07月16日

メガネのつるが片方折れてから数ヶ月経つ。 セロテープで固定したまま生活しているが、 今日やっぱり買った方がいいかもしれないと思った。 セロテープでは完全には直せないために傾いていて、 目がそれに順応していたのである。 今できるだけ水平になるように直したら、 目が慣れなくて気持ち悪い。 これは体に悪いかもしれんなあ。 前回メガネを作る時に金をケチって 形状記憶合金を選ばなかったのが失敗だ。

しかし、今回はレンズの扱いにはかなり気をつけていたため、 レンズは無傷である。買い直すのは惜しい。 レンズを使い回せればいいのだが、 メガネ屋という奴はそういうわけには行かない。 セット販売ばかりだからだ。

目が悪いというのはなんとも金がかかる。 オタマも目が悪くならずに済むならその方がいいな。 もちろん、そのためにコンピュータや本を遠ざける気はさらさらないので、 単なる願望だが。近視は病気というよりは適応なので、 近くを多く見る生活をしていれば防ぎようがないのである。 ド田舎にでも引っこさない限りどうにもならない。 それに、オタマがデカくなる頃にはオルソケラトロジーが利便性やコスト込みで 実用段階になっているかもしれん。 そうすれば近視の害は今ほどではなくなる。

釜池という人が糖質ゼロを提唱している。 江部という人は糖質制限を提唱している。 二人は仲がいいのだろうと思ってしまうが、まったく逆だ。 中途半端に近い方が違いが気になるということだろう。 遠くから見ればポチでもタロでも犬は犬だが、 犬を飼っている人からすればビーグルかポメラニアンかは 大問題なのである。 左翼が内部分裂するのと同じ仕組みだろう。

釜池氏は、糖質が少しでもあるとインスリンが出て何もかもが台無しになる という主張。江部氏は、多いよりは少ない方がマシだし、 それで改善するのだからそれで良くね?という主張。 結局、糖質量と改善効果のグラフを書いた上で、 価値判断をするしかない。 どれくらいで「台無し」あるいは「マシ」 とみなすのかはデータと価値判断の両方に依存する。

ただ、釜池氏の糖質ゼロ理論には、素人目にも問題がある。 なにしろ、ゼロと言ってもゼロではないからだ。 肉を食ってすらグリコーゲンは入っているし、 野菜を食えば当然糖質は入っている。 放射線と同じで、糖質量にゼロはありえない。 これまた放射線と同じで、 どんなに少なくても害があると見るべきか、 一定以上少なければ害はないと見るべきかで意見がわかれる。 さらに前者であっても、害はあっても無視できる、 と見るか、どこまでもがんばって害を除かねばならないと見るかで意見が分かれる。 最後の考えはいわゆる「放射脳」としてバカにされているのと同じ構図であり、 到底賛同できない。何事にもトレードオフはある。

インスリンが出る量は、糖質量にある程度は比例する。 そうでなければ、江部氏の治療が効果を上げるはずはない。 うちらの体感としても、減らすだけでそれなりに効果はある。 つまり、事実として、糖質が減ればインスリンは減る。 だから、「わずかでも食えば完全に台無し」ということはない。どう考えてもない。 ただし、江部氏が「まあいいだろ」と思うようなインスリン量でも 釜池氏が「出すぎだ」と思うのであれば、それはそれだ。 これは単にどれくらいインスリンが出たらダメとみなすかの違いでしかない。 釜池氏の糖質ゼロという呼称は、わかりやすいが、厳密な意味では正しくないし、 きちんと理屈を理解したい人にとっては障害になる。 一方、江部氏の方も問題がないわけではない。 経験上こうだった、でしかなく、理屈が弱いのだ。 GI値とか関係あんの?とか、豆腐が良くてきなこがダメなのはおかしくね? とか、ツッコミ所も多い。 そのへんで、理屈がしっかりしている夏井氏はいいなあと思うわけだが、 夏井氏はその道の医者ではないので、 自力で実験データを集められる状況にはない。 メールが続々と集まってはいるものの、実験としての厳密さには甚だ欠ける。 データを一番蓄積しているのは江部氏であり、 その意味では夏井氏と江部氏は補完関係にあるわけだ。

オタマ、二番目に近い幼稚園が今日で終わり。 先生はすごくいいんだけどな。熟練してて。ハンコ的な教育臭さは拭えないが。

ヒマになったらWiiUで動くゲーム何か作ろうかなあ。 多少はハードの性能を活かせると楽しいのだが、さてどうかな。 つうか、どこで配布してるんだろ。見つからん。 検索しても出てこないし、まだなのか。

ヒマになったらやりたいことがいくらでもある。 そんな日はきっと来ない。ピクミンをやる、という程度のことですら、 一年以内に来る気がしない。一時の激情にまかせてwebで クリックすれば済む話なんだけどな。

つうか、数万vs数万の戦争シミュレーションを作りたいと言い続けて もう何年経ってるんだよ...アルゴリズム的な算段はついてるんだ。 あの時よりCPUも速くなっているわけで、障害は減っている。 まあ速くなった分だけ数を増やすんだけどな。 一面はカンナエにしたい。もちろんプレイヤーは負ける方な。

自民党候補の「総決起集会」というネーミングセンスが、 ギャグなのかマジなのかがわからない。 どっちであっても嫌だ。そんなくだらんことで 入れる入れないを決めちゃダメだろうとは思いつつも、正直辛い。 まあでも「各種団体」の会だからな...そういう「団体」の人達が そういうノリだからそれに合わせてるだけのことなんだろう。 そういう団体の人は敵に回すと面倒なわけで、 それを取り込んでいることはプラスだ。20年待てば 死に絶えるとは言え、それを待っているわけにも行かないのである。

しがらみがないことをウリにしている政党もあるが、 しがらみがないということは支持もないということである。 勇ましいことを言っても敵ばかり作って実行できないとなれば、 何の意味もない。そういう野党が一定数いるのは健全でいいとは思うが、 そういう人達に私が入れるべきかと言われると難しい。

2013年07月15日

ひつじことオタマが風邪なので、家にいた。 牛乳を入れてやる程度のことでもひつじこにはしんどい。

それにしても暑い。エアコンが喉に良くないので、 今日は自然の温度で過ごした。ほぼ32度。 休まらんなあ。 しかしこんなにエアコンを使わないといけない状態は良くないわけで、 世界がもっと省エネになることを祈ろう。 エネルギー消費の内訳ってどうなってるんだろうな。 消費エネルギーが今の半分とかになる可能性はあるんだろうか。 できれば人口減少と生活水準の低下以外の方法を希望。

民主党の鈴木寛氏。殴られたことで急激に株が上がっている。 これ仕込みだったらかっけえなあ。 それくらいやってくれた方が政治家としては頼もしい。 もちろんそうでないならそれでいいんだが。 調べたらこの人を落選させようといろいろがんばっている おかしな人が出てきたりして、 ますます応援したくなる。でも民主党。 選挙は人間で選ぶべきなので、 それはあまり気にすべきことではないとは思うのだが、 だからといって共産党や公明党は論外なわけである。 民主党に関しては論外とまでは言えないのが難しい。 上の方は論外だが、中堅クラスにはまともな人がいくらでもいるだろう。

離婚か。他人事なわけだが、それなりに近くで起こるといろいろ考える。 まあ他人事なわけだが。

法律から結婚という概念が消えてなくなる状態を見てみたいと思うが、 それが皆にとっていいかどうかは知らない。 しかし、傾向としてそちらに近づくことは止められまい。 いろんな結婚が認められるようになれば、 つまりそれは結婚というものが薄まることを意味する。 十分に拡散したところで、「この制度何か意味あんの?」 となって消えることになるだろう。 まあ条文はいつまでも残るんだろうが、それだけのことだ。 夫婦別姓を嫌う人達は、それが堤防に穴が空く第一歩に思えるから 反対しているのだろうが、そこでふんばればふんばるほど、 「法的な結婚なんてしなきゃいいじゃん」という当たり前の選択肢が 重みを増すのである。 できるだけ長生きしてそのへんがどうなるかを観察したいものだが。 なにせ他人事だし。

私、どう考えても左翼だよなあ。少なくともリベラル。 だいたい私が好きな経済学者はフリードマンだぞ。そりゃ左だろ普通に考えて。 だが、現実問題、左翼は嫌いだ。右翼もたいがいだが、 「オレの国最高!」とか「他の国略奪したい!」 とか言うのは人間として自然な感情なので 気持ち悪さは感じない。愚かだとは思うが、少なくとも変ではない。 だが左翼は気持ち悪いのだ。 フリードマンラブな左翼は日本にはいないのか。

普通に考えて、殴られたら殴り返すし、殴られそうになったら その前に殴るか逃げるかする。 そのへんを抑制してお互いうまくやろうとするのは賢いが、 それはそれとして、根本的なところでは、 「殺られる前に殺れ」が原則である。 結局のところ、人類は生物なのであって、 生物としての制約からそう外れることはできない。 そこから外れた行動を強いるような枠組みはうまくいかないし、 長続きしない。あんまり綺麗なことを言う人は信用できん。 言ってる本人の行動に関係なくだ。 綺麗なことを言って行動が汚い人は、信用できない。 綺麗なことを言って本当に行動が綺麗な人は、 たぶん汚い心を持つ人間を理解しないので危険すぎる。 人間の欲望について考える枠組みとしては、 私が知る限り経済学以上のものはない。 だから、私は基本的には経済学の枠組みで考えるようにしている。 古典的な経済学は動物としての人間に目を背けすぎているので 注意は必要だが、それでも価値判断丸出しの右翼や左翼に比べれば よほどマシだ。

不幸の分配が政治なのだとすれば、 私はできるだけ薄く広く不幸を負担する社会を支持したい。 自衛隊の人に死ぬ危険を押しつけたり、 若い人に就職できない苦労を押しつけたり、 女性に自己実現できない状況を押しつけたり、 そういうのは嫌だ。 しかし、それを是正することを約束するような人には投票しない。 たぶんそういう人は嘘吐きか危険人物だ。 どんなことであれ今こうなっているのには経緯と理由があるのであって、 ドラッカーみたいに「今から始めるとしてもこのやり方にするか?」 なんて問い方はできないのである。 たぶん、そういう不平等は、何か他のことをいじった副作用が 積もり積もって、気がついたら改善していた、 となるのが理想だと私は思う。 というか、それ以外の形が見えない。 どんな問題でも、その問題を直接どうにかしようとすると ロクなことにならない。

会社の中でもそうだ。隣のチームとすら情報交換をしない状況は良くない、 とか言ってみたところで、それには当然理由があるのである。 変な会議を増やしてみたところで、一瞬で形骸化して時間だけが 無駄になるだろう。 情報交換をしないことが合理的であるような理由がある、 という前提で考えないと直しようがないし、 そもそも直すべきかどうかもわからない。

そこかしこでライブラリ作ってて無駄だ、とかいう話も同じで、 トップダウンで一箇所に集めるなんてマネをすれば どんな副作用が出るか知れたものではない。 ライブラリをいろんな場所で作っているということは、 いろんなところにライブラリを作れる人材がいて、 そういうスキルがいろんなところで育つということでもある。 また、クソなものが会社全体に普及してひどいことになったり、 一箇所に負荷が集中してそこがボトルネックになったり、 どの製品にもいまいちマッチしていない最大公約数的なものになって 皆が不満を感じたり、といった危険も避けられる。 もし一箇所に集めて効率化したり高度化したりするというならば、 そのあたりの問題に対処する手を同時に打たねばならない。 また、やり方を変えることはどんなことであっても抵抗を招くのだから、 その抵抗を弱めるための根回しや工夫も必要だ。 人類は猿の一種であり、猿は命令に対しては服従よりも欺瞞を 選ぶ生き物である。面従腹背となる危険は高いし、 そこまで言わなくとも、やる気が失せればそれだけでダメージとなる。 組織や制度をいじる時には、そういうことを丸ごとケアするだけの 周到さが必要だ。むろん、周到にやっていては間に合わないケースもあり、 多少の副作用があってもやらねばならないことはある。 しかし、その場合も短い周期でどういう副作用が出ているかを 探る準備くらいはしてからやらないといけない。 目論見通りの効果が出ないならば即座に修正を入れないと 取り返しがつかなくなる。

間接部門の人間はそのへんが見えなくなりやすい。 実際見えてない雰囲気をしょっちゅう感じる。 「オレの考えた理想の組織、制度」みたいなのを語りがちだ。 しかし一方で、現場の人間は視野が狭くなりがちであり、 仮に有益な改善であっても容易には受け入れない。 これは私がそうだからよくわかる。 これを解決するのは間接部門と現場のコミュニケーションなわけだが、 そもそも現場には間接部門とコミュニケーションを取る動機が なかったりする。「現場を知らん奴等が何か言ってるぞ」 で終わりになる。 そこで間接部門と現場のどちらが歩み寄るべきかと言えば、 間違いなく間接部門だ。間接部門は現場に必要とされない限り存続できない。 現場は間接部門に歩み寄る必要もなく存続できる。 どちらの立場が弱いかは自明だ。

精神的な意味での歩み寄りも重要だと思うんだよな。 間接部門に現場叩き上げの人間が何人もいるのが理想だが、 そうも行かないこともあるだろうし、 そういう人も何年か経てば「間接部門の人」というイメージになってしまう。 人間の入れ替えが頻繁にあればいいが、 適性の問題もあるし、そもそも入れ換える動機がない。 せめて、 間接部門の人間がゲームジャムに参加して一緒にゲーム作るとかいう くらいのことはあっていいんだろうな。つまり私も参加しろってことだ。 間接部門が現場の人間以上に現場を知っていると思われるくらいでなくては、 結局信頼されない。

互いの長所を利用しあえれば良く、信頼とかじゃなく理性の問題だ、 と思う人もいるようだが、自分が持ってないスキルというのは、 つまるところ重要だと思っていないから持っていないのである。 例えば私がjenkinsの使い方を知らんのは、自分で勉強するだけの価値を 認めていないからである。なんぼ飾ってみたところで、 結局はそういうことだ。 現場の人間にとって開発環境だのライブラリだのは重要ではない。 そんなことよりゲームの中身だ。 重要でないことを供給してくれる人は、やはり重要ではないし、尊敬もできない。 これは感情の問題で、そう簡単には解決しない。 それを解決するのは、長期にわたる努力によって 積み上がった信頼だけだ。

つまり、制度とか会議とかでどうにかなる問題じゃねえよそれは。 とにかく目の前の問題をつぶすんだ。それも高速に。 ただし、見える範囲でできるだけ多くの解像度での解決策を提供できるように 努力することを忘れない。 時間的には短期から長期まで、 空間的には個人からチーム、部署、として会社全体まで。 それができるのは間接部門の利点であり、 それをやらない間接部門には存在価値がない。

本と書いて穀潰し真っ最中な私がそんなことを考えるのは、 なかなかに馬鹿げているな。本は時間的にも空間的にも一番広範囲に 薄く効果を及ぼす策であり、即効性は低いはずである。 しかし、案外即効性も高いのではないかという思いはある。 空間的には薄く広くなるが、 時間的には案外短期でも効果が出るのではなかろうか。 結局本という形で一旦外を経由してきた情報の方が、 受け入れやすいのである。 その効果を増すためにも、どうにかアマゾンなり何なりで 絶賛レビューが大量について、 万単位で売れてほしいものだ。無茶な望みだが。

8章大改造。それだけで朝になった。帰って寝よう。

ThinkpadX240の噂を聞いた。キーボードライトつかないとか、 バッテリー交換できないとか、解像度が上がってないとか、 ロクでもない話ばかりなのだが、本当か。もし本当なら x201sの保証が切れて壊れるまで使い続けるしかないなあ。 バッテリーは9セルのを買って。 そうなると、明らかに挙動がおかしいSSDを もう一度買い換えてwin8のインストールをやり直さねばならん。 東芝のやつがいいんだろうか。 あるいは、そろそろトラックポイントをあきらめる時がきたということか。

そういえば、X201sは電源がなかなか入らなくなったので修理依頼した。 明日取りに来てくれる。 3万の機械を次から次へと買い換える方が安いのは承知だが、 それをやると手間がかかるからな。

2013年07月14日

オタマが風邪ひいた。幼稚園でもらってきたところで、 昨日の無茶で悪化したと見るのが妥当だろう。 やっぱりイルカどころじゃないよなあ。 そして面倒なことにひつじこにもうつっている。 本当幼稚園は面倒くさい。 もっと体が頑丈になるまで幼稚園なんて入れたくないんだけどな。 社会性がどうとか、そんなのもうちょっと日本語が まともに使えるようになってからでいいだろ。

でもまあ、ひつじこがしんどいよな。家にいたら。 一日に4時間でも母親が解放されるというのは重要なことだろう。 まして、予定通りに進むならば、 うちは子供が3人になるのである。

3人目間に合うかな。とりあえず精巣静脈瘤の手術はしておくか。 本が片づいたらな。

8章、どうしたものかなこれ。 ひつじこに口で説明したらあっさり理解したので、 このままでもどうにかならね?とか思うが、 ひつじこは結構賢いからな。 実際思い出してみれば学生にここを教えるのは 毎度大変なのである。 「今初めて押されたならば」という分岐を書くには、 「押された状態でここを実行するのが初めてならば」と問題を変換し、 さらに、「前回実行時は押されておらず、今回は押されているならば」 と変換しなくてはならない。この変換がすでにして困難だし、 「前回は押されていなかった」をどう覚えておけばいいのかが、 どうにも理解できないケースがある。 今日の天気は晴でした、と紙に書いておいて、 明日それを見ればそれは、「昨日の天気は晴だった」 ということになる。しかしこの変数名に「昨日の天気」 とつけてしまうと、「昨日の天気」に今の天気を 書きこむことになり頭が混乱してしまうのである。

いや、本当「それくらいわかれよ」なのだが、 そうも行かん。実際できないからな。 これを「いやそんなの当たり前だろ」と思えるようにするための 比喩が何かしら必要なのだが、 編集さんからは「比喩がかえってわかりにくい」と言われる始末である。 ここで引っかかる人が何で引っかかるのかは 未だに良くわからんのだ。

とりあえず、まずは変数名をつけちゃダメだ。 そして、さらには、毎日天気を記録してる、 という所から話を始めればいいんだろう。 昨日の天気が晴なら、はすぐわかる。 それで、「紙がもったいないので、何日か経ったら 使い回してる」と話をもっていき、 「つうか、一日前しか見ないんだから1枚でいいじゃん」 となって終わる。

いや、そこまでするのはやりすぎだろ...本当どうしたものかなこれ。 とりあえず、新しい説明を別に書いて比べてみよう。 前のは見ないで別に書いてみる。

それにしても眠い。体調悪いというか、疲労がエグいんだよな。 今日はひつじこが動けなかったので、 二回もキッズルームだ。 あそこに行くと何かと他の家の子にも遊びに誘われるので、 休めないのである。つうか、他の家のとーちゃんもちゃんと遊べよ。

他の家の父親の大半は、本当家事とか育児とかしてないんだろうな。 ひつじこのママ友の話聞いても、「あれはうちの長男」 とか言われる始末で、共同経営者的な扱いをされてない。

家にいる間は極力休むつもりだったが、 なんか網戸洗えとか言われて洗ったりしてたしなあ。 ひつじこは真面目すぎる。部屋汚れてても 気にせず過ごせる強靭な精神を期待したいところだが、 まあ無理か。ひつじこが自分で掃除するのは最悪なので、 それを阻止しようと思えば私がやるほかない。 「そんなのいいじゃん」と言っても、 私がやらなければひつじこが我慢できなくて動こうとする。 まったく勘弁してほしいが、仕方ない。それがひつじこなのだし。

台所にフルサイズのGがいた。あと、風呂場で一匹ひっくり返って死んでいた。 見なかったことにしよう。掃除する余裕なんてない。 産まれてひつじこが動けるようになるまでの時間 どれだけいろいろなことに手を抜けるかが問題だ。 とにかく余裕がない。

オタマは家の外ならトイレに行く。今日はちゃんとトイレでおしっこをした。 まあ、ちゃんとでもないけどな。 おしっこが上に飛んでひどいことになるので、私が手をかざしてガード している状態だ。私の手はおしっこまみれである。 下向けろよ!と思うが、どうも角度はままならんらしい。 男はノズルを下に向けるだけで済むが、女はそうは行かない。 前傾してほしいが、たぶんそうしたらしたで内股がおしっこまみれになるのだろう。 それもまたげんなりだ。 昔は和式だったのであまりそういうことはなかったらしいが、 今はもう和式なんて学校くらいしか残ってないからなあ。

前に手をついてやるように言う、というのを今度試してみよう。 yahoo知恵袋で見つけた。あとは紙をふんどしのように股に垂らすという 手もあるらしい。これも試すか。

つうか、なぜ家ではトイレに行かない? おむつでないとおしっこをしない。 たぶんおむつが問題なのではなく、場所が問題なのだろう。 カーテンの裏がトイレらしく、 そこ以外でおしっこをしたら負けだと思っているようだ。 まあ仕方ない。家の外でトイレ経験を積ませ、 「あれ?家でもこれで良くね?」と自然に思う日が来るのを待とう。 余力があればもうパンツにしておくんだが、 なにせ余力がないからな。オタマがらみの問題については保留。

トイレ問題。食べない問題。幼稚園問題。 皮膚問題も完全になくなったわけではないが、 これは「傷ついたら貼る」と単純にルール化できるのでそれほど問題ではない。 トイレ問題はおむつでいいやと割り切れば問題ではない。 もっとも幼稚園側からは「そろそろパンツにさせてください」 なんて言われてるんだが、とりあえず無視。 食べない問題も、生物なんだから飢えれば食うだろ。 うちには満腹感だけ満たして栄養がない類の食い物はないから、 なんであれ食べれば良し。レーズンバターのようなものであっても、 そのへんの子が食ってる炭水化物の固まりみたいな菓子よりはマシだ。 あとは幼稚園だが、候補はもう一つしか残ってない。 二番目はもう切った。近いところはまだ残ってはいるが、行かせる気がない。 遠いところだけだ。ここに慣れられなければ、 もう行かないでいいだろ。

参院選候補を適当にフォローしていたら、 一人からフォローし返された。いや、やめてくれよ。 選挙出るような人は一般人じゃないんだから、 一般人を脅かすようなことはしないでくれ。

フォローされてる数が多い人は、武器を持っていると言える。 リツイートは武器になる。単におもろいだけの発言以外は リツイートしないようにしないとな。

でそのフォローし返してきた人は、ネットで積極的に考えを発信していて、 だいぶ好感が持てる。とくにすごいのは、誰かから何かを聞かれた時に、 twitter上で迅速にレスしていう点だ。 下手な返し方をすれば致命傷になる状況で、 よくこれだけきちんとレスを返すものだ。危ない橋渡りすぎだろ。 毎度心配してしまう。 それにしても、本当維新はいらんこと言わんで単一政策政党だったら良かったのに。

ひつじこは量を食うと胎児に胃が圧迫されているのですぐに気持ち悪くなる。 なので栄養密度の高い肉やナッツを食わせたいわけだが、 何故かレタスやきゅうりやトマトを食べたがり、 それですぐにおなかいっぱいになって動けなくなる。 妊婦というのはそういう生き物なのだろう。

実際問題、野菜っているの? 人類の本来の主食が骨髄だったとすれば、 筋肉を食べていては足りない栄養素がそれなりにある。 これを野菜からとるとしたら何を食うべきか、ということなわけだな。 頻繁にレバーでも食べてればいいんだろうが、それも難しい。 まともな鮮度のレバーなんてまず手に入らないからだ。

2013年07月13日

オタマが水族館に行きたいと言う。 この暑さだし10中8、9糀谷駅まで辿りつけんだろうと思ったが、 半泣きになりながらも駅まで着いた。 そうなると大森海岸駅まで行くしかない。 だが本番はその後だ。そこから品川水族館まで徒歩8分ある。 案の定「無理ー無理ー」と泣き叫びながらだったが、 ともかくも辿りつけた。出る前に「絶対にだっこしない」 と言ったので、それを覆すわけにも行かない。

ギリギリ目当てのイルカショーも見られ、 一応の目的は果たした。ペンギンとアザラシも見られた。 しかしそれ以外の魚類には興味がなく、 しかも水族館のあの暗い感じを嫌がって早々に帰ることになった。 11時過ぎで、相当に暑い時間である。 帰りは明確な目標もないし、疲労も溜まっている。 行き以上の困難が予想され、実際にそうなった。

大森海岸駅まで20分はかかっている。途中座りこんで動かなくなることが 数回あった。指を口に入れて体を震わせながらギャーギャーと泣く。 だが、だっこはしない。つうか、18kgとか無理。 水分補給と、本当に歩けない限界まで疲れてるかどうかを見るのは かなり気を使ったが、それ以外は非情にならざるを得ない。

しかし実際のところ、駅まで辿りついて日陰に入ってしまえば、 ケロリとしたものである。肉体的な疲労は大したこともないのだ。 ただ、暑いなか歩くのが嫌なのである。根本的に暑いのに慣れていないのもある。 皮膚がかぶれないことを最優先したので、 冷房は無制限に使っており、暑いのを我慢するということがないのだ。 すっかり外で遊ばなくなって久しい。外出と言っても、 萩中集会所のキッズルームである。 そんななのにそこそこ歩かないと行けない場所に行こうというのだから無茶だ。

そして最後の苦行である、糀谷から家まで。 しかしこれはそれほどしんどくなかった。 オタマは完全にだっこをあきらめており、ほとんど無言。 幽鬼のように歩く。歩く。時間は凄まじくかかったが、それでもついた。

疲れた。夏に外出するということの意味を学べ。 せめてあと3年経てば体力的にも問題なくこれくらいのことはできるだろうが、 3歳ちょいでこの距離をこの季節に歩くというのはなかなかあるまい。 人類のスペック上は難なくできるはずだが、 なにせ堕落した現代日本人だからな。

でも、帰ってきて水風呂に入ったら元気になった。 20時就寝。昼寝なし。こいつ、体力はあるんだな。 ただ、暑いのが嫌いなだけで。

歩いた距離は片道1300m程度だが、駅の中やら水族館の中やらが地味に長い。 とりわけ蒲田駅に北からの各駅停車で着くと、 空港行きに乗り換えるのに歩く距離がエグいことになる。 3kmは確実に歩いている。しかも一番暑い時間にだ。 若干曇りだったのが幸いしたんだろう。 いや、ある意味では災いか。晴れていれば糀谷駅まで行けなかっただろうからな。

昨日、というか今日の朝だが、7章までやった。 8章は図が足りない印象があるので面倒だな。

8章がわかりにくいらしい。 修正案をいろいろ出して頂いているが、 こういう時には表現をちらほら直すよりは、 全体を別の説明にすげかえる方がうまく行く。

とりあえず、垂直同期時に入力取得も一緒にやる仕様は 改めた。入力は多少遅くなっても気にせずに、 要求があった時に最新のデータを返す。 毎度クリティカルセクションに入るので遅いが、 たぶん大丈夫だろ。 Sunabaは初心者に特化すべきで、 ちょっと上達してきた後に問題になりそうな事なんて いくらあってもいい。

2013年07月12日

4章まで校正対応。今日中に7章くらいまで行きたいが、 なんだろうこの疲労感は。

n個の箱にn個のボールを投げこんだ時の、ボールが入っている箱の 平均個数を計算する方法。 それぞれの箱にボールが入る確率は、 1/nで、入らない確率は(1-1/n)。これをn乗すれば、 n回投げても入らない確率がわかる。 ((n-1)/n)^nとして、この逆数を作ると、 (n/(n-1))^n=((n-1+1)/(n-1))^n=(n-1+1/(n-1))^(n-1)+1→e。 なので元のものはeに収束する。 要するに、箱一つを見れば、1/eの確率でボールが入らない。 で、独立に箱がN個あるので、N/e個くらいの箱にボールが入らない。 でいいんだよな?期待値0.5のものが10個あったら全体の期待値5で いいんだよね? かなり確率計算が怪しい。

2個の場合、(1-1/2)^2=0.25。箱に入らない確率は25%。 入る確率は0.75。 3個の場合、(1-1/3)^3=8/27。入る確率は19/27。 10個の場合、(1-1/10)^10。入る確率は0.651。 あーこれで合ってる気がする。

なお、2N個投げると1/e^2になる。何回投げればだいたい全部入るか? という問いに対しては、N/e^k=Δとなるkを求めれば、 kN回くらいだろう、と言える。40億個箱があるような場合、 Δを0.01とかにするとkは相当えらいことになる。 e^k=N/Δで対数取ると、k=log(N/Δ)。4000億のlogは29とかなので、 29倍くらい投げるとおおよそ全部入るだろうと言えると。 つまり、N個の箱にランダムに投げ入れて全部埋める時の平均試行回数 はオーダーとしてはNlogNなわけな。

ピクミン明日か...それどころじゃないなあ。 とりあえずテトリス本を出さねば。そしてmalloc本を8月中に書き終えると。 その次はCG本だろうなあ。 だが、乱数ネタをふくらませた何かを出しておきたい気もする。 そして物理シミュレーションもいずれはやりたい。

6章まで校正対応。「モニタの垂直同期待ちをどう説明するか」 がずっと懸案だったが、新しいストーリーを思いついたので ごっそり直した。こっちの方がマシだし、 実情にも近い気がするんだが、どうだろうなあ。 編集のレス待ち。場合によっては戻す。

どうにか週末で最後まで行きたいが、無理だろうなあ。 土曜はそれなりに用事があり、消耗が激しい。 朝はなんか掃除してくれとか言ってたし、 豚すね肉の煮込みも作らないといけない。 昼の外出ギリギリまではオタマを遊ばせねばならん。 そして外出。帰りに買い物。きつい。 大抵土曜の夜は仕事にならない。

カツオの刺身がまずかったか...オタマ刺身は結構食うから つい食わせてしまったのだが、夜中に起きて吐きそうになってた。

100万個とかあるファイルを送るならzipすべきだよなやっぱり... つうか、ファイル100万個とか一体どうやって作ったんだよこれ。 さすがに自動で作られてるんだろうけどなあ。

政見放送はひどいな。そして、結局前から政治家をやってる人間の 安定感が際立っている。この政治家くささが若干嫌だったりはするのだが、 他と比べると選択肢がない。

みんなの党は原発とか言い出さなければいいのにと思う。 維新は国防とか言い出さなければいいのにと思う。 どうせどっちも与党第一党にはならないわけで、 単一政策政党でいいじゃん。それなら入れる気にもなる。

私はかなり市場原理主義気味なので、その二つの政党の基本理念は 嫌いじゃない。しかし、自民党が昔ほど農村政党でなくなっている 現状もあるし、それらの政党の「人間力」みたいなものが 信用できないのもあって、正直入れにくい。

混合診療を認めるなら、医療のしくみをごっそり変えないと無理なんじゃないのか。 つうか今でも金ある人なら好き放題できるわけで、それで良くね? とにかく、この国には金がないんだぞ? 金がない人でも昭和になかった医療を受けられるのが当たり前、 というのはおかしくないか。 もちろん、先天的なものや、運が悪かったとしか言いようがない病気に 対しては社会に負担を分散させる優しさは欲しい。 しかし、それでも限度はある。

年金のことは良く知らんし興味もさしてない。 もらえるとは思ってない。 しかし、積立積立言ってる人は、 それでどう良くなるのか説明する義務があるだろう。 私にはそれがバラ色の解決策とはとても思えない。 為替変動とかインフレとか運用の失敗とかにどう対処するんだ? 積立てられない人はどうする? つうか、単純に「その年の税収で出せる分だけ払います」 じゃダメか?税収が減ると年金も減る。当然じゃね? これなら運用という概念がそもそも消え失せる。 まあこれは極端なので、そういう色合いを強める方がいいんじゃないか、 という程度の話なのだが。とにかく金がないのだから、 必要を先に考えるのではなく、払える額を先に考えるべきだろう。

それにそもそも、年金って「長生き保険」だろう。 想定以上に長生きしてしまった時にお金がもらえる、 という程度のものだとすれば、平均寿命くらいに支給開始年齢が あってもそれほどおかしくない。 ただ地域の共同体がなくなってる上に親族まで散り散りなので、 そこを国がどうにかしないとマズイ状態なのはまあ仕方ない。

地方分権と言うが、 人間の移動が頻繁になるなら地方分権は非効率だし、 会社が書類上どこにあるかで 税金をどこに収めるかが決まる、みたいなのはバカバカしかろう。 そこはどう折り合いをつけるのだろうか。

2013年07月11日

オタマ幼稚園。一番遠いところ。 別れる時は泣いていて、その後すぐ吐いたらしい。 しかし、その後は落ちついていたようだ。 帰った後も機嫌が良い。 で、明日の昼までに二番目に遠いところに行くか行かないかを 決めなくてはいけない。今日ひどいことになれば 行くという決断もありえたが、ギリギリ踏み留まったという感じもある。 まあ最後はひつじこに任せる。 私は正直、幼稚園なんて行かなくても良くね? と思ってしまっているし、4歳児の募集はちらほらあるので、 来年からでもどうにかなるんじゃないかと思っている。

にしても、先生。ひつじことは電話でずいぶん話してくれたのに、 私にはあまり話がなかったな。私の今までの振舞に問題があったかもしれないし、 変な日除け帽子をかぶっていてシャツがボロいのが問題だったかもしれない。

とりあえず、幼稚園その他で人に接触する機会が増えたこともあるし、 いいかげんシャツが限界を超えて久しいので、 まとめて通販で買うことにした。2000円くらいのを4枚。シャツ工房という店。

ズボンをUniform Townという通販の店で買ってみたが、具合がいい。 ひつじこの分と合わせて追加注文しよう。

シャツ買いすぎたな考えてみたら。そんなにバリエーションつけて どうするんだよ。でもまあいいか。 たぶん消耗激しいだろう。容赦なく乾燥機にかけるからな。

これで2年くらいは服を買わずに済ませたい。

確率統計がらみの数学は式が汚くなりがちで、 しかも適用を間違えるとおかしな結果が出やすい。 専門家すらしょっちゅうしくじるからな。 そう考えると、下手に深入りせず、 用途に応じて必要なだけ数学を入れていくべきだと思える。 必ず小さな場合を手計算し、少し大きな場合を単純なプログラムで試し、 感覚をつかんでから数学を入れて一般化したり、 手に負えないほど大きな数に適用したりする、 という順序にすべきだ。 いきなりクソデカい数でも適用できるアルゴリズムやら 便利な定理やらを学んでも、結局ピンと来ない。 ピンと来ないものは使えないのだ。

そのうち乱数だけで文書まとめよう。本になるならいいし、 ならんでも200ページくらいのpdfを作ってバラまけば 目的は達せられる。 しかしその手のネタで問題になるのはプログラミング言語だな。 速度もかなり問題になる分野なのでC++でいいじゃんと思うわけだが、 C++のシェアの低下は著しいわけで、 C++にしてしまうと読めない人がわんさか出てくるっぽい。 まさかSunabaで書くわけにも行かんし、 仮の言語で書くとKnuthのみたいに読みにくくなる。 javascriptでも40億回呼んで1分かそこらで実行できるのであれば、 それでもいいかなあとは思うのだが。 そして、もうjavaはないな。

2013年07月10日

燃えるプロジェクトってどうやって燃えるんだろうか。 白色矮星のように温度が下がっていく死に方は見たことがあるが、 無理スケジュールでディレクターが無理難題を言って、 みんな徹夜で、ついにどうにもならなくなって人間を投入、 みたいな燃え方はまだ自分の目で見たことはない。 話を聞く限り完全にマネジメントの失敗で、原因と対処は明らかな ように思えるわけだが、いざ自分がその中に入ってみれば そうも言えなくなるんだろう。

チームがいかにマズい状態でも、何人かは状況がマズいことを認識しているし、 それをどうにかするための手を考えろと言われればそれなりに 思いつくものである。しかし、人間は集まると空気を読むので、 マズいと言ってはいけない空気になれば、言わない。 チームの利害と個人の利害は一致しないのが当然なので、 チームにとって良い行動であっても、個人の利害に反すれば、 もちろん行われない。提言したり、問題提起したり、 といったことは個人に余計な負荷をかけ、人間関係を損なう危険を伴う。 だからそんなことが自発的に行われると期待するのは愚かだ。 つまり、プロジェクトというものは自然に推移すれば必ず失敗するものなのであって、 成功させようとすれば並々ならぬ熱意と労力をかけて 自然をねじ曲げねばならないのだ。まずそのことが理解されていないように思われる。

基本的な戦略は、透明性の向上と、情報の吸い上げだ。 マズい状態になっていることがチームの外に漏れる仕組みを作らないといけない。 チームという境界があれば、中の人間も外の人間もその境界を またごうとはしなくなる。だが形式的な「プロジェクト進行チェックミーティング」 の類は一瞬のうちに形骸化するので、とても満足の行く方策ではない また、末端の人間がどう思っているかをほどよく吸い上げる仕組みがないと、 細部が見えなくなる。もちろん全ての細部を見る必要はなく、 これはサンプリング調査でいい。何らかの方法で下っ端の考えや感情を ちらほら見ておかねば、危機は防げない。

中の人間が自発的に外に情報を出すことはない、 という前提で考えるべきだ。末端は自分の分野にある危険を わざわざ上には言わないし、プロジェクトの中の人間は外の人間に わざわざ「うち燃えてます」とは言わない。 上の人間がサンプリング調査をすべきで、 「社会人たるもの適切に報告せよ」などと言ってみたところで 何の役にも立たない。それは人間の性質に反している。 つまり、立場が上に行けば行くほど、人間は人間の性質に反した行動を強いられる。 リーダーとかマネージャーとかいうのは、 人間として不自然な行動をして給料をもらう人種のことだ。 だからこそ給料が高いのだろう。

いろいろやってるけど一向に面白くならんな、 おいそろそろ時間がないぞどうすんだこれ、 的な事は珍しくもないが、そのリスクは避けるべきリスクではない。 それこそがゲーム作りなわけで。 そこで最大のリスクを冒すために、 他のリスクは下げておく必要がある。

ディレクターが無理難題を言う所まではまあいいとして、 それを実行する側はそれが可能だと言うのかどうかが気になる。 また、「無理です」と言っても「いいからやれ」 と言うのであれば、できない時のことは考えておかねばならない。 本当に無理である確率は高いからだ。 また、「できます」と言ったとしても、それが本当とは限らない。 その場の雰囲気でついできると言ってしまう、ということは珍しくもないことだ。 「できるって言ったじゃん!」「言ってませんよ!」的な やりとりは良く聞くが、ディレクターの無能を示している。

たぶん、ディレクターに求められる資質が二つあって、 それを両方持った人間があまりに少ないのが問題なんだろう。 作るべき物が見えている、ということと、実際に作らせられる、ということだ。 この二つを一人の人間が持てないのであれば、 分けないといけない。しかし、このへんは一般論は役に立たない。 つまるところ人間の個性の問題だからだ。

ゴリラテストは統計学をちゃんと使えば強いが、 統計学を知らない前提で目で見てあからさまにおかしなラインで判定すると、 相当おかしくないとはじけない。中央極限定理のせいで、 「おかしい」というラインがかなり接近してしまうからだ。

結局多次元分布テストが一番いい気がするなあ。 n個の箱があって、n回ランダムにボールを投げた時に、 ボールが入っている箱がいくつあるかと言えば、N(1-1/e)くらいだ。 数学はともかく、適当に試すとそうなる。 次元を増やしたり、箱の数を変えたりした時に、 全部63%くらいになれば、たぶん大丈夫だろうと言える。 しかし、ダメなものは箱の数を変えたり次元を変えたりした時に 率が激しく上下するのだ。

MWC、3,4次元で偏るな...Xorshiftのメジャーなパラメータの奴は大丈夫だ。 でも同周期の他のパラメータでは破滅的だったりする。 Xorshiftは使えるパラメータが少ないのが使いにくい。13,17,5とか もし自力で探したら見つかるまでどれくらいかかるだろうか。

Xorshift64,128は完全にパス。CMWC4096は偏りが見える。 MWCをXorshiftして返す、というのが一番良いように見えるなあ。 Numerical RecipesではLCGも混ぜることを推奨してるが、根拠がいまいちわからん。 説明ないし。

N個ある箱にN回ボールを投げた後、平均いくつの箱に入っているか。 どうもNがある程度大きければ63%くらいっぽいが、証明してない。 1-1/eになると思うんだがなあ。 1個だと1-0、2個だと1-1/4、3個だと1-8/27で、 これ、1-((n-1)/n)^nだろ。(n-1)/n=1-(1/n)だ。(1-1/n)^n=eのはずだから、 これは1-eに漸近する。問題は証明だが、まあ証明せんでも、 プログラム書いて漸近することを示せばそれでいいだろ。 証明するとしたら、一般項を出すか、帰納法で行くかだなあ。

これが証明できて、さらに正規分布で近似した時の分散が求まるのであれば、 乱数性の検定としては素直で、しかもそこそこ強力な手段が手に入る。 これ衝突検定って奴だよな。クヌースにあった。 度数分布でやると数がたくさん出てくるのでカイ二乗分布になって厄介だが、 衝突検定なら出てくる数は「空いてる箱の数」という一つだけなので、 それが正規分布であると考えれば扱いが簡単になる。

2013年07月08日

二番目に遠い幼稚園。プールなのでおおむね楽しく過ごした。 床が熱くなっていたりしていろいろ大変だったが。 で、この幼稚園に行くか行かないかは今週決めねばならない。 それにしても狭いんだよこの幼稚園。 そこを体育教師を雇うことでカヴァーしているっぽく、 体育館で並んで前ならえしてるのを今日見たが、 ああやって集団に合わせることをオタマは我慢できるんだろうか。

選択肢は4つ。行かないのとあと3つ。

設備と組織力、バスが来るので通園が楽、 といったことでは一番遠いところがいいが、 オタマが泣くほど嫌っている。ただし、 それは親と離れるという効果があってのことだから、 他も親と離れるようになれば同じである可能性はある。 また、先生は若さが気になる。

先生のレベルでは2番目が光る。だが、とにかく狭い。人が多い。 来る親子の属す文化圏とうちが違いすぎる。 あと、通園に自転車が必要な中途半端な距離で、 たぶん私が幼稚園の送り迎えをすることになる。 ひつじこは当分無理だ。 そして、プールがあればいいが、そうでなければオタマは乗らない。 加えてまだ親と離れたことがない。

一番近いところは、近い。諸々雑で、炎天下の中外でバリバリ遊ばせたりもする。 制服が子供の体を考えてない。 ただし来る親子の属す文化圏はうちに近い。うまくやっていきやすいだろう。 またその後小学校に上がった後もつきあいが続く可能性が高い。 オタマは嫌がってはいないが、面白そうではない。 変に教育色が強いのも気になる。

行かないという選択肢は対照用に残しておかねばならない。

二番目の説明会が明日。あと、木曜にトラウマ化しつつある一番遠い幼稚園。 そして、二番目の申し込み期限が金曜。 木曜のトラウマ度合いで決めよう。木曜は、 最後に預けるようにして先生に多少なりとも話をして、 お迎えも最後にしてどういう状況だったか良く聞くことにする。 後ろに親が並んでいると先生と話しにくいからな。

遠いところは現在オタマが嫌っているが、これはある意味、 親子分離の後の状態が今すでにわかっているということでもある。 すでに最悪の状況に近かろうから、あとは改善努力をするだけだ。 二番目は現在嫌がってはいないが、親子分離の結果どうなるかは まだわからない。仮に一番遠いところと同レベルに嫌がるようになるならば、 設備教育方針等々から言って、遠いところの方が良くね? という話になる。もちろん、すんなり慣れるならそれはそれで良い。

つうか、webサイトの完成度が悲しくなるくらいに違うんだよな。 一番遠いところ以外は募集要項すら置いてない。 何に重点を置いていて、それは何故か、ということも書かれているし、 資料には危機管理なんて項目まである。 組織として信頼できるのは圧倒的にここだ。他は先生個人の力量に期待する以外に しようがない。オタマが現在嫌っている以外の全てで勝る。 だが、嫌っているのである。そして、先生が頼りない。

ズボンが残り一つになったと思っていたが、 奥からもう一つ出てきた。しかし固いし暑いしで苦痛。 だから奥においやられていたわけだ。 いいかげん買わないとダメだろう。 というわけで、通販を試す。

ミートガイのソーセージはハーブがきつい。これ何だっけ?セージ? しかし肉のうまさは強く、質は良い。100g200円未満という値段も、 さほど高い部類ではない。でも、このハーブ臭でオタマが食わないならそれまでだなあ。

平方剰余。とある法で二乗してaになるような数があるとする。 このaは原始根ではありえないということが言えるか。 フェルマーの小定理よりa^(p-1)は1だ。どんなaでもである。 で、pが奇数であるならば、p=2q+1と書けて、a^2qとなる。 ここで、a^qが1になってしまえば、周期は半分だ。 さて、aが2乗してaになるbが存在するような数だったとする。 そのbに対しても、フェルマーの小定理が成り立ち、 b^2q=1だ。そして、bの2乗はaだから、(b^2)^q=1で、a^q=1である。 つまり、aがの平方根が存在すれば、周期は半分になる。だから原始根ではない。 そして、aの平方根を全部探すには総当たりが必要だが、 aが単体で二乗数であれば、その平方根は確実に存在する。 つまり、2^32をそのまま使うMWCの周期は確実に半分になる。 論文にさらりと書いてあったことがようやくわかった。

久しぶりにパワポ。

2013年07月04日

メールの返事とか書いてたら日が変わってしまった。負けた気分だ。 まあ仕方ない。昼間はロクに仕事できんからな。

私のPCはスリープから目覚める時に80%以上の確率で青画面になる。 毎度シャットダウンした方がいいんじゃなかろうか。 その方がむしろ時間がかからない。 だが、windows8ではシャットダウンを素早くやれない。 蓋を閉じる方がずっと楽だ。 ショートカットあるんだろうけどなあ。

蓋閉じた時にシャットダウンするように設定すりゃいいのか。 どこだ?見つけた。これでいい。 thinkpadまだかなあ。 temashのマザーも出てこない。

ゴリラテストは全パターンがほどよく出るか、的なテストで強力なのだが、 00,01,10,11と規則的にパターンを網羅されると弱い。 もちろん全パターンが完璧に出るのはおかしいので、 そうならないようにほどよくパターンを抜く。 結局どんなテストかが事前にわかっていれば、その裏をかくことはできるのだ。 また、長いテストほど周期が短い乱数を見つけやすいが、 短期でおかしいことは検出できなくなる。 100ビットが全部0、みたいな場所があったとしても、 全体で見て0の数が一定に収まっていればオーケーになってしまう。 さらに、出てくる値を見ても、あんまりピンと来ない。 全16777216パターン中500万パターンくらい出ませんでした、 と言ったとして、それは多いのか?少ないのか? それを知るにはこの分布の形を知る必要があり、そこで数学が必要になる。

根本的にテストというものは、巨大な状態空間を0か1の1ビットに 変換する写像であり、情報が落ちることは避けられない。 非可逆圧縮の極端な場合、と考えてみるとちょっと腑に落ちる。

「圧縮して減るほどダメ」は評価基準が単純でわかりやすい一方、 圧縮アルゴリズムに左右されすぎるし、 そもそも圧縮アルゴリズムを他人に頼る段階で今回の主旨に合わない。 周波数ドメインに直すのも、この本の読者の大半は周波数ドメインって何よ 的な状況だろうし、FFTを書こうと思えばそっちの勉強まで必要になる。

2013年07月03日

MWCの説明がだいたい書けた。

乱数検定の問題。周期が長くなった時に確認できない問題。 周期が長い乱数の設計に際して必要になる数学の問題。 多次元均等分布性能の問題。

ランダム性の検定のうち、簡単に作れるものは紹介すべきだ。 できるだけ強力で、直感的で、それでいて 統計学を持ちこまなくても「いやこれはダメだろ」とわかりやすい、 そんなテストはないか。

度数検定は近隣データとの相関に関する問題を検出できない。 やはり、「いろんなパターンがちゃんと出る?」 というゴリラテストが良さそうである。 結果がいくらなら良いか、ということについては統計学の問題になるが、 いろんな乱数をかけて、明らかに変な奴がいれば、そいつはダメだろうと 予想がつく。問題は、このテストに線形合同法をかけて ちゃんとはじいてくれるかどうかだな... はじいてくれるなら、多次元均等分布に関する問題は省略できる。 ゴリラテストで引っかかる乱数を使わなければ済む話だからだ。

試した。最上位ビットは通るが、24ビット目以下は全然ダメだ。 となれば、全ビット混合でテストすればまず通るまい。 これでいいだろ。よし。

周期が長い時に、その周期を確率的にでもいいから確認する手段。 これがあれば、数学を導入せずともどうにかなる。 数学を導入しない、はもう決定事項としていいだろう。 剰余類とか原始根とか言い出したらもうどうにもならなくなる。 CMWCの説明も入れない。

周期が100ある乱数を10回だけ呼んで、周期が100ありそうだと推測する方法はないか? という問題だなつまり。そんなの無理だろ。 仮に内部状態にアクセスできたとしても、前提なしでは不可能だ。 もし「ある範囲の全ての数が出る」という条件があれば、 10回呼んで出てきた数の最小から最大の間のまばらさを見て、 「この100倍くらいありますよ」とか言える。 しかし、MWCでもLCGでも、範囲内で出ない数があるなんてザラだ。

うん。この路線は無理だ。数学詳しい人に聞いておきたいが、知り合いにいないので聞けない。 なので無理として話を進める。 こうなると、実験で周期を確認できる範囲でしか周期を増やすことに意味がない。 数学を極力つっこまない範囲でしか説明しないと決めたので、 「理論上周期がいくつになります」には意味がない。 あくまでも、「こんな数つっこんだら周期がなんぼになった」で話をする。 理屈は「メンバ変数がNビットあれば2のN乗周期が限界。 でも実際どうかはやってみないとわかんないよね」で終わりである。

戻ってくるまで回せないのであれば、「こんだけ回したけど戻ってこなかった」 だけが真実だ。周期は「最低これだけある」としか言えない。 しかし、初期値に戻ってこないままループする可能性は否定できず、 そういうケースを「周期が長い」と見誤る可能性がある。 1万回くらい回した所の値から始めればいいんだろう。 そして、「最大64乗あるかもしれないけど、44乗以上あることしかわかりません」、 でいいんじゃなかろうか。これなら地に足がついた範囲で 実感を持って理解できる。理論の世界に羽ばたきたい人は他の本を読めばいい。 この本は入口になればそれでいいのだ。そして、その入口だけでも、 要求が厳しくない並の用途なら十分足りるようにしたい。

過炭酸ナトリウム6kgとその他サプリ注文。 あと、ミートガイという店で肉を5kgくらい注文。 すじ肉は通販の方がいい。スーパーにあるものはすでにして鮮度がヤバいことがあるし、 欲しい時にまとまった量を買えず不便である。なにせ1.5kgとか使うからな。 冷凍が望ましい。 あとソーセージ、ベーコンはキロ2000円以下のものの冷凍備蓄が欲しい。 クイーンズ伊勢丹で買える400g700円のソーセージはうまいのだが、 冷蔵なのでそうもたないし、品川で買い物できる機会はそう多くはない。

タイヤ公園のすべり台が凶悪で、ズボンの尻のあたりが摩擦でえらいことになる。 普段用ズボンは2つしかなかったのだが、そのうちの使い勝手のいい方が すべり台にやられて穴があいた。 残ってるのはユニクロのイマイチな奴だけだ。 ズボンが1つしかないので、夕方洗濯機に放りこんでしまうと出社できない。 つまり洗えない。買うしかない状況に陥ったわけだ。 しかし、ユニクロで買う気がおきない。伊勢丹メンズとかに行って まともな品質のものを2つくらい買ってくるのが結局は安上がりで楽なのだろうが、 いつ新宿なんて行くんだよという問題がある。 近くに洋服の青山があって、5000円くらいのズボンが売られているのだが、 品質よくわからんしなあ。でもまあ、一回試してみるか。

動きを妨げず快適でありつつも、 会社やらCEDECやらに行っても奇異な目で見られずそれなりにちゃんとして見え、 それなりに頑丈、というのが要求する条件である。 前買った時のユニクロは形がおかしくて動きにくいし、耐久性がひどかった。 西友で1000円で買った奴の方がはるかに長持ちしたのだが、 足首が常に出てるくらい短かったのでちゃんとは見えない。 昨日すべり台にやられたのはそれである。 そのへんのホームセンターで売ってる奴が長ければいいんだが、 大抵長さが足りない。85cmないとダメだが、安いものでその長さは滅多にない。 金より手間なので、条件を満たすなら5000円くらいは払っても良かろう。 1万円と言われると辛いが、モノがまともなら払ってもいい。 ひつじこに見せればモノのまともさは判定してくれるだろうし。

あとシャツももうないんだよな。2枚しかない。1枚は崩壊寸前だし、 もう1枚はオタマのワセリン時代にさんざんワセリンがついて いくら洗っても白くならない。 シャツに関してはズボンほど品質要求は厳しくないのだが、 これについても昔伊勢丹メンズで買った7000円の奴は ちゃんと見える上にべらぼうに長持ちした。なるほどこれが品質というものかと 感動したものだ。あれをもう2枚買ってくればそれでいい気がする。 普段着としては少々ちゃんとして見えすぎる代物だったが、 快適で頑丈だったのでそれで困らない。 むしろ、取りたてて労力を払わずにちゃんと見えるなら、その方がいい。 稀に背広を着なければならない日があっても、そのまま使える。

勇気を出して今日は日が変わる前に寝る。

2013年07月02日

2^64とかの周期のものが本当にそうか確認する方法はないのか。 サンプリング検査で確率的に確認するのでもいいんだが、 それすら浮かばない。2^40程度までは馬鹿正直に回して 初期値に帰ってこないことを確認できるが、 それ以上は到底無理だ。並列化してどうがんばっても、2^50までは届かない。

結晶構造が出るのは悪い乱数だが、 悪い乱数で必ず結晶構造が出るか?ということはわからない。 良さ悪さの評価軸は多数あるからだ。 「線形合同法がダメなことは3次元で点描けば結晶が出るからすぐわかる」 はセーフだが、「3次元で点描いて結晶が出るかどうかで良いか悪いかがわかる」 は完全にアウトだ。わかるのは悪いかどうかだけである。良いかどうかはわからない。

やっぱレンダリングの本書いた方がいいなあ。 それをせずにレンダリング方面で塩を送ることはたぶんできん。 もちろん、そうやって書いた本が絶賛されねば目的は達成できないので ハードルは極めて高い。まあもう二冊もそういう無茶をやってるんで、もう一冊増えても かまわんのだが。

たぶん五反田さんが言ってるようなことを理解して実装できる人間が そこかしこにいる状態にならないと、どうにもならない。 論文付属のサンプルコードを写経してつっこむ、 くらいのことなら大したスキルがなくてもできるが、 それでは寄せ集めにしかならない。絵作りを設計するなんて夢のまた夢だ。 単純な技術力に関して言えば私なんて全然ダメで、 もっといい人はいくらでもいるはずなんだが、 そういう人はモノを作るべきで説明なんてしてるのは時間の無駄だし、 そもそも人に説明する気なんてないのが普通だ。 となると、私が適任ということになる。 実際コード書くの遅いからな。土台を固めるまで先に行けない性分だから であって、技術で劣るからだとは思いたくないが、 しかし問題は結果だ。実際時間がかかるんだから、つまりダメなのである。 実用コードを書くこと自体はそういう連中に任せる方が効率がいい。

16時前にひつじこからSOS。オタマを連れて新しい公園に行ってみた。 タイヤ公園。タイヤまみれ。楽しい公園でオタマも楽しく遊んだが、 日光を遮るものがなく暑い。日焼けも気になる。 なので、基本的には朝7時より前か、17時より後に行きたい。 紫外線だけならいいが、気温の高さまで加わると危険すぎる。 16時でも耐え難いほど暑かった。17時を過ぎてきてだいぶ楽になったので、 それくらいにしたい。あと、公園だとオタマは抵抗なくトイレに行くことがわかった。 ただし、出ない。まだトイレで出すということがよくわからんのだろう。

朝5時42分。MWCの説明の大枠を書き終えた。 私はMWCを理解したぞ!という気分になった。 読者に理解させるためにはまだまだ説明が甘いので、 そこは後で改良する。しかし大枠はこれでいいはずだ。 問題は、ここまでして説明するほどおいしいアルゴリズムかどうかが この範囲ではわからん、ということだな... 2の32乗周期以上の乱数は周期をチェックできんので 扱っていない。そうすると、あまりうれしくないわけである。 「簡単に長周期化できますよ!」というのがMWCの売りなのだが、 残念ながら、それを確認する術がないのだ。 やはりサンプリング調査の方法を確立する必要がある。 数学を使って周期を出すのはこの本のレベルではダメだ。 この本は数学の本じゃない。工学に踏み留まるべきである。 つうか、mallocのためにここまでやるのはどうかという気がしてきたな... zipに別文書かもしれない。 さて帰ろう。

2013年07月01日

k/pをk進法で小数展開した時に、長い周期を持つことがある。 pが素数である場合、kがいい具合な値だとそうなる。 問題は、この割り算が実行困難なことがあることと、 k進法を使う時に長周期になるようなpをどうやって選ぶかである。 MWCは前者の問題は解決しているが、後者はどうも しらみつぶしっぽい。もちろん数論を使って候補の絞り込みはしているが、 根本的な解決とは思えん。だがここなんだよ。 ここがまともに使えないと不便すぎる。

まず割り算が実行困難な問題を解決する。10進である場合、 最初の一桁目は、10k/pで、数字をd、余りをrとすると、 10k=pd1+r1となる。2桁目は10r1=pd2+r2。3桁目は10r2=pd3+r3。 この調子で続く。 dを求めるには10kをpで割らねばならないが、pが32bitに収まらないと 当然pで割れない。これをどうにかせんといかん。

MWCはp=10a-1と置いて数字を逆順で求めることでこれを解決する。 なんで?

10/59を求めるとする。100=59*1+41。410=59*6+56。560=59*9+29。290=59*4+54。 そんな具合で行く。 MWCの計算は、59=6*10-1とし、xi+=16xi+ci mod 10、ci+1=16xi+ci/10で表す。 x0=4であるとして、6*4+c=9(mod10)となるには、c0=5。 つまりc0=5としよう。x1=6*4+5(mod10)=9。c1=(6*4+5)/10=2。 x2=6*9+2(mod10)=6,c=5。x3=6*6+5(mod10)=1,c3=4。 これを元の割り算版と照らし合わせてみると、出てくる余りの1の位が商で、 10の位がキャリーということになる。 え?マジかよ。思って元のを見てみると、 100=59*1+41。410=59*6+56。560=59*9+29。290=59*4+54。 商が全部余りの1の位と等しい。1の時は41、6の時は56、9の時は29、4の時は54だ。 これが成り立つ理由は何故だ?

59=6*10-1だ。これを元の式につっこむ。 100=(6*10-1)1+41。法10で考える。60掛けてる所は消える。左辺も消える。 0=-d+r。つまり、d=r(mod10)。商の1の位と余りの1の位は10を法とした時に等しい。 これは毎度法である10が左辺に掛かっているからだ。 証明はできんが構図は見えてきた。この置き換えは常に正しい。 これで、除算が実行困難な問題が解決した。逆順で変な初期値を設定してよいなら、 除算結果は乗算と都合のいい除算だけで求まる。bがpに比べて圧倒的に小さかったり、 bが2^32などの都合のいい数であれば計算上の問題は消えてなくなる。

次の問題。素数どうやって選ぶの?ab-1が素数にならないといけないが、 まずbが決まっているとしよう。例えば2^32。周期は基本的にはaがデカいほど長いので、 aは2^32-1という32bit限界の上から下方向に探していくとする。 見つかったら、2^32の位数をべき乗しまくって調べる。 この位数が大きな順に100個くらいリストアップし、 一応乱数っぽい並びかどうかを何らかの検定で確認すれば、 使える乱数のパラメータリストが出来上がることになる。 問題は、この作業にべらぼうな時間がかかることだ。 下手すると世界が終わるくらいかかりかねない。

まず素数判定を高速化しないといけない。しかしこれが大変だ。 相手は64bitである。馬鹿正直にやるなら40億までの素数を並べておいて、 それで順に除算する破目になる。永遠に終わらん。

次に、2^32の位数が明らかに短くなるような場合を前もって削ることが必要だ。 位数に関して何らかの見積りができればなお良い。そうすれば、 そもそも素数判定するまでもなく消せる。

位数の最大値は法-1を因数分解できればべき乗に頼らずに見つかる。 ab-1が法なのでab-2を因数分解するわけだ。 ここで、運悪く綺麗な数に因数分解できてしまうとえぐいことになる。 ab-1が素数ならab-2は絶対に偶数なので、最低でも2で割れる。 それ以上どんなもので割れるかで位数の最大値が全然違ってくるからだ。 しかし、この因数分解はぶっちゃけ無理である。 となると、ab+1を法とするようにMWCの式をいじる必要がある。 そうすればabを因数分解すれば良く、bは2^32とわかっているのだから aだけの問題となる。φ(b)*φ(a)が位数で、 φ(b)=2^31、φ(a)=a-1から、(a-1)2^31が最大位数とすぐわかる。 要するに、自前でパラメータを計算するならCMWCはマストだ。 これなしには全く歯が立たない状況に陥る。

ab+1が素数か判定する必要がある。これはまともに高速な素数判定法を 用意する以外にやりようがない。ラビンミラー?いや、高度すぎだろ。

整数論の助けなしに扱えるMWCはab掛けて32bitまでだな。 マーサグリア先生こんなクソデカイパラメータを一体どうやって求めたんだろう。 そして、これ誰か追試してるのか?

周期が少しづつずれた16bitMWCを多数たばねて最小公倍数の周期を 作り出す方が無難な気がするんだが、それで周期が伸びることって保障できんのかね... 乱数は下手な操作をするとヤバいことになるからな... ビットを混ぜないようにすれば大丈夫だろうと思えば、 下16上16を別のMWCにするNumerical Recipesの実装は賢い。 周期が最悪32乗に落ちる欠点はあるが。

うんおおよそ状況はわかった。説明可能な範囲はだいたい見えた。 あとは実装と説明に落としこむ。

説明する人間は、説明しない部分まで相当な理解をしていないと説明できない。 説明する部分だけの理解ではダメだ。

MTの人が「いいもの作ったのに使ってくれない!乱数の大御所が邪魔をする!」 と憤ってる文書があった。 「過去の大して良くない乱数」の中には当然マーサグリアの 一連のものも入っているはずだが、比較がない。 最低限、MWCとXorshiftとMTを比較した論文ってあるんだよな? MTの論文にあるのだろうか。 あと、運用の段では「コードが短い」「パラメータに自由度がある」「スケーラブル」 は相当重要なんだがなあ。3行で書けるとか、 コード中のリテラル一箇所いじればパラメータ変えられるとか、 容量と周期のトレードオフを選べるとか、 そういう特性があるようには見えない。 単なる乱数の性能だけでは困るのだ。

MTの人が書いた文書がちらほらあるんだが、 比較する相手が線形合同法ばっかりじゃん。 MWCとXorshiftくらいは最低限相手にすべきじゃね? なぜ言及がないんだ? よく見る立方体の中に変な模様が出る絵も、 そりゃ線形合同法だから出るに決まってる。 遅れフィボナッチやら何やらのアルゴリズムは昔からあるわけで、 それでも出るのかどうか見せてくれたらいいじゃん。 既存のアルゴリズム全部に喧嘩売るくらいのことをしてくれると こっちとしてはわかりやすいのに。

M系列系なので「全パターンが一回づつ出る」 が保障されている。しかし、それを言うなら、 「毎回1づつ足される数列」だってそれは満たすのだ。 乱数の性能とは何なのか、というのをわかりやすく説明してくれる 文書を見たことがない。

MWCは所詮有理数の展開にすぎず、 「適当な検定をした感じ良さげ」以上のことは言ってない。 展開した結果0123456..みたいに規則性が出る有理数だって中にはあるだろう。 素数でそうなるものはない、という証明を私は知らない。 マーサグリア自身が2の平方根は無理数だけど分布がイマイチ、 と言っている。無理数でそれなら有理数でイマイチなものが ある可能性は当然あるわけだ。 まして高速性のために妥協が入ると、周期が最大でなくなる。 周期が最大でなくなるということは全パターンを取らなくなるということだ。 抜けたパターンが何かによっては致命傷になる可能性もなくはない。 そういう不安がないというのはM系列系、つまりビットベクタ系の利点だろう。

でも、この書きっぷりは問題だよなあ。 「漸化式で乱数作るとか邪道」みたいなこと書いてるが、 ビットベクタに行列掛けて作るのは漸化式より優れている、 ということを読者に対して証明する必要がある。 たぶん作者の脳内では自明なんだろうが、使い手は大抵数論の素人なのだ。 素人は素人なりに納得して使いたいと思っていることもあるわけで、 そのへんを説明した文書がロクにないのはどうかと思う。 2000年以降のアルゴリズムの教科書にはMTが普通に載ってる、 みたいな状況になってないのは、やはり何か問題があるのだ。 単純に難しすぎて理解できずそのへんのプログラマが実装できないのだとしたら、 やはりそれはそう簡単に普及はさせられないだろう。

出産予定日はどの程度信頼できるか。 これを見る限り、 前後10日くらいは十分にありうる。 いよいよ病院に行って出産となる時に私が家にいないのはマズい。 会社なら数分で帰れるが、横浜からは1時間かかる。 うん。今年はダメだな。 夜に宴会だけ参加できそうなら参加するくらいにしよう。

いかん眠すぎる。まだ1時だが帰る。


もどる