2009年12月30日水曜日

AppleのTime Machineはユーザがログインしていないと動かない

LinuxからOS Xに移行してもう2年になる。OS Xの機能を使い倒していないので、まだApple初心者気分は抜けないのだが、たぶん一番よくお世話になっている機能はTime Machineである。簡単に書くと、Time Machineは一時間に一回、外付けディスクにファイルのバックアップを取ってくれるものだ。ディスクの破損にも対応できるし、うっかり改変・消去してしまったファイルの復元にも使える。なによりも、OS標準の機能なのがうれしい。

ところがこのTime Machine、不可解な設計になっていて、ユーザがログインしていないとバックアップが取れないのである。バックアップが起こった直後にファイルを編集し、そのままログアウトして寝てしまうと翌朝ログインするまでバックアップが取れないことになる。

ユーザがログインしていなくてもバックアップを毎時間取る

Mac OS X Hintsにその解説があった。

それによると、

  • Time Machineはユーザがログインしていなくても一時間に一度バックアップを取るようになっている
  • OSはユーザがログアウトするとディスクのマウントを外してしまう

のだそうだ。つまりユーザがログインしていないときにもTime Machineはバックアップを取ろうとするのだが、バックアップ先がない状態になってしまっている。

対策としてはターミナルで

% sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true

とする。OSの再起動をして設定を有効にする。

これでコンピュータをスリープしないようにしておけば、24時間毎時バックアップが取れる。幸せです。

2009年7月29日水曜日

夕焼けとサマータイムと人生と


僕がずっと前に大阪で仕事をしていたときの話である。サービス残業の多い会社で帰宅はいつも10時過ぎだった。部内最年少の僕は残業したところでできることは知れているのだが、かといって先輩より先に帰れるような雰囲気ではなかった。

当時付き合っていたガールフレンドも電話で話すばかりでなかなか会えなかった。一足先に社会人になっていた彼女は僕の慣れない職場環境を気づかってくれ、文句はまったく言わなかった。僕が電話で話す内容は仕事場のことが中心だった。

「昨日、イケメンの課長にサシで夕食を食べに行こうと言われたんだ。この課長ならフレンチかイタリアンに違いないと思って行ったのに街の中華料理屋、おまけに最初の注文が餃子5人前とビールで幻滅さ」

彼女はウフフと笑ってくれた後、「フレンチだなんて、あなたが社会人生活に夢を持ち過ぎよ。でも大企業だと思ってちょっと期待してたけど大したことないのね。でもいいわ私餃子好きだから。今度食べに連れて行ってよ。一緒に夕焼けも見たいし」と言った。

倹約デートでいいから会いたい、という彼女なりのメッセージなのだが僕はそれに気づかず「夕焼けはともかく、餃子なんか好きだったっけ?」と彼女の言葉を額面通りに受け取った。

大阪という所は餃子を食べる場所には事欠かないのだが、夕焼けスポットは隣の神戸と比べると実に乏しい。僕は雑誌と首っ引きで高層ビルのカフェに当たりをつけた。仕事帰りに落ち合い、カフェで夕焼けを鑑賞してから餃子という計画だ。

◇ ◇ ◇

さてデートの当日。夕焼けの時間帯から逆算すると6時には退社しなければならないのだが、雑用が多く実際に会社を出られたのは6時20分を回っていた。異例に早い退社なので上司が「おや今日は半休ですか」と嫌味を言っていたが言い返す時間すら惜しんで待ち合わせの場所に向かった。

遅刻から始まったデート。結論から言えば失敗だった。彼女とようやく高層階のカフェに着いたときは夕焼けはほとんど終わっていた。評判の餃子専門店は客が多過ぎるせいか皮の包み方が雑だった。

そして僕達の仲も、下手な職人が包んだ餃子の襞がゆっくりはがれるように疎遠になっていった。僕が東京で別の仕事を始めたのは既に二人の関係が終わった後だった。

◇ ◇ ◇

今更ながらに思う。

あのときもし日本にサマータイムがあったら。日没は一時間遅くなり、僕達は夕焼けに照らされたカフェで愛を誓い合ったはずだ。たとえ餃子の味が悪くても、ゆっくり口直しをする余裕があったに違いない。

サマータイムがないおかげで僕は大阪で家庭を築きそこねたのだ。

サマータイムに反対の人は一度夕焼けデートをしてみるといいよ。

2009年7月12日日曜日

バンガロールからの週末海外旅行

インドのベンガルール(バンガロール)からの海外旅行情報。バンガロールに住む人が週末を使って海外旅行をしようと思ったらどこに行けばいいのだろうか。

ベンガルール空港

昨年新しい場所に空港ができた。市内から40km(Wikipedia)。

IT都市のはずなのに、オフィシャルベージはちょっと残念な感じ。

ほとんどの発着便がインド国内線で、国際線の発着は一日20便程度。国内線を乗り継げば行動の幅が広がるが、以下は週末旅行計画のため直行便のみにしぼった。

近隣諸国

飛行時間は短いが、フライトの時間帯が悪く滞在時間は長くない。

目的地航空会社往路時刻復路時刻所要時間コメント
コロンボスリランカKingfisher Airlines土曜日15:00発→16:30着日曜日09:15発→10:45着1時間半日曜日の午前便で帰ってこなければいけない
スリランカ航空金曜日21:15発→22:35着日曜日07:35発→08:55着
マレモルジブエアインディア土曜日10:30発→12:00着日曜日12:50発→15:30着2時間

中東

目的地航空会社往路時刻復路時刻所要時間コメント
ドバイアラブ首長国連邦Emirates金曜日18:30発→21:00着日曜日11:45発→17:15着または21:30発→月曜日03:00着4時間日本人は到着ビザを取れる
シャルジャAir Arabia土曜日04:55発→07:10着日曜日22:50発→月曜日04:10着3時間半
マスカットオマーンエアインディア金曜日18:40発→20:25着
3時間半帰りの便が月曜日夜しかないため週末旅行が無理
Oman Air金曜日16:20発→18:15着日曜日10:20発→15:20着または月曜日00:40発→05:20着
バーレーンバーレーンGulf Air


現在欠航中で10月に再開予定
サウジアラビアジッダSaudi Airlines

7時間(リヤド経由)便数が少なく週末旅行は無理

東南アジア・香港

おすすめ。

