2008年12月28日日曜日

そういう風に見えますか

アマゾンから届いた大量の段ボール箱をゴミ捨て場に運んでいたときのこと。

「ちょっとあなた、うちのゴミも捨てておいてくれない?」

同じ階に住む白人女性に声をかけられた。初めて見る顔だが、苦労を知らずに育ったお嬢様という雰囲気である。それがゴミを運べとおっしゃる。

お嬢様というものは初対面の隣人だろうと遠慮なくこき使うものらしい。むっとしたが、聖書には「隣人を愛せよ」とある。レディーファーストの国アメリカに住んでいるのだから仕方がない。いいですよ、と答えて隣人の敷居をまたいだ。

家具でも買ったのだろうか、大人が3人は入りそうな梱包材が部屋の入り口に放置されていた。ゴミ捨て場まで5往復で足りるかどうかという量だ。軽そうな紙束が大量にあったのでそれから取りかかる。隣人の彼女はといえば、手伝いもせずに靴のカタログを眺めている。当方はまたむっとする。

特大の段ボール箱を部屋から運び出そうとすると、彼女が一言。

「廊下に傷をつけると困るから箱をつぶしてから出してね」

なんの因果で師走の一日をこういうことに費やさねばならぬのだろうか。レディーファースト、レディーファーストと自分に言い聞かせながら黙々と作業をする私。箱を分解するのに工具があれば助かるんですけど、と言ったら

「そんなものないわ」

と一蹴。No such thingですかそうですか。自分の部屋に取りに帰ってまた作業続行。手が痛い。

30分以上かけてお嬢様のゴミをすべて運び出して差し上げた。この彼女、一度も手伝わないものだから気分がかなりブルーになり、すごすごと帰ろうとしたそのとき、

「これ持って行って」

なぜか10ドル札を手渡された。ああ、この人、勘違いしているな、とわかったのはこのときだ。私はただの隣人ですからチップは不要ですよ。彼女にそう伝えた。

「ええっ! アパートメントの掃除夫の人だと思っていました。ごめんなさい。私の名前はA子。あなたは?」

さっきまでの仏頂面からはうってかわり、いきなりフレンドリーになった。だからといって私の心の傷が癒えるわけではない。

◇ ◇ ◇

こういう話もある。

お手製の弁当を袋に入れて仕事場に向かっていると、

「ちょっと、メニューもらえる?」

と言われた。意味がわからずぽかんとしていると

「ランチのデリバリーの人じゃないの?」

いえ、これは私のお弁当ですと言うとその人はお詫びをしつつ去って行った。ちなみに自宅の近所で弁当屋に間違えられたことは3回もある。

◇ ◇ ◇

職業に貴賤はないというしこういうことを言うのは気が引けるが、掃除夫とか弁当屋とかそういった職業の人に間違われることが多いのである。日本にいたときはこんなことはなかった。私の顔がそういうふうにできているのか、それともなにか人種差別的な何かなのだろうか。

2008年11月26日水曜日

日本人のビザは出せません

ニューヨークには外国人差別がない、と言い切ったら過言というものだが、病院や図書館など公共の場所で国籍を問題にされることはない。ここアメリカで外国人として生きていくには居心地の良い都市である。居心地が良すぎて自分が外国人であることを忘れそうになるが、足元をすくわれることもある。

それは中東と西アジアに行く準備をしたときのことだった。

中東A国の場合

石油資本のおかげで建設ラッシュのA国。観光にも力を入れていて、日本人は入国の際にビザがいらない。ネットを見ても日本人の観光旅行記がたくさんみつかる。しかしガイドブックには「ビザの件は流動的なので大使館に確認すること」とも書いてある。

そういうわけで、念のためにA国の出先機関に問い合わせてみた。ところが「日本人だからビザはいらないですよね?」というだけの要件のはずが長電話になってしまった。

A国の係員「アメリカに住んでますか?」

日本のパスポートを持ち米国ビザでアメリカに滞在しています、と説明。滞在年数を聞かれた後、

A国「あなたは日本のパスポートを持っていても状況が若干特殊なのでビザを取ったほうがいいでしょう」

ではすみませんがビザの手続方法を教えてもらえますか。

A国「いえ、ここでは日本人用のビザは出せません」

なんと。

A国「現地の空港に到着したときに到着ビザを取ってください。A国人の書いた招聘状が必要になりますから滞在先のホテルにあらかじめ書いてもらって、それを入国係官に提出してください」

……。

結局面倒になり、A国に行くのはやめてしまった。

西アジアB国の場合

西アジアのB国。発展を続けてはいるものの、他の西アジアの国と同じく観光の目的地としては一般的でない。日本人がB国に入国するにはビザが必要である。ビザの有効期間は数か月から10年まであるが、今回は5年のビザを申し込んでみた。

ビザを申し込みしてから数日、ビザの手配を頼んだ旅行社から電話がかかってきた。

旅行社「5年のビザは無理ですねー」

特に制限はなかったはずだが、と思っていると

旅行社「あなたの場合アメリカに住んでいる日本人なので、通常のアメリカ人や日本人に比べて制限が厳しくなります」

ううむ、ここでもか。

旅行社「1年ビザなら出ますので、また必要になったらビザを取り直してください」

注釈

蛇足ながら真面目な話を書いておくと、上記の話は理由のないことではない。

A国のように、ビザ申請者(私)が国籍のない国(アメリカ)でビザを取得できないのは特別なことではない。在アメリカA国領事の仕事はアメリカ人の入国資格を審査してビザを発給することであり、日本人は審査不可能と言われても仕方がないのだ。日本にあるA国大使館に行ってください、と言われないだけまだましというものである。B国も同様で、期間が短縮されたもののビザを発給してくれたのには感謝するべきだと思う。

それにしても、自分が外国人であることを認識したのはひさしぶりだった。

2008年11月23日日曜日

Perl 6超入門(その3)Perl 5との基本的な違い

Perl Seminar NYという集まりでPerl 6の文法をおさらいした。会場で習ってきたことをインストールしたてのPerl 6を使って自分で試してみる。

まずはバージョン表示

% ./perl6 -v
This is Rakudo Perl 6, revision 0 built on parrot 0.8.1
for darwin-thread-multi-2level.

Copyright 2006-2008, The Perl Foundation.

%

文字列連結

Perl 5の「.」は「~」になった。メソッド呼び出しが「obj->method()」から「obj.method()」になったため。

Perl 5

my $x = 'a';
my $y = 'b';
print $x . $y; # abを表示

Perl 6

my $x = 'a';
my $y = 'b';
say $x ~ $y;

三項演算子(条件演算子)

「条件 ? 正の場合の値 : 偽の場合の値」という書き方はCからの伝統だったが、「条件 ?? 正の場合 !! 偽の場合」になった。

Perl 5

my $x = 1;
print $x == 1 ? 'yes' : 'no'; # yesを表示

Perl 6

my $x = 1;
say $x == 1 ?? 'yes' !! 'no';

配列に対するx演算子はxx

Perl 6

my @array = (1, 2, 3);
my @longarray = @array xx 3;
say join',', @longarray; # 1,2,3,1,2,3,1,2,3を表示

ジャンクション

Perl 6

「3」は「1または2または3」にマッチするので「yes」を表示する。

if (3 == (1 | 2 | 3)) {
say "yes";
}
else {
say "no";
}

「1かつ2かつ3」にはマッチしないので「no」を表示する。

if (3 == (1 & 2 & 3)) {
say "yes";
}
else {
say "no";
}

その他

エラーメッセージが(まだ)不親切。セミナーの会場でもエラーメッセージがわからずにみんなではまった。

たとえば、これを見せられて「=」ではなくて「==」にしなければいけないんだな、とわかるのは無理だ。ドキュメントの整備はこれから行われるとのこと。

% ./perl6 -e 'say "yes" if 3 = (1|2|3)'   
Method 'lvalue' not found for invocant of class 'PAST;Val'
current instr.: 'parrot;PAST;Compiler;as_post' pc 2924 (src/PAST/Compiler.pir:742)
called from Sub 'parrot;PAST;Compiler;if' pc 3461 (src/PAST/Compiler.pir:934)
called from Sub 'parrot;PAST;Compiler;post_children' pc 1783 (src/PAST/Compiler.pir:368)
called from Sub 'parrot;PAST;Compiler;as_post' pc 2060 (src/PAST/Compiler.pir:500)
called from Sub 'parrot;PAST;Compiler;post_children' pc 1783 (src/PAST/Compiler.pir:368)
called from Sub 'parrot;PAST;Compiler;pirop' pc 3061 (src/PAST/Compiler.pir:796)
called from Sub 'parrot;PAST;Compiler;post_children' pc 1783 (src/PAST/Compiler.pir:368)
called from Sub 'parrot;PAST;Compiler;as_post' pc 2408 (src/PAST/Compiler.pir:614)
called from Sub 'parrot;PCT;HLLCompiler;compile' pc 434 (src/PCT/HLLCompiler.pir:303)
called from Sub 'parrot;PCT;HLLCompiler;eval' pc 868 (src/PCT/HLLCompiler.pir:502)
called from Sub 'parrot;PCT;HLLCompiler;command_line' pc 1450 (src/PCT/HLLCompiler.pir:774)
called from Sub 'parrot;Perl6;Compiler;main' pc 16140 (perl6.pir:168)
%

関連記事

2008年11月22日土曜日

Perl 6(Rakudo Perl)をインストール

Perl 6の実装は複数あり、PugsRakudo Perlが有名である。今回は手もとのLeopardでRakudoを試してみる。

ダウンロード

CPANで最新版のParrotをダウンロードする。MacportsにもParrotはあるが、月一度のリリースに追いついていないのでCPANを使ったほうがよいようだ。

展開

% tar zxvf parrot-0.8.1.tar.gz 
parrot-0.8.1/CREDITS
parrot-0.8.1/ChangeLog
parrot-0.8.1/Configure.pl
parrot-0.8.1/DEPRECATED.pod
parrot-0.8.1/DONORS.pod
parrot-0.8.1/LICENSE
parrot-0.8.1/MANIFEST
parrot-0.8.1/MANIFEST.SKIP
parrot-0.8.1/MANIFEST.generated
parrot-0.8.1/META.yml
parrot-0.8.1/Makefile.PL
parrot-0.8.1/NEWS
parrot-0.8.1/PBC_COMPAT
parrot-0.8.1/PLATFORMS
(略)
parrot-0.8.1/tools/util/templates.json
parrot-0.8.1/tools/util/update_copyright.pl
parrot-0.8.1/xconf/samples/testfoobar
parrot-0.8.1/xconf/samples/yourfoobar
%

コンパイル

LeopardだとXcodeが必要。

% cd parrot-0.8.1
% perl Configure.pl
Parrot Version 0.8.1 Configure 2.0
Copyright (C) 2001-2008, The Perl Foundation.

Hello, I'm Configure. My job is to poke and prod your system to figure out
how to build Parrot. The process is completely automated, unless you passed in
the `--ask' flag on the command line, in which case I'll prompt you for a few
pieces of info.
(略)
Okay, we're done!

You can now use `make' to build your Parrot.
After that, you can use `make test' to run the test suite.

Happy Hacking,
The Parrot Team
%
% make
Compiling with:
xx.c
(略)
-L/Users/mint/tmp/parrot-0.8.1/blib/lib -L/Users/mint/tmp/parrot-0.8.1/blib/lib -lparrot -lm -lgmp -lreadline -framework OpenGL -framework GLUT -lcrypto -lintl -undefined dynamic_lookup -L/opt/local/lib
%
% make test
Compiling with:
xx.c
(略)
Test Summary Report
-------------------
t/stm/runtime.t (Wstat: 256 Tests: 5 Failed: 1)
Failed test: 4
Non-zero exit status: 1
Files=396, Tests=11657, 367 wallclock secs ( 3.43 usr 2.24 sys + 169.59 cusr 70.23 csys = 245.49 CPU)
Result: FAIL
make: *** [test] Error 1
%

失敗するテストもあるが気にしない。

% ./parrot -V
This is parrot version 0.8.1 built for nojit.
Copyright (C) 2001-2008, The Perl Foundation.

This code is distributed under the terms of the Artistic License 2.0.
For more details, see the full text of the license in the LICENSE file
included in the Parrot source tree.

%

コンパイル完了。実行可能なParrotのバイナリができる。

Perl 6をビルドするのは簡単で

% make perl6
make -C compilers/pct
make[1]: Nothing to be done for `all'.
(略)
perl -MExtUtils::Command -e cp languages/perl6/perl6 ./perl6
perl -MExtUtils::Command -e ExtUtils::Command::chmod 0755 ./perl6
./perl6 -e"say 'Hello, world.'"
Hello, world.
%

こうするとperl 6のバイナリもできる。最後のところで「Hello, world」を実際にPerl 6で実行している。

「make reallyinstall」をすると/usr/localにParrotがインストールされる(perl6は自動でインストールされない)が、遊んでみるだけなら自分の作業ディレクトリで十分である。

関連記事

2008年11月19日水曜日

iPhoneの修理代金は199ドル

前に書いたとおり、昨年に399ドルで買った旧型iPhoneがこわれた。そこで、修理見積もりをしてもらいにアップルストアに行ってきた。新しくて好きなWest 14th Street店である。

日本のアップルストアと同様Genius Barというシステムがあって、ジーニアスという係の人がトラブルの相談に乗ってくれる。午前中にでも行かない限り予約はまず必須なので、オンラインで予約する。

予約の当日。指定の時間に5分だけ遅れて到着したら20分待たされた。何たる仕打ちかと思ったけれど、iMacがたくさん展示されているし(子供がゲームで遊んでいた)、壁の大画面にOS Xの便利な使い方のビデオが流されているのでMac初心者の私は退屈しない。「mp3が1曲だけ音量が大きく聞こえる。そういうときはiTunesで補正しよう」ふむふむ。そうこうするうちに係の人と面談。30代ラテン系男子。毛深い。

私「iPhoneのマナースイッチがこわれたみたいなんですけど」
係「接触が悪くなってますね」
私「保証期間が切れてるんですけど、修理代はいくらですか」
係「199ドル+税金です」
私「部品を交換するんですか」
係「内部の部品はそのままにして、液晶ガラスを含め外側を全部交換です」
私「考えてみます」

399ドルで買ったiPhone。199ドルで見た目が新しくなるのならお得のようにも思える。しかし、199ドルというのは新しい3GのiPhoneにアップグレードするのと同じ価格である。これだと誰でも3Gの新しい電話を買うだろう。それがアップルの狙いなんだろうけれど。

一つだけ気になるのは、外側が新品、内側が旧式というiPhoneの具合である。3Gのケースで中身が2Gなのだろうか。だとすると話のタネにひとつほしい気はする。

関連記事

2008年11月13日木曜日

MacのFirefoxが「Stuffit Expanderで開く」というありえない選択肢を出してくる

前から少し不思議に思っていたことがある。FirefoxでZIPファイルをダウンロードすると、こういう画面が現れる。

StuffIt

