土曜日, 8月 27, 2011

「小さな哲学者たち」という映画を見てきた

小さな哲学者たちというドキュメンタリー映画を見てきた。
これは、フランスはパリ近郊のZEP(教育優先地区)の幼稚園で行われた、3歳から5歳の子供に向けてなされた哲学の授業の様子を追いかけたドキュメンタリーで、原題は「Ce n'est qu'un début」。日本語だと「これは始まりに過ぎない」という意味になるみたい。
(ガンダムF91のラストの字幕のようだけど、全く関係ない)

哲学の授業といっても、哲学史ではなく、愛とは何か、死とは何かといった内容を、子供たち同士が意見を言い合い、互いの言葉に耳を傾け、時に反論し、時に賛成する。そういう態度を身につけさせるものらしい。話し合いだけでなく、それをフォローするように、テーマに沿った絵を描いたりもするらしい。

その一番最初の授業では「大人と子供の違い」について先生が質問することで始めるのだけど、しばらくすると子供たちは黙りこんでしまう。それだけでなく、まったく関係ない話を先生に語ろうとしたり、隣の子とおしゃべりしたりと、授業の体を為さないまま終わってしまう。
ZEPとされる地域は「恵まれない」とされる家庭が多く、また移民(二世も含む)の家族が多い土地で、教育レベルが高くないところだそうだけど、3歳児の教育レベルなんて、どこだろうとこんなものだろう。3歳の頃の自分にこの質問をしても「大きいのが大人で、小さいのが子供」以上のことは言えないと思う。先生は「大人がやっても良くて、子供がやってはいけないこと」は何か?とか、大人目線で見ればうまい質問をして、子供が考えるのを助けるのだけど、それでもやっぱり難しいらしい。

それでも何回か授業を繰り返すうちに、自分や家族の実体験を元に具体例を提示した上で、「だから○○と思う」という議論の下地のような物を子供たち自身が獲得していく。子供の体験した事なので、提示される例は「チョコレートを出しっぱなしにしたから溶けちゃった」とか「お父さんとお母さんが喧嘩したけど、最後は謝っていた」みたいにささいだけど、ものすごく具体的。
それと小さくても流石フランス人というべきか、女の子が好きな男の子と一緒にいる絵を描いていて、それを見たその男の子が「君とはもう別れたんだからそんな絵を描くな」と言ったりとか、子供たちの恋愛絡みの光景が多く映されている。知らないだけで日本の子もそんな感じかも知れないけど。

印象的だったのは、ある女の子が障害を持った父親の事を「お父さんは自分で歩けないけど、自分で動ける」「自分とは違うけど同じ」と矛盾した言い回しで語っているシーン。他の子たちは、この矛盾を追求するのだけど、女の子はそれにきちんと応答しようと試み、最終的に「障害があるとしても、そのままのお父さんが好きである」事を表明する。矛盾の追求に対する回答にはなっていないのだけど、おそらくその子にとっては、矛盾の解消以上に重要なことに辿り着いたのだと思う。

もう一つ印象に残ったのは、子供たちの多くが「自由」というものは一人で出歩く事であるという意見に同意していたこと。さらに大人が子供を「自由」に歩かせないのは、子供を守るためであることをきちんと認識していること。自分たちが「自由」で無い理由は、大人たちが守ってくれているからという事を理解しながらも、柵を乗り越えて怒られた子供の話や、旅行に行った子が滞在先の家から一人で海まで歩いたことを自慢気に話すのを、わくわくした顔で聞き入っているのが「移動の自由」の原点を表しているようで、微笑ましくも頼もしい。

また、子供たちは哲学の授業から「愛」や「死」といったテーマを持ち帰り、家庭内でも思考が連続していく。両親とも一緒にテーマについて語り、両親もそれに応答していく。幼稚園だけでなく家庭も含めて思考する態度が訓練されていく様子が分かる。