目的地航空会社往路時刻復路時刻所要時間コメント
バンコクタイタイ航空土曜日00:30発→05:55着日曜日21:10発→23:15着4時間
クアラルンプールマレーシアマレーシア航空土曜日00:55発→07:35着日曜日22:10発→23:40着4時間
シンガポールシンガポールエアインディア土曜日00:05発→06:55着日曜日07:50→09:30着4時間
シンガポール航空金曜日23:05発→土曜日06:10着日曜日20:05→21:50着
Tiger Airways金曜日23:00発→土曜日05:40着日曜日20:30→22:20着
香港中国Dragonair土曜日02:20発→10:50着日曜日22:20発→月曜日01:20着6時間

その他

これらの都市にもバンガロールから直行便が出ているが、週末旅行は無理だ。

目的地航空会社往路時刻復路時刻所要時間コメント
フランクフルトドイツルフトハンザ

9時間
ロンドンイギリスブリティッシュエアウェイズ10時間
Kingfisher Airlines
パリフランスエールフランス10時間半
モーリシャスモーリシャスAir Mauritius14時間

2009年7月4日土曜日

アメリカの法律にも有給の病気休暇はない。これ豆知識な。

ニートの海外就職日記というブログが好きだ。この方はシンガポールで働いておられるが、国の数だけ労働スタイルがあるということを改めて思い知らされる。

さて最近の「有給休暇の本来の使い方は、遊ぶため」です。という記事はsick leaveについて書かれている。

何度も書いて来たけど、海外では「有給とは別に」sick leave(病欠給)というモノがあって、年に2週間(シンガポールの場合。入院の場合は60日)まで取得可能(給料も当然全額出て、診察代も会社持ち)だ。もちろん有給には一切手を付けなくてオッケー。
正直、sick leave(病欠給)がない国ってのは聞いた事がない。特に日本は先進国、経済大国wとか言っておきながらsick leave(病欠給)すら定められてなくて、病気で休んだら有給が削られるなんてエグ過ぎるだろ? 

私も最近まで知らなかったが、アメリカの連邦法にも有給のsick leave(病欠)は定められていない。さらに有給休暇の規定さえない。労働政策研究・研修機構のレポートによると、

アメリカでは、労働時間、休憩、休日、年次有給休暇に関して規定する連邦法はない。そのため使用者は、労働組合との労働協約により、労働組合がない場合は労働契約により、所定労働時間等を決めるのが一般的である。

とある。さらに病欠に関しては、

労働者本人の病気、および育児・出産、家族の介護のための休暇を、12カ月の期間中に最長12週間まで、事業主は付与することが義務づけられている。(中略)休暇は無給でよいが、事業主が有給の休暇制度を採用している場合には、その取得分を12週内にカウントすることが認められる。

だそうだ。平たく言えば「病気になったら有給休暇を使って休んでね、有給休暇がない(もともとない・使ってしまったなど)場合は休んだ日の給料はナシ」ということだ。なお、サンフランシスコなど市のレベルで有給の病欠を義務づけているところはわずかにある。

もちろん、福利厚生の一環として、有給休暇に加えて有給での病欠を認めている会社も多数ある。

豚インフルエンザの影響

有給の病欠制度を法律で義務づけようという議論は米国に以前からあったが、この時期になってこれが再燃している。たとえばこのAPの記事

これによると5700万人のアメリカ人が有給の病欠を取ることができず、病気の場合も出勤を余儀なくされている。出勤しないと給料が減らされ、最悪の場合は解雇につながるからだ。ところがそういう人が豚インフルエンザにかかったのにもかかわらず無理をして出勤すると、同僚やお客に接触したり、食べ物を調理したり託児所勤務の場合は子供の相手をしたりすることになる。だから有給の病欠を法律で認めましょう、という論理。

5700万人といえばアメリカ労働者人口の4割くらいだろう。みんなが安心して病欠できるようにしようというシンガポール式の考えは正論だと思うのだが、これが法律になることができないアメリカの文化というのは難しい。

2009年6月29日月曜日

[Perl] CPXXXANプロジェクト

CPXXXANは古いバージョンのPerlでも動くCPANモジュールのリストを作ってダウンロードできるようにするという発展途上のプロジェクトである。

Perlはこの数年でバージョン5.6、5.8、5.10と進化してきたが、未だに5.10より前の古いバージョンを使い続けている人もいる。しかし、5.6のユーザーが普通にCPANに行ってDBIモジュールをダウンロードしても動かない。最新のDBIは5.6に対応していないからだ。CPXXXANはこの問題を解決するべく開発されている。

CPXXXANという独立したソフトウェアがあるというよりは、Perlのバージョンごとに用意されたURLを通してCPANにアクセスするという言い方が近い。

さて、CPXXXXANを試してみよう。

試す前に環境のテスト

普通にCPANシェルを起動して最新のDBIを取得してみる。

% cpan

cpan shell -- CPAN exploration and modules installation (v1.94)
ReadLine support enabled

cpan[1]> get DBI
...
DBI-1.609/
DBI-1.609/Changes
DBI-1.609/dbd_xsh.h
...

最新版の1.609がダウンロードされる。

CPXXXANの設定

たとえばPerl 5.6.2を使っている場合、CPANのターゲットURLをhttp://cp5.6.2an.barnyard.co.uk/に設定する。

cpan[2]> o conf urllist http://cp5.6.2an.barnyard.co.uk/                     
Please use 'o conf commit' to make the config permanent!

cpan[3]>

ここで「o conf commit」とすると設定ファイルが上書きされるが、今は試して遊んでいるだけなので上書きはしない。

CPXXXANからダウンロード

上でCPANのURLを設定した後、

cpan[3]> reload index
...
Fetching with LWP:
http://cp5.6.2an.barnyard.co.uk/authors/01mailrc.txt.gz
...

としてPerl 5.6用に作られたインデックスファイルを取得する。

さてDBIをもう一度ダウンロードしてみよう。

cpan[4]> get DBI
Running get for module 'DBI'
...
DBI-1.604/
DBI-1.604/Changes
DBI-1.604/dbd_xsh.h
...

と、1.604がダウンロードされた。これが5.6.2で動作するDBIの最新バージョンである。

まとめ

さまざまなしがらみで古いバージョンのPerlを使わざるを得ない人は多い。「古いPerlはサポートしません」というのはモジュール作者の自由だが、このようなやり方で古いPerlのユーザーを救済するやりかたは美しい。正式公開が待たれる。