一見なんの不思議もない画面だ。「このファイルをStuffIt Expanderで開きますか、それとも保存しますか」というのはごく自然な言い方である。StuffIt Expanderがインストールされていさえすれば。

私のLeopardはインストール時からあまりいじっていないのでStuffIt Expanderなんてものは入っていない。現に「StuffIt Expanderで開く」を選んでも、OS標準の解凍ソフトウェアが立ち上がる。

では、どうして「StuffIt Expanderで開く」が出てくるのか。

ネットを検索していたら、同じことを考えている人がいた。

Bug 440041 – StuffIt Expander appears in "Open With" dialog box even if StuffIt has never been installed.

On a virgin OSX 10.5.3 install with firefox 3 (build noted in the Build Identifier field), downloading a .ZIP archive gives the option of "Open With" or "Download to." Among the options for "Open With" is "StuffIt Expander," a program which has never been installed on the machine.

「StuffIt Expanderはインストールしたことないのに、どうしてここに出てくるの」という内容。

残念ながらこのフォーラムでも未解決の問題で、

Has this been confirmed on a clean install of Firefox? A quick search shows:

http://mxr.mozilla.org/mozilla-central/search?string=stuffit

that we don't refer to StuffIt in our codebase at all.

「Firefoxのソースコード中にはstuffitという文字列がない、だからOS側でZIP→StuffItの関連づけがされているのに違いない」という主張。もっともらしく聞こえる。

しかし

If this is coming from the OS, the OS should behave similarly when attempting to handle this type of file. a .SIT file is a better example because OSX handles .ZIP files without a third-party app.

「OS側で関連づけがされているのだったら.SITファイルでも同じ挙動になるはずだ。しかしそうならない」という反論もある。

謎は深まるばかりだが、表示上の細かい問題なので原因をつきとめるだけの熱意がある人がいるかどうか。直るのには時間がかかりそうだ。

11月15日追記

鳥獣保護区」の方が丁寧に解説してくださった。スッキリ。

2008年11月11日火曜日

OS XでRARファイルを扱う

ファイルの圧縮解凍はZIPかLHAかbzip2か、のような不毛な論争は昔からあるけれど、今日はRARという形式のファイルを受け取った。「ここからRARファイルをダウンロードしてください」と言われたのだが、RAR形式のファイルなんて初めて受け取った。

MacintoshでRARを開くにはUnRarXStuffIt Expanderが定番らしい。が、ソフトウェアは一元管理ができるといいな、と思いMacPortsを見たらちゃんとunrarがあった。

% sudo port install unrar

としてインストール。ファイルの解凍は

% unrar x hoge.rar

とした。ちなみに、RARファイルのダウンロードが異常に遅かったのでダウンロードの途中で

% unrar -kb x hoge.rar

とすると不完全ながら中身を取り出すことができた。

関連記事

2008年11月9日日曜日

iPhoneがこわれました(ただし左上のスイッチ)

iPhoneがこわれた、といっても昨年買った2Gの携帯。3Gを買った今でも細々と使い続けていた。

会話ができなくなったわけではなく、側面左上にあるマナースイッチが動かなくなったのである。着信音が鳴らないマナーモードに切り替えようとしてもスイッチがグラグラして切り替えられない。スイッチが物理的におかしくなったらしい。

iPhoneにカバーもつけずに無造作に扱っていたからとはいえ、別に落としたわけでもない。Appleのフォーラムを見ると同じ問題をかかえている人もいる。→Apple - Support - Discussions - iPhone 3G Silent Switch Broken ...

あちこち検索すると、解決方法はAppleに持って行くか自分で直すかしかないようだ。自分で直すのはiPhoneを分解するということで、できれば避けたい。Appleに持って行っても保証期間が切れているので有償修理になる。

現実的な答えはマナーモードをあきらめてiPhone本体の寿命まで使いつぶすことだが、結構このマナースイッチは重宝していた。来る日も来る日も何度もスイッチを切り替えたからこわれたのだろうと言われると返す言葉もないけれど。

iPhoneの本体、特に液晶画面は衝撃に強い。落としたりしてもめったにこわれないようだが、スイッチの取り扱いには注意しましょう。

2008年10月28日火曜日

日本総領事館の対応は神レベル

用事があって日本総領事館に行ってきた。日本大使館はワシントンDCにあり、ニューヨークには総領事館がある。その総領事館の対応がすばらしすぎて感動した。

ビル1階の受付係が日本語ペラペラ

日本総領事館はビルの18階。ビル1階の専用受付で名前や来館理由を書く。この受付、「外人さん」が一人で切り盛りしている。前回に来たときは白人、今回は黒人。そして、この外人さんの日本語がものすごく流暢なのだ。「今日はどのようなご用でいらっしゃいましたか」という敬語をニューヨークの真ん中でそれも外人から聞くことになるとは思わなかった。日本語を話すとは思えないような顔つきをしているのだが、ひょっとすると私より敬語が使いこなせるかもしれない。

「外人さん」、つまり日本人とだいぶ見た目の違う外国人を受付に配置している理由はわからないが、「ここからは日本です、公用語も日本語です、職員も国籍に関わらず日本語です」という意思を感じる。

割り込む人に係員が注意

アメリカの役所で列に割り込む人がいても、役所の人は何もしてくれない。割り込まれた人が悪いのであって、割り込まれた人が自分で解決しなければならない。ところがここ領事館では、割り込んだ人に係員が「恐れ入ります、先の方がお並びですので」と注意していた。

アメリカは人民が動かす国、日本はお上が動かす国だからだ、と言い切ると話が大きくなってしまうが、意外とそういうことなのかもしれない。

用事が終わったら係のおねえさんが……

窓口で手続をする。必要な書類を受け取る。このとき、アメリカの役所だとこちらが「サンキュー」などといい、係員はそれには答えず「はい次の人」と言うのが普通である。ところが領事館は違った。

領事館の窓口で手続を終えた後、「どうも」と言って窓口を去ろうとすると、係のおねえさん、「ありがとうございました」と言って三つ指をついて挨拶された。

もちろん椅子に座っているため机の上に三つ指をつく略式の挨拶なのだが、人に三つ指をつかれたのは何年ぶりだろう。もう一生ないかもしれない。三つ指をつく女性を見学したくなったら領事館に行こう。

関連記事

2008年10月14日火曜日

LeopardでApacheを使う・お手軽入門編

LeopardにApacheが入っているのは話に聞いていたが、ちょっとしたAjaxのコードを試したくなりwebサーバを起動した。簡単ではあったがちょっとクセがあるのでメモしておく。

Apacheの起動

デスクトップOSなのに超簡単。

Leopardのシステム環境設定→共有のメニューに進み、「Web 共有」を「入」にする。

これだけで

http://localhost/

が見られるようになるのはすごい。

どうでもいいが「入」「切」って書いてある電気のスイッチを最近見ないような気がする。

トップページを書きかえてみる

なにもせずにhttp://localhost/を表示するとApacheにようこそ、みたいなページが表示される。このファイルの実態は

/Library/WebServer/Documents/index.html(またはindex.html.ja.iso2022-jpなど)

であるため、このファイルを適当に書きかえて保存すればよい。管理者権限が必要。

ちなみに、このディレクトリがどこで設定されているのかというと

/private/etc/apache2/httpd.conf

というファイルである。/privateというディレクトリは馴染みがない名前だが、Leopardでは/etcが/private/etcへのシンボリックリンクなので

/etc/apache2/httpd.conf

に設定ファイルがあると思ったほうが頭に入りやすい。

ともあれ、このhttpd.confの中のDocumentRootがそれである。

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"

設定を変えた後は必ず再起動

Apacheの設定を変えた後は必ずApacheの再起動をしなければいけない。上記の「入」「切」のスイッチを使って「切」→「入」としても良いが、ターミナルを使って

sudo apachectl restart

または

sudo /usr/sbin/apachectl restart

としたほうが簡単だ。

UserDir(ユーザディレクトリ)の設定

自分専用のLeopardならば/Library/WebServer/Documents以下のファイルを書き替えてテストを続けてもいいのだが、自分のホームディレクトリ下をブラウザで見られるようにしたほうが後の管理が楽である。URLは

http://localhost/~ユーザ名/

となる。この機能は初期状態のままだと使えないので

/private/etc/apache2/extra/httpd-userdir.conf

なるファイルを編集する。

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites
UserDir disabled
UserDir enabled ユーザ名

<Directory /Users/*/Sites>
Order deny,allow
Deny from all
Allow from localhost
</Directory>

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

の赤字部分を加えればよい。Apacheの再起動後、

/Users/ユーザ名/Sites/index.html

http://localhost/~ユーザ名/index.html

で表示できるようになる。

どうしてpublic_htmlではなくてSitesを使うようになっているのかはよくわからない。

CGIの設定

mod_perlもあるし今どきCGIもないだろうと言われると困るが、お手軽に設定をするのが本稿の目的であるために以下を書いておく。

CGIを使うためには、先ほどのhttpd-userdir.confを開き、以下のように編集する。

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir Sites

UserDir disabled
UserDir enabled ユーザ名

<Directory /Users/*/Sites>
Options ExecCGI
Order deny,allow
Deny from all
Allow from localhost
AddHandler cgi-script .cgi

</Directory>
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

Apacheを再起動した後、/Users/ユーザ名/Sites/hoge.cgiをテスト用に作って実行可能にする。中身はこんな感じにしておけばよい。

#!/usr/bin/perl
print "content-type: text/html\n\n";
print "Hello";

これで

http://localhost/~ユーザ名/hoge.cgi

にアクセスできるようになる。

もしブラウザ上に「Hello」が表示されない場合は、エラーログを見てみるとヒントがあるはずだ。エラーログは

/private/var/log/apache2/error_log

にある。

セキュリティ関係

蛇足ながら、テストが終わったらweb共有を切っておくほうが事故の防止になって良い。

2008年10月12日日曜日

当予備校は××大学に1000名合格者を出しました。我が国はノーベル賞に○名受賞者を……

高校3年生当時の私。中高一貫私立進学校などに通っていたわけではないため、志望の××大学に向けて週に数回大手予備校の高3コースに通っていた。

秋ごろだったろうか、別の有名大手予備校、○○塾からダイレクトメールが来た。だいたいこういう内容。

××大学志望の高3生に特別集中授業を開講します。当予備校厳選の講師が2日間にわたってお届けする内容の濃い授業。費用は教材費の500円のみ。

模擬試験のデータから××大学志望者を選別し、こういうのを送りつけているらしい。○○塾は友達も通っている有名予備校だし、500円というのは良い。さっそく申し込んで受講した。授業の内容は悪くなかったが、所詮2日間だけの講義。効果があったのかどうかはわからない。

春になり、私は××大学に入学した。それと時期を同じくして○○塾が「今年も当予備校から××大学に1000名合格!」のような宣伝を始めた。○○塾に2日間だけ通った私も当然のようにその1000名に数えられており、○○塾発行の合格者名簿にも私の名前が載っていた。

察しの良い方ならとっくにお気づきだろうが、この○○塾は合格者数を増やすために破格の値段で2日間の集中講義を設定しているのであった。

こういう商売は現在でも行われているらしく、塾長をされている方のコラムでも同様の問題が指摘されている。

さて、この問題、なにかに似ていませんか。

asahi.com(朝日新聞社):南部さんは日本人?米国人? 人材流動化で意見百出 - サイエンス

7日の物理学賞発表について、海外メディアの多くは受賞者を「2人の日本人と1人の米国人」と報じた。生まれ育ちは日本だが米国生活が長く、70年に米国籍を取得した南部さんの扱いが異なるためだ。
「南部さんを日本人とカウントしないわけにはいかないが……」。素粒子物理学などの基礎研究を支援する文部科学省は、内部資料としてノーベル賞の受賞者数を国別に毎年集計している。これまでは受賞者の国籍で数えてきた。

ノーベル賞が思わぬ余波! 国籍法改正を検討 自民法務部会   - MSN産経ニュース

ノーベル物理学賞を受賞受賞した南部陽一郎米シカゴ大名誉教授が米国籍を取得していたことを機に、自民党法務部会の国籍問題プロジェクトチーム(座長・河野太郎衆院議員)は10日、二重国籍を認めない国籍法改正の検討を始めた。南部氏はすでに日本国籍を喪失しているが、ノーベル賞受賞が思わぬ波紋を広げたようだ。

日本からのノーベル賞大学合格者を増やすために日本国予備校在籍者を水増しする、と読み取れてならない。

現在アメリカに住んでいて日本にもう2年間帰っていない私は二重国籍が認められたら何かと便利だろうなとは思うが、ノーベル賞が国籍法改正の動機だというのは実にせこい。こういうことを議論している時間があれば、優秀な学者を日本につなぎ止めておく方法とか、海外の著名な教授を日本の大学に呼び寄せる方策とかを考えればと思うのだが、世の中は予備校の大学合格者数をどうやって多く見せるか程度の論理で動くものらしい。

2008年8月8日金曜日

ほげスクール

どうしてIT系の人はほげほげって言うんだろう。

ほげほげ言ってる人は、ほげスクールにでも行ったほうがいいと思います。

2008年7月30日水曜日

旅行者のためのユトレヒト・インターネット利用ガイド

オランダという国が好きだ。特においしい食べ物も思いつかないしオランダ語の問題はあるが、風光明媚で人々もやさしい。私がリタイア後移住したい国のベスト5には入るくらい好きである。

ところが、オランダが好きだということを声を大にして言うのは気が引ける場合がある。オランダはああいったことやこういったことが合法なので、

「ほうほう。オランダにいらっしゃる。アムステルダムですか。お好きなんですな」

なんて言われたりする。

そういう人には

「いえ、ユトレヒトに行きます」

と返すと

「アムステルダムじゃないんですか。観光ですね。いいですな」

のような反応をされることが多い。アムステルダムで合法なことはユトレヒトでも合法なのだが、その手の施設はアムステルダムにしかないと思っている人も多く、ユトレヒトに行くと言えば誤解が少ない。そういうわけで私はユトレヒトに行く。

ユトレヒトとは

ユトレヒトはオランダの中規模都市。首都アムステルダムからは電車で30分程度だ。隣国ドイツのフランクフルトからも電車で4時間弱。

ユトレヒトは日本人には馴染みのない都市だが、うさぎのミッフィーを展示したディックブルーナハウスのおかげで近年日本人観光客が増えているとも聞く。

インターネットカフェは非常に少ない。それほど観光客の少ない都市ではないはずなのでもっとネット環境があっても良いのだがそういうことになっている。ヨーロッパの主要駅にある公衆電話式のインターネット端末も見たことがないので、インターネットが利用できる公共の場所は限られる。

インターネットカフェ

私の行ったことがあるインターネットカフェは1軒しかない。Wzzrdがそれで、Wikitravelにも出ているのもこの1軒だけである。

住所はVismarkt 21で、ユトレヒトの中心駅からゆっくり歩いて10分程度。

注意するべきなのはVismarkt 21と思われる場所に行ってもコーヒーショップしかないことである。コーヒーショップとはすなわちドラッグをたしなむ場所なので、まあ入ってみてもよいがとりあえずインターネットは使えない。

