2009/10/31

FXRecentFolders

Finder->移動->最近使ったフォルダ
に追加されたフォルダの削除

% cat delete-recentrolders.sh

#!/bin/bash

cd
defaults delete com.apple.Finder FXRecentFolders
killall Finder


# 実行権付与
% chmod +x delete-recentrolders.sh

# 実行
% ./delete-recentrolders.sh

参考
http://www.macosxhints.com/

2009/10/30

Book.new('1Q84')

村上春樹の『1Q84』が世間に投げかけた何かを仮に x として読者が感じ取ったものを仮に k とする。
k は抽象的概念を並べたものでもありキーワードの束のようなものとする。

これを Ruby で表現してみると

  1 # coding: utf-8
  2 
  3 class Book
  4 
  5   attr_reader :name
  6   attr_accessor :x
  7   
  8   def initialize(name)
  9     @name = name
 10     @x = nil
 11   end
 12   
 13 end
 14 
 15 class Reader
 16 
 17   attr_reader :booklist
 18   
 19   def initialize
 20     @booklist = Hash.new
 21   end
 22   
 23   def read(book)
 24     @book = book
 25     return self
 26   end
 27   
 28   def image(*k)
 29     @booklist[@book.name] = k
 30   end
 31   
 32 end
 33
 34 book1 = Book.new('1Q84-1')
 35 book2 = Book.new('1Q84-2')
 36 
 37 i = Reader.new
 38 i.read(book1).image('science','nation','man')
 39 i.read(book2).image('religious','language','female')
 40 p i.booklist


実行結果

# =>
# {"1Q84-1"=>["science", "nation", "man"], "1Q84-2"=>["religious", "language", "female"]}


@x には値を付与できるし値を読み取ることもできる。けれども値を付与できるのは作者以外にいない。そして Reader class は直接 @x の値を読み取る手段をもたない。@booklist の values は読者の抱いた感想に基づくキーワード群。それぞれ何かと対をなしていて二項対立とも同一概念の表裏とも光と陰とも言えるような値にしておいた。あえて加えなかったけれども Author class を作るとしたらそこには作者が値が付与できる @booklist があるはずだ。それは作家の頭の中にしか存在しないものなんだろうけど。

作ってみて一番面白かったのは、25行目 return self。 これは i.read(book).image('xxx') と記したかった為に必要だったからなにげなく書いたんだけど def read が self を返す(or 返す必要がある)なんて! ちょっとリアルな感じがした。

'science' のかわりに 'mathematic' の方がふさわしいような気もするし
'nation' のかわりに 'force' とすべきなのかなと迷った。
'female' のかわりに 'child', 'man' のかわりに 'soldier' にしてもよいような気もした。

『1Q84』を読み終えた読者が実際今何人なのか?なんて知る由もないが、仮にすべての読者が抱いたキーワードを全て寄せ集めることができたのなら、この本が抱えるキーワードの束は膨大な数になるんだろうなー。そして時間経過とともに読者数累計は増加してキーワードのエントロピーは増大していく。翻訳される言語が増えればなおさら...。それにキーワードはただ増えるだけじゃなく他の本とどんどんと繋がっていく。

たとえば
『知識人とは何か』( Edward W. Said / 平凡社 / 978-4582762365 )
に 『 若き日の芸術家の肖像 』( Joyce James )
からの引用がある。

p.46

「きみには、ぼくがすることと、しないことをおしえてあげよう。ぼくは自分で、もう信じていないもの、それを家庭と呼ぼうが、祖国と呼ぼうが、教会と呼ぼうが勝手だけれども、そういうものに仕えるつもりはない。ぼくがやってみたいのは、人生とか芸術をとおして、自分自身を、できるかぎり自由に、できるかぎりそこなうことなく表現することなんだ。そのため、自分をまもるのに使う武器は、三つにかぎることにするー沈黙、亡命、そして狡知」。


ここにある3つの単語は、『1Q84』が発する何かと強烈に結びついているように思えてならない。
狡知に対応するものが 'science' or 'mathematic'
亡命に対応するものが 'nation'
沈黙に対応するものが 'language'

それにしても、と思う。たくさんの小説家が巨大な渦に流され溺れてしまわないための自衛策についてあらゆるかたちで書き残してる。それこそ「そこなうことなく」しるされてる。

修正: 'femail' => 'female'

悪霊にさいなまれる世界

悪霊にさいなまれる世界 上 / Carl Sagan / 早川書房 / 978-4150503567
悪霊にさいなまれる世界 下 / Carl Sagan /早川書房 / 978-4150503574