ちなみにこのプロジェクトの存在はPerl Seminar NYで教えてもらった。

2009年6月28日日曜日

Doodle 4 Googleの展覧会がNYで開催中

Doodle 4 GoogleとはGoogleのトップページのロゴをデザインするコンテストだ。Google社が米国の高校生以下の子供を対象に開催していて、今年が2回目である。

現在ニューヨークのCooper-Hewitt, National Design Museumという美術館で入選作品を展示しているので行ってきた。

Cooper Hewitt

同じものが結果発表のページで見られるのでどうということはないはずだが、やはりその「もの」を見るのはいい。

3万点近くの中から選ばれたとあって超力作ばかり。子供らしさを全面に押し出したものよりは、プロのデザイナーのように洗練された作品が多い。

ちなみにこの美術館、このあたりでは珍しく館内の撮影が禁止だ。

この日本語のブログを読んでいる人はほとんど日本在住だろうし、ニューヨークの人でさえ「それインターネットで同じのが見られるよ」と言われそうだが、お時間のある方はどうぞ。7月5日まで。

2009年6月27日土曜日

簡体字から繁体字の変換をGreasemonkeyで

簡体字の文章を日本の漢字に変換するツールが公開されている。

同じ要領で簡体字から繁体字に変換する方法はないかと探していたら、案の定Greasemonkeyを公開している人がいた。

ただ、これをそのまま実行すると日本語のページさえ繁体字に変換されてしまう。恋愛が戀愛になってしまうとあまりラブリーな感じがしない。

完全な解決方法ではないが、スクリプトを1行だけ変えてひらがなが入っているノードは繁体字に変換しないようにした。