ユトレヒトは運河の街で、このインターネットカフェも地上から階段で運河のところまで下りたところにある。店内は薄暗いが回線も速くておすすめだ。

ホテルのロビー

公共の場所かどうかは微妙なところだが、ホテルのロビーでインターネットを使えるところがあると教えてもらった。たとえば駅のすぐ裏にあるNH Utrecht Hotelで、ホテルのロビーに有料の端末がある。自分でPCを持って行けばWi-Fiも有料で使える。私も行ってみたが、さすがにホテルだけあって利用料金は高額である。短時間の利用以外はあまりおすすめしない。

図書館

口コミ情報なので情報の精度は定かでないが、図書館にインターネットの無料端末があるということである。

2008年7月28日月曜日

iPhoneの手書き認識機能で最速日本語入力(ただし中国語モード)

iPhoneで初めて英語を入力したとき、その便利さに驚いた。画面上のキーボードは小さいので打ち間違いは避けられないが、綴りの訂正機能が強力なため、たとえばinternationalのような長い単語はブラインドタッチでもまず間違いなく打ち込める。

それに慣れていると、日本語入力のパワー不足は否めない。テンキー入力のインターフェイスは斬新で楽しいが、かな漢字変換の遅さは苦痛である。iPhoneでメモをとろうと思ってもこれだと鉛筆で紙に書いたほうが早い。

同じ悩みを抱えた方には、ちょっと中国語モードを試していただきたい。もちろん、日本語の文章を書くのが目的である。

Googleで東京都の人口を検索する

例題として、中国語モードで東京都の人口を検索してみる。Googleに「東京都 人口」と打ち込もう。

「東」を手書き入力

「東」の文字を手書きで入力する。候補が右に4個表示されるので一番上にある東を選択。

予測入力の候補から「京」を選択

最初の文字を入れると、次に続く文字をiPhoneが予測して表示する。「東」といえば「京」。これは日本語でも中国語でも同じだ。すかさず「京」を選択。

同じく「都」を選択

ここまでで「東京都」が入力できた。言葉で説明すると長いが、慣れるとここまで3秒くらいである。

スペースは「空格」

左の「空格」ボタンを押してスペースを入力。

Googleが検索候補を表示

「東京都」に続く言葉をGoogleが予測して表示してくれる。「人口」はここにないので入力を続けよう。

「人」を入力

選択候補には日本語にない文字も出てくるが気にしない気にしない。

「口」を入力

選択候補には「口」がない。こういうときにはそのまま入力を続ける。

予測入力の候補が「人員」や「人民」なのには中国を感じさせるというものだ。

検索

「人口」を入力できたら検索する。余談だが東京都の人口は1300万人ほどらしい。

中国語入力の利点

  • 漢字を入力する場合はとにかく早い。
  • 検索、ちょっとしたメモなど、ひらがな混じりの文章を書かなくていい場合はおすすめ。

中国語入力の欠点

  • ひらがなが打てない。ひらがなを打つときは日本語モードに切り替えなければならない。
  • 日本語と同じ形の漢字が中国語にない場合は無理。たとえば「東京23区」の「区」は中国語(繁体字)では違う字体なのでこの方法で入力するのはほぼ不可能。中国語の簡体字も入力方法に加えれば「区」が入力できるが、さすがにそれだと日本語モードに戻して「区」を入力するほうが早い。

遅かれ早かれiPhoneで日本語の手書き入力もサポートされるのだろうから、そのときを楽しみに待つとしよう。

手書き認識機能をオンにする方法(何度も書くが中国語モードであることに注意)

  1. 設定 → 一般
  2. 言語環境を選択(下のほうにある)
  3. キーボードを選択
  4. 中国語(繁体字)を選択(これも一番下)
  5. 「手書き」をオンにする

以後、入力画面で地球マークを押すと中国語モードに切り替えられる。

2008年7月27日日曜日

アメリカの国内線ちょっといい席乗り比べ

飛行機は乗らずに済ませられるなら乗らない、という主義なので飛行機は滅多に乗らないのだが、先日ニューヨークからシカゴ、そしてフロリダを経由してニューヨークに帰るという三角形の旅をした。ニューヨーク・シカゴ往復とニューヨーク・フロリダ往復という切符にしたほうが安くなっていいのだが、2往復となると4度も嫌いな飛行機に乗らなくてはいけない。3度のほうがまだマシである。

ともあれ、今回の旅は各社のちょっといい席を乗り比べてみたのでメモしておく。

ニューヨーク→シカゴ:アメリカン航空のファーストクラス

シートピッチ:99cm。古い機体で座り心地はあまり良くなかった。ただしファーストクラスのためラウンジが使え、機内食も出る。

ところがなにか食事をしようと期待していたラウンジはベーグルとオレンジジュースだけしかなく、チャンネル固定のテレビを見ることしかすることがない。機内の朝食はオムレツが出たがこれまた塩辛くて食べられない。

悲しいことにコスト対効果は一番悪かった。

シカゴ→フロリダ:ユナイテッド航空のエコノミー・プラス・クラス

シートピッチ:91cm。この便はエコノミー・プラスとエコノミーの2クラス制である。座席はよくスプリングがきいておりアメリカンよりも乗り心地がよかった。ただあくまでもエコノミークラスに毛が生えた程度のものなので、ラウンジも使えないし機内食もない。5ドル出して菓子箱みたいなものを買う。

コスト対効果はまあまあ。

フロリダ→ニューヨーク:ジェットブルー航空のエコノミークラス

シートピッチ:86cm。ジェットブルーなので座席はエコノミーのみ。ジェットブルーの売りである広いシートピッチと革張りのシートを初めて体験した。乗り心地はよく、シートピッチだけではなくて座席の設計が大事なのだなと思う。機内食はないがリクエストすればスナック菓子がもらえる。

隣の家族がなにやらうるさかったがコスト対効果は一番よい。

まとめ

ラウンジのサービスがまともならファーストクラスが買いなのだが、不景気や原油高のせいでラウンジのサービスは縮小されている。大きなシートピッチを安価で手に入れられるようになってきているのでファーストクラスの意味はまったくないと思う。

ただエコノミーにすると隣に来る人によっては苦難のフライトになるのがつらい。うるさい家族連れかもしれないし頭の臭い人かもしれない。経験上こういう「事故」はエコノミーで一番多い。

結論としては、月並みながら、エコノミー・プラスが一番、ということです。ファーストクラスより格段に安いし。

2008年7月22日火曜日

日本人を差別する日本食レストラン

ニューヨークには無数の日本食レストランがある。アメリカの他地域と同様、日本語の看板を見て入店してみると韓国料理がメインの店だったりすることもあるがこれはお約束。いちいち腹を立ててはいけない。そういう愉快な店はまた別の機会に触れるとして、今回のテーマは日本人経営の日本食レストランである。

NY在住の日本人が書いているブログを見ると、たまに「有名日本食レストランに行きました。なぜか隣に座っていたアメリカ人のほうがサービスが良かったです」のような書き込みがあったりする。

そんなことはありえないとずっと思っていた。ところが最近私自身が「もしかして」という状況にあたったので紹介してみたい。

有名寿司店を予約する

英語編

英語で電話をかけて予約した。「木曜日の7時でお願いします」という会話の後。ちなみに英語で電話をかけるときは、会話をスムーズに進めるため適当に英語の名前を使っている。

店(英語)「お名前は」
私「ジェームズです」
店「テーブル席になさいますか、カウンター席になさいますか」
私「カウンター席で」
店「スシ・シェフの指名はありますか」
私「(細かいなあ)いえ、適当でいいです」
店「それでは、ミスタージェームズ、木曜日の7時にお待ちしております」

日本語編

同じレストランを翌月に予約した。電話番は日本人なのがわかっていたので「もしもし」というと日本語が返ってきた。同じく木曜日の7時で予約。

店(日本語)「お名前は」
私「磯野カツオです」
店「それでは、磯野様、木曜日の7時にお待ちしております」

ん? 何も聞かないの? 板前は別に誰でもいいけれど、テーブル席かどうかくらいは聞いてほしかったなあ。私が日本人だったからかなあ。それとも電話に出た相手が新入りだったのかなあ。

とある日本料理店から出前をとる

単品料理に少額を追加すると定食にできる、とメニューに書いてあった。

日本語編

私(日本語)「定食にしてほしいんですけど」
店「定食は、やってないんですよ」

英語編

断られた翌週、英語で出前をとってみた。

私(英語)「定食にしてほしいんですけど」
店「はいわかりました」

……。

なぜ日本語を話す客にはサービスが悪い?

もちろんこれはただの偶然かもしれない。しかし、ネット上で人の証言を見ると日本人冷遇という傾向は一部レストランにあるようだ。そこで理由を考えてみた。

日本人は一見の客が多い

日本人客は観光客かもしれないし、一年後には帰国する駐在員かもしれない。NYに住んでいるであろうアメリカ人を相手にサービスしたほうが効率的。

日本人同士の甘え

いやー、今週予約がたくさんあってちょっと一部のお客さんには我慢してもらわないと困るんですよ。日本人同士だからいいでしょ?

日本人は文句を言わないしあしらいやすい

「定食はやっていません」とアメリカ人に言うと「なんでよ? メニューには書いてあるよ」と言うかもしれない。日本人は「はいそうですか」と引き下がる。

まとめ

中国系の店に行くと、あからさまな中国人贔屓を見ることがある。贔屓されないこちらとしてはうれしくないが、中国から来た同胞どうしがんばりましょう、という気持ちは理解できる。日本人の店は日本人客に優遇しろ、というようなことは言わないし必要ない。でも反対に同胞を差別する、ってのは人としてどうなのよ。恥ずかしくないんだろうか。

2008年7月10日木曜日

iPhoneをMacに接続したらiPhotoが勝手に起動する・その対策

気の早い方はそろそろiPhone 3Gを手に入れられたでしょうか。私は手持ちの2G機がまだ動くので、当面は買い控えるつもりです。ともあれ、この記事、いつか書こうとおもって放置していたのですが、賞味期限の切れる前に書いておきます。

iPhoneをMacに接続すると、デフォルトの状態だとiPhotoが勝手に起動します。iPhoneをデジカメとして認識するからなんだそうですが、iPhoneを充電するためだけにMacにつないだのにiPhotoが立ち上がってイライラすることがあります。簡単な対処方法としては、イメージキャプチャの環境設定で「カメラを接続したときに起動する項目」を「割り当てアプリケーションなし」にすればいい、というものがあります。ただ、これだとカメラをMacにつなげたときに手動でiPhotoを立ち上げなければならず、これも面倒です。

そこで、カメラを接続したときだけiPhotoを開き、iPhoneを接続したときはなにもしない(iTunesのみ起動する)手順を書いておきます。

1. Finderを開く

2. アプリケーション→AppleScript→スクリプトエディタ.appを開く

3. こういう内容を書きます

on get_device_name()
set list_devices to "ioreg -Src IOUSBDevice | grep '^\\+'"
set get_name_of_last to "tail -n 1 | sed 's/^\\+-o \\(.*\\)@.*/\\1/'"
set command to list_devices & " | " & get_name_of_last
return (do shell script command)
end get_device_name

on run
if get_device_name() is not equal to "iPhone" then
tell application "iPhoto" to activate
end if
end run

4. ファイルメニュー→保存を選択。ライブラリの下にCameraConnected.appとして保存(名前はなんでもよい)。このとき、フォーマットを「アプリケーション」にする。スクリプトエディタを終了する。

5. アプリケーション→イメージキャプチャ.appを開く

6. メニューからイメージキャプチャ→環境設定を選択

7. カメラを接続したときに起動する項目というところがあるので「その他」を選択したあと、先ほどのCameraConnected.appを選ぶ

8. イメージキャプチャを終了

9. MacにiPhoneを接続してもiPhotoが起動しないことを確認します。ついでに、普通のカメラをMacに接続したらiPhotoが起動することも確認しましょう。

ソース

大元となるソースはこちらです。

Tip: Prevent iPhoto from opening when you plug in your iPhone - (37signals)

上記を改良したものが本稿の元になっています。

Whatever happened to Benjamin Ragheb? - Re: Tip: Prevent iPhoto from opening when you plug in your iPhone

上にあるスクリプトは、最後に接続されたデバイスはioregの出力の一番下にあるという仮定をしています。その仮定が正しくない場合があるという説もありますが(下のリンク先のコメント欄)、私の試した限りでは大丈夫そうだったのでこちらを使いました。

おまけ:Perlな人は

上記のAppleScript中にtailやsedを呼ぶ場所があります。今どきシェルスクリプトの記法かよ、という方は最初の部分をPerlでこう書いてみてもいいです。

set list_devices to "ioreg -Src IOUSBDevice"
set get_name_of_last to "perl -0777 -ne '/.+\\n\\+\\-o (.+?)\\@/ms; print $1;'"

2008年7月2日水曜日

二つ星レストランのおもてなし

先日ミシュランで二つ星に分類されるフランス料理店に行ってきた。私の舌はさほど上等ではないので食べ物の味はおいしい・ふつう・おいしくないの3段階くらいにしか分けられないが、とりあえず二つ星レストランである。注文したのは魚中心のコースだ。

食事が終盤にさしかかったころ、オーナーシェフがテーブルに挨拶に来た。前日に予約したばかりの一見の客に対してもこうして相手するってのはレストラン経営も楽じゃないねェ、なんて思いながら握手をしてもらう。その後本人に調理場なんかを直々に案内してもらって愉快な夜だった。

が、「調理場に入れてもらいました。つまみ食いもしました。さすが二つ星のサービスは違います。終わり」というまとめ方をするつもりはない。これは私がたまたまラッキーだっただけだ。サービスといえば、給仕も5人くらいが入れ替わり立ち替わりやってきたが、これも高級レストランだと普通のこと。

ただ一つだけ、さすがだな、と思ったことがあるので書いておきたい。それは「水」のことである。

私は食事中にアルコールを飲まない。ワインの代わりに飲むのはミネラルウォーター、特に炭酸水である。よくある問題として、1本を飲み干した後2本目を頼むには多いな、どうしようかな、というものがある。

レストランの応対として一般にありがちなのは

「2本目のボトルをあけましょうか」

それか

「水道水にしますか」

というものだ。水道水でいいか、とも思うのだが、ケチと思われるのも癪なのでいつも2本目のボトルを注文することになる。そして2本目は半分も飲めずにお会計ということになる。半分飲めなかったからといって、会計は当然2本分である。

ところが、このレストランはちょっと違った。係の人が1本目のボトルを全部注ぎ終わったのはメインを食べ終える直前。デザートのときにコーヒーも飲むし、でも水も飲むし(猫舌なんです)、もう1本ボトルを注文しようかなあ、と思いつつ残った水をちびちび飲んでいたら、もうないはずの炭酸水が無言でグラスに注がれた。