この文庫本は2000年に「人はなぜエセ科学に騙されるのか」というタイトルで出版された作品で2009年7月に文庫化されたもの。

訳者の青木薫氏が「訳者あとがきに代えて」の中で

これまでも、たびたび、自ら行李を背負い、一冊一冊行商して歩きたいぐらいだと冗談めかして言ってきたが、実はそれは本音である。

と述べているのが印象深かった。

この訳者が手がけた本は過去にいくつか読んだことがある。どれも非常に面白かった。面白いばかりでなく「読者の1人として尊重されている」とすら感じた。
それはどういうことかというと....

科学分野の本(一般市場に流通する書籍)を書く人たちは、一般人への配慮に欠いていることがある。なぜならその方がより的確な単語を使用できるし効率的に話を進めることができるであろう、から。そこには本が作られる最初から一般人との境界線がある。そのような本は専門書店にだけ置いてあるわけではなく普通の書店にも並べられているので、私が何かの間違いで購入してしまった時、その都度私は自分を落第生だと改めて思い知らされマラソンを走る最後のランナーだと感じてきた。じっさい世の中は私にとって難しい本でみちみちているし。
たまには運良く少し理解できるようになることも稀にある。それはよほど意識的に関連本を探したり、うなりながら何度も繰り返し読んでみたり違う方向から探ってみることなしにはありえない。こういった読者の姿勢は独習することそのものだからそのように学ぶことを、億劫がったり嫌悪するべきではない、という考えは当然なことだとも思うけれども、一方で、難しいことをわかりやすい文章で説明し多くの人が理解しやすい内容の本に出会ってしまうと、なんというか、やっぱり深く感動する。小説を読み終わった後の感動となにも違わない。

そういった意味で「暗号解読」など青木薫氏が訳された一連の本は、読者である私に落第生だと感じさせるような真似は一切しなかった。私は最後まで興味深いマラソンを完走できてしまった。文系人間(高校生の時に文系か理系かの選択を迫られて文系を選択したという意味)の私でも科学ジャンルの本の面白さにフル参加できた...。これは当時非常に稀なことだった。この喜びは本の面白さともあいまって二重の楽しさを私にもたらしてくれた。ひとえに作者の人と訳者の人がわかりやすい文章を用意してくれたおかげだ。そこには科学者でも研究者でもないごく普通の一般人を尊重し信頼する気持ちが根底に流れているように感じた。だから、読者である私は

「読者として尊重されている」

と、思った。
(最近福岡伸一氏の著作にも同じ印象を持っている)

...以上のような経緯があり
この人が訳す本は面白いと認識している。そして実際今回も期待以上に面白かった。この本にこめられたカールセーガンさんの気合いと根気強さには驚くばかりだった。

懐疑的な精神を培うことは民主主義的な思考と矛盾しない。むしろ大切なことのようだ。加えて、もしもあなたが今なお数学や科学に対して文学や音楽に対するのと同じような興味や関心を抱けないでいるのなら、それはあなたの人生にとっても人類の歴史にとってもマイナスでしかない、とカールセーガンさんは言っているんだと思う。たとえこの本を手に取る人が何歳であろうともそんなことは全くおかまいなしに、知るとは科学的とはどういうことかについて改めて立ち止まって考えるべき機会を全ての読者に与えてくれると思う。愚かな権力者に対してストッパーとして役割を果たせるのは、結局1人1人の科学的な視点およびその総体なんだろうと思った。

nationalgeographic.co.jp

怠惰への讃歌-1

怠惰への讃歌 / Bertrand Russell / 平凡社 / 978-4-582-76676-9

新聞の書評欄に紹介されていたのを読んで(確か10月半ばあたり)珍しく素直に購入してみた。第四章まで読んだ

この本は、平凡社から2009/08/10 付けで出版されたものだが本の最初のページに 「1958年に角川文庫から刊行されたもの」だと記されている。作者のバートランド•ラッセル氏は数学者としても知られている人。

第1章 1932 年
第9章 1929 年
第10章 1930 年
第11章 1933 年
第13章 1928 年
第15章 1928 年

とあり1928年から1933年のあいだに書かれたもののようだ。

第一章で1日4時間労働説を読んだ。これにはちょとしたカルチャーショックをうけた。この説はたとえこの本に興味がない人でも知っていて損はないと思う。
そして、それにもまして興味深かったのが下記。

p.72