哲学というと抽象的で、虚学の総本山という印象があるけれど、この映画で、様々なバックグラウンドを持つ子供たちが、暴力ではなく言葉と思考によって、相手を説得する態度を学んでいく様子を見ると具体的で実践的なツールとして哲学を使うことが出来るのだと言うことがよく分かる。
移民が多いという背景により「単純な一つの道徳」が暴力に成りうる土地、国において、まずなされるべき対話(これすら暴力かもしれないが、少なくともマシな暴力だ)を構築する上で、哲学の授業が有効に機能している。

私が見た回では、上映後トークショーがあって、移民が少ない日本ではこのような授業の要請はまだ少ないと語られていたけど、例えば北海道と沖縄の子が遠隔で対話するような哲学の授業というのは潜在的に要求されているのではないかと思う。

道を聞かれた 新宿

西新宿のあたりで、初老の女性に十二庵?という場所が無いか聞かれた。
聞いたことが無かったので、知りませんと回答。
他の人にも聞いていたようだけど、他の人も心当たりが無さそう。

後から調べるとニューオータニのあたりに、そういう名前のお店があるらしい。
確かに、あのあたりのお店に行きそうな上品なお金持ち風の格好だったけど、無事辿りつけただろうか。

土曜日, 5月 28, 2011

正規表現 幅ゼロ先読みでよく間違えるのでメモ

正規表現で、いつも混乱するゼロ幅先読みについてメモ。
整理せず思考過程をそのまま記述する。

まず確認として、ゼロ幅とか気にしない正規表現。
具体例が合ったほうが分かりよいので、以下の仕様で考える。

1) aとzだけが使われる
2) 文字列の長さは3以上、10以下

これにマッチする正規表現は^[az]{3,10}$である。ここまでは問題ない。
次に以下の仕様を追加する。

3)zは連続して3つ以上ならんではならない

連続した3つ以上のzとマッチする正規表現は、z{3,}なので、これを幅ゼロ否定先読みしてやればよい。
そして、こう間違える(?!z{3,})^[az]{3,10}$。(※)
この書き方では、zzzaは確かにマッチしないが、aaazzzaaaにはマッチしてしまう。

なぜなら、正規表現のカーソルはマッチした文字列の後ろに移動してしまうから。
aaazzzaaaの場合、文字列の先頭(最初のaの直前)で3連続以上のzを探した後、aaazzzaaaにマッチして、カーソルは文字列の最後に移動してしまう。

正しい正規表現はこうなる(?![az]*z{3,})^[az]{3,10}$
否定先読みの中身だけ取り出すと[az]*z{3,}。つまりaかzが先頭に0個以上あって、その後でzが3つ以上並んでいるかどうかを調べている。

なんで、※のような間違いに至るかについて、自己分析してみる。
人間が文字列を検索するときは基本的に頭から順番に一文字ずつ、対象の文字列と合っているかどうかを調べていく。
対して、正規表現は与えられた個々の正規表現単位で合っているかどうかを調べていく。
aaazzzaaaを^[az]{3,10}$と表す場合、aaazzzaaaで一つの「文字」であり、aaaやzzzという「文字」は存在していない。
この違いを忘れて、人間の検索戦略をそのまま正規表現での検索に当てはめてしまうところに、間違いの原因がある。

ところで、人間であっても実際には正規表現と似たような調べ方を行っている。
例えば「時」という漢字は「日」「寺」に分けられるが、人間が「時」という文字を検索するとき(書体の影響もあるとはいえ)、「日寺」という文字の並びとはマッチさせない。
とはいえ、あえて「時」と「日寺」をマッチさせるような遊びも楽しいのだけど。

金曜日, 3月 11, 2011

かわいいPS1

TwitterでTerminalともっと仲良くなりたいという人と話していて、プロンプトをかわいくすれば仲良くなれるかも、と思ってやってみた。

bashrcでPS1="\w\n(・ᴗ・)?"と設定。
kawaii PS1

水曜日, 12月 01, 2010

道を聞かれた 2010 師走

小学校までの道のりを聞かれた。
私は知らないが、嫁が知っていたので伝える。
だいぶ分かりづらいと思うのだけど、たどり着けただろうか。

ほとんど外出しないので、本年最後の「道を聞かれた」になるはず。

木曜日, 11月 25, 2010