二つ星レストランは客の意向を聞かずに勝手にボトルを開けるのか、とやや憤慨した。いやそれとも、もしかすると、と思ったら案の定。会計のときに私の予想が当たっていたことがわかった。

その追加の炭酸水は会計に含まれていなかったのである。

客がグラス一杯だけの水を欲している。しかし水はボトル単位でしか売らないという理由で一杯の水にボトル一本分の値段を付けるのが普通のレストラン。一杯の水くらいサービスしようというのがこのレストラン。

小さなことながらお客は確実に満足する。素晴らしいおもてなし。恐れ入りました。

12月30日追記

10月に、このレストラン(ダニエル)がミシュランで三つ星になった。

2008年6月30日月曜日

タイムキーパーから見た良いプレゼン・悪いプレゼン

先日シカゴで行われたYAPCでは会場係をやった。会場係は機器のトラブルなどの監視要員だが、トラブルがほとんどなかったため実質的な仕事はタイムキーパーが主だった。こういう公の場でタイムキーパーをする機会は久しぶりで、学ぶこともたくさんあった。特にプレゼンテーションの良し悪しについて考えさせられたので書きとめておきたい。

なお、特定のプレゼンターを批判する気は別にありません。

悪いプレゼン:制限時間になっても終わらない

どういう理由があろうとこれは良くない。きちんとリハーサルをしてこなかったのがバレバレだし、同じ部屋でプレゼンを行う次の人に迷惑をかける。他の部屋に移らなければいけない観客のスケジュールにも当然影響が出る。

10分休憩があるから少しくらいオーバーしても大丈夫、という考え方もまずい。休憩時間はあくまでも観客の移動時間であり、次の発表者が機器のテストを行う大切な時間と心得たい。

制限時間が超過したのに「あと3分で終わりますから」と言い訳をしつつプレゼンを続けるのも見苦しい。駆け足で発表をしたところで、どうせ観客は「早く終わんないかなー」とぼんやりしているだけで発表などちゃんと聞いていない。

悪いプレゼン:時間前に終わってしまう

制限時間を超えるほど極悪ではないが、まだ時間が残っているのにプレゼンを終わるのも良くない。時間をとって来てくれた観客に失礼だし、観客が部屋を出て他の講演中の部屋になだれ込む原因にもなる。

とはいえ、時間内に発表が終わり質問にすべて答えてしまってもまだ時間が余る場合はある。こういうときはいわゆるボーナススライドの活用をおすすめしたい。つまり、余分にスライドを用意しておき、本体の発表でカバーできなかったことを余った時間で話すのである。最初は失敗続きだったんですよ、という裏話でもいいし、分量の関係で削除した話題をここに持ってきてもよい。

悪いプレゼン:会場に遅れてくる

考えられないことだが発表の時間になっても来ない人がいる。ギリギリになって来る人もいる。事前にマイクのテストとラップトップの接続を行っている人ならまだいいが、「ん? どのケーブルをこの穴に差すんだ?」なんてことを開始時刻になってもやっているのはいただけない。

第一印象は大切だ。観客も「この人のプレゼンで勉強しに来たのに、PCの接続もできない人なのか」とプレゼンターの能力を過小評価することになる。

プレゼンテーションをうまく見せるコツ・準備編

  • できるだけたくさん練習を行って時間きっかりに終えるようにする。もちろん質疑応答の時間割り振りも考えておく。
  • 時間が余ったときに発表するためのボーナススライドを最後に入れておく。
  • 自分のプレゼンの後に同じ部屋で何が起こるか把握しておく。自分の講演の次が昼休みだと時間通りに終わらなくてもだいたい許されるが、5分休憩の後に次の発表が控えていたりすると制限時間厳守だと思いたい。

プレゼンテーションをうまく見せるコツ・当日編

  • 会場に着いて
    • そのプレゼンが行われる場の文化を理解しておく。プレゼン中に質問をする人は多いかどうか、観客の技術レベルはどうか。技術レベルが低そうならばゆっくりめに話すほうが良い。
    • 朝一番の人が少ない時間や昼休みに自分の発表する部屋に入り、接続の確認をしておく。
  • 発表の直前
    • 10分前には部屋に入る。意外に注目されているものなので自信を持って入室したい。
    • 司会者がいる場合は挨拶をしておく。学会などでもそうだが、司会者はその業界で名の通った人がボランティアでしていることが多いので顔をつないでおくのは得策でもある。
    • タイムキーパーが「残り5分」などの合図をしてくれることになっている場合は、どの時点で合図してくれるのかを確認しておく。

プレゼンテーションをうまく見せるコツ・本番編

  • 自分のスピーチ中
    • 常に残り時間を気にする。時計を見るときは視線の動きが不自然にならないようにする。
    • プレゼンの途中で質問に答えるのは疑問点を解消しておくという点でいいことだが、時間をとりすぎてしまうのは困りもの。ややこしい質問・関係ない質問をしてくる相手に対しては「その質問は最後にお答えします」と言って先に進めばよい。
  • 万が一制限時間を超過したら
    • 「時間になりましたので」と自分で締める。司会者にカットされるのは見栄えが悪い。
    • 観客が「もっと聞きたい」という雰囲気の場合に限り、空気を読んで少し時間超過するのは構わない。このとき司会・タイムキーパーと必ず目を合わせておくこと。慣れたタイムキーパーはちゃんと心得てくれる。
    • 終わりに「少し時間をオーバーして失礼しました」と詫びるのは良いが、「質問が多かったので」「機械の調子が悪くて」など言い訳をするのは蛇足。理由はどうあれ、時間管理はスピーチをする人の責任です。

2008年6月25日水曜日

予約したホテルに到着したらまだ建設中だった

シカゴに旅行をした。シカゴはニューヨーク同様ホテルがたくさんあるが、新しもの好きの私は今年オープンしたばかりのホテルを予約した。

新しいだけあってネット上にもホテルの情報が少ない。Wikipediaを見てみたら「このホテルはまだ建設中」と大きく書いてあり、Wikipediaも古い情報を堂々と載せるものだな、それとも内装が工事中ということなのかね、と思っていた。

ところが、行ってみたら本当に建設中だった。いや驚いた。日本ならありえない。

携帯電話で撮った写真がこちら。およそ80階より上の階が建設中である。ちゃんと屋上にクレーンも見える。

よく考えたら以前ベトナムの国営リゾートホテルに宿泊したときもそうだった。「オープンしたてのホテルです!」という触れ込みに惹かれて泊まったものの、行ってみたら正面ゲートすら作りかけ。花壇はあるものの花がない。池はあっても水がない。ホテル内の道路も舗装中で歩きにくい。

建前上はビーチリゾートなのだがダイビング用具などあるはずもなく、仕方なくプールにつかると塩素を入れすぎて水着が漂白されるという始末。何もすることがなくて退屈していた私は言葉が通じないなりに工事の若い衆に相手をしてもらい、ブロック塀の作り方を教わったりした。ベトナムのリゾートホテルに行く人は、ブロック塀には近づかないほうがいいです。なにせ私が作った塀かもしれない。

話をシカゴに戻すと、上のほうが工事中だからといって実際に下のフロアに影響があるわけではなく、振動・騒音などはまったくなかった。部屋の家具も新品で、楽しい宿泊だった。工事中なのが見えないように幕でもかけておけばいいのに、と思うのは私が日本人だからだろうか。

2008年6月6日金曜日

とんでもない美女が「あなたとお話したいの」(下)

前回のあらすじ)

国際列車の中で会った美女は高身長のドイツ人。食堂車内の男たちがしつこく話しかける中、ドイツ語がわからず黙りこくっていた私をテーブルに誘う。テーブルは小さく、向かい合って座ると膝と膝がくっつきそうなくらいだ。どうでもいいがこの人、身長は私と同じくらいなのに座高はずっと低い。さてそれはともかく、詐欺師か美人局か。

女性「どうしてもお話ししたかったことがあるんです。実は……」

スイスまでの電車代が足りないから3万円貸せ、それとも、病気の父の治療費が、と来るか。他の男性陣から隔離された私はかなり緊張していた。

女性「ボーイフレンドのことなんですが……」

私に彼氏になってくれとでも言うんですか。さらに詐欺的な臭いがした。お嬢さんそれはいけません。

女性「実はボーイフレンド、日本人なんです。相談に乗ってほしくて」

だから私に声をかけたんですね。ちょっと拍子抜け。

女性「朝ごはんに何が食べたいか、って聞いたら、ボーイフレンドが『味噌汁とごはん』って言うんです。これって普通じゃないですよね?」

普通だと思います。

女性「味噌って豆でしょ? なんでそれを朝に食べるんですか。豆と米は夕食に食べるものです」

私も子供の頃「コーンフレークを夕食に食べたい」と言ったら「それは朝に食べるものだ」とたしなめられたっけ。でもドイツ人は朝にパンを食べるし、日本の米はパンと同じなんだよ。ドイツでは米がサラダに入っていたりするけど。ごはんは炊いて味をつけずに盛りつけるんだ。

女性「お米は炊けると思う。味噌汁は見たこともないけど作ってみるわ。朝食には他に何を作ればいいのかしら」

あと漬け物と出し巻き卵に干物があれば最高だなあ、と思ったけれど説明しきれる自信がなかったので、魚でも焼いておけばいいよ、と答えた。

女性「私、魚は食べられないの」

なんと。全然だめなのかい。

女性「イカなら食べられるけど」

いや、それは魚じゃないから。イカは日本の朝食にはあまり登場しない。

女性「イカは魚よ。ドイツ語ではティンテンフィッシュだもの」

イカは英語でもドイツ語でもフィッシュなのか。じゃあイルカやクジラも魚なのかな、と言ったらこれが禁句だった。

女性「クジラ? そういえば日本では今でもクジラを食べているのかしら。クジラは人間の友達なのよ」

even nowに力を込めておっしゃる。ドイツ人もウサギやシカを食べるじゃないか、と言いたいがここはぐっと堪えるのが大人と言うもの。話題を変えよう。ところで、ボーイフレンドとは同居しているのかい。

女性「遠距離恋愛なの。月に一度しか会えない。ヨーロッパの他の国で働いていて来週帰ってくるの。だから朝ご飯のメニューを考えているの」

甲斐甲斐しいことだな。夕食は一緒に食べないのかい。

女性「それがね、もっと問題なの。夕食に何が食べたいの、って聞いたら『なんでもいいよ』って答えるの」

日本の女子もそういう答え方をするよ。「夕飯はなんでもいい」っていうから中華に連れて行ったら「イタリアンのほうがよかった」とか言うんだ。

女性「そういうのをドイツ語で○○○○っていうのよ」

そんなややこしい単語発音できないよ。

その後しばらくして私の降りる駅に近づいたので読者様の期待するようなことにはならずに会話終了。

とりあえず、彼女の伝言はこういうことなので関係者の方はよろしくどうぞ。

  • 和食を作る練習をするので、何が食べたいか教えてください
  • もっと頻繁にドイツに遊びにきてください
  • できればドイツ語を片言でもできるようになってください。私の両親は英語ができません

最後はしんみりしてしまったが、こういうことがあるから鉄道の旅は面白い。

2008年6月4日水曜日

とんでもない美女が「あなたとお話したいの」(上)

「ここに座っていいかしら」

ふと声をかけられた。場所はオランダからドイツ経由スイス行きの列車。食堂車の半分を占めるカフェは社交場がわりになっていて、ドイツ人がビールを飲みながら上機嫌でおしゃべりをしていた。私の横のスペースは半人分くらい空いている。無理矢理つめれば座れないこともないな、と思って顔を上げると女優みたいな人が立っていた。

人様の容姿をどうこう言うのは品が良くないというものだが、ドイツ人一同はおしゃべりをやめ、一挙手一投足を口を開けたまま見ているので、隠れ美人が多いとされるドイツ人基準でもかなりの美女らしい。高身長のキャメロン・ディアスをほっそりとさせて冷たい感じの顔にしたらそうなるかも、というルックスだった。

まずは、ドイツ人相手に議論を吹っかけていたアメリカ人の留学生マイケルが流暢なドイツ語で自己紹介。どうやらこの男は主導権を握りたいらしく、その場の全員を紹介した。自分をアピールすることに加え、さらに他人に発言させまいというこの姿勢、戦勝国ならではの自信だろうか。私のことは

「こちらは日本人だがアメリカから来ていて、ええと名前は」

とちゃんと名前も含めて紹介してくれた。10分前に教えた名前を覚えているとは、コミュニケーション力が強すぎだ。

この女性は料理を注文したようで、しばらく席にかけて待ちモード。周りの男どもは女性に「どこから来た」みたいな話をしている。女性はフランクフルト在住のFさんで、スイスに行くということだけはわかったが、その先がさっぱりわからない。美女が来るまでは私のためにドイツ語から英語への通訳をしてくれていたマイケルも私のことをほったらかしだ。

ところが、女性の料理が来てから流れが変わった。女性が英語で発した一言を聞いて全員が驚いた。

「向こうのテーブルに行って二人で食べません? あなたとお話がしたいの」

ところが一番ぶったまげたのはそれを言われた本人、つまり私である。

◇ ◇ ◇ 

こういうのは美人局、つまり背後に恐いお兄さんがいたりするものと相場が決まっているので、嫌だなと思った。尻尾を巻いて逃げようと思ったが列車内のこと、どこにも行きようがない。マイケルが「がんばれ」というように私にウィンクしてくるのが気持ち悪いなと頭の隅で思いつつ、テーブル席に移動した。

二人だけのテーブル。女性が口を開く。

「どうしてもお話ししたかったことがあるんです。実は……」

(続く)

2008年5月9日金曜日

アップルストアにレジがあった

アップルストアにレジがないの続き。

たくさんの人にコメントをいただいたが、代表的だったのはgriffin-stewieさんの

そのお店で現金で買う事ってできるんでしょうか?

というもの。言われてみれば気になる、ということで現金を持って買い物に行ってみた。

店舗外観。屋上の広告がiPodである以外は、アップルストアだとはわからない。

店の前に行くと表札(?)が出ている。

ちょうどiPhoneのアクセサリがほしかったので3階建ての2階に行った。2階はiPhoneとiPodがずらりと並べられたフロアでiPhoneのアクセサリもある。ちなみに1階はマッキントッシュのショールームになっていて、先日ハードディスクを買ったのは3階だ。

レジがないと店が広々と感じるぞ、と今さらながらに感動しつつ買い物。iPhoneのヘッドセットを買おうと店員を呼んでみる。700平米くらいのフロアに店員が20人はいるのでつかまえるのに手間はいらない。

 私 「すみません、これください」
 店員「少々お待ちください」(POSターミナルを出そうとする)
 私 「現金で払いたいんですが」
 店員「すみません、それは」

いけないことを聞いたかな、と緊張する私。

 店員「1階の北端にレジがあるのでそちらに行ってもらえますか」

なんと。1階にレジがあるとあっさり言われてしまった。

1階はiMacやMacBook Airで遊んでいる客でごった返している。その人だかりをかき分けて言われた通り一番奥に進むと、申し訳程度の大きさのレジカウンターがあった。レジは3台あるが、店員は2人だ。当然のようにだれも並んでいないのであっさり会計。

 店員「メールアドレスはお持ちですか」
 私 「いえ」
 店員「ではこちらを」