この気狂いじみた状態に対し、気狂いじみた解決を考えついた。ドイツに、ドイツが支払わなければならないものは何でも貸すときめたられたのである。
連合国が結局いいわたしたことはこうである。「私たちは、賠償をお前らから免除してやるわけにはいかぬ。というのは、それはお前たちの犯した罪悪に対する正当な罰であるからだ。さてまた、私たちは賠償を支払わせるようにしてやることはできない。そうすると、私たちの産業を破壊するからである。それで、私たちはお前たちに金を貸そう。そして私たちが貸したものをお前たちが返却するようにさせよう。この方法によると、原則は守られて、しかも私たちに損害はないだろう。お前たちに及ぶ損害についていえば、それをただ後まわししようと考えているだけだ」。だがいうまでもなく、この解決は、その場限りのものにすぎなかった。...


これはひどい話だと思った。

「インフレーション」という単語をガッコーのキョーカショではじめて目にした時、大量のお札を荷車にのせてそれを引っ張る老婆の白黒写真がそのかたすみに掲載されていたと記憶している。その写真の人はドイツ人だと習った気もする。その程度のことであとはほぼ忘れてしまっているんだけども、ここを読んでへぇーそんなことだったわけ?とちょっと驚いてしまった。ドイツに多額の賠償を負わせた。としか私は認識していなかったから。

p.74

私たちの不幸のもととなったしどろもどろの考え方は、消費者の立場と生産者の立場、もっと正しくいうなら、競争する組織の中の生産者の立場との間に起こった混乱である。賠償がドイツに課せられると、連合国は、自分たちを消費者だと思いこんだ。即ちドイツ人の生産したものを消費することができるのは、いい気持ちだろうと考えた。ところが、ヴェルサイユ条約が結ばれてしまって、彼らが俄に気がついたことは、自分たちも生産者であり、自分たちが求めているドイツの品物が流れ込むと、自分たちの産業が亡ぶだろうということだ。彼らは非常に困ったので、途方にくれ頭をかきはじめたが、何の役にも立たなかった。連合国側は一緒に集まって頭をかき、それを国際会議といってみても何にもならない。正直なところ、世界の支配階級が甚だ無智、愚かであるから、かよな問題を考えぬくこともできず、また甚だ鼻柱が強いから、彼らを助けようとする人々から注意をしてもらおうともしなかった。


え!...。ヴェルサイユ条約についてこんな風に書いてある文章には初めておめにかかった。これがある程度事実に即しているのならば連合国側は相当子供ぽいというか「あなたいくつですか」よばわりされても不思議じゃない程の愚行を行ったことになる。国際会議つったって商店街のおじさんたちの井戸端会議と大差のないような代物だったということにもなる。いや商店街のおじさんたちの方がよっぽど優秀だろうから大差はあるかな。これじゃたまらない気持ちになるし、これが歴史だと思いこまされてきたいくつかのことは詭弁だったのかと疑いたくなってしまう。

戦争がなぜ起きたのかを解説する本はたくさんあるし、何が事実で何が事実でなかったのかをできるかぎり正確に見分けようとするのは結構大変なことなんだけども、だからといってそれは永久に知ることができないものだと決めてかかるのもおかしな話だと、あらためて思ったりもした。

Black Swan

ブラック•スワン[上] / Nassim Nicholas Taleb / ダイヤモンド社 / 978-4478-00125-7
ブラック•スワン[下] / Nassim Nicholas Taleb / ダイヤモンド社 / 978-4478-00888-1
を読んだ。

上巻p.285

ある時...政治オタクを前に話をした。私たちは未来を正しく考えられない、いいかげん思い知れと言って、私は彼らに噛みついた。
お客は縮み上がって黙っていた。私はお前らの信じていることも、やっていることも全部間違いだと言ったのだ。私のほうは自分の客観的な主張に酔っていた。
...宗教会議に集まった枢機卿たちを前にした好戦的な無神論者みたいな気分だった。

とある。

この文章で上巻1冊の全てが言い尽くされているように思った。(ええ、そうですそうです。人は要約が大好き。)残りのページはこの文章を裏付けるための具体例に全て費やされているだけのような気がした。

上巻を読み終えて下巻を買ったことを後悔することってめったにないんだけどもそういう点で珍しい本だった。

読みながらストレスを感じることもあった。たとえば

