コンビニおでんを食べる理由


コンビニおでんがかなり不衛生なことは誰でも知っています。am/pmの創業者、秋沢志篤さんもこんなことを言っています

おでんって、コンビニにとっては、売れ筋商品なんですよ。ところが、実験店で実際のオペレーションに取り組んだ時、その結果には驚いて、ひっくり返ったね。掃除しようとして、底を見たら、髪の毛とか、臭いと光に集まる虫とかが、溜まっていたんです。どんなに売れても、お客さんがほしがっても、これはお客さんに食べさせられない、と思いましたよ(ウチでは「おでん」は売りません

人間はどこまでチンパンジーか?―人類進化の栄光と翳り

明らかに不衛生なのに売れる理由は私にはわかりませんが、わからない自分を慰める理論はあります。駒場の学生だったときに習いました。ハンディキャップ理論というやつです。ダイアモンド『人間はどこまでチンパンジーか?』で紹介されています

体に悪いことが明らかにも拘わらずたばこを吸う人は、知的にも肉体的にも進化的にちょっと不利かと思われます。しかし実は、「そういう危険なことをしても大丈夫なほど強い」ということをアピールすることによって異性を惹きつけられる、つまり進化的に有利になるというのです

コンビニおでんも同じことです。不衛生にも拘わらず食べる人は、一見愚かな気がします。しかし実は、「そういう危険なことをしても大丈夫なほど強い」ということをアピールしているのです

それだけではありません。コンビニおでんで一生懸命セックスアピールしている人を見ると、なんとなく心温まる感じがします。がんばってるなあって。食べた本人だけでなく、観ている人も温かい気持ちにさせてしまう、そんな偉大な食べ物なのです。僭越ですが、赤福なんかを入れるともっと売れるのではないでしょうか

私は体が弱いのでコンビニおでんは食べませんが、あまりにモテなくなったら・・・

これまでで最高の活字見本—基本日本語活字見本集成


Amazonで買えるようになったら紹介しようと思ってたんだけど、だめみたいね、今普通に手に入る最高の見本帳なのに(フォントスタイルブックがあんなことになっちゃったし)。どうしてだろう

まあ、ともかく、すばらしい。見本だけでなく解説も。小宮山博史さん「日本語書体の分類」、小形克宏さん・直井靖さん「デジタル活字の基礎知識」、直井靖さん「Adobe-Japan1-5 Character Collection for CID-Keyed Fonts」

小形さんはブログに裏話を書いておられる(『基本日本語活字見本集成本OpenType版』のこと (1)『基本日本語活字見本集成本OpenType版』のこと (2)

あとはRookledge’s Classic International Typefinderの日本語フォント版があればいいなあ

追記:基本日本語活字集成 Open Type版Amazonに入った。誠文堂新光社によれば、

本書はアイデア2007 年5月号別冊「基本 日本語活字見本集成 OpenType 版」を新たに書籍として発行したものです。収録内容は同一になります。

とのこと。表紙は変わってますな

n日後を返す関数を返す関数、どう書く?(Mathematica)


n日後を返す関数を返す関数(どう書く?org)

整数nを渡すと「日時のデータを受け取って、n日後の日時を返す関数」を返す関数を作ってください。

これはそんなに簡単な問題じゃない。すでにアップされているものの中に正解はなさそう。満足できるものを作るにはかなりの手間がかかるはず。ここでも、そこまではしない

面倒だから、日本限定、nは0以上、西暦限定、暦はユリウス暦とグレゴリオ暦のみ、妥当な日付が入力されることにしよう

Mathematicaでは、1752年9月14日にユリウス暦からグレゴリオ暦に切り替わったことになっている

<<Miscellaneous`Calendar` (Version 6では「<<Calendar`」)

DaysPlus[{1752, 9, 2}, 1] (1752年9月2日の翌日は)

{1752, 9, 14}

でも、日本の場合、切り替わったのは明治6(西暦1873)年1月1日だから、このまま使うわけにはいかない(厳密に言えば、旧暦とグレゴリオ暦の差を詰めたのが明治6年、グレゴリオ暦の置閏法を採用したのが明治31年)

  • 入力が1873年1月1日より前ならユリウス暦で計算
    • 結果が1892年12月2日より後ならグレゴリオ暦に変換
    • そうでなければそのまま
  • そうでなければグレゴリオ暦で計算
nDaysLater[n_] := Function[{d},
    Module[{tmp},
      If[{10000, 100, 1}. d < 18730101,
        tmp = DaysPlus[d, n, Calendar -> Julian];
        If[18721202 < {10000, 100, 1}. tmp,
          DaysPlus[{1873, 1, 1}, DaysBetween[{1872, 12, 3}, tmp, Calendar -> Julian]],
          tmp],
        DaysPlus[d, n]]]]
nDaysLater[1]@{1752, 9, 2}

{1752, 9, 3} (異常なし)
nDaysLater[1]@{1872, 12, 2}

{1873, 1, 1} (暦が切り替わった)
nDaysLater[5]@{2007, 7, 20}

{2007, 7, 25} (異常なし)

Javaの暦に関しては、拙著『Webアプリケーション構築入門 実践!Webページ制作からマッシュアップまで 』(森北出版, 2011)で解説しています。

mixiがリニューアル


XHTML+CSSになったらしいけど、ちょっと間違いが多いみたいだね(拙著がお役に立てるでしょう)。ロボットがアクセスしにくいようにわざとvalidでなくしているのかなあ、なんて思っていたら、

mixiの新デザインに文句を言う人は、自分がすでにmixiのターゲットユーザではないことに気づくべきだ(Twitter

などという格言があって、なるほどと思う。私はずいぶん前から、mixiのよいユーザではなくなっている。よりよい社会を夢見ているのだが、なかなか・・・

とりあえず、動物占いスクリプトは対応させた

『本木昌造伝』特別廉価販売


Zapfさんの本はまだ出ないのかなあと思って、久しぶりに朗文堂に行ってみると、なんと、あの島屋政一著『本木昌造伝』が3000円になっていました(消費税と送料を入れれば4000円近くになってしまいますが)

本書の成立については、巻末の「編集子あとがき」で説明されています。

平成8年(1996)七月編集子が取材のために 名古屋「津田三省堂」の後継会社「ナプス」を訪れたさいに、同社の「大奥さん」津田幸子氏より拝受したのが島屋政一による「近代印刷の開祖 本木昌造翁伝」と題された未発表の自筆原稿でした。

著者は既に亡くなられていて、原稿だけが残っていたわけですが、それを、これだけみごとな形で完成させた関係者の熱意には頭が下がります(安くなるまで買わなかったくせに)。これだけの熱意を生じさせるわけですから、内容がすばらしいということは、読まなくてもわかるというものです

(ちなみに、「編集者あとがき」はウェブでも読めますが、内容は同じでも、印刷されたものは美しさという点で格段に上です)

世界で最も美しい本(の1冊)残り10部だそうで、まだ入手していない真性活字中毒患者は早めに手を打っておいた方がいいのでは

学ぶべきプログラミング言語?


これを真に受けるような弱気な人種を淘汰しようという陰謀か

ネットサーフィンをしていれば、学ぶべきプログラミング言語なんてわかるだろうと思いつつ、あなたが学ぶべき10の現代実用プログラミング言語という記事を見ての感想

(弱い)サピア=ウォーフ仮説の観点から、多くのプログラミング言語を学ぶことには大きな意義があると私は思う。でもそれは、考え方がぜんぜん違う言語の場合であって、同じような言語をいくつも学ぶのは時間の無駄でしかないでしょう(最初がCなのも罠)

前に書いた私案と比べてみよう(XHTMLが言語じゃないという人は、空いた余裕にPrologでも)

CodeZine 私案
C sed, awkなどシェルスクリプト関連
C++ SQL
Java XHTML
C# Ruby
Visual Basic JavaScript
JavaScript Mathematica
Perl Java
Ruby S
PHP Lisp or Scheme
Python C

最後にNorvig先生の教えを引用

少なくとも半ダースのプログラミング言語を学ぶこと。そのうちの一つはクラス抽象をサポートするもの(例えば Java や C++)、一つは関数抽象をサポートするもの(例えば Lisp や ML)、一つは構文抽象をサポートするもの(例えば Lisp)、一つは宣言的記述をサポートするもの(例えば Prolog や C++ テンプレート)、一つは coroutine をサポートするもの(Icon や Scheme)、そして一つは並列処理をサポートするもの(例えば Sisal)であること(「プログラミングを独習するには10年かかる」より)

Lispは神の言語か


Paradigms of Artificial Intelligence Programming: Case Studies in Common LispLispは神の言語より

神は6日間で仕事を終えなければならなかった。
だからこそLispで書いた。

そんなことはないでしょう

なによりまず、発言にカッコがありません

神は言われた。「光あれ。」こうして、光があった。(創世記1:3)

がんばって探せば、新共同訳に見いだせますが、Lispのカッコではありません

計算機プログラムの構造と解釈

神は言われた。「いや、あなたの妻サラがあなたとの間に男の子を産む。その子をイサク彼は笑うと名付けなさい。わたしは彼と契約を立て、彼の子孫のために永遠の契約とする。(創世記17:19)

「光あれ。」でわかるように、(今日の)プログラミング言語よりは(今日の)自然言語に近いものを使っておられると思います。少なくとも、LispよりはPrologのような宣言的な言語のほうが近いでしょう

「LispはPrologを含んでいる」とLisperは言うかもしれません。たしかに、Lisp(あるいはScheme)をあつかった名著3冊(Paradigms of Artificial Intelligence Programming, On Lisp, 計算機プログラムの構造と解釈)すべてが「LispでPrologを実装するのは簡単」みたいなことを言ってはいます。でも、よく注意して読むと、そう簡単なものでもありません。『On Lisp』から引用しましょう

On Lisp―Advanced Techniques for Common Lisp

LispコンパイラはPrologではなくLispのための最適化を狙っている. Lispコンパイラの行う最適化に誤りはないが,低レベル過ぎる. (On Lisp)

「自分の好きな言語を最上の言語だと考える人の割合がLisperには多い」という不思議な現象について考察すれば、神の御心の一端がわかるかもしれません

妊産婦死亡率、京都が最悪?


朝日の記事から(いまいましいことに、ウェブ上の記事はそのうち消える)

妊娠や分娩(ぶんべん)がもとで妊産婦が死亡する確率に、都道府県によって5倍以上の差があることが、厚生労働省の研究班の調べでわかった。過去10年間の平均をとったところ、最も低い広島が出生10万件あたり1.84人だったのに対し、最も高い京都は10.70人。

これは全数調査だから(数えられていない出産が無いとは言わないけれど、無視してもおこらないよね)、差があると言われればそのとおり。でも、10万人に約10人と10万人に約2人っていうのは、大騒ぎするほどの違いなのかね(もちろん人命は大事)

死亡率っていうのはまあ、死者数/全件数なわけだけど、出産するときに死亡する確率のほうが興味あるよねえ(突き詰めれば「確率とは何か」という話になる)

じゃあ、広島の妊産婦死亡率(Ph)と京都のそれ(Pk)が本当に違うのかっていうと微妙な話になる

この調査は10年間の平均らしいけど、面倒だから、厚生労働省統計表データベースから平成17年の出生数だけを持ってきてみると、広島は24740件(Nh)、京都は21560件(Nk)

件数が多いから死者数(S)は正規分布になると思っていい。つまり

Z = (S – N P) / Sqrt[N P (1 - P)]は平均0、分散1の正規分布になるとしてよい

「Ph = Pk」を仮説とすると、

Z = (Sh – Nh Pk) / Sqrt[Nh Pk (1 - Pk)] = -1.35 < -19.6 = -Z(0.025)

統計でウソをつく法―数式を使わない統計学入門だから、有意水準5%で仮説は棄却されない

結論:広島の妊産婦死亡率は、京都のそれが同程度だと考えて悪くない(主語を変えれば別の話もできるけど、それでも全国平均(6.39)となら同程度と言える)

別の話:1日3杯のコーヒーで記憶力が向上? フランスの研究者が論文発表 「今何杯目だっけ?」って考えるのが記憶の訓練になってるんだよ

ゲーデルと20世紀の論理学が完結


ゲーデル生誕100年にあたる昨年に刊行が始まった「ゲーデルと20世紀の論理学」(東京大学出版会)が完結しましたね。私のサイトには「ゲーデル」をキーワードに来られる方も多いので。各巻3990円、高いなあと思いながらも・・・ええ、

  1. ゲーデルの20世紀
  2. 完全性定理とモデル理論
  3. 不完全性定理と算術の体系
  4. 集合論とプラトニズム

413064095X413064096841306409764130640984

UNIXという考え方


The Art of UNIX ProgrammingEric S.RaymondによるThe Art of UNIX Programmingの翻訳が発売されて、なかなか好評なようです(たとえば、404 Blog Not Foundの書評

「The Art of」を名乗る性質のものなのかという疑問を別にすれば、この本はすばらしい本だと私も思う

でも、この本がすばらしいのは、UNIXに親しんでいる人にとってであって、そうでない人には、分厚くて高い(500ページ超、6000円超)せいで、あまりうまくアピールできないんじゃないかと思う(英語でいいならウェブで読めるから、値段のことは関係なくなるかも)。UNIXを使ってない人の「UNIXって何がいいの?」という疑問を解決する道具としては重厚すぎる

UNIXという考え方―その設計思想と哲学

UNIXのよさを伝える書籍といえば、『UNIXという考え方―その設計思想と哲学』が一押し。これなら150ページ・1680円と手頃だから、UNIXのありがたみがわかっていない人でも手に取りやすいと思う

『The Art of UNIX Programming』と『UNIXという考え方』の違いは、UNIX文化における2つの大きな考え方の例示になっているような気がして面白い。ちょうど、Emacs対viという記事があったが、これと似ている。一口にUNIXといっても、そう単純ではない

重厚で何でも書いてありそうな『The Art of UNIX Programming』がEmacsなら、コンパクトだが役割はちゃんと果たしている『UNIXという考え方』はviだ(とはいえ、個人的にはviのように扱いにくくはない)

これは、どちらがいいかという話でもなくて、私自身、エディタは何でもできるEmacsが好きだけど、思想本はコンパクトなほうがいい。まあ、一貫しないことを弁解する必要もないだろうが

UNIXがいいことはわかっているけど、もうちょっとちゃんと知りたいという人は『The Art of UNIX Programming』を読んでいいけれど、「UNIXって何がいいの?」と思いつつもこの厚さと高さは勘弁して欲しいという人には、『UNIXという考え方』が断然お勧め

追記:Joel on Softwareにこんな紹介がありました

1つの文化史か知らないプログラマがあまりに多い。それはミネソタのセントポールから出たことのない典型的なアメリカ人の子供が、個別の文化的価値と人類共通の中心的価値の違いが分からないのに似ている。私は、Windowsが異教で愚かだと考え、Windowsプログラミングを軽蔑しているUnixプログラマにずいぶんと出会ってきた。レイモンドは、それが何に由来するのか考えもせずに、他の文化の価値をさげすむという罠に、あまりにもしょっちゅうはまっている。これほど偏狭な人は、総じてソリューション指向で非イデオロギー的なWindowsプログラマには滅多にいないだろう。(中略)この弱者の立場への高慢さが、『The Art of Unix Programming』の最大の欠陥だ。とはいえ、そんなに大きな欠陥というわけではない。(p.155)