と、レーザプリンタで印刷した領収書がちゃんとでてきた。正直なところほっとしたが、ちょっとがっかりした気持ちもある。

◇ ◇ ◇

お寄せいただいたコメントに答えてみたいと思います。

はてなブックマーク - Mint's log: アップルストアにレジがない

2008年05月07日 roodevil apple 混んでいる時には各店員の前に行列ができるんですね!店員のシフトの時には行列も引き継ぐのかなあ
2008年05月05日 nakex1 ビジネス 決済のできる店員数を通常のレジの台数よりかなり多くしないと店員を囲む人だかりが無秩序にできるだけで時間短縮にはならない。商品説明と決済が同じ人だと混んでるときは時間が読めずむしろストレスがたまりそう。

私が行ったときは3フロアでざっと60人は店員がいました。全員がPOSターミナルを持っているかどうかはわかりませんが、店員はだいぶ余っていました。店員は店内に分散しているというよりも、入り口に集中しています。大人数でお出迎え、という趣旨でしょうが、逆に手の空いている店員をつかまえたければ各フロアの入り口に戻れば確実というようになっています。広々とした店内なので手を振れば誰かやってくることでしょうけど。

ちなみにプレスリリースによると、店員は合計で175人を超えるそうです。

2008年05月04日 saxon saxon apple よさげだけど現金払い大好きな日本人には不向き。
2008年05月04日 stonife stonife Apple うぉ~、これはいい。だけど、なぜか現金払いが主流の日本では採用不可能だろうなぁ…

何万円もの現金を財布に入れて持ち歩けるのは日本の治安がすばらしいからだと思います。日本のアップルストア、おサイフケータイではだめですかね?

アップルストアにレジがない - 自動ニュース作成G

[#13] (ewnned) 小物数点とか、梱包が必要な時はどうするんだろう。そもそも梱包しないのだろうか。目新しいけど、まだ疑問の方を多く感じる。
[#14] (tqzhyi) >13 梱包用の袋も売ってると見たね

基本的には買った商品にシールを貼っておしまい、のエコ仕様ですが、一応言えば袋に入れてくれるようです。

[#2] (vawaaf) アクティブな従業員が全員会計できるならレジが定数の従来の形より多く捌けるんじゃないだろうか。店員ごとの成果も出しやすいしチップも貰えやすいんじゃなかろうか。
[#3] (kfpsur) 電気屋でチップやるなんて聞いたことがないが・・・?

実は、チップを出したくなりましたw

はてなブックマーク - Mint's log: アップルストアにレジがない

2008年05月04日 satsumaimoko apple おもてなしりてらしー高い

そう、結局そういうことだと思います。

ちなみに、私は今回、現金で買い物をするちょっと変な客だったわけですが、嫌な顔を一つもされることなく対応してくれたあたりに社員教育のレベルを感じました。ちょっとは気まずい思いをする覚悟で買いものをしてみたものの、普通に「おもてなし」してくれたのはさすがです。

2008年5月8日木曜日

そろそろShibuya.pmについて一言いっておくか

技術コミュニティってのが嫌いでした。最近はまともな人が多いのかもしれないけれど、10年前などはそれはもうひどいもの。メーリングリストが主なコミュニケーションの手段だった時代で、そこにあるのはくだらない喧嘩と、知識をひけらかす上級者、内輪受けのシグネチャ。私はメーリングリストは読まずに自分のディスクにためておいて、必要なときだけgrepで検索する日々でした。Perlもラクダ本で独習して人並み以上(たぶん)にはできるようになり、もう学ぶことはないものと思っていました。Perlをはじめとする技術文書や本を翻訳するアルバイトをしていたのもこのころです。

時は流れて5年前、Shibuya.pmことShibuya Perl Mongersができました。それもテクニカルトークをするとのこと。技術コミュニティのオフラインミーティング。メーリングリストと同じ雰囲気ならあまり行きたくないなあ、と思い実際に最初の集まりには行かずにおきました。そういう私がなぜ第2回の集まりに行くことにしたかといえば開催地の近所で飲み会だったかの用事が偶然あったからで、ただの気まぐれです。

ところがテクニカルトークに出席してみて驚きました。そこでは本に出ていない技術(Inline系のモジュールでした)、それも今すぐにでも使える技術が紹介されていました。本には枯れた技術しか出ていないのが普通ですし、日々進化を遂げるこの世界、既存のウェブサイトにすら出ていないことがたくさんあっても当然のことなので、驚く方がおかしいと言われればその通りですが、とりあえずびっくりしたのを今でも覚えています。さらにPerlを使ってネットサービスを行っている会社の紹介もあり、「企業系の開発はJavaかC++」だと思っていた私には新鮮な刺激でした。ちなみに私、このころはPerlよりはC言語が得意でした。

質疑応答にも感銘を受けました。「それ、○○でもできるんじゃないですか」(おお、TMTOWTDIだ)、「それは計算量が多くなると思うんですが大丈夫ですか」(ギークのくせに態度が横柄じゃないぞ)、「そこの13行めの正規表現ですけど」(あんな小さいの見えるのか)。

◇ ◇ ◇

さらに時はたち、私はNYに住むようになりました。NYにもPerlの集まりがあるため、主催者に連絡をして出席してみました。飲み会だけのNY.pm、真面目なPerl Seminar NY。参加する前は敷居が高く感じたものの、Perlの集まりはShibuya.pmで経験済みだったので気持ちは楽でした。

右も左もわからないニューヨークという土地に私の所属するグループができ、さらにその場に何年も前からいたかのように周囲が接してくれたことで、Perlの会合が新生活の心の支えになったのは言うまでもありません。日本のShibuya.pmから来ました、と言ったら「日本にもPerl Mongersがあるのか」という反応がよくありましたが。

NYでPerlの集まりに参加して面白かったのは、やっぱりここでもTMTOWTDIだったことです。「Maybe you can do it in that way?」みたいな。

日本にいたときはShibuya.pmでもYAPC::Asiaでも発表をすることはありませんでしたが、米国に引っ越して以来YAPC::NAをはじめ米国のあちこちで発表をすることとなりました。初参加のYAPC::NAなどで臆せずに数百人を相手にでき、どの発表も好評を博したのはShibuya.pmで学んだことの積み重ねがあったからです。

◇ ◇ ◇

Perlはコミュニティがすばらしい、ということがよく言われます。そうはいってもコミュニティに参加したことのない、参加する機会のない人にそういう言葉を繰り返しても説得力がないだけ。「コミュニティ? うさんくせえ」と思っていた私にPerlコミュニティがいかにすばらしいかを教えてくれたShibuya.pmは最高の存在です。Shibuya.pmなしにはいまの私はありえない、といっても過言ではありません。

そして、特筆すべきはShibuya.pmがまだ活動を続け、さらに拡大していること。主催イベントのYAPC::Asiaにいたっては参加者が500人を超え、アメリカのYAPCから比べれば冗談としか思えない数字です。

今年のYAPC::Asiaには行きたかったのですが、やむを得ない事情で参加できません。会場の雰囲気を感じにIRCくらいは見に行きますのでそのときはよろしくお願いいたします。

末筆ながら、Shibuya.pmの運営者のみなさま、テクニカルトークの発表者の方々にお礼を申し上げます。

2008年5月3日土曜日

アップルストアにレジがない

そういうわけでハードディスクを買いに出かけた。別にどこの店に行ってもいいのだが、12月にオープンしたばかりのアップルストア、West 14th Street店に行ってみた。

とても空いている時間帯で店員が暇を持て余している。買う商品はすでに決まっていたが、ディスクを探しているというと店員が二人がかりで相手をしてくれた。

店員男「どれでも大差ないから安いのにしておいたらいいですよ」
店員女「ネットでの評判が良かったから、私はG-DRIVE買いました。おすすめです」

二人で意見が違うでないの、と思ったけれどけど、どちらも正直な意見で結構なことだ。G-DRIVEを買うつもりで来たのだが一応「そうですよね」とか相づちを打っておく。

「では、こちらをくださいな」

というと、店員女がスキャナ(POSターミナル)を取り出す。

驚いたのはここからである。

  • 店員女、バーコードをスキャン。「税金含めまして○○ドルになります」
  • 私、クレジットカードを渡す。店員女、カードをスキャンする。
  • 店員女「メールアドレスはこちらでいいですね」(前回ほかの店舗で買い物したときの記録が残っている)
  • 「では、領収書はメールで送ります。気に入らなかったら2週間以内に箱ごと持ってきてください。ありがとうございました」

ディスクを受け取っておしまい。新幹線の車内販売でスルメを買うかのような感じだ。よく見ると店にレジがない。もう一度書く。お店にレジがないのである。買い物をするためには係員に声をかけてその人から買うという形である。

ニューヨークのアップルストアはせっかく買い物をする気になってもレジの行列が長い。SoHo店はまだましだがFifth Avenue店は人が多くてレジの行列にもたどり着けない。そう考えると、あちこちにレジがわりの店員がいるこのシステムは画期的である。

ちなみに、Sean’s Blog Downunderを見ると、最近出てきた業態の店舗らしい。

2008年5月1日木曜日

ハードディスクを買った

Mac miniを買ってから4か月。順調にメインのマシンになり、古いLinuxの電源を入れるのが億劫になってきた。購入してから一週間でバックアップ専用機になり、最近はバックアップを取るのを忘れるくらいだ。

ふと思い立ち、ディスクを買ってLinuxの入ったPCを捨てることにした。考えずに行動するところは私の長所でもあり短所でもあるのだが、その足でお店に行ってG-TECHNOLOGYG-DRIVEを買った。

選んだ一番の理由は静かさである。ファンがない設計になっているのでMac miniに負けず劣らず静かだ。書き込みのときはそれなりに音がするが他の製品よりはずっといい。見た目はごつごつしていてあまりスタイリッシュではないが、これは置き方でなんとかできればと思っている。

宣伝文句どおり、ケーブルをMac miniにつないで電源を入れるとそのまま認識され、Time Machineを起動したらそのまま毎時間のバックアップがスケジュールされた。簡単すぎてびっくり。

Mac miniにある100GBのデータを丸ごとコピーしたら4時間かかった。バックアップ専用のディスクにするため速さはさほど重要ではないが、FireWire 400はやはりちょっと遅いかな、と思った。

2008年4月27日日曜日

ニューヨークで運転免許を取る長い道のりその4:路上試験

その3:安全運転講習の続き。

自動車学校に試験を手配してくれるよう頼んだ翌週、「4週間後に試験の予約を入れた」という電話がかかってきた。

もくじ

持ち物

  • 試験に必要
    • 仮免許証(lerner permit)。筆記試験終了後に送られてくる写真つきのもの。
    • 5時間教習の修了証
  • 自動車学校によって必要
    • 試験用の車を借りた領収書
    • 待ち合わせ場所までの交通費(自宅まで迎えに来てくれるところもあるらしいが)
  • その他
    • 順番待ちのときに読む本など

テスト用の教習

試験の1時間半前に待ち合わせ。アメリカ人のおじさんがやってきた。試験場まで連れて行ってくれるのかと思ったら、いきなり運転を代わらされて試験場まで行けという。道案内はしてくれるものの、少し驚いた。

試験場に行くまでの道すがら、たまに縦列駐車や一時停止の練習をさせられる。

習ったポイント。

  • 一時停止は停止線で一度止まり、さらに交差点に入るときにもう一度止まる
  • 縦列駐車は縁石から2フィート(60センチ)以内、タイヤの向きは道路と平行でないといけない
  • 方向転換は試験官によってthree-point turn、K-turn、Y-turnなど呼び方が違うが全部同じもの

試験場に到着して1時間待たされる

試験場に到着したら順番を待っている他の車が10台くらい。試験官が二人で回しているのだがなかなか順番が来ない。散歩をしたり昼寝をしたりして順番を待った。

テスト

試験官のおばさんが助手席、私が運転席。教習所の先生は同乗できないが、試験官のおばさんとは顔なじみであるらしく「よろしく頼む」みたいなことを言っていた。

専用の試験コースがあるわけではなく、一般の路上を言われた通りに走る。信号がまったくないコースで走りやすかったが、その逆に一時停止の標識は5回くらいあった。一時停止は2度停止、という先生の言葉をそのまま実行する。

途中交通量の少ないところで縦列駐車と方向転換をやらされる。日本と違って坂道発進やS字はない。踏切は存在もしない。

途中「pull over」など聞き慣れない英語に戸惑ったが、いちいちその度に「do you mean to stop?」などと聞き返したら大丈夫だった。私と違って真面目な人は安全自動車学校の単語帳で暗記をして行くほうがいいと思うけれど。

テストは10分くらいでもとの場所に帰って来たら終了。その場で合否が告げられる。私は減点なしの合格ではあったが、試験対策の講習を受けていなかったら20点くらいは引かれていたかも。ちなみに安全自動車学校は採点表を公開している。

まとめ

免許取得の費用は合計250ドルくらいだった。内訳は

  • 陸運局に払う費用:55ドル
  • 自動車学校での5時間教習(義務):40ドル
  • 自主的に受けた路上教習(1時間)、試験対策教習(試験当日1時間)、路上試験のための車レンタル:合計約150ドル

となる。これで日本の免許を持っていなくても(持っているけど)国際運転免許を作って日本でも運転できる。日本の免許に書き換えもできるが、細かい手続があるため警察庁のページを参照。

日系の自動車学校を使わなかった理由

日系の自動車学校に行くと、日本語で教習が受けられ日本語のテキストがもらえる、さらに日本人の友達ができるかもしれない、とメリットが多数ある。私は日系の自動車学校も英語の自動車学校も問い合わせはしたけれど、最後まで英語の自動車学校にお世話になった。

意図的に日系を避けたというよりは、スケジュールが合わなかった、場所が合わなかった(マンハッタン近郊で路上テストをしてくれるところは見つからなかった)というのがその理由。英語にアレルギーがなければ英語の教習所を使うほうが選択肢も多いしいいと思う。

ちなみに日系の自動車学校、決して高くはない。良心価格である。

2008年4月26日土曜日

ニューヨークで運転免許を取る長い道のりその3:安全運転講習

前項では仮免許を取るところまで書いた。

筆記試験を受けるだけで仮免許がもらえるのは日本とだいぶ違うが、一応これでもう路上の運転ができる。

もくじ

路上の練習

路上の練習は任意なので別にしなくてもよい。特に日本で普通に運転歴がある場合ならなおさらだ。

NYS DMV - Driver's Manual - Chapter 1

When you pass the vision and written tests and pay your fees, your learner permit will be issued and you may begin learning to drive. Every time you practice driving, you must be accompanied by a licensed driver at least 21 years old who has a license valid for the type of vehicle you are driving.

友達や家族など、運転免許を持った21歳以上の人が同乗すれば車を普通に運転できる。免許を持った人が周囲にいない場合は、自動車学校に電話すると先生が迎えに来てくれて1時間の教習をしてくれる。ちなみに日本と違って練習コースのある自動車学校はない。

私は右側通行が不安だったので1時間だけ教習をした。インド人の先生、1時間で40ドルくらいだった。

5時間講習(安全運転講習)

路上練習はしなくても免許が取れるが、5時間講習は必須である。

仮免許をもらったら、自動車学校に電話して5時間講習の予約をする。これは教室で安全講習を受けるもので、どこの自動車学校で受けても良い。

日系の自動車学校だと日本語で授業を受けられるが、電話をかけたら「2週間後までいっぱいです」と言われ、やる気をなくして「明日開いてます」という自動車学校で英語の授業を受けた。40ドルだった(ちなみにいろいろな自動車学校に問い合わせたが、30ドルから50ドルまで価格の開きがあった)。

退屈な授業時間を過ごしたのち、テストも何もなく終了。途中休憩を挟んだりした上に早めに終わったので賞味3時間半だった。修了証が後で必要になるのでなくさないように、と言われる。

路上試験を予約

5時間講習を済ませると、最後のステップは路上試験である。日本なら手ぶらで行って試験場の車に乗るところだが、ニューヨークではこの路上試験、自分で車を手配しなくてはいけない。つまり1)友達や家族の車を借りて2)試験場まで同乗してもらって3)試験のために車を貸してもらわないと試験が受けられないということになる。私も最初は友達に頼もうと思ったのだが、試験は基本的に平日に行われるため友達の線はあきらめた。

幸い自動車学校が試験のために車を貸してくれるサービスを行っている。ネットで自動車学校を調べ、電話をしたらどこもこういうことを言う。

  • 試験の場所と日時は自動車学校にまかせてほしい(車の手配の都合がある)
  • どこも予約でいっぱいなので1、2か月先になる
  • マンハッタンでは路上試験が行われていないため、ブルックリンかスタッテン島で受験する
  • 試験の当日に1時間の試験対策レッスンをするのがおすすめ

自動車学校によっては、

  • 割増価格(70ドルくらい)を払えば3週間以内の予約が取れる

と豪語していたが、そこまで急ぎではない。

ちなみに日系の自動車学校にも電話してみたが、

  • ウェストチェスター(電車で1時間くらい。日本人多い)で受験してもらいます

と言われたので却下。遠足じゃないんだから。

いろいろと比較検討した末、スタッテン島にある自動車学校で送迎+1時間教習+試験のための車レンタルを手配した。100ドルと少し。

2008年4月25日金曜日

ニューヨークで運転免許を取る長い道のりその2:筆記試験

運転免許の取得を決めたら次は仮免許のステップである。仮免許証は筆記試験(と視力検査)に合格したら即日交付される。

もくじ

身分証明書を集める

6点制と呼ばれる制度がある。他の人がたくさん書いているので割愛するが(その1のリンクをご参照ください)、私がDMVに持って行ったものは以下の通り。

  • パスポート(3点ぶん)
  • Social Security Card(2点ぶん)
  • 米国で発行されたクレジットカード(1点ぶん)

住所を証明するものは求められない。写真つきの仮免許証(learner permit)が自宅に送られてくるからそれで確認、ということなんだろうか。

ついでにNYS DMV - Forms Downloadのページから申請書(MV-44)をダウンロードして事前に書いておけば準備万端。

DMVは長い行列に並ぶことが多いので当日申請書をもらってその場で書いても問題ない。自分の身長をフィートとインチで書かなければいけないことだけ注意。

Social Security Cardのない場合の対処法はNY州運転免許証のページに詳しく書かれている。

筆記試験の準備

筆記試験は4択の20問。16問正解で合格となる。NYS DMV - Driver's Manual - On-line Driver's Manual and Study Guideのページに教科書と練習問題があるのでやっておけば大体同じ問題が出るので間違いない。

一応日本語でも受験できるし日系の自動車学校が日本語での練習問題も公開しているが、私は英語の勉強も兼ねて英語で受験した。

DMVに行く

NYS DMV - Local DMV Officesを見て自分の行きやすいオフィスに行く。私はマンハッタンのオフィスに開館時刻の8時半より前に行ったのだがすでに行列ができていた。

書類を提出して写真撮影。その後筆記試験である。4択なのでマークシートかと思いきや、マスの中にアルファベットを書き込む形式だった。英単語がわからなくて2問くらい間違えたが一応合格(正解数など成績は教えてくれない)。

筆記試験を合格すると視力検査(遠くにあるアルファベットを読む)。55ドルを払って写真のない仮免許証(interim learner permit)を受け取り終了。写真つきは2週間くらいで送られて来たと思う。

ちなみに不合格の場合はもう一度入り口に並び直せば良いと聞いた。後日出直してもよい。筆記試験に合格するまではお金を払わなくてよいはず。

2008年4月24日木曜日

ニューヨークで運転免許を取る長い道のりその1:前置き

ニューヨーク(ここではニューヨーク州のこと)に住むものにとって、運転免許の取得は面倒な問題である。他の州では日本の免許をそのままアメリカの免許に書き替えたりしてくれるが、ニューヨークではそのようなことはない。

もくじ

リソース

リンク

国際免許じゃだめなの?

国際免許は1年有効。だからとりあえずニューヨークに引っ越して最初の年は国際免許でしのごう、と思ったらそれが落とし穴になる。

NYS DMV - NYS DMV - Driver License, Learner Permit and Non-Driver Photo ID Card

If you become a resident of NYS, you must get a NYS driver license within 30 days and surrender your out-of-state driver license. Normally, you cannot have a NYS driver license and a driver license from another state, but there are exceptions. It is a violation of Federal law to hold more than one commercial driver license (CDL).

ニューヨークの「居住者」の場合、日本の運転免許は無効の扱いとなる(国際運転免許も)。法律上は日本の免許証は没収されることになっている(上記リンクに取り上げられた後に返してもらったという話がある)。

もちろん、ニューヨークの「居住者」ではない場合、国際運転免許があれば空港でそのままレンタカーを借りてニューヨークを旅行できる。

International Driving Permit: An International Driving Permit is not a driver license. The permit only verifies that you hold a valid driver license in your home country. Your foreign driver license, not the International Driving Permit, allows you to drive in NYS.

ちなみに、日本の運転免許があれば法律上は国際運転免許がなくても運転できる(検問にあったとき面倒なことになりそうだけれど)。

ここで「居住者」の定義がわかりにくいため、別ページに解説がある。

NYS DMV - Definition of a NYS Resident

Section 250 (5) of the Vehicle and Traffic Law defines the term "resident." The law defines a resident as a person who lives in NYS with the intent to make NYS a "fixed and permanent" place to live. To live in a house, a home, an apartment, a room or other similar place in NYS for 90 days is considered "presumptive evidence" that you are a resident of NYS.

90日以上ニューヨークの住宅に住んでいれば「居住者」となるらしい。ただし学生だけは例外扱いされていて、

According to this law, students from other states or from other nations who attend school in NYS are normally not considered residents of NYS.

「留学生は居住者ではない」とある。

この項まとめ

日本からニューヨークに引っ越して「居住者」になった人はニューヨークの運転免許を取らないと運転できない。総領事館も

在NY総領事館:アメリカの運転免許に関する情報

国際運転免許証で自動車を運転していたところ、警察官に止められ、「無免許運転」として違反切符を切られるといった事例が、たびたび当館に報告されています。

と注意している(居住者になって30日をすぎると無免許の扱い)。

2008年4月19日土曜日

Filter::SQLが使いやすくてしかたがない

Filter::SQL 作った - id:kazuhookuのメモ置き場にある、Filter::SQLが使いやすくて仕方がないという話。

前にも書いたけれど私はPerlのデータベースプログラミングに苦手意識がある。SQLもPerlも人並みにはできるけれど、その両方がまざったのはどうもだめだ。

だいたい、こちらはSELECTだけをすればいいのに

use 5.010;
use DBI;

my $dbh = DBI->connect("dbi:SQLite:dbname=foo.db");
my $sth = $dbh->prepare("SELECT * FROM table WHERE bar > 1");
$sth->execute;
while ( my $row = $sth->fetch ) {
say join "\t", @$row;
}

のような呪文を書かなくてはならないのは苦痛だ。connectはわかるけれどprepareやexecuteは人間のするべき仕事とは思えない。何よりもSQL文と出力を表示するところが離れているのが嫌だ。

SQLを書かずに全部Perlですませればいいかというと、必ずしもそうでもない。SQLを書かないようにするとSQL::Abstractを使ったりして

my ( $stmt, @bind ) = $sql->select( 'table', '*', { bar => { '>', 1 } } );

となるが、これも私の頭のキャパシティを超える。

PerlはPerl、SQLはSQLがそこそこ分離され「見た目にわかりやすい」ものをずっと探し求めていた。そこにFilter::SQLというモジュールの登場である。先の例はこう書き替えられる。

use 5.010;
use DBI;
use Filter::SQL;

Filter::SQL->dbh(DBI->connect("dbi:SQLite:dbname=foo.db"));
for my $row (SELECT * FROM table WHERE bar > 1;) {
say join "\t", @$row;
}

これです、私の長年求めていたものは。SELECTがそのまま書けて、さらにそのまま配列が返る。書きやすくて仕方がないし読むのもわかりやすい。SELECT文のまわりに引用符がいらないのも良い。SELECTの最後のセミコロンは一つのおまじないだけれど、prepareしてexecuteしてfetchするよりずっといい。DBIx::Simpleよりもさらにシンプルだ。

ソースを見てみるとFilter::Simpleを使った小さいモジュール。明快に書いてあってこんなことなら自分で書けばよかった、と思ったがそれを人はコロンブスの卵と呼ぶ。

追記(4月20日)

はてなブックマークでmiyagawaさんいわく

prepare,execute,fetchを一気にやるなら素のDBIでも selectall_hashref とか

コメントありがとうございます。どっちかというとselectall_araryrefのほうが近くて(Filter::SQLの内部で使われています)、上のスクリプトは

my $dbh = DBI->connect("dbi:SQLite:dbname=foo.db");
for my $row ( @{ $dbh->selectall_arrayref("SELECT * from table WHERE bar > 1") } ) {
say join "\t", @$row;
}

と書きかえられます。

SQL::Filterのほうが明らかにインターフェイスが優れていますが(私の好みの問題でもあります)、企業などでモジュールをインストールできないといった方はDBIそのままでもそれほど悪くない、ということだと思います。

SELECTするためにDBIを素で使うことがほとんどないのでselectall_arrayrefなんて忘れてました……ごめんなさい:)