p.134
私たちが、講釈に陥りがちな大本の原因がある。これは心理的なものではない。むしろ情報の溜め込みや読み込みを行う仕組みが及ぼす影響にかかわることである。確立論や情報理論の根本的な問題だと思うので、ここで説明しておくのがいいだろう。
第一の問題は、情報を手に入れるのにはコストがかかるという点である。....
第二の問題は、情報は溜め込むのにもコストがかかるという点である。...
第三の問題は、情報は複製したり取り出したりするのにもコストがかかるという点である。


とあって
情報理論学の根本的な問題として上記の3つが当然のように書かれてあるんだけども、はたしてそれは誰が言ったことで誰がとりあげていることなのかといった文章がない。情報理論を指さした以上はどういったところでそれが提唱されているかなど書かれるべきだと思うんだけども、そういった最低限の情報はこのページのどこにもない...。ない。

ここで述べられている「コスト」というのは例えばインターネットを使用する上で必要な電気消費量や電線であったり、10年以上前だったら古本屋をうろうろできるだけの脚力や電車代や気力がコストともいえるんだろう。いずれも「コスト」という変数におさまるべき値と想像できる。値が時代の変化によっていかに変化しようとも、情報を手に入れるためにはコストが必要なことにかわりはない。

といった考えをめぐらせ...p.134からp.136で作者が情報理論をとりあげてまで何を伝えたかったのか読み取ろうとしたが、私には困難だった。

この本の最初の方にこの本はエッセイだと述べられているので(上巻p.18)こういったストレスを感じる度に「ああそういえばこの本はエッセイでしたね」といちいち思いだす必要が生じた。

ということで、下巻はざぁーっと流し読みした。
印象に残った箇所としてあげるとすれば、p.63,p.64にあるバートランド•ラッセルの言葉の引用。だが、なんという著作物からの引用なのかは記されていない。これが本当にラッセルの言なのかすら確かめようがない。と思ったら下巻に参考文献一覧がありアルファベット順に人物名とその著書名があった。ラッセルの欄をみると3つの書物の名前が記されてある。けれどもp.63あたりの引用はこの3つのうちのどれからの引用なのかは明記されていない。はて...。

そしてもう一つ印象に残った箇所は
p.87

私はアップルのマッキントッシュを使っている。以前は、長年マイクロソフトの製品を使っていた。アップルの技術のほうがずっといいのに、質の悪いソフトウェアのほうが結局勝っている。どうして? まぐれのせいだ。

だった。

私もまぐれだと思っている。けれども実際に「まぐれだったのかどうか」は私がまぐれだと思うこととは全く「別」のことなんだと一般人の常識程度に理解しているつもり。おそらく、このような私の考え(別物だってこと)は、ナシーム•ニコラス•タレブ氏の主張する「人間は予想以上にバカだ論」とどこまでも交わることがない平行線なんだろうと思われる。

エッセイはそれをまに受けるか受けないかなんてことを考えながら読むべきもんじゃなく余韻を楽しんで読むべきなのですが、とても残念ながらこのエッセイは楽しんで読むには適していないようにみうけられました。

くちなおしとして
悪霊にさいなまれる世界 上 / Carl Sagan / 早川書房 / 978-4150503567
悪霊にさいなまれる世界 下 / Carl Sagan / 早川書房 / 978-4150503574

を読み直すのは有効。

2009/10/09

hash.nil? or hash.empty?

ハッシュが nil または empty だったら、error を返す一行の書き方をすぐに思い出せなかった。
基本に立ち返るべくテスト。

  1 # coding: utf-8
  2 
  3 def aa(h)
  4   p h
  5   return puts "error\n" if h.nil? || h.empty?
  6   return puts "ok\n"
  7 end
  8 
  9 h = Hash.new
 10 aa(h)
 11 
 12 h = nil
 13 aa(h)
 14 
 15 h = {:a=>'a'}
 16 aa(h)


テストして気付いた。5行目のところをついつい
return puts "error\n" unless h.nil? || h.empty?
と、書いてしまってたことに。どおりで一瞬ぎょっとする結果になるわけだわ。

でもよくみていたら「あっ」と思った。
hash は、nil を返すのかempty を返すのかは、最初からはっきり決めておくべきなんであって

... if h.nil? || h.empty?

なんて書かなくてよいようにメソッドを作るべきなんだ。
つまり

return puts "error\n" unless h


return puts "error\n" if h.empty?


どちらかしかありえないようにすべきなんだろう、と。
empty の場合もあれば nil の場合もありうるなんてことは回避した方が安全でわかりいい。

...そういえば、以前にもこの結論に至ったことを思い出してしまった。がっくり。