function traditionalize(cc) {
if (cc.match(/[ぁ-ん]/)) return cc; // ここ
var str="";

繁体字から簡体字への変換

その逆に、簡体字への変換を行うGreasemonkeyもある。

2009年5月31日日曜日

海外で働くということ

他の国で働こうと他の県に就職しようとそれは大した違いではない。

その昔、私たちの親の世代が海外で仕事を見つけるのはとても大変なことだった。外国の新聞を買ってきて求人広告を切り抜き、履歴書を封筒に入れてエアメール。国際電話で面接ということになっても電話代が高かった。航空券はもっと高かった。

今はどうか。世界の求人情報がネットでいくらでも手に入るし、履歴書を送るのも一瞬だ。スカイプもある。十数万円と少しの時間でニューヨークに行ける。

言葉を別にすれば東京の人が沖縄の仕事を探すのもニューヨークの仕事を探すのも同じことだ。

これだけ世界が小さくなった今、海外で働くということを特別扱いすることはまったくない。大切なのは自分がどういう人生をどのような環境で送りたいかであって、それは日本か海外かというような単純な二択ではない。世界には二百の国があり無数の都市がある。そして住む場所と働く場所は都市の数だけ選択肢がある。

ブロードウェイで働きたければニューヨークに住めばよいし、IT業界の先端で仕事をしたければシリコンバレーに引っ越せばいい。大都会に住みたければ東京が世界一だ。ビーチが好きだという理由で沖縄に住むのも良いだろう。もちろん生まれ育った土地が一番良いという人はそれがいい。

だから、渡辺さんのブログのように、日本がダメだから海外で働こうという二択の消去法的な考えには抵抗がある。住むべき場所はやりたいことによって違うし、幸せも人それぞれだ。

ところで私は日本の将来を悲観していない。そもそも私は日本が好きだし、朝はご飯と味噌汁に限るし、日本は最高の国だと思っている。税金で教育を受けさせてもらった義理もある。どこに住もうとも国を思う気持ちは忘れないし、どうすれば国の役に立てるかを常に考えていたい。

2009年5月24日日曜日

一流ブランドのサービスとは

ニューヨークのティファニーといえば映画の舞台にもなった五番街の店舗だ。

かれこれ10年近く前、ティファニーニューヨークの刻印入りキーホルダーをもらったことがある。なかなか使いやすく、それからずっと使っている。鍵をまとめて棒に差し、ネジをしめるシンプルな構造のものだ。

たとえティファニーとはいえ、長い間使っているとガタがくる。特にネジの部分がゆるくなり、勝手に鍵が外れたりするようになってきた。実害はあまりないので買い替えもせずに使い続けていた。

さて先日、用事でティファニーに行ってきたときのこと。ふと思い出してキーホルダーを出してみた。

「これ10年前の品なんですけど似たようなのありますか? ネジが外れるので新しいのを買おうかと思って」

それを聞いた店員、

「無料で修理させていただきます」

そういう返事は予期していず驚いた。

「悪いですよ、古いもので傷もついてますし」

店員は言った。

「ちゃんと磨いて傷も見えなくしますので」

また驚いた。アメリカでこれだけちゃんとしたサービスを受けるのははじめてだ。

ブランド好きな人は「一年しか持たないカバンを買うのなら、十倍の値段でエルメスを買って十年使え」という。これは真理かもしれないと思った。

2009年5月18日月曜日

ニューヨークの大統領機低空飛行の件

4月下旬の時事通信の記事より。日本でもニュースになったから覚えている方がいるかもしれない。

大統領機低空旋回で避難騒ぎ=自由の女神背景に撮影-NY

 【ニューヨーク27日時事】オバマ米大統領の専用機が27日、戦闘機を伴ってニューヨーク市上空を低空旋回し、旅客機が高層ビルに突っ込んだ2001年の同時テロを想起した数百人が避難する騒ぎになった。実は軍による写真撮影の一環で、ホワイトハウスは謝罪を表明。

ちなみにウォールストリートジャーナルの記事では数千人が避難したことになっている。こちらが正しい数字だと思う。

それはともかく。これはひどかった。2001年の同時多発テロのときにニューヨークにいなかった私も鳥肌が立ち体が震えた。

◇ ◇ ◇ 

月曜日の朝10時。最高気温が30度を超えるという予報のあった快晴の日だ。飛行機の飛ぶ音が随分大きく聞こえるので空を見た。旅客機サイズのボーイング747型機が低空飛行をしていた。

ニューヨークでは常に飛行機が上空を飛んでいるが、これほど機体が大きく見えるのは普通ではない。さらに飛行機は同じところを小さい半径で旋回している。あたかも突撃するビルに狙いを定めているかのように。

飛行機の轟音は大きくなり、道を歩いていた人も立ち止まり飛行機を見上げた。その場にいる全員があの日、9月11日のことを思った。

「戦闘機もいる」

だれかが叫んだ。ボーイングより機体が小さいので目立たなかったが、F-16戦闘機がボーイングのあとにぴったり着いて一緒に飛んでいる。

「ボーイングを撃ち落とすんじゃないか?」
「嘘だろ」

のような会話が聞かれる。

「逃げろ」

誰かが言った。

◇ ◇ ◇

飛行機が落ちてくるかもしれない状況でどこに避難するかは難しい問題だ。とりあえず大きなビルの近くは避けたほうがよさそうだ。もっとも建物の中からは人が外に退避してきているので近寄れない。しかし、とりあえず建物が少ない場所に移って善後策を考えている間に「この飛行は実は撮影のためのものでした。安全です」という発表がなされた。

ほんの30分程度のことだったが、避難したほかの人たちと同様、私も死ぬ可能性を少し考えた。人生まだやり残したことがたくさんあるのに、とも思った。

私は9月11日のテロをテレビでしか見たことがない。それでも恐怖と緊張は言葉で表せないほどだった。テロを知るニューヨーカーがこの撮影に対し怒りを表明していた気持ちはよくわかる。

◇ ◇ ◇

スラッシュドット・ジャパンに当を得た書き込みがあった。

「○○省が事前の徹底通知をおろそかにしたまま、東京メトロの大きな駅にて、科学防護服を着けた集団を使って写真撮影をおこなう」に等しいことなのかもしれない。(laggnuggさん)

すばらしい比喩だと思う。

◇ ◇ ◇

事件の直後に詳細な体験を書けばよかったのだろうが、とてもその瞬間を振り返る気持ちにならなかった。というわけで3週間たった今、これを書いてみる。

動画リンク

2009年5月13日水曜日

ニューヨークではiPhoneから「はてな」が使えない

タイトルを「ぼくがはてなを使わない理由」にしようかと思ったがやめた。使わないのではなくて使えないのである。

あまり知られていないことだが、NYでiPhoneのSafariを使うとはてな(www.hatena.ne.jp)につながらない。wwwだけではなくてb.hatena.ne.jpもだめだしd.hatena.ne.jpも、とにかくhatena.ne.jpにはエラーが出てつながらない。

これは以下の条件で起こるようだ。複数台のiPhoneで再現した。

  • アメリカ東海岸
  • AT&T経由で接続(3G・EDGEを問わない)

ニューヨークに限らず、米国東部のボストン、フィラデルフィア、シカゴ、マイアミでも同じだった。逆に中部のミネアポリスではちゃんとつながった。はてなのユーザが多そうな西海岸もきっと大丈夫なのだろう。

Wi-Fiで接続したらこの問題は起こらないため、キャリアのAT&Tがおかしいのではないかと思う。

PingというiPhoneアプリケーションを使ってPingしてみたら、案の定Pingができない。ルーティング関係の問題だろうか。

ニューヨーク周辺からAT&Tの携帯電話ではてなが使えているという方は教えてください。

関係ないけれど

まだ日本に住んでいたころ、技術系の集まりで会った人にはてなIDを聞かれた。「持ってません」と言ったら信じられないという顔をされたが、そういうわけではてなIDはいまだに持っていない。もっと関係ないけれどミクシィのIDも取らないでいたらこちらは携帯電話が必須になってしまった。

2009年4月16日木曜日

Remedieは15分でインストールできるのか

あらかじめ書いておきますがネタです。

[O] これから15分で Remedie を始めるための資料には

インストール自体は15分で終わらない場合が多いでしょう。

とある。

タイトルと中身が矛盾しているが、環境によりけりということのようだ。そこで、果たして本当に15分でインストールできるかどうか、PerlとRemedieを一からインストールしたときの時間を計ってみた。

0. 準備

Xcodeとgitを入れておく。

正確に時間を計測するために~/.cpanを削除。

% rm -rf ~/.cpan
%

1. ActivePerlのダウンロード(30秒)

ブラウザでActivePerlのサイトからダウンロードしてもいいが、時間を計測するためにcurlを使う。

% cd /tmp
% time /usr/bin/curl -sO http://downloads.activestate.com/ActivePerl/MacOSX/5.10/ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz
/usr/bin/curl -sO 0.32s user 1.59s system 8% cpu 23.030 total
% time tar zxf ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz
tar zxf ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz 1.45s user 1.17s system 63% cpu 4.144 total
%

2. ActivePerlのインストール(15秒)

お遊びなので/tmp/activeperlに入れる。

% cd ActivePerl-5.10.0.1004-darwin-9.4.0-287188
% time ./install.sh --prefix /tmp/activeperl --license-accepted --no-install-html --no-manifest-check
....
./install.sh --prefix /tmp/activeperl --license-accepted --no-install-html 3.57s user 2.56s system 58% cpu 10.523 total
%

ついでにパスの設定も行う。

% export PATH=/tmp/activeperl/site/bin:/tmp/activeperl/bin:/usr/bin:/bin
%

3. Remedieのダウンロード(10秒)

% cd /tmp
% time /opt/local/bin/git clone git://github.com/miyagawa/remedie.git
....
/opt/local/bin/git clone git://github.com/miyagawa/remedie.git 0.44s user 0.30s system 9% cpu 7.754 total
%

4. 必要なモジュールのダウンロード(18分)

時間を節約するため、依存関係の処理をいちいち聞かないで勝手に処理してくれるように設定。

% export PERL_AUTOINSTALL="--defaultdeps"
%

いざcpanコマンドを実行。途中で5か所プロンプトが出るがリターンを押せばよい。あらかじめ5回リターンを押してもいいはず。ちなみにyesコマンドはLeopardにはついてこないので使わない。

% cd remedie
% time cpan -i .
....
M/MS/MSCHWERN/ExtUtils-MakeMaker-6.50.tar.gz is just needed temporarily during building or testing. Do you want to install it permanently? (Y/n) [yes] リターン
....
*** Press return to continue (or wait 60 seconds) リターン
....
*** Press return to continue (or wait 60 seconds) リターン
....
Do you want to build the XS Stash module? [y] リターン
Do you want to use the XS Stash by default? [y] リターン
....
cpan -i . 582.42s user 125.23s system 66% cpu 17:48.14 total
%

起動。

% bin/remedie-server.pl 
HTTP::Engine::Interface::ServerSimple : You can connect to your server at http://localhost:10010/

まとめ

全部で19分。この記事を書くためにActivePerlとRemedieを10回以上インストールしたが、15分を切ることはできなかった。回線の太さよりもmakeのスピードに依存しそうなので、速いコンピュータなら15分でできるかもと思う。

2009年4月15日水曜日

Remedieをインストール

家の前の川に飛行機が飛んできたのは1月のことだ。家にいながらこれにまったく気づかなかったその夜、消防車や救急車の音で窓の外が騒がしいので見てみたら、川の中に飛行機があって驚いた。とりあえず写真を撮ってブログのネタにした。

飛行機が川に不時着したのはすごいできごとだが、何よりも驚いたのは日本の人たちが事故のことを何時間も前から知っていてTwitterで話題にしていたことだった。

前にも書いたが私はテレビをほとんど見ない。ニュースは新聞が主な情報源で、インターネットでニュースにアクセスするとしても動画はほとんど見ないテキスト派だ。

そういう原始人のような生活から脱却するために、奮起してRemedieを入れてみた。

1. gitをインストール

MacPortsを使っているので簡単インストール。

# port selfupdate
# port install git-core

2. Remedieのダウンロード

[O] これから15分で Remedie を始めるための資料を見ながらやった。

% cd tmp
% git clone git://github.com/miyagawa/remedie.git

3. 必要なPerlモジュールのダウンロード

まずはRemedieのパッケージにREADME.mkdnというファイルがあるのでそれを読む。「cpan -i .」というコマンドを実行するべしとあるのでそのとおりにするとPerlのモジュールが大量にインストールされる。

% cd remedie
% cpan -i .

インストール済みのモジュールがそれなりに多いせいでトラブルもなく5分くらいで終了。

README.mkdnというファイル名は初めて見たが、mkdnはMarkdownの略だそうだ。Markdownはお手軽マークアップ言語。

4. テストがFAILするので微調整

cpan -i .の最後のほうでRemedie自身のテストが行われる。私の環境だとテストが3個Failした。

Test Summary Report
-------------------
t/99_fail.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
t/plagger/plugins/CustomFeed-Script/base.t (Wstat: 1024 Tests: 4 Failed: 4)
Failed tests: 1-4
Non-zero exit status: 4
t/plagger/plugins/Discovery-Sites/base.t (Wstat: 256 Tests: 4 Failed: 1)
Failed test: 2
Non-zero exit status: 1
Files=41, Tests=236, 57 wallclock secs ( 0.16 usr 0.16 sys + 31.11 cusr 3.77 csys = 35.20 CPU)
Result: FAIL
Failed 3/41 test programs. 6/236 subtests failed.
t/99_fail.t

一番最初のt/99_fail.tはFailになるように設計されているので無視する。

t/plagger/plugins/CustomFeed-Script/base.t

これはやや複雑で、私のperlが標準のパス(/usr/bin/perl)にないから起こる。t/samplesディレクトリにあるスクリプトを書き替える。

% perl -pi.bak -e 's{/usr/bin/perl}{/usr/bin/env perl}' t/samples/*.pl

つまり、/usr/bin/perlではなくて自分が使っているほうのPerlを呼び出すようにする。

t/plagger/plugins/Discovery-Sites/base.t

このテストは実行するたびにFailしたりしなかったりする曲者である上にVeohなんて初めて使ったから自信がないのだが、t/plagger/plugins/Discovery-Sites/base.tをこのように書き替えたらエラーが出なくなった。

変更前

like $context->update->feeds->[0]->entries->[0]->thumbnail->{url}, qr/ll-images/;

変更後

like $context->update->feeds->[0]->entries->[3]->thumbnail->{url}, qr/(ll-images|img\.youtube|thumbnails\.cbsig|www\.mtv\.com)/;

5. 再テスト

同じコマンドを再度実行し、t/99_fail.t以外は大丈夫なことを確認する。

% cpan -i .
(略)
Test Summary Report
-------------------
t/99_fail.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=41, Tests=250, 60 wallclock secs ( 0.16 usr 0.16 sys + 31.77 cusr 3.91 csys = 36.00 CPU)
Result: FAIL
Failed 1/41 test programs. 1/250 subtests failed.

6. Remedieを起動

% ./bin/remedie-server.pl
Mouse::Meta::Class::__ANON__::SERIAL::1: You can connect to your server at http://localhost:10010/

7. フィードを追加

Remedieのページ(http://localhost:10010/)にアクセスすると真っ黒の画面が出るので、「New」を押してフィードを登録する。

まずは地元のテレビ局ny1.comを登録してみる。NY1のサイトに行ってRSSのURLを見つければいいのだけれど、もしかしてと思い直接「ny1.com」を入れてみる。

ちゃんとRSSのURLを見つけてくれた。これには感動。

というわけで今年度の目標は、日本在住の人よりも早くNYのニュースをキャッチすることです。

2009年4月14日火曜日

リチャード・ストールマンの講演に行ってきた

Richard Stallmanといえばフリーソフトウェアの神様のような存在だ。今回その神様がニューヨークで講演をするとのことで、先日、本人を見に行ってきた。批判の多い人でもあるしそれほど興味の対象でもなかったのだが一度くらいは顔を見ておこうと思ったのだ。話を聞いてみるとやはり氏は偉大な思想家だった。

会場はニューヨークにあるYeshiva Universityの講堂で、参加者は200人くらい。募金などもない完全無料のイベントで、講演後はパーティーまであった。スポンサーがいるのだろうか、ありがたいことである。

講演の内容はソフトウェアの自由と著作権の歴史について。

  • フリーソフトウェアの「フリー」は自由という意味。
    • 無料という意味ではない(有償のフリーソフトウェアはありうる)
  • フリーソフトウェアのユーザには以下の自由があるべきだ
    • プログラムを実行する
    • プログラムの内部を解析する(=ソースコードを読む)
    • プログラムを手を加えずに再配布する
    • プログラムを改変して再配布する
  • フリーでないソフトウェア(proprietary software)はユーザの自由を制限し、ユーザ同士を分断する

著作権の話はアメリカ特有の話が多かったが、要点を拾いだすとこうなる。

  • 古代には著作権の概念はなかった
  • 現代では著作権の保護期間は延長される一方
    • 一部企業の政治活動も関係している(ディズニーなど)
  • 著作権は本来著作者に独占的に使用する権利を保証して技術の進歩を促進するためのもの
    • アメリカ合衆国憲法第1条
  • ところが現代では著作権を保護しすぎて視聴者の権利が阻害されている
    • DRM(デジタル著作権管理)、DVDの暗号化

質疑応答から

質問「最近はどの言語でプログラムを書いていますか」
Richard「時間がなくて実はコードはほとんど書いてないのです」

質問「これだけフリーなOSがある中、どうしてみんなMS Windowsを使っているのでしょう」
Richard「多くの職場で求められるスキルはWindowsですから学校でもWindowsしか教えません。Windowsの教育を受けた人が社会に出て職場にWindowsを導入するというサイクルができています」

その他

GNUの発音はグニューかグヌーかヌーかというような話が昔からあるがRichard本人はグニューと発音していた。本来ヌーとGなしで発音するはずのgnuのぬいぐるみもグニューと呼んでいた。

学者タイプの人によくあるように、言葉の使い方に厳しい。質問者「オープンソースソフトウェアが……」Richard「フリーソフトウェアと言ってください」なおcreatorという言葉もお好きではないそうで、authorかartistと呼ぶべきとのことだった。

2009年3月29日日曜日

世界各地のYAPCはおいくら?

春が来た。コンピュータ関係のカンファレンスは春から秋にかけて行われるため、今年はどこに行こうかと考える時期でもある。ふと思い立って北米・ヨーロッパ・アジア(日本)のPerlカンファレンス、YAPCについて参加費を計算してみたくなった。

生データ

まずは通貨換算をする前の生データから。


YAPC::NAYAPC::EUYAPC::Asia
1999USD 60

2000USD 75GBP 40
2001USD 85EUR 99
2002USD 85EUR 89
2003USD 85EUR 99
2004USD 85GBP 65
2005USD 85EUR 89
2006USD 100GBP 75JPY 4000
2007USD 100EUR 100JPY 4000
2008USD 100DKK 900JPY 3500
2009USD 150EUR 100

USD=米ドル、JPY=円、EUR=ユーロ、GBP=英ポンド、DKK=デンマーククローネ。

ヨーロッパのYAPC::EUは大体100ユーロ前後、北米YAPC::NAは100ドル前後でどちらもゆるやかに増加している。

円に換算してみる

開催初日の為替レートをもとに計算してみた。


YAPC::NAYAPC::EUYAPC::Asia
19997286円

20007911円6087円
200110377円10862円
200210206円10585円
20039999円13366円
20049351円12804円
20059297円12109円
200611607円16630円4000円
200712355円15886円4000円
200810821円19779円3500円
200914681円13011円

グラフはこちら

まず目を引くのがヨーロッパの値上がりである。これはヨーロッパ通貨の値上がりによるところが大きい。デンマークで開催された2008年などは参加費が20000円近くに達している。

それにしてもYAPC::Asiaの安いこと。開催日数やノベルティの違いなど各国のYAPCを単純比較はできないが、それにしても低価格だ。会計報告を読むとスポンサー収入の違いかと思う。

マクドナルドで比較

円換算だと各国の物価・購買力が統計に現れないので、2008年のYAPC参加費をビッグマックの個数で比較してみよう。たとえば、YAPC::NA 2008の参加費用はアメリカのビッグマック(USD 3.57)28個分にあたる。

参加費(現地通貨)参加費(円)ビッグマック
YAPC::NAUSD 1001082128個分
YAPC::EUDKK 9001977932個分
YAPC::AsiaJPY 3500350012.5個分

円換算だとYAPC::EUはYAPC::NAの倍近い価格だが、ビッグマック換算だと大差がないことがわかる。Asiaと他のYAPCは差が縮まったが、それでもNAとEUの半額以下である。

YAPC::EUについて

上の数字を見るとYAPC::EUは高価格に見えてしまうのはやむをえないが、若手参加者に対する配慮が一番大きいことを特筆しておきたい。

  • 学割制度が充実している。2009年のYAPC::EUは学割40ユーロ。一般価格に比べ半額以下である。
  • YAPC::EUの参加者有志がSend-a-Newbieというサイトを始めた。航空券・宿泊費などの補助が必要な25歳未満のYAPC::EU参加者にお金を出し合って応援しようという趣旨である。

参考URL

2009年3月25日水曜日

アメリカ人「日本人なのにアニメを見ないのは人生の無駄づかいだな」

日本人だからアニメを見るだろうと言われても困るのである。

海外のアニメファンにとって日本といえばまずアニメという連想が働くらしく、日本人の私は親しげに話しかけられる。日本人は全員アニメが好きだと思っているアメリカ人さえいるが、アニメが好きかどうか以前に私は映像作品自体をほとんど見ない。DVDを買ったことはないし最後に映画を見たのは10年前のことだ。

 ◇ ◇ ◇

友人にP君という人がいる。ユダヤ系のアメリカ人で超真面目な男であるが、日本のアニメが大好きである。このP君、私が唯一の日本人の友達なのでいつも構ってほしがる。

P君「ナルトのDVDは全部持ってるし英訳の単行本もあるんだけど日本語の単行本がほしい。どこで買えるのかな」

日本語の単行本のほうが話が先に進んでいるから日本語で読みたいらしい。ニューヨークにある紀伊國屋書店で聞いてみればいいのでは。

P君「デスノートのあの部分には矛盾があると思うんだが、なぜかというと、……」

ごめん、デスノートという言葉自体初めて知った。

P君「ユーギオーの続編は出ないのかな」

続編もなにも、私は本編を知らない(註:米国では一年だけテレビ放映されたそうです)。

 ◇ ◇ ◇

あまりに話が噛み合ないので申し訳ないと思い、提案をしてみた。

私「最近のアニメは知らないけど、20年以上前のアニメならわかると思うよ」

目を光らせるP君。

P君「じゃあ君、ジャイガンターは知っているね」

私「そんなの知らないよ」

P君「日本語だとタイトルが違うのかな。ちょっとiPhone貸してみて。YouTubeで検索してみよう」

鉄人28号! これなら知ってる。異国アメリカでジャイガンターという名前になっていたとは。

P君「ジャイガンターは僕たちが生まれる前からアメリカのテレビで放映してたよ。主人公の少年はジミーだ」

ショータローじゃないのか。本当に詳しいなこの人。

 ◇ ◇ ◇

P君「それにしても、日本人のくせにアニメ見ないって本当に信じられない。人生の無駄遣いしてるよ」

そこまで言うか。

ちなみにP君の夢は日本を訪れて秋葉原と三鷹の森ジブリ美術館に行くことである。

2009年3月3日火曜日

MacPortsのselfupdateを忘れた→はまる

MacPortsは各portのバージョンや依存関係といった情報をローカルなファイルに保存している。そのportがインストールされていなくても、である。これがちょっとした問題になることがある。

結論を先に書くと、selfupdateは定期的に実行しなければいけない。

例1:ローカルの情報が古いと旧バージョンのportがインストールされる

caml-sqlite3というportを例に説明してみる。現時点でcaml-sqlite3の最新版は1.3.0だ。

ところが、私の環境でcaml-sqlite3を入れようとすると1.2.0を取りに行く。

# port -v fetch caml-sqlite3
---> Fetching caml-sqlite3
---> ocaml-sqlite3-1.2.0.tar.gz doesn't seem to exist in /opt/local/var/macports/distfiles/caml-sqlite3
---> Attempting to fetch ocaml-sqlite3-1.2.0.tar.gz from http://www.ocaml.info/ocaml_sources/

こうなるのは、私のLeopard上にあるPortfileが古いからだ。このファイルはMacPortsをインストールしたときに作成されている。

# grep version /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/caml-sqlite3/Portfile 
version 1.2.0
distname ocaml-sqlite3-${version}
#

例2:portがインストールできないこともある

上の場合は旧バージョンの1.2.0がまだ1.3.0同様ダウンロードできるのでまだ良いが、portによっては旧バージョンがダウンロードできない場合もある。p5-errorがその例だ。

# port install p5-error
---> Fetching p5-error
---> Attempting to fetch Error-0.17012.tar.gz from http://ftp.ucr.ac.cr/Unix/CPAN/modules/by-module/Error
(略)
Error: Target org.macports.fetch returned: fetch failed
Error: Status 1 encountered during processing.
#

port installの裏側ではError-0.17012.tar.gzを取りに行っているのにサーバ側には最新版(0.17015)しかないためにダウンロードが失敗している。

解決方法

上の問題を解決するにはselfupdateというコマンドを実行する。

# port selfupdate

出力はこれのどちらかになるようだが

  • selfupdate done!
  • The MacPorts installation is not outdated so it was not updated

どちらにしても/opt/local/var/macports/sources/rsync.macports.org/release/ports/以下のファイルが更新される。

selfupdateを行った後に先のcaml-sqliteでもう一度試してみると無事1.3.0をダウンロードしてくれる。

# port -v fetch caml-sqlite3
---> Fetching caml-sqlite3
---> ocaml-sqlite3-1.3.0.tar.gz doesn't seem to exist in /opt/local/var/macports/distfiles/caml-sqlite3
---> Attempting to fetch ocaml-sqlite3-1.3.0.tar.gz from http://www.ocaml.info/ocaml_sources/

selfupdateは定期的に実行する

今までselfupdateはその名前からして/opt/local/bin/portのバイナリを更新するだけのものだと思っていたが、実はそうではなかった。MacPortsのWikiにこうある。

Selfupdate is the command used to automatically download new Portfiles so that your local copy of MacPorts is aware of new MacPorts software or upgrades to existing software that have been committed to the MacPorts infrastructure. Additionally, this command is used to update the MacPorts software itself - think of it is a Software Update, like its name suggests.

(抄訳)selfupdateコマンドを使うと更新のあったPortfile群をダウンロードできる。さらに、selfupdateの名前のとおり、インストールされているMacPortsのバイナリ自身を更新する。

Selfupdate is a command that can safely be scheduled to automatically run, as it doesn't actually update your installed software, it just "teaches" MacPorts about new updates. Take a look at using crontabs to run your selfupdate.

(抄訳)selfupdateコマンドは更新情報をダウンロードするだけのものなので実際にソフトウェアの更新を行うわけではない。そのため自動的に実行しても安全だ。

実行しても安全というか、実行しないと更新情報が同期できないのだ。

私のcronの設定

rootのcrontabをこのように設定した。

# 毎日午前1:23にselfupdateを実行
23 1 * * * /opt/local/bin/port selfupdate

どこか気持ち悪い

上記をまとめると、

  • MacPortsを安心して使うにはport selfupdateの実行が不可欠
  • selfupdateはcronで定期的に走らせるのが一番

となるのだがどうにも気持ち悪い。

ウェブの世界に例えると、ローカルに保存されたPortfileはHTTPのキャッシュに近いが、自分でキャッシュの更新(selfupdate)をしない限りブラウザが永遠に古いキャッシュを参照しているという状態になっている。Yahooで昨日の検索結果が表示されるのは構わないが、昨日の天気予報が出てくるのはいやだ。

サーバの更新情報をローカルに保存する仕組みの是非はともかく、ユーザが何もしないとその情報が更新されないのが腑に落ちない。MacPortsは他のところがうまくできているので、不思議でならない。サーバ側で走らせるデーモンをrsyncだけにしたかったのだろうか。

2009年2月16日月曜日

私が博士課程に進学しなかった理由

幻影随想: ブログでバイオ 第41回「私が博士課程に進学しなかった理由」という記事がおもしろい。私が同じ問題で悩んだのはかれこれ一昔前の話だが、私が博士課程に進学せずに企業に就職した理由を書いてみたい。

1. リスクの話

もともと私はあまり考えずに行動するクセがある。穴があれば入ってみるし穴がなければ掘ってみる。考えずに行動して困るのはいつものことで慣れっこなのだが、リスク管理は大事である。後悔しなくてすむよう、選択を間違えた場合のことを少し考えた。

博士課程を1年で中退して企業に就職するのと、企業を1年で退職して博士課程に入るのとどちらがやりやすいだろうか。私の結論はとりあえず企業に就職、向いていないと思ったら大学に復学することだった。博士課程を中退したら第二新卒とやらの就職活動をせねばならず、なにかと大変そうだ。逆に企業をやめて博士課程に入るのは、同じ研究室に入り直すのならば簡単、出身大学の同じ学部でもなんとかなると思っていた。

もちろん、修士課程から1年のブランクを経て博士課程に戻り、元同級生に追いつくのは言うほど簡単ではない。将来間違いなく戻ってこられるよう、修士の段階で研究の成果は出しておくように努めた。

2. 大学だけが研究の場所ではない

研究は好きだった。ただ、「研究をするために博士課程に残る」という考え方は説得力がなかった。企業で研究者になっても良いし、仕事が終わってから自分の研究を家で細々とやっても楽しい。幸い私の専門分野は実験器具がいらない情報系だったため、自分の研究はどこでもできた。大学にあって家にないものといえば図書館と研究仲間・先生だが、大抵の論文はオンラインで手に入るしインターネットで世界中の研究者と議論もできる。

3. 海外の大学に行ってみたかった

私は国産品主義の日本びいきなのだが、残念なことに私の研究分野はアメリカが一歩進んでいた。先輩を見ても優秀な人はほとんど海外の大学に留学・就職していた。さらに残念なことに私は英語がそれほどできるわけではないので修士の時点では留学は遠い存在だった。もちろん英会話が苦手でもそれなりの論文を英語で量産すれば自然に道は開けるのだろうが、英語をきちんと学べる環境が大学にはなかった。特に英語でアカデミックな内容を議論する場がなかった。

企業に入れば無料英語研修もあるだろうし、なによりも留学費用が稼げる。会社の負担で留学をさせてくれるありがたい企業もある。

4. 博士課程の3年は長過ぎた

世間の基本は博士課程3年。博士課程はちゃんとした研究をして論文を書けばいつでも修了できてよさそうなものだが、3年間は勤め上げなければいけないことになっている。大学・学部によっては2年で出してくれるところもあるが、私の学部はどれだけ論文を書こうと3年がルールだった。3年という時間は貴重な20代の中では長過ぎる。

もちろん3年間正しく拘束されて一つの研究を仕上げるのが博士課程の意義であるし、さらにこの間には人脈を作ったり博士論文目的以外の研究をしたりできるので別に3年間を無意味に過ごすわけではないが、余分に3年を大学で過ごそうという気にならなかった。

実際には

修士課程を修了する少し前から会社に入った。研究も面白かったが仕事はさらに面白く、結局大学に戻ることはなかった。研究も私的に続けたが飽きて数年でやめてしまったので、結果的に就職したことが正しい選択だったのだろう。

留学は社会人3年目くらいまでは考え続けていたが、海外で勉強をするくらいなら海外で就職するほうが楽しいだろうと思い直し、アメリカで仕事を見つけ今に至っている。

余談だが、ニューヨークに住むようになったあと、私が修士を取った分野の研究をしている大学の先生と偶然知り合った。「うちでドクター取らない?」と本気だか冗談だかわからない調子で勧誘された。ちょっと心が動いた。

2009年1月17日土曜日

飛行機救出作戦

うまくいきますように



8時間前の様子


2009年1月2日金曜日

アイスコーヒー讃歌

アイスコーヒーが好きだ。朝起きて2杯、午前中に1杯、おやつに1杯、寝る前に1杯。書き出してみるとたった5杯しか飲んでないのかとも思うがとにかくアイスコーヒーが好きだ。

朝のコーヒーは濃く入れる。いつもブラックだが朝の1杯目はミルク入りだ。

社会人になったころはアイスコーヒーが世界の中心だと思っていた。外国ではアイスコーヒーが一般的ではないと知らず、世界中の喫茶店でアイスコーヒーを注文した。拒否されたり怪訝な顔をされたり苦笑されたりして世間がいやになった。

飛行機に乗って飲み物の希望を聞かれたときも必ずアイスコーヒーを頼んだものだった。大人になった現在はアイスコーヒーを出す航空会社はほとんどないことを知っているけれど、私は若かった。

典型的な反応は英国ブリティッシュ・エアウェイズ。「ハア? アイスコーヒー? ありません!」とスチュワーデスに怒り気味に言われた。ちなみにアイスティーもなかった。アメリカン航空だったか、米系の会社は優しかった。「アイスコーヒーはメニューにはありませんが、やってみます」氷の足りない水で薄めたようなコーヒーが出てきたけれど。

ドイツのルフトハンザも同様、「がんばってみます」と言ったスチュワーデスはぬるいコーヒーの上にホイップクリームの乗ったものを持ってきた。ホイップクリームをコーヒーに乗せることよりも、飛行機の厨房にホイップクリームがあるのに驚いた。苦く入れたアイスコーヒーにコンデンスミルクを入れるのはマレーシア航空。所変われば品変わるということを学ぶのが人間の成長というものである。

世界のどこに行ってもアイスコーヒーが飲みたくなるほど好きだ。さんざん学習したためもう日本人のスチュワーデス相手にしかアイスコーヒーを頼まないが、とにかくアイスコーヒーが好きだ。

アメリカに引っ越す前はもうアイスコーヒーが飲めなくなるのかと思っていたが、喜ばしいことにスターバックスがアメリカでもアイスコーヒーを出すようになったため、アメリカでの認知度は高い。普通の喫茶店ではレギュラーコーヒーに氷を大量に入れてアイスコーヒーを作るので薄いぼんやりした味であることが多いが、アイスコーヒーには違いない。

ところがわれらがスターバックスは違う。Iced Caffè Americanoというアイスコーヒーはちゃんとエスプレッソに氷を入れて作るため薄くない。

スターバックスの難点をあげるとすれば豆の味だ。悪くない味なのだが一日何度も飲むには飽きる味だ。さらに、濃いめに作られるため大量にがぶがぶ飲むには向かない。いつでもスターバックスに行ける身分でもない。

アイスコーヒーが好きだ。複数の豆を使い分けて好きなように自宅で飲むのが一番好きだ。

昨年買ったものの中で一番良かったものがサエコ社のエスプレッソコーヒーマシン。目玉が飛び出るくらい高いがおいしいアイスコーヒーのためにはやむを得ない。アイスコーヒー好き・エスプレッソ好きにこの機械はかなりおすすめだ。ただ日本で買うとなぜかアメリカ価格の倍以上するので話半分でどうぞ。

以上、2008年の総括でした。アイスコーヒーはおいしい。

参考リンク