2008年4月15日火曜日

王女様とティーパーティー

ベルギーという国がある。日本からは直行便がないため旅行先としてはメジャーになりきれないが、ワッフルやチョコレート、そしてベルギービールで有名なのはご存じのとおりである。ベルギーの正式名称はベルギー王国。国名からわかるように王様がいる国だ。王国という概念は日本ではなじみがないが、タイやイギリスも王国である。ヨーロッパには王国が多く、ノルウェー、デンマーク、スウェーデン、オランダも王国だ。

ベルギーの王室の政治的な発言力は近年低下したそうだが、一般市民のなかでは大きな存在らしい。首都ブリュッセルには巨大な王宮が美しい姿を見せている。昨年ベルギーに行ったときは書店では王様一家のアルバムのようなものが売られていた。ちなみに王家の自動車には特別なナンバーがついており、追い越すことはご法度だとタクシーの運転手がぼやき気味に教えてくれた。

さてそのベルギーの首都ブリュッセルに滞在中、ある日の午後のこと。私たちの泊まっているホテルの中庭でベルギーのチャリティ団体が寄付を募っていた。ベルギーのプリンセス、つまり王女様が後押ししているチャリティだという。お城の中のお姫様とチャリティの組み合わせとは、真面目なものだろうか、それともお姫様のイメージアップの作戦なのだろうか。でもイメージアップなら外国人が多いホテルじゃなくて駅で募金活動をやらなきゃだめだよな。そういうことを考えつつベルギー来訪記念に寄付をした。

 ◇ ◇ ◇

手持ちの現金から払ったので決して多額ではないのだが、寄付をした人があまり他にいなかったからだろう、「お茶が用意してありますので別室へどうぞ」ということになって、テラスに通された。紅茶と一口サイズのケーキが用意してある会場だ。紅茶をついでくれる給仕の人たちの他にはテレビカメラを構えたマスコミの人が多数いた。あと私たちと同時に入ってきたお金持ちそうなご婦人が一人。この人も寄付をしたのだろうか。

お茶を一杯飲んでしまったら他にすることもないので帰ろうと思ったら、そのご婦人が話しかけてきた。ブリュッセルはフランス語圏だが流暢な英語である。

 ご婦人「どちらから」
   私「ニューヨークに住んでます。日本人ですが」
 ご婦人「ベルギーは仕事で来たのですか」
   私「いえ観光です。とてもいいところですね」(社交辞令)
 ご婦人「いいところでしょう」

ご婦人はちょっと上からの目線。ヨーロッパのお金持ちはこういう感じなので気にしないが、何をしている人だろうと思って家族のことなど聞いてみる。

   私「ご家族はご一緒ですか」
 ご婦人「ええ、階下にいますのよ」
   私「みなさんお元気でいらっしゃるんでしょうね」
 ご婦人「家族全員幸せにしています」

ふとカメラのフラッシュ。新聞社とテレビ局のカメラが私とご婦人を取り囲んで撮影をしている。あまり寄付が集まったとも思えないし、盛り上がらないイベントに終わりそうだが、だからといって私とご婦人の会話を記事にするのはかなり無理がある。給仕とカメラに取り囲まれる着飾ったお金持ち女性と普段着の日本人。妙な取り合わせだ。

 ◇ ◇ ◇

お金持ちとの会話は苦手なのでご婦人との会話はほどほどで切り上げ、さらに注がれた紅茶を飲みほし、カーペットの階段を下りて退出した。中庭に戻るとまだ寄付を募っている係の人たちがいた。

   私「ごちそうさまでした。そろそろ帰りますね」
 係の人「ありがとうございました」
   私「そういえばマスコミがいっぱい来ているけどあれはなんですか」
 係の人「今日はVIPが来ていますから」
   私「ああ、あの女の人でしょ? あの人は何者ですか」

係の人、困惑をした表情で私を見る。知らなかったのかよ、と言いたげに咳払いをする。

 係の人「あのご婦人はベルギー王国の王女様です」

今さら説明するまでもないが、すべてストーリーがつながった。王女様というのは姫、つまり子供なんだと思い込んでいた。しかしよく考えたらベルギーの国王はお年を召している。王女様はもう大人のご婦人でいらっしゃったのだ。

2008年3月7日金曜日

日本総領事館に行ってきた

ニューヨークには日本の大使館がないかわりに総領事館というものがあります。窓口では大使館と同じく、ニューヨークとその周辺に住む日本人に各種サービスを提供したり、日本に行きたい外国人にビザを発給したりしています。

先日、用事があってこの総領事館に行ってきたのですが、なかなか新鮮な経験でした。