IBM developerWorks Japan 最優秀www大賞受賞感想

IBM Web Award 2010:「最優秀www大賞」を受賞だそうです。

この記事を紹介するツイートがあったので、
真面目な賞なんだろうけど何故か小馬鹿にしている感じがする。本文はまだ読んでない “@dW_Japan: 編集長ブログ更新:『IBM Web Award 2010:「最優秀www大賞」を受賞』 http://bit.ly/giJJ5W

http://twitter.com/#!/kameturu/status/7671097809969152

こんな茶々を入れたら、
本文をお読みになって是非ご感想をお寄せください(dW Japan編集長より) @kameturu: 真面目な賞なんだろうけど何故か小馬鹿にしている感じがする。本文はまだ読んでない

http://twitter.com/#!/dW_Japan/status/7673367763091456

こんな返答が。
すみません。どっちが小馬鹿にしているんだって話ですよね。

というわけで読みましたので、その感想。
まずはおめでとうございます。

さて、他のノミネートサイトが分からないので、他のサイトとの比較は出来ないのですが、外から見た場合この賞をdwが取ったというのは順当なように思います。むしろ他に思いつくサイト、ページが無い。
僕のWeb生活上、他のIBMのページは検索にひっかかったついでに見る程度だけど、dwについてはfeedを購読しているし、後で読もうと思ってブックマークだけしているページは数知れず。
たしかdwを定期的に更新されるサイトとして認知したのは、Pythonを覚え始めた頃で、David Mertzさんの記事をむさぼる様に読んでいた記憶があります。

編集長さんの今回の記事に『優秀な翻訳ベンダーとの協業により Contents Quality を高く維持できていること。』とあるのだけど、確かに古い記事は自動翻訳のような不自然な訳が目立っていたけど、段々と普通の訳になっていったように思います。しかも、何年か前までは、翻訳されるスピードが遅くて「これなら英語版を直接読んだ方が速いなあ」と思っていたけど、一年ぐらい(?)前から、物凄い速さで訳されるようになって、英語版を後で読もうと思っていたら、次の週には日本語訳が出来ていたりなんてザラにあったり。
本当に優秀でありがたいです。

一方で『ソーシャル化』ってのはちょっとピンと来なかったり。サインイン出来ることは知っているけど、その利点が今一つかめなかったり。とはいえ、これはネガティブな点ではなくソーシャル機能なんてなくても「読むサイト」としてのクオリティが高いという証左なのだと思います。

感想からどんどん離れていってしまいますが、dw「Japan」に対する要望としては、「Japan」独自の記事をもっと読みたいなあと、いつも思っています。具体例が思い浮かばないのですが、日本発の情報というものもきっといろいろあるんじゃないかと。英語サイトも平行して読んでいると、あの記事の翻訳だなという事がほとんどで、驚きがあまりなかったり。テクニカルナイトの報告記事だけでもあると楽しいのにと思います。

なんのかんの言っても、毎週金曜の更新を楽しみにしている人は、多いはず。
dw編集長、担当の皆さん、今後も楽しい記事を楽しみにしています。



おまけ

毎週チェックしているわけじゃないけど、僕がIBMのサイトで他に良く見ているところ
Design @ IBM

土曜日, 11月 20, 2010

gofmtをvimで簡単に使うためのスクリプト

Go言語は、推奨コーディングスタイルがあります。
とはいえ、実際に書くときにはあまり細かく気にする必要はなく、gofmtというGo言語をインストールするとついてくるフォーマッタを通してやれば、推奨スタイル通りに整形してくれます。
これを随時実行したいので、vimスクリプトを書いてみました。
都合上、フォーマットをかける前に、ファイルを保存します。

function! Gofmt()
:w
python << EOF
import vim
import subprocess

cb = vim.current.buffer
cursor = vim.current.window.cursor
p=subprocess.Popen(
['gofmt', cb.name],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=True)
returncode=p.poll()
if not returncode:
err = p.stderr.read()
if err != None and err == '':
del cb[:]
cb.append(p.stdout.readlines(), 0)
else:
print(err)
vim.current.window.cursor = cursor
EOF
endfunction