1. 窓口のおじさんがとても日本的。

「お疲れさまでございます」と、とてもニューヨークでは聞かれないような台詞を言われました。「あ、日本語っていいな」と思いました。書類ができたら「○○をお待ちの××さん、お待たせしました」と。日本語は良い。

2. 外人の相手をしている窓口のおじさんも日本的。

隣の窓口に来ていたアメリカ人っぽい青年。青年の声は聞こえませんが窓口氏の声は聞こえます。どうやらビザ申請に持ってくるべき書類が足りなかったらしい。赤坂にあるアメリカ大使館なら入館自体を断られたりするところですが、窓口のおじさんは「いやー、その書類がないとちょっと困るんですよねえ」と(英語で)あいまいに返事をしていました。「そこをなんとか」と言ったらなんとかなりそうな雰囲気でした(本当はなんともならないんでしょうけれど)。

3. 警備がものものしくない。

東京のアメリカ大使館は警備が中も外も厳しく、少しでも怪しい動きをしようものなら人が集まってきそうですが(試していません)、この総領事館は空港と同様の荷物検査のみ。アメリカ大使館のように携帯電話を取り上げられたりはしません。

4. 館内のテレビで福田首相が見られる。

恥ずかしながら、福田首相をはじめてテレビで見ました。私の頭の中では福田官房長官で止まっているので、とても新鮮でした。NHKテレビの福田首相はライス国務長官と会談をしていました。

5. 日本の新聞が読める。

ニューヨークで発行されている日本語のフリーペーパーはもとより、朝日新聞も日経新聞もありました。インターネットのおかげで日本語に飢えることはありませんが、活字の日本語をこれだけ見られるのはありがたいことです。

6. 日本の工芸品もある。

日本のひな祭り人形があったり、版画が掲示されたりしています。これを税金の無駄遣いという見方はあるでしょうけれど(実際にギャラリー分の家賃を考えると巨額だとは思う)、日本と縁遠い生活をしている私には心に染み入るものがありました。

7. 周辺に日本のレストランがたくさん。

ラーメン屋、おにぎりカフェなどが徒歩圏内にありました。総領事館のあるエリアは日本企業も多く日本人が多く住んでいるのだそうですが、こういうところに住んだら日本食に困らなさそうです。

日系スーパーにも日系レストランにもあまり行かない私ですが、そういうわけでこの総領事館は楽しい訪問となりました。機会があればまた行きたいところですが、当面総領事館に行くような用事はありません。とりあえず用もないのに行って、受付で来館目的を書くときに「おじさんと日本語の会話をしてテレビを見て新聞を読むために来ました」と書いたら入れてくれるかなあ。無理だろうなあ。

2008年2月24日日曜日

Perlで順列組合せの問題を解く

(1) 青・赤・黄・緑の4色のボールがあります。これを順番に並べる方法はいくつありますか?

(2) この中から2色選んで順番に並べる方法はいくつありますか?

(3) この中から2色選んで順番を考えずに組合せを作る方法はいくつありますか?

こういう問題を学生の頃やらされました。nCrなどを見るとイライラするという方も多いでしょう。

最近こういう問題を解くはめになり、Perlでプログラムを書き計算する方法を調べてみました。もちろん数学の公式をネットで調べて当てはめてもいいのですが、既存のモジュールを使わない手はありません。

Math::Countingを使う

Math::Countingがこういうときはぴったり。

#!/usr/bin/env perl

use strict;
use warnings;
use Math::Counting;

# (1) 4色のボールを順番に並べる(4P4

print P(4, 4);
print "\n";

# (2) 4色から2色選んで順番に並べる(4P2

print P(4, 2);
print "\n";

# (3) 4色から2色選ぶ組合せ(4C2

print C(4, 2);
print "\n";

出力は(1)は24、(2)は12、(3)は6となります。

ただ、答えだけを見せられても、私などは結果が本当かどうか不安になります。そこで、確認のために別のモジュールの登場です。

Math::Combinatoricsを使う

Math::Combinatoricsは実際の順列組合せを表示することができます。

#!/usr/bin/env perl

use strict;
use warnings;
use Math::Combinatorics;
use utf8;
binmode(STDOUT, ":utf8");

my @balls = qw(青 赤 黄 緑);

print "(1) 4色のボールを順番に並べる\n";
print join("\n", map { join " ", @$_ } permute(@balls));
print "\n";

print "(2) 4色から2色選んで順番に並べる\n";
print join("\n", map { join " ", @$_ } (map { permute (@$_) } combine(2, @balls)));
print "\n";

print "(3) 4色から2色選ぶ組合せ\n";
print join("\n", map { join " ", @$_ } combine(2, @balls));
print "\n";

これを実行すると出力はこうなります。

(1) 4色のボールを順番に並べる
青 赤 黄 緑
青 赤 緑 黄
青 黄 赤 緑
青 黄 緑 赤
青 緑 赤 黄
青 緑 黄 赤
赤 青 黄 緑
赤 青 緑 黄
赤 黄 青 緑
赤 黄 緑 青
赤 緑 青 黄
赤 緑 黄 青
黄 青 赤 緑
黄 青 緑 赤
黄 赤 青 緑
黄 赤 緑 青
黄 緑 青 赤
黄 緑 赤 青
緑 青 赤 黄
緑 青 黄 赤
緑 赤 青 黄
緑 赤 黄 青
緑 黄 青 赤
緑 黄 赤 青
(2) 4色から2色選んで順番に並べる
青 赤
赤 青
青 黄
黄 青
緑 青
青 緑
赤 黄
黄 赤
緑 赤
赤 緑
黄 緑
緑 黄
(3) 4色から2色選ぶ組合せ
青 赤
青 黄
青 緑
赤 黄
赤 緑
黄 緑

ちゃんと(1)が24通り、(2)が12通り、(3)が6通りということがわかります。(2)の場合のインターフェイスがよくないですが、一から自分でやることをかんがえればずっと良いというものです。

2008年2月22日金曜日

あなたがYAPC::Asiaでプレゼンテーションをするべき10の理由

YAPC::Asiaのプレゼン締切が近づいているそうです

応募の締切は2月25日の月曜日、あと2日です。応募しようかどうか迷っている人に向けて、背中を押すエントリを書いてみたいと思います。ちなみに私はアメリカのYAPC::NAでPerl業界(って何)にデビューしました。YAPC::Asiaの中の人に断りなく勝手に書いています。

1. YAPC::Asiaに行く目的が増える

YAPC::Asiaに行ってただ座っているのはつまらないものです。参加することに意義がある、と昔の人は言いました。人の講演を聞いて「楽しかった」「なんかすごかった」という感想を持って帰るのもいいですが、20分くらい立ってプレゼンテーションをしてみましょう。得るものが増えること間違いなしです。だいたい、ずっと座っているとエコノミー症候群になります。

2. 解決方法を一緒に考えてもらえる

「こういうものを開発しました」「こういう問題を解決しました」というのがプレゼンテーションのよくあるパターンですが、「ここがまだ未解決です」というスライドを一枚つけ加えましょう。知らない人が「こうやればいいんじゃない?」という提案をしにきてくれます。自分が知っていると思っていたことも、「それ○○でできるよ」と新しいことを教わったりもします。

3. 友達ができる

はっきり言って友達は増えます。カンファレンスのディナーなどに行っても「あなたのプレゼンテーション見ました、握手してください」みたいな人が近づいてきます。「サインしてください」と言われるかもしれないのでぜひサインは練習しておきたいものです。

4. 仕事のスカウトがくるかもしれない

別に転職を目指してプレゼンテーションをするわけではありませんが、「ウチの会社に興味はありませんか」というお誘いはカンファレンスの当日、そして後日、いろいろあります。私がYAPC::NAで発表したときは何を評価されたのか「○○万ドル出すからどうだ!」と極端な迫り方をされました。

5. 飲み会のお誘いがくるかもしれない。勉強会のお誘いもある。

「飲みに行きましょうよ。私のおごりで」と親切な人に誘ってもらえることがあります。真面目なほうでは、「今度こういう勉強会をやるのでしゃべってもらえませんか」と言われたりします。

6. 自慢できる

「YAPCという世界各国で行われている国際会議で発表をしました」というのは友達に自慢できると思います。さらに、履歴書に書くことがなくて困っている人はYAPC::Asiaで発表すると一行くらい書くことが増えます。

7. 練習するには規模が最適

これからの人生、一万人の前で講演する機会がない、とは言い切れません。いきなり一万人の前でスピーチをするよりは、YAPC::Asiaで数百人の前で話しておくほうが気楽というものです。できるだけ少ない人の前で話したいという方は、全参加者が集まるライトニングトークよりも聴衆が二部屋に分かれる(こともある)一般トラックのほうがおすすめです。

8. これから3か月の生活が充実する。

人の欲は尽きないものです。2月に話す内容を決めてプレゼンテーションを完成させたとしても、YAPC::Asiaの行われるまでの3か月はきっとその発表を少しでも良く見せるためにいろいろな改善を加えたくなることでしょう。自分の作ったアプリケーションも自ずと質が向上します。

もっとも、上級者はプレゼンテーションの中身を決めてから発表に合わせて開発を進めるようですが(参考)。

9. やらないで後悔するよりは、やってみてから考えよう

何事においても、やろうかな、やめようかな、どうしようかな、と迷っている場合はとりあえずやってみるのがいいと思います。Fukuoka.pmもできましたし、うかうかしていると次回のYAPC::Asiaは東京で行われないかもしれません。

10. これであなたも有名人

カンファレンスで発表すると本人が思っている以上に有名になります。名前はもとより顔も多くの人に覚えられます。街を歩いていても「あのときの方ですよね」と声をかけられます。あなたの生活が一変します。セレブになれるといっても過言ではないでしょう。

追記

11. 参加費用が無料になる

というコメントをmiyagawaさんからいただきました。

参加費用がタダなのはもとより、YAPC::Asiaのチケットは例年売り切れるのが早いので、2月から座席を確保できるというのは大きなメリットです。

2008年2月17日日曜日

ミネアポリスについて

前後の脈絡はなにもないが、この週末をすごしたミネアポリスという都市のことを書くことにする。

基礎知識

ミネアポリスはアメリカの北のほうにあるミネソタ州の都市である。日本人にはあまり馴染みがない都市だったが、昨年夏に起きた橋の崩落事故のおかげで 有名になった。ほかには留学関係でも知られているし、ノースウェスト空港のハブ空港(ミネアポリス・セントポール空港)もあるためここで乗り換えたことのある人もいるかもしれない。

気温

私が訪問した時期のせいもあるが、地元の人が口を揃えて言うのは気温のことだ。2月の中ごろまでは最高気温が-10℃以下は普通のこと。幸か不幸か私が訪問した週末は特別で、金曜日までの最高気温が-10℃以下だったのに対し、土曜日と日曜日は0℃まで上がった。

かといって一年中寒いわけではなく、春は10℃、夏は30℃にもなるらしい。

地元の人はみな厚手のコートを着て重装備をしているのかと思っていたらそういうこともなく、慣れているのだろう、軽装の人が多かった。ミニスカートの人もいたのには驚いたが。

街の様子。雪はそれほど積もっていない。

華氏マイナス20度(摂氏マイナス30度のこと)になったら長ズボンをはこう。ビール会社の広告。

交通

市内の公共交通機関はバスが中心(だが観光客が乗りこなすのは無理だと言われた)。ダウンタウンと空港を結ぶ路面電車もあるが、これも観光客にはあまり役立たないし、空港の往復はタクシーが普通らしい。

ダウンタウンはそれほど大きくないので徒歩で移動ができる。ビル間をスカイウェイと呼ばれるガラス張りの陸橋のような通路が網羅しているため、厚着することなく他のビルへと訪問ができる(曲がりくねっているので道路を歩くのに比べて時間は倍くらいかかる)。

アメリカでは大都市にしかいない流しのタクシーもたくさんいた。

スカイウェイの外と内

治安

ホテルのあるダウンタウン地区については、治安はとても良さそうだった。夜10時以降でも人は普通に通りを歩いているし、治安の悪さの指標となる落書きも見なかった。

食べ物

名物料理というもの特にはないらしい。街を歩くとアメリカ料理・イタリア料理・メキシコ料理などなどのレストランがバランスよくあるようだった。中華料理店は見なかった。日本料理屋はやたらとあったが、Ichiban Steak House(一番ステーキ)やTemple Restaurant and Shinto Lounge(寺と神道)などなので、「正しい」日本料理がでてくるかどうかはわからない。これはミネアポリスの問題ではなく、アメリカ全体でこんな感じだけれど。

観光

郊外に行くと滝がある。あと美術館。車で1時間のところにカジノもあるそうだ。

空港の近所にあるMall of Americaというショッピングモールが全米最大だというので行ってみた。たしかに大きい。フロアをゆっくり一周したら1時間かかった。同じようなモールはアメリカのあちこちにあるし、ただ大きいだけで有名になっているという話もあるが、空港に向かう前にちょっとのぞいてみるくらいの価値はあると思う。モールの中に遊園地もある。

銃持ち込み禁止

銀行、ホテルやレストランの前に「銃は持ち込み禁止です」という看板があった。アメリカ中部に来たぞという気持ちになる。

2008年2月10日日曜日

Perlサーベイを読み解く

以前のエントリで書いたが、Perl Survey 2007というアンケートの結果が公開されている。年齢、プログラミング年数、Perlコミュニティへのかかわり、年収など考えられるすべての情報を網羅した貴重な情報だ。

生データを見ているだけでは何もわからないので、各要素の類似度(相関係数)を計算してグラフにしてみた。相関係数は数種類定義があるが、ここではスピアマンの順位相関係数を使った(細かいことは一番下に書いた)。

年齢と相関が高い要素トップ10

年齢の高いPerlプログラマは

  • プログラミング歴が長く(1位)、Perlプログラミング歴もそこそこ長く(6位)
  • Perlの開発に参加していることが多く(2位、3位)
  • 地元以外でのPerlモンガーズやPerlカンファレンスにこの1年間に参加したことがある(5位、8位)
  • という傾向が読み取れる。

地元の集まりに参加したことがあるかどうかはランク外。つまり、PerlモンガーズとPerlカンファレンスに参加したことがあるかどうか、は年齢とあまり関係ないものの、年齢が高い人ほど地元以外の集まりに出かけていることが多い。

Perlプログラミング歴と相関の高い要素トップ10

年齢のグラフより全体的に相関係数が高めである。Perlプログラミング歴の長い人は

  • Perl以外も含めたプログラミング歴が長く(1位)
  • Perlの開発に参加し(2位、3位)
  • Perlモンガーズやカンファレンスに参加し(5位、6位、7位)
  • CPANのモジュールを開発し(10位)
  • 男である可能性が高い(4位)

プログラミングに占めるPerlの量と相関の高い要素トップ10

一見Perlプログラミング歴と似た結果だが、Perlプログラミング歴で1位だった「Perl以外も含めたプログラミング歴」はランク外に落ちた(相関係数0.1以下)。つまり、プログラミング歴とPerlの使用率は何の関係もない。

年収と相関の高い要素トップ10

年収の高い人は、

  • Perlの開発に参加しており(1位、2位)
  • 地元以外のPerlモンガーズに参加していて(4位、5位)
  • カンファレンスで発表し(6位)
  • 男性であることが多い(3位)

年齢の相関係数0.35はそれほど高くない。すなわち年収と年齢はそれほど強い相関関係にないことに注目したい。言い換えるとPerlプログラマの年収は年功序列とはいえない。

注釈

  • 普通の相関係数(ピアソンの積率相関係数)ではなく、スピアマンの順位相関係数を使ったのはバラバラな指標(Perlの開発に参加しているか:yesとnoの2値、プログラミング歴:正規分布からほど遠い整数、CPANモジュール数:大多数が0)をまとめて扱いたかったからであるが、もっといい方法があるかもしれない。
  • コンピュータネットワークの発達していない地域で傾向が違うのは避けられないため、一人当たりのGDPが上位25か国(Wikipedia参照)の在住者のみを対象にした。ルクセンブルク(lu)、アイルランド(ie)、ノルウェー(no)、米国(us)、アイスランド(is)、スイス(ch)、オランダ(nl)、デンマーク(dk)、カタール(qa)、オーストリア(at)、フィンランド(fi)、カナダ(ca)、英国(uk)、ベルギー(be)、スウェーデン(se)、UAE(ae)、シンガポール(sg)、オーストラリア(au)、ギリシア(gr)、日本(jp)、フランス(fr)、イスラエル(il)、ドイツ(de)、イタリア(it)、中国(cn)。
  • 1985年以降に生まれた人は統計から除外した。
  • 年収(任意回答)を答えなかった人は統計から除外した。
  • 以上の結果、統計の対象になったデータは2368個。

リンク

Greg氏のHacking with Greg: Charlie Brown Plays With Stats。私がこの企画を温めていたら、先に似たことをされてしまった。yesとnoで答える項目だけの集計だが、これはこれで面白い。

So with the improvements in my mind I managed to adjust it in just a few minutes. And the results where astonishing!....-ly boring. Here's the top 5...

If 'Posted to Perl Mongers list ' Then 'Subscribed to Perl Mongers list ' (With 0.995 probability)
If 'Posted to other list ' Then 'Subscribed to other list ' (With 0.990 probability)
If 'Attended conference (non-local) ' Then 'Attended conference ' (With 0.970 probability)
If 'Attended Perl Mongers (non-local)' Then 'Attended Perl Mongers ' (With 0.965 probability)
If 'Contributed to Perl 5 ' Then 'Subscribed to other list ' (With 0.882 probability)

(拙訳)

これはすごい……つまらない。項目ごとの類似度を出して、そのベスト5を出したものは
「Perlモンガーズのメーリングリストに投稿したことのある人」は99.5%の確率で「Perlモンガーズのメーリングリストに入っている」
「その他の(Perlモンガーズ以外の)メーリングリストに投稿したことのある人」は99.0%の確率で「その他のメーリングリストに入っている」
「地元以外のPerlカンファレンスに参加したことのある人」は97.0%の確率で「Perlカンファレンスに参加したことがある」
「地元以外のPerlカンファレンスに参加したことのある人」は96.5%の確率で「Perlモンガーズの会合に参加したことがある」
「Perl5の開発に参加したことがある人」は88.2%の確率で「Perlモンガーズ以外のメーリングリストに入っている」

謝辞

スピアマンの順位相関係数を求めるスクリプトはSpearman's rho test download pageからいただいた。

その他

  • 統計は素人のため、ご提案、間違いのご指摘など歓迎します。
  • グラフが英語なのはGoogle Chart APIで漢字が使えないという制限のためです。
  • 相関がどれだけ有意かというのはまた別の問題です。参考程度にご覧ください。

統計の対象にした全項目

項目名解説
整数Year of birth生まれた年。ここでは年齢と同じこと
3値Sex性別。ここでは「男」が1、「女」が0、「その他」を0.5として計算した
範囲Income年収
整数Years programming PerlPerlプログラミング歴(年数)
整数Years programming (total)Perl以外も含めたプログラミング歴(年数)
Proportion of Perlこの1年に書いたプログラム、Perlは何%?
2値Subscribed to Perl Mongers listPerlモンガーズのメーリングリストに入っている
2値Posted to Perl Mongers listこの1年にPerlモンガーズのメーリングリストに投稿した
2値Subscribed to other listその他Perl関連のメーリングリストに入っている
2値Posted to other listこの1年にその他Perl関連のメーリングリストに投稿した
2値Perlmonksこの1年にPerlmonksに投稿した
2値Contributed to websitesこの1年にその他Perlのサイトに投稿した(フォーラム、Wiki、ブログ)
2値Attended Perl Mongersこの1年にPerl Mongersのミーティングに出席した
2値Attended Perl Mongers (non-local)この1年に地元以外でPerl Mongersのミーティングに出席した(地元以外:1000km以上)
2値Attended conferenceこの1年にPerlのカンファレンスに出席した
2値Attended conference (non-local)この1年に地元以外でPerlのカンファレンスに出席した
2値Presented at conferenceこの1年にPerlのカンファレンスやミーティングで発表した
2値Contributed to CPANモジュールを発表するなどCPANに貢献したことがある
2値Contributed to Perl 5Perl5に貢献したことがある
2値Contributed to Perl 6Perl6に貢献したことがある
2値Contributed to other projectsオープンソースソフトウェア(OSS)などにPerlで貢献したことがある
2値Led other projectsOSSなどのプロジェクトを開始した、もしくはリーダーをしたことがある
2値Provided feedbackPerl関係のバグレポートなどフィードバックを送ったことがある
整数CPAN modules maintainedCPANでメンテナンスを担当しているモジュール数

2008年2月2日土曜日

ユーロスターでパリからロンドンへ

今回は技術的な話を抜きにして旅行の話である。パリとロンドンの間にはユーロスターという国際列車があり、1時間から2時間の間隔で運行している。所要時間は2時間半以下。新幹線でいうと東京から名古屋よりも短い時間だ。

切符のとりかた

ユーロスターのオフィシャルサイトで予約ができる。自分の乗りたい日付と時刻を選び、座席の等級を選び(3種類ある)、クレジットカードの情報を入力しておしまい。値段は等級とその列車の混雑具合によって変動するが、片道1万円から2万円の間から。

もちろん当日に駅で買うこともできるが、窓口はいつも混雑しているし、高いチケットしか残っていない場合もあるのできれば事前に購入しておきたい。

発券のしかた

ネットで予約したら出発前に切符を発券してもらわなければならない。私はパリ発、ロンドンの往復だったため、ユーロスターのパリ駅で往復の切符を発券した。窓口に並ぶ必要はなく、自動券売機で行う(購入に使ったクレジットカードが必要)。

出国・入国関係

出発地で出国と入国の手続きを行う。たとえば、フランスからイギリスに向かうときは、改札口の中にフランスの出国窓口、さらにイギリスの入国窓口がある。隣り合った窓口なのにもかかわらず、フランスの係員はフランスなまりの英語を話すし(travelがトアベユになる)、イギリスの係員はきれいなイギリス英語を話す。

食事関係

フランス発の朝食はフレンチトーストだった。フレンチトーストにロールパンがついてきたのはなんか変だけれど。

味は……別に普通でした。

2008年1月22日火曜日

Macportsのcoreutilsコマンド群はなんでも「g」から始まる

CoreutilsはcatやlsといったUNIX上の基本的なコマンドを集めたGNUのパッケージである。これをMacPortsからインストールしたからGNUのコマンド群が使えるようになるぞ、と思っているとハマることになる。Coreutilsを普通にインストールしても、「ls」はインストールされないのである。

% port file coreutils
/opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/coreutils/Portfile <- coreutilsはインストールされている
% ls --help
ls: illegal option -- - <- GNUのlsではない
usage: ls [-ABCFGHLPRSTWabcdefghiklmnopqrstuwx1] [file ...]
% which ls
/bin/ls <- OS標準のlsが使われている
%
実はlsはglsという名前でインストールされている。cp、mv、df、cat、odもそれぞれgcp、gmv、gdf、gcat、godという名前で入る(godって……)。おわかりのとおり、コマンド全部が「g」から始まるようになっている。

これを回避する方法は一応ある。こうやってcoreutilsをインストールすれば余計なgがつかない。

% sudo port install coreutils +with_default_names
ただこれはあまり推奨されていないようで、おすすめはaliasを設定することだそうだ(下の方にalias一覧をつけました)。


以下は蛇足。

これはMacports側の設定で「すべてにgをつけるべし」という設定が意図的にされているからである。

configure.args  --program-prefix=g \
--disable-nls
つい先日MacPortsのメーリングリストでも「lsはlsとして、gをつけない普通の名前で/opt/local/binに入れるようにしませんか」という提案がなされたのだが(ソース)、「既存のシェルスクリプトはOS標準の(BSD系の)lsを想定して書かれているから動かなくなったら困る」という理由で却下されている。

明確なソースが示されていないので実際どのくらいの影響が出るのかは知らないが、記憶をたどるとこの議論、ずっと前から存在する。FreeBSDのportsでも長い間lsはglsとしてインストールされてきた。古いものはあまり確認できないが、少なくとも2000年時点のfileutilsはそうである(ソース)。

個人的にはlsをls以外の名前で呼ぶことはしたくないし、glsなんていちいち打つ人がいるとも思えない。aliasを設定すれば良いというのはもっともらしく聞こえるが、不出来なシェルスクリプトのつけをユーザに回しているだけという気もする。

どちらのlsでも動くシェルスクリプトを作る方法はあとで考えることにして、とりあえずaliasを設定した。

alias base64=gbase64
alias basename=gbasename
alias cat=gcat
alias chgrp=gchgrp
alias chmod=gchmod
alias chown=gchown
alias chroot=gchroot
alias cksum=gcksum
alias comm=gcomm
alias cp=gcp
alias csplit=gcsplit
alias cut=gcut
alias date=gdate
alias dd=gdd
alias df=gdf
alias dir=gdir
alias dircolors=gdircolors
alias dirname=gdirname
alias du=gdu
alias echo=gecho
alias env=genv
alias expand=gexpand
alias expr=gexpr
alias factor=gfactor
alias false=gfalse
alias fmt=gfmt
alias fold=gfold
alias groups=ggroups
alias head=ghead
alias hostid=ghostid
alias hostname=ghostname
alias id=gid
alias install=ginstall
alias join=gjoin
alias kill=gkill
alias link=glink
alias ln=gln
alias logname=glogname
alias ls='gls -F'
alias md5sum=gmd5sum
alias mkdir=gmkdir
alias mkfifo=gmkfifo
alias mknod=gmknod
alias mv=gmv
alias nice=gnice
alias nl=gnl
alias nohup=gnohup
alias od=god
alias paste=gpaste
alias pathchk=gpathchk
alias pinky=gpinky
alias pr=gpr
alias printenv=gprintenv
alias printf=gprintf
alias ptx=gptx
alias pwd=gpwd
alias readlink=greadlink
alias rm=grm
alias rmdir=grmdir
alias seq=gseq
alias sha1sum=gsha1sum
alias sha224sum=gsha224sum
alias sha256sum=gsha256sum
alias sha384sum=gsha384sum
alias sha512sum=gsha512sum
alias shred=gshred
alias shuf=gshuf
alias sleep=gsleep
alias sort=gsort
alias split=gsplit
alias stat=gstat
alias stty=gstty
alias su=gsu
alias sum=gsum
alias sync=gsync
alias tac=gtac
alias tail=gtail
alias tee=gtee
alias test=gtest
alias touch=gtouch
alias tr=gtr
alias true=gtrue
alias tsort=gtsort
alias tty=gtty
alias uname=guname
alias unexpand=gunexpand
alias uniq=guniq
alias unlink=gunlink
alias uptime=guptime
alias users=gusers
alias vdir=gvdir
alias wc=gwc
alias who=gwho
alias whoami=gwhoami
alias yes=gyes
ちなみに以上はワンライナーで作った。
% port contents coreutils | perl -nle 'print "alias $1=g$1" if m{/opt/local/bin/g(\w+)}'
alias base64=gbase64
alias basename=gbasename
alias cat=gcat
alias chgrp=gchgrp
(略)
%
例外はlsで、「gls -F」にaliasした。

2008年1月11日金曜日

Leopardを再インストールした

Leopardインストール日記ということでLeopardソフトウェアをインストールしたメモをつらつらと書いてきたのだが、Leopardインストールすることになるとは思いもしなかった。まだMac miniを買って2週間足らずなのに。

顛末

きっかけは消せないファイルができてしまったことだ。Linuxからrsyncで機械的にコピーしたファイルが、ファイル名に妙な文字を含んでいるらしくターミナルからもFinderからもどうやっても消せなくなってしまったのだ(Finderはファイルの存在すら認識せず、0 itemsと表示する)。

lsはできる。
 % ls

%
ls -lをするとサイズは0である。

ところがrmをすると
 % rm *
rm: ☁: No such file or directory
%
*をファイル名一覧に展開するところはできるのに、rmが認識できていない。

ディレクトリごと動かすことはできる。
 % ls a/

% mv a b
% ls b/

%
ごみ箱に移したらごみ箱を空にすることができない。mvができてrmができないからか、と妙に納得してしまう。

原因

原因はわかっている。rsyncでLinuxからファイルを大量にコピーしたからだ。Linuxで作ったファイルではなく、その前のOSからrsyncしたファイルだと思う。Windowsかもしれない。

rsyncがどんな処理をしてこういう妙なファイルを作ってしまったのかはわからないが、Linuxからrsync --deleteで空のディレクトリをコピーしてもこのファイルは消えてくれなかった。

対処

こういうファイルを放置したらどういう結果になるかは知らないものの、気持ち悪いことには違いない。バックアップをとるたびにエラーメッセージを見るのも愉快ではない。とはいえ、OSの再インストールしか直す方法がないらしい。となると、購入したてのいまがチャンスだ。

LeopardはDVDから立ち上げてデータを失わずに再インストールできる。UNIXでは当たり前のことだけれど、すべてがGUIで完結するのはすごいと思う。

結果

問題のファイルを/tmpに置いてから再インストールしたら、このファイルは無事なくなった。というよりも/tmpにあったファイルはすべてなくなった。

再インストール自体はDVDを2枚使う待ち時間ばかり長い作業だったが、ユーザディレクトリもインストールしたアプリケーションも失うことなく、OSの領域だけきちんと復元できた。

失われたもの

前記のとおり、/tmpにあったファイルは全部なくなった。さらに、/var、/etcにあったと思われる設定・データもなくなった。具体的には
  • /etc/sudoers
  • /etc/ntp.conf(時刻の設定)
  • /var/run/utmpx(ログイン履歴)
  • ホスト名(どのファイルかは不明)
しかし逆に考えれば、OSを再インストールしたあとに再設定がほとんど必要なかったのはすごいと思う。