2007年12月15日土曜日

勘違いをする人たち

近所のとあるご婦人は金髪のアメリカ人、お金持ちだ。悪い人ではないのだが、少し俗物の気がある人である。特に「国際的な私」を演出したいらしく、私という日本人に対しては日本の文化の理解者であるように振舞う。「先週ジャパニーズレストランのノブに行ったんですのよ、オホホ」みたいな感じ。

最近その人が犬を飼い始めた。このあたりのお金持ちはステイタスのために大型犬を飼うことが多いのだが、ご婦人に会ったときに抱いていたのは小さめのサイズだ。犬種は忘れたが中国産の種類らしい。

「この子、中国が起源ですのよ、オホホ」

ご婦人が言う。「中国」を強調するあたり、なにか嫌な予感がした。

「お名前、なんていうんですか?」

私は別に犬の名前がポチだろうとタマだろうと構わないのだが、それは会話のキャッチボールというものだ。

ご婦人は言った。

「中国から来たでしょ。だから『ミソ』っていうんですのよ」


私も大人、噴き出すのはギリギリのところでこらえたが、これには驚いた。中国の歴史を背負う由緒正しく(たぶん)プライドが高く(たぶん)血統書つきのお犬様、お金持ちの奥様に飼われて幸せなはずが、味噌……。アメリカには中華料理とミソスープを両方メニューに載せているデタラメなレストランは星の数ほどあるため、ご婦人の勘違いを責めるのは酷というものだが、このお犬様の将来や、いかに。

2007年12月12日水曜日

Pittsburgh Perl Workshopメモ1日目:Security through detection, prevention, and introspection with Perl

syslogdなどの出力を一箇所に集めて加工し、セキュリティの問題を発見しましょうという話。単純な話ではあるのだが話がうまい人で引き込まれた。資料が公開されている。

2007年11月27日火曜日

Perl Survey 2007

Charsbarさんが先にまとめておられるが、Perl Survey 2007というアンケートの結果が先日発表された。

結果は生データで配布されており、いろいろな人が分析結果を公開している。

Jason Porrittその1

「アンケートに答えたPerlプログラマの平均年収は米国平均で980万円。英国平均だと890万円。そのうちプログラミングの中でPerlを8割以上使うと答えた人に絞って年収を平均すると、米国で1000万円、英国で940万円」(Mint注:1ドルを116円20銭で換算。アンケート期間半ばの8月31日付のレート)。

微妙な差ともいえようが、米・英・豪・独・カナダの5か国すべてでPerlの使用率が高いほど収入が高いのは面白い。

Jason Porrittその2

「アメリカのPerlモンガーズグループメンバーの平均的な像は、36歳男、Perl歴9年、プログラミング歴18年」

日本のグループよりだいぶ平均年齢が高い。NY.pmを見る限り納得できる結果である。

「Perlモンガーズに所属している人はそれ以外の人に比べて8%収入が多い」

これは少し冗談っぽいトーンで語られているけれど、Perlモンガーズが都市部に多いからだろうか。同じような統計はまだできそうだ。だれかやらないかな。

Chris Lansdown

最初の図は年齢と収入の関係。年齢に応じて収入が上がるのは40歳くらいまでらしい。

次の図はプログラミング歴とPerlの使用率の相関を示した図。プログラミング歴が7年から10年あたりの層がPerlを使用してプログラミングを行うことが多いようだ。CGIブームでPerlを始めた人がPerlを使い続けているということなのかな。

アンケートの主催者はまた来年も行う予定だそうなので、来年こそは回答します(すみません忘れてました)。

2007年11月18日日曜日

シリコンバレーツアー

シリコンバレーで働いてみたい日本人のためのシリコンバレーツアーというものがあるらしい。私自身はシリコンバレーで働こうと思ったことはないし、アメリカで働こうと本気で思っている日本人は直接企業にコンタクトしたほうが早いぞ、なんて思ったりもするが、「アメリカで働いてみたいけどどうしたらいいかわからない」と漠然と考えている人の良いとっかかりにはなるのだろう。

私が胸を打たれたのは主催者の熱意である。金銭的利益にもならなさそうだし、パネリストを(たぶん)手弁当で集め、さらにそれを毎年行うというのはなかなかできないことだ。素直に敬意を表したい。ニューヨークの日本人俳優たちもそういうことをしたらいいのではないかと思ったり。

ただ、このシリコンバレーツアー。一つだけ腑に落ちないことがある。30歳までという年齢制限があるというのはいかがなものか。チャンスが平等に与えられる(ことが少なくとも建前の)この国において、年齢だけを理由に門前払いするのはどうかと思う。せめて参加希望の動機を聞いて考えてあげればいいだろうに。選考の結果、結果的に30代が全部落とされたとしても、門前払いよりはずっといい。

ともあれ、アメリカ西海岸。一度住んでみたいなあ。


(11月25日追記)

今回は年齢制限をなくすそうです。コメント欄をご参照ください。

2007年11月13日火曜日

旅行者のためのフランクフルト・インターネット利用ガイド

ネットカフェ

フランクフルト中央駅(Hauptbahnhof)の中とその周辺にネットカフェが数軒ある。1ユーロ(160円)で30分くらいが相場である。窓の大きい明るいところが多いので、外から見て好みで決めるとよいだろう。日本語IMEの使えるところも少しある(中央駅を正面から出てすぐ右にある店が使えた)が、Ajax IMESumibi.orgを覚えておけば日本語の環境が整備されていなくてもそれほど困らない。

キーボード

知っていてもはまるのがキーの配列である。Äやßは別に使わなくてもいいので無視していいけれど、YとZが入れ替わっているのは本当に不便である。その他§などの見慣れない記号もキーボードにあるし、ユーロの国ゆえ€もキーボード上にある。#は右端にある。

電源関係

ドイツのコンセントは2個丸い穴があるタイプで(地域により若干異なる)、ラップトップPCを使おうと思ったら電源を変換するアダプタが必要となる。高級ホテルならアダプタを貸してくれることだろうが、フランクフルトでは電器店を見たことがないので格安ホテルに泊まる場合は日本から持っていくのがよいと思う。

2007年11月12日月曜日

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

突然ではあるが、忘れないうちにロンドンのネット環境のことを書いておきたい。

ネットカフェ

漫画喫茶があちこちにある東京とは違い、ロンドンのインターネットカフェは数が限られる。とはいえ、旅行者の多いPiccadilly CircusやLeicester Squareのあたりでは交差点ごとにあるといっても過言ではないほど密集している。人通りが多くても観光客の少ないエリアにはまったくなく、Bank(これ駅名です)でネット接続が必要になったときはまったく店が見つからずに難儀した。

値段であるが、1ポンド(240円程度)で15分から30分くらいである。空港では2ポンド15分というひどい値段だった。

PCのついた公衆電話

おすすめしない。キーボードとマウスが壊れていることがままあるし(おまけにコインを入れてから壊れていることがわかる)、メールか妙な専用ブラウザのみの利用となる。日本語の入力はおろか表示もままならない。どうしてもネットカフェが見つからなかったときにはお試しください。

日本語入力

私が試した限りでは、半数以上のネットカフェで日本語が入力できた。もし日本語に対応していなかった場合は、日本語変換の無料サイトをおすすめする。ロンドンに限った話ではないが、海外で日本語を入力するときにこの二つははずせない。

Ajax IME
Sumibi.org

電源関係

イギリスのコンセントは3個穴があるタイプで、ラップトップPCを使おうと思ったら電源を変換するアダプタが必要となる。高級ホテルならアダプタを貸してくれることだろうが、格安ホテルに泊まる場合は現地調達が意外と面倒なので日本から持っていくのがよいと思う(成田空港で買っても1000円しないはず)。もしPCが240Vに対応していなければ変圧器も必要(数千円)。

2007年11月6日火曜日

旅の計画

アメリカに住むことのメリットを挙げろと言われたらすぐ頭に浮かぶのがヨーロッパへの距離である。たとえば日本から西ヨーロッパに飛行機で行くとすれば12時間以上かかる上、時差もきつい。ニューヨークからだと6時間程度だ。そういうわけで一年に一度はヨーロッパに行くことにしている。

今年は秋にイギリスとドイツに行ったのでしばらくおとなしくしていようと思っていたが、パリ市内のアパート(アパルトマン)を安く借りられる話が舞い込んできた。フランス料理はあまり食べつけないがフランスのデザートは好きだ。2週間の旅行をすることに決めた。

アパートは旅程の3分の1ににとどめ、もう3分の1はホテルをとった。あとの3分の1はまだ決めていないが、パリから出てフランスの他の都市か、ベルギーかなにか近隣の国へ行ってもいいと思う。

ともあれ、旅は計画段階が一番楽しい。

2007年10月23日火曜日

GmailがIMAPに対応した

IMAPはデスクトップよりは携帯端末に適したプロトコルのはずなのだが、携帯電話からGmailにアクセスするにはPOP3しかいままで方法がなかった。携帯でメールを読んでも、webでGmailにアクセスすると未読の印がついているので同じメールを繰り返し読まなくてはならない。さらに自宅のPCからPOP3でGmailを読むと同じメールを3回読まされるという状態。仏の顔も3度までというが、もうありえない。

そこに待ちに待ったGmailのIMAP対応のニュース。さっそく手持ちの携帯、iPhoneで試してみた。

設定は指示通りに行えば簡単で
  • Gmailにwebからログイン、アカウントの設定でIMAPを使えるようにする(これは使えるようになっていた。POP3ユーザだからだろうか)
  • iPhoneの設定画面を開いて「Gmail」を選ばずにOtherで設定
  • サーバの名前、自分の名前、アドレス、パスワードを繰り返し打ち込んで終了。

さっそく携帯からGmailにアクセスしてみると、

  • 携帯から読んだらwebのGmailで既読状態になるのはもちろん
  • webのGmailで消したSPAMはすぐ携帯から見えなくなるし
  • web上でラベルをつけたメールは携帯上でフォルダに格納されたり

当たり前のことが当たり前にできるようになっただけという気もするけれど、満足であります。

2007年10月12日金曜日

ピッツバーグへお出かけ

切符がそろったのが昨日の朝。今日は朝ごはんを食べた後、スーツケースに服をつめ出発である。

飛行機はアメリカの近距離便によくある小型機。座席を両側あわせて3列(1列+2列)の配置で、すべてエコノミークラスである。90分のフライトのため機内食などあるわけもなく、ピーナツと飲み物だけだ。

飛行機は小さいだけあってよく揺れる。特に離陸のときはひどかった。やっぱり飛行機は好みじゃない……。来年のYAPCはシカゴまで電車かバスに乗ろうかと真面目に思う。

2007年10月3日水曜日

Brian D. Fox

brian d foyはPerlの物書きとしてつとに知られている。さてこの人、最近Mastering Perlという本を出したのだが、日本のアマゾンではBrian D. Foxとして紹介されていた(画像参照)。
foyをfoxとtypoするのはありがちな話かもしれないが、最近のオンライン書店では出版社からデータのフィードが来てそれをそのまま載せているものだと思っていた。typoが発生するということは、アマゾンでは係のおじさんが表紙を見ながら著者名を打ち込んでいるのだろうか。


追記(10月21日)
Karenさんがアマゾンに連絡してくれて直ったらしい。ところでbrian氏も文句を言っているが、「はしがき」を書いたRandal Schwartzの名前が著者の前に書かれているのはなんだか妙である。

2007年9月16日日曜日

バウムクーヘンに注意しろ


先日ドイツからロンドン経由でニューヨークに戻ったときの話。テロの標的になりやすいロンドンのヒースロー空港、それもニューヨーク行き、さらに9月11日の直前の米系航空便と条件が揃ったため、空港警備の厳しいこと。
私はといえば、やましいところもまったくないので「手荷物を検査します」と言われても余裕しゃくしゃくだった。ところがドイツで買ったおみやげのバウムクーヘンのせいで厄介な目に。
警備員男「この袋はなんですか」
私「おみやげですけど」
警備員男「開けてもいいですか」
私「どうぞ」
警備員男、丁寧に手袋でがさごそと中身を確認。転がり出てくるバウムクーヘン。なぜか凍りつく警備員男。
警備員男「(大声)なんだこれは!
私「(どぎまぎ)食べ物です」
警備員男「どんな食べ物だ!」
私「(涙目)これはバウムクーヘンといってケーキの一種で、ドイツの有名なお菓子で」
どうやらバウムクーヘンの渦巻きが電線を束ねたコイルかなにかだと思われたらしい。騒ぎを聞きつけて警備員女登場。この人、たまたまドイツのハンブルク出身だった。救われた。
警備員女「あらー、私これ知ってるわよ。子供のときよく食べた」
助かった。そう思った。ところが。
警備員男「しかしこの物体にはボタンがついている!
バウムクーヘンにボタン? そんなのついていたっけ? と思って自分でよくよく見てみたら丸薬タイプの乾燥剤が……(写真右上)。ピンク色をしているし、言われてみれば確かに発射ボタンに見えないこともない。

結局その後、これは乾燥剤で私は怪しくない一般人ですということをがんばって説明して無罪放免となった。


今日の教訓。バウムクーヘンには世界規模の知名度はない。

2007年6月13日水曜日

左手だけで打てる文章

Serverという単語は普通のキーボードを使って左手だけで打てることに気がついた。Databaseもか。Startもだ。QWERTASDFGZXCVBの中の文字で組み合わされている単語だ。

キーボードを見つめて作り出した文章がこちら。
Stressed traders accessed secret database after a carefree stewardess eats sweet dessert

「のんきなスチュワーデスが甘いデザートを食べた後、ストレスを抱えたトレーダーが秘密のデータベースにアクセスした」

意外と長い文章が作れるのでお試しください。


日本語でもやってみた。
わざわざただでげた洗わせてあげた

これは改善の余地あり。

2007年6月3日日曜日

そのあとLarry Wallに謝った

前回の記事には予想以上の反響をいただきお礼を申し上げます。

時間がたった今では笑い話として語れるものの、失敗をした直後はかなり鬱状態。一緒に受付をした好青年のKさんが「ラリーとしゃべれてラッキーでしたね」となぐさめてくれたが、話した内容があれではラッキーもなにもない。

休憩時間に本人にお詫びをしに行こうと思っていたのだが、Larryの周囲に人が多くなかなか近寄れない。会話している最中に割り込んで「えーちょっとすみませんが受付の私です」というのも気がひけ、午前中はコンタクト失敗。

昼ごろからは受付が暇になったため、交替制で受付係を担当した。来客のない受付というのは退屈なもので、洗面所で顔を洗うことにする。

しっかり顔を洗い、顔を拭いて服装を鏡でチェックしていると、なんとそこにLarryがトイレ休憩に登場。Larryに連れがいればまた違ったのだが、運良く(悪く)もLarryと私の一対一。探し求めていた相手が登場したのだから幸運なのだろうが、予期していないタイミングと場所でこちらはドギマギ。緊張最大値。
私「受付ではLarryさんだということに気づかず失礼しました。いきなりLarryさんが登場されたのでびっくりしました」
と言ったら、Larryが笑ってくれた後
Larry「I was surprised about that, too」
自分が招待講演に来たカンファレンスで名前を聞かれたらそりゃ驚くわな。


その夜の懇親会であらためてLarryに握手をお願いしたところ、自分の手をごしごしとシャツで拭いてから握手してくださった。


去年YAPCで受付をしていたらLarry Wallがやってきた件

2007年6月1日金曜日

去年YAPCで受付をしていたらLarry Wallがやってきた件

YAPC::Asia 2006での失敗談。

昨年のYAPCでは会場の受付をさせていただいた。招待客と外人の参加者向け窓口に座っていたため、受付に来る人の数が少なく仕事自体は楽だった。仕事といっても名前を聞いて参加者リストと照合し、名札とノベルティを渡すだけ。それでもみなさん開始時刻の直前にまとめていらっしゃるため、結構いっぱいいっぱいだった。

そういう中、会場の入口から人ごみをかきわけるようにして、私の前に外人のおじさんが到着。以下つたない英会話で。

受付の私「おはようございます。お名前は」
おじさん「ラリー
受付の私「どちらのラリーさんですか」
おじさん「ラリー・ウォール
受付の私「ちょっと待ってください、いまお名前確認します」(まだ気づいてない)

下を見て参加者リストからラリーなる名前の人を探したところ、燦然と輝くLarry Wallの名前。 あちゃー。
……っていうかあなたがPerlを作ったLarry Wallですか。
……で、Perlのカンファレンスというこの会場的には神さまみたいな存在のあなたが来て一般人のふりをして受付に来ている、と。
……私は顔を上げたときどんな顔をするべき?
……あれってラリー・ウォールじゃないの? なんてひそひそしゃべっている人もいますよ!
などなどいろいろな思いが一瞬で去来して、なんとかフォローしようと、名札を渡しつつとっさの一言。

私「みんなあなたを知ってるから別に名札なんてつけなくてもいいじゃないですかあ。ははは」(空笑い)
ラリー「そうでもないかもね」(Well, maybe not)
それは私のことです……。墓穴掘ったorz

そのあとLarry Wallに謝った

2007年5月21日月曜日

preタグの中身がFirefoxで改行されない

<pre>長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト</pre>
と<pre>の中身に長いテキストを書くと、FirefoxをはじめMozilla系列のブラウザだとデフォルトでは改行してくれないことを今日知った。スタイルシートをこうやって変更した(出典)。
pre {
padding:3px;
border:1px solid #333333;
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}

2007年5月20日日曜日

YAPC::NAを大学生にすすめてみるテスト

知り合い経由で、ニューヨークでのインターンシップに応募しようと計画している学生さんの話を聞いた。観光目的で入国し日本人相手の商売を手伝うという内容なのだ。航空券は自腹、さらにそれなりのお金を手配業者に払う上、もちろん無給だそうな(給料が発生したらビザが必要だから当然か)。こういう企画、それなりに需要はあるみたいだから多くは申し上げないが、アメリカで短期間勉強をしてみたいという学生さんはYAPCなどに出席するほうが実があるのではないか。

YAPCはPerlの国際会議である。日本では去年と今年行われ、米国でもYAPC::NA 2007が6月25日からテキサス州ヒューストン大学にて3日間行われる。これはPerlとアメリカに興味のある学生さんには結構おすすめで、
  • アメリカの大学のキャンパスを味わえる(夏休み中ではあるが……)
  • 希望者は大学の寮に泊まれる(好みで一人部屋でも相部屋でも)
  • Perlの講演をたくさん聴ける(web開発の技術などPerlに直接関係ない話もある)
  • 講演後はパーティーで英会話の練習
  • 夜は大学の寮にあるラウンジでさらに英会話の練習
  • YAPCの終了後は翌日からPerlの研修もある(費用別途)
  • 帰国後「アメリカで国際会議に出席してきました」と言える

ヒューストンに4泊するとして、費用をざっくり概算すると12万円くらい。

  • 航空券:50000円
  • 宿泊費:10000円(4泊を大学の寮で、二人一部屋。相部屋がいやなら15000円くらい)
  • 食費:10000円(学食なら3食$21。学食より安い店もある)
  • YAPC参加費:12000円
  • 現地雑費:25000円(ちょっと多めに。NASA見学を仮定)
  • 日本国内交通費・海外旅行保険:15000円

1週間滞在したら15万円くらいだろうか。もちろん節約は可能で、NASAに行かずにヒューストン大学でじっとしていれば、現地の雑費は空港の往復費用のほかはほとんどかからない。お金に余裕のある方は$100程度からそれなりのホテルに宿泊できる。大学院生の方はヒューストン大学の研究室を訪問してみても悪くない(アポはとってね)。

学生さんはテストやバイト・サークルなんかもあるだろうが、この3日間が人生を変えるかもしれない。

なお私はYAPCの宣伝係でもなんでもなく、参加者の一人です。




関連記事

YAPC::NA 2007まとめ

2007年5月8日火曜日

YAPC::Asiaメモ(その8)自文書抽出日本的住所

  • Geography::AddressExtract::Japanができるまで
  • 自然文章から住所を抽出したい
    • 日本の住所パターンを研究
    • 郵便番号DBも使える
    • Regexp::Assembleを使って文字列のリストすべてをカバーする正規表現を作る
  • テクニック
    • 都道府県がなくても補完
    • 港区(東京都と名古屋市にある)の場合は街の名前で判別(港区六本木なら東京都)
  • その他問題
    • 人間の書いた住所はゆらぎが多い
    • 異体字問題(Encodeで対応できるらしい)
    • 変わった住所(京都とか):抽出可能
  • Regexp::Trie使えそう
この講演の前身は昨年10月に行われたShibuya Perl Mongersテクニカルトーク#7。個人的にこれがすごく気になっていたのでとうとう見られて幸せ。

アメリカの住所でおなじことをしようと思ったら取り掛かりとしてGeo::StreetAddress::USというのがあるのだが、これは住所フォーマットの解析だけしかしてくれない。

たとえばニューヨーク市シブヤ123番地があったとして、
use Geo::StreetAddress::US;
use Data::Dumper;

$hashref = Geo::StreetAddress::US
->parse_location("123 Shibuya, New York, NY, 10001");
print Dumper($hashref);
はこういう結果を返す。
$VAR1 = {
'number' => '123',
'street' => 'Shibuya',
'state' => 'NY',
'zip' => '10001',
'city' => 'New York',
'suffix' => undef,
'type' => '',
'prefix' => undef
};

ところがYappoさんのモジュールと違って住所の部分を文章から切り出してくれるわけではなく、たとえば住所ではない文字列が混じった
$hashref = Geo::StreetAddress::US
->parse_location("My address is 123 Shibuya, New York, NY, 10001");
print Dumper($hashref);
にすると
$VAR1 = '';
というさびしい結果に。

さて、どうしよう(続く、かも)。

2007年5月7日月曜日

YAPC::NA 2007のスケジュールが発表された

もう先週のことだが、YAPC::NA 2007のスケジュールが発表され、頭を痛めている。

月曜日から水曜日まで3日間のうち、なにも考えずに一つの部屋にいればいいのは月曜日の午前中と水曜日の午後のみ。それ以外はどこの部屋に行くかを考えなくてはいけない。

ひどいのは月曜日の夕方で、セッションが5部屋で同時進行ときたものだ。15:50からの数独トークは外せないし、そうなると終了の16:45を待たずして16:35のHome Automation with Perl and X10に行かなければならない。ちなみにこのHome Automationはネットで天気をチェックして庭の水まきを制御したりするアメリカならではの内容で、これも外したくない。

火曜日から水曜日の午前中にかけてもほぼずっと3部屋同時進行で、おまけに各セッションの開始・終了時刻がまちまちで最適経路の探索問題を解いているみたいだ。

とはいえ、旅行の計画と一緒でそういう制約条件をあれやこれや考えている時間が一番楽しかったりするのだが。

だいたい、YAPCの入場券は買ったものの飛行機もホテルもまだ予約していない。ガイドブックも買わなくては。

(6月10日追記)
5部屋の同時進行にはさすがに文句が出たらしく、その後最大4部屋に改善された。


関連記事

YAPC::NA 2007まとめ

2007年5月6日日曜日

YAPC::Asiaメモ(その7)Virtualization and Package Deployment with EC2 or パッケージ配布と仮想化(Emerson Mills)・Inside Net::Amazon::EC2

今日はAmazon EC2とS3関係の2題のまとめ。

気になる利用料金が出てこなかったため、勝手に調べた。Amazon EC2のページによるとEC2のお値段はこういうことだそうだ。時間単位の課金は1分でも使えば1時間ぶんの課金が発生する。



2007年5月まで6月から
時間課金$0.10/時間/インスタンス
転送料課金
(アップロード)
$0.20/GB$0.10/GB
転送料課金
(ダウンロード)
$0.20/GB$0.18/GB(毎月最初の10TB)
$0.16/GB(次の40TB)
$0.13/GB(それ以上)


S3のお値段はこんなかんじ。





2007年5月まで6月から
容量課金$0.15/GB/月
転送料課金
(アップロード)
$0.20/GB$0.10/GB
転送料課金
(ダウンロード)
$0.20/GB$0.18/GB(毎月最初の10TB)
$0.16/GB(次の40TB)
$0.13/GB(それ以上)
リクエスト単位の課金(アップロード)なし$0.01/1000 PUT/LISTリクエスト
$0.01/10000 GETリクエストなど
DELETEリクエストは無料


安いかどうかは感じ方次第だが、個人的には基本料がかからないのがうれしいところ。個人で会社を始めたくなったときにはお世話になろうかな。

Virtualization and Package Deployment with EC2 or パッケージ配布と仮想化(Emerson Mills)

  • 自己紹介
    • AWS日本担当。実験・講演・サポート。好きなだけPerlを書いていいと言われたので入社
  • 問題
    • モジュールのインストールがなかなか成功しない(これには会場のほとんどが賛成)
    • 開発者の環境を再現するのは難しい
    • モジュールそのものより依存関係のインストールに時間がかかる(初心者はさらに大変)
  • 仮想化
    • ハードウェアの論理化、リソースの最適化
    • パッケージだけではなく環境そのものを配布する
    • ソースも暗黙の知識も同時に納品
  • EC2とは
    • アマゾンの仮想サーバにアクセスするwebサービスAPI
    • いまのところベータ。インスタンス(物理的なサーバに対応)20台まで起動できる。ベータが終われば好きなだけの台数
    • 仮想サーバのスペックは普通のレンタルサーバかそれ以上
    • 起動して、いろいろインストールして、それをイメージ化
    • イメージをサービスに登録。必要なら実行権限を設定できる(Ingyのみ実行できる、など)
    • EmersonはCatalystの環境をいろいろ作ってみている
  • Q&Aより
    • EC2はシステムの拡張が容易なのでwebのトラフィックが急に増えたときにも対応できてよい
    • 環境が似たようなイメージがたくさんできてしまわないか→それ自体は問題ではない。必要だったらインスタンスのリストから隠すことができる
    • EC2はwebアプリケーションだけではなくUDPを使ったネットワークゲームなども問題なく動く
    • ベータ版でなくなる時期についての正式な情報はまだない
Inside Net::Amazon::EC2(Jeff Kim)

  • EC2:Elastic Computing Cloud
    • バーチャルなLinuxレンタルサーバ
    • 従量課金
    • いまのところベータ。サインアップしてから使えるようになるまでやや時間がかかる
    • 複数のマシンイメージを呼び出しひとつで立ち上げ
    • パーミッションやファイアウォールの管理がグループ化したホストに対してできる
  • S3:Simple Storage Service
    • 従量課金(容量と転送料)
    • すぐにサインアップして使える(だからいますぐ使おう)
    • コンテンツは「バケツ」のなかに入れる
    • FUSE経由でマウントできる
    • 実質上、容量無制限のディスク
    • EC2はS3を使ってデータを保存
    • EC2とS3の間は転送料無料
  • Net::Amazon::EC2
    • 「クエリ」ベースのAPIを使っている
      • SOAPベースのAPIはPerlのSOAPライブラリが力不足のため使わなかった
    • 他の言語にはAPIがあったがPerlにはなかったので作った
    • メソッド:いまのところEC2のAPIにあるものはすべて実装
      • *_image(s)
        • register_image:S3上のAMIをEC2に登録
        • describe_images:インスタンス化できるAMIのリストを返す
        • deregister_image:registerの反対
      • *_instances
        • run_instances:一番重要。指定したAMIインスタンスの開始。引数はインスタンスの最小数・最大数、セキュリティグループ、ユーザデータなど
        • describe_instances:便利。走っている(と最近まで走っていた)インスタンスのリストを返す
        • terminate_instances:インスタンスの終了(変更が破棄されるため注意)
      • *_key_pair(s)
        • create_key_pair:初回のみ使う
        • describe_key_pairs:あまり使わないだろう。EC2アカウントに対しての鍵情報のクエリ
        • delete_key_pair:鍵の消去。インスタンスが走っているとアクセスできなくなるので注意
      • *_image_attribute
        • describe_image_attribute:イメージの属性を返す
        • modify_image_attribute:イメージの属性を変更(いまのところlaunch permissionのみ)
        • reset_image_attribute:イメージの属性をリセット
      • *_security_group
        • create_security_group:セキュリティグループをEC2アカウントに追加
        • describe_security_group:EC2アカウントに設定されているセキュリティグループを表示
        • delete_security_group:アカウントからセキュリティグループを削除。インスタンスが走っているときに実行したらどうなるかは不明だがやめたほうがいいだろう
      • その他
        • authorize_security_group_ingress:ネットワークパーミッション(IPアドレス、ポート)をセキュリティグループに追加
        • revoke_security_group_ingress:authorizeの反対
        • get_console_output:とても便利。仮想マシン(インスタンス)のコンソールにアクセス
        • reboot_instances:インスタンスの再起動
  • 開発予定
    • テストを改善したい。テストの自動化は難しいしテストをするたびに課金される
    • もっとOO。モジュールはOOだが返ってくるデータはOOではない
    • もっとメソッドを追加
    • EC2 APIがアップデートされるたびにこちらも変更

2007年5月5日土曜日

YAPC::Asiaメモ(その6)WebAPIで遊び倒す

WebAPIとマッシュアップ
  • WebAPIといえばマッシュアップが中心
  • マッシュアップの流行りは地図系、特にGoogle Maps(次いでFlickrとAmazon)
OpenIDを使ったIP電話のデモ
  • OpenIDはシングルサインオンの認証システム
  • Click to Callを作っている(ユーザがwebで自分の電話番号を入力すると電話がかかってくる)
  • Asterisk(フリーのPBXのソフトウェア)を利用
  • コマンドラインのSIPクライアントも使う(SIP=Session Initiation Protocol)
  • OpenIDで認証
  • デモが動かず。どこかでタイムアウト?
EC2のデモをスクリーンキャストで
  • EC2:バーチャルなサーバをインターネット上で利用できる(詳しくは他の人のプレゼンテーションで)
  • FireFoxのadd-on(Amazon EC2 UI)で同時にアクセス、モニタしてみよう
  • まず秘密鍵をつくる
  • サーバを起動。IPアドレスは動的に振られる。DDNSを使って運用するのが現実的
  • 起動するたびに課金(忘れているとずっと課金)
Net::OpenID::Consumer
  • PODわからない。リンク先はNot Found
  • OpenID guestbookソースコードが見えた(mnメモ:ソースコードは流出ではないらしい
  • なにかをマッシュアップしてみよう→相手がだれだかわからないのに使うものといえば電話
  • 最近の問題:IP電話のSPAM(SPIT=Spam over Internet Telephony)
  • SIPとOpenIDを組み合わせればよい
  • OSPを使えというひともいる(でもOSPは大変)
ほかに使えるもの
実装例
  • muckOS(Amazon EC2、S3、SQSを利用)
  • RightScale(これもEC2、S3、SQSの組み合わせを。無料で何時間か使える。解説記事
台場さんのプレゼンテーションはうまい。内容をしぼってゆっくり話すとここまでわかりやすくなる、といういい例だ。見習わねば。

2007年5月3日木曜日

YAPC::Asiaメモ(その5)Lightning Talksを5題

今日はLightning Talksを5題視聴した。

Perlbal Selector Plugin
  • Perlbalはソフトウェアロードバランサ
  • BigIPもいいけどPerlbalは無料だしPerlだし
  • Pluginで拡張ができる
  • URLによってバックエンドを切り替えたい→Perlbal::Plugin::Vhostsを拡張
  • PerlbalのテストはPerlbal::Testで
  • PerlbalもMogileFSもかなりいい
  • Perlbalはたまに死にます
Perlbalは使ったことがないが、自分で拡張できるインターフェイスがあるのはすごく好み。PerlbalもMogileFSもSix Apart社の外で一般的に使われているんだなあというのが正直な感想。

BabelBee - Collaborative Translation Tool
  • Jifty使ってる
  • Hiveminderのために作った
  • poファイルの翻訳が便利になる
  • すでに翻訳したものに似ていればそこから翻訳を採用
  • AJAXいっぱい
ビデオの画面が小さくて、AJAXでなにをやっているのかが見えなかった。一般公開されたときに要チェックかな。

(ミニ)カンファレンス中継のあれこれ
  • i-revoの紹介:KONAMIとIIJの合弁。ポータルサイトの運営
  • 最近Shibuya.pmのイベントなどでミニカンファレンス中継をやってます
  • お手軽なストリーミング中継は低解像度でのWindows Media。
  • 問題
    • 低解像度だとプレゼンテーションの資料が読みにくい
    • バッファリングが起こるのは気になる
  • 解決策:ストリーミングと静止画(プレゼン画面)の組み合わせ
  • ニコニコ動画みたいにできないかな、と発想
    • ブラウザ画面を3分割。動画、静止画、IRCでのつっこみを同時に見せる
  • Perl使ってます。DBはSQLite
  • ストリーミング中継のトラフィックは100人で40Mbps
(・∀・)イイ!
今回のYAPC::Asiaは遠方ということで会場に行けなかったのだが、中継があればよかったのに。
静止画とIRCの連携だけで構わないので、来年なんとかなりませんですか(おねだり)。
場合によっては静止画だけ中継してもらえればあとは会場に電話をかけて音声をひろって……。

そこまでするなら飛行機に乗って行けって話ではあるのだが。

Device::USB::MissileLanuchers
  • USBランチャというおもちゃがある
  • Device::USB::MissileLanucherはセクシー
  • ただし1台しか使えないので
  • 複数操作するためにDevice::USB::MissileLaunchersというものを作った
  • Web APIで操作できる
    • GET http://.../0/up
    • GET http://.../0/down
    • GET http://.../0/left
  • GET http://.../0/fire
あちこちのwebで取り上げられているので今さらですが、感服です。ほかのUSB toysに応用できないかと思ってみても、ミサイル以上に破壊力のあるものはなさそう。女の子受けを狙ったDevice::USB::ChristmasTreeとかか?

Bytecode for Wikis

バイトコードとはバーチャルマシン業界でよく使う言葉で、平たくいうと中間コードのこと。
  • 「このトークでは真面目なことしか言いません」(会場から笑い声)
  • Document::Formatterというモジュールを作っている
  • 今夜CPANに登場予定(実際はDocument::Toolsになったらしい)
  • Document::Parser(パーサ)、Document::AST(抽象構文木)、Document::Emitter(エミッタ)がベースクラス。サブクラスを自分で書く
  • いろいろな文書フォーマットのパーサが簡単に書ける。例:Wiki、HTML、POD、MS Word、Spork
自分で必要なものができて、それを書き捨てるのではなくてモジュール化してさらに公開をちゃんとする、っていうのはエラい。その上に楽しい人で、私はIngyのファンです。

2007年4月30日月曜日

YAPC::Asiaメモ(その4)Perl Worst Practices

Martyは自分で書いた日本語のプレゼンテーションスライドで講演。日本語を話す「外人」はたくさんいるものの、これだけ読み書きできる外人は貴重であります。

演題はDamian Conwayの著書、Perl Best Practicesのもじり。
  • 私にとってのいいPerlは
    • きれいだ(遠くから見ても)
    • 有用だ
  • 悪いPerlは
    • 読むのが難しい
    • 醜い
    • 有用だ(だからなくしたくてもなくせない)
    • もろい(変更するとバグが出る)
  • Javaが好きじゃない
    • バカでも使えるように設計された言語(会場拍手)
    • バカな人でも危険なコードは書きにくいから
  • Perlが好きだ
    • 頭がいい人のための言語。制限が少ない。言語の挙動まで変えられる
    • バカでも使えるけど(そういう例がたくさんあるCPANってサイトは知ってる?)
  • Javaは成功しPerlはそれほどでもない。なぜ?
    • Slack's Law=会う人の95%はバカだ
    • この会場で、頭がいいと思う人は手をあげてください(二人半)
    • この種のデータのうち95%は捏造だ(落ち)
悪いPerlの問題は3つ。変数、正規表現、オブジェクト指向。
  • 変数
    • バグの95%は変数が原因(バグを見つけたとき変数が関係する場合を数えてごらん)
    • 変数をなくすのが理想だけれど、それは難しいからこういう変数をなくそう
      • グローバル変数
      • パッケージ変数(長い名前のグローバル変数だからね)
      • local変数
    • my変数は小さい範囲で使われるならばだいじょうぶ(スコープが25行以内くらい)
    • $1と$2はグローバル変数
  • 正規表現
    • ちゃんと使わないとあぶない。ユーザの入力をgrep /$input/, @array;としてもだいじょうぶ?
    • Mail::RFC822::AddressやRegexp::Commonを使おう
  • OO
    • OOは害悪、でもOOはエレガントだと思っている人がいるから困る
    • 今朝のMJDはOOを使ってなかったよ
    • Perl Object Orientation=POO=「ウンコ」



この人のユニークなところは冗談にまじえてふと真面目なトピックをいれるところ。野暮だとは思いつつ要点をまとめると

  • コードはきれいに書こう
  • 変数はmyで。スコープは狭く。
  • パターンマッチの際の$1と$2に注意(あと$aと$bも注意ですね)
  • 有用なモジュールはMail::RFC822::AddressやRegexp::Common
  • オブジェクト指向は適材適所で

というところ。

先週NYにいらっしゃったときにお会いしたのですが、とてもいい人でした。

2007年4月29日日曜日

YAPC::Asiaメモ(その3)Building Catalyst Applications

あとで自分で使おうと思ってYAPC::Asia 2007のメモをひとつひとつ書いてみているけれど、どうしても1日あたり1エントリ(かそれ以下)が精一杯。このぶんだと書き終わるころにはYAPC::Asia 2008が始まるのではないだろうか。そうすると一年中YAPCのことを書くことになるな。いやだな。

今回はCatalystを使ってブログのアプリケーションを作ってみましょうというお話。ちなみに、発表者のJonathanは電車男です。

前半はCatalystの基本。
  • MVCの説明
  • Catalystのインストールは時間がかかるからコーヒーでも
  • インストールしたらすぐ立ち上げられる
  • アクションには属性(attribute)がついてdefault :Privateなんて書く。:Localや:Globalもある。これはあまり使われていないPerlの機能を利用したもの。
    • default :Privateは定義されていないアクションに対応したURLのとき呼ばれる
    • sub foo :Localは/fooのURLに対応
    • :Privateは対応するURLがない(例外はdefault、index、begin、end、auto)
    • アクションは正規表現も使える
  • アクションを定義するsubの1行目は必ずmy ($self, $c, @args) = @_;
    • /my/action/foo/bar/bazというURLでactionにアクセスすると、myがパッケージ名、actionがアクション名の場合@argはqw/foo bar baz/に
  • アクションの実行順序はauto->begin->action->end
  • $cのメソッドは省略形が使える。res = response、req = request
ほかのアプリケーションとの連携。

  • TT便利
    • MyApp::C::Root::fooはroot/src/foo.tt2に対応
    • これはいちいち設定しなくてもよい(設定することもできる)
    • [% 変数 %]
    • [% Catalyst.requiest.uri %]
  • DBを使う(DBIC)
    • $ script/blog_create.pl model DBIC DBIC::Schema MyApp::Schema create=static dbi:SQLite:blogdb
    • スキーマファイルをちょっと変えればどのDBにも対応
  • FormBuilder
    • Jonathanのお気に入りモジュール
    • JavaScriptでの入力チェックも自動化。JavaScriptをOFFにしてあってもだいじょうぶ
  • セッション
    • プラグイン使う
    • cookieを使わずにURIでセッション管理もできる(最近の潮流じゃないけど)
    • $c->flashで変数の変化をうまく処理($c->stashのかわり)
  • AJAX
    • 「いまどきAJAXのないweb開発なんてありえない」
    • Jemplate(JavaScriptにおけるTT)
  • その他キャッシュとか認証とか
  • テスト
    • Test::Catalyst qw(MyApp);
会場からの質問が一つもなく気まずくなりそうだったところ、司会者が機転を聞かせて「みなさんすっごくamazedです」と英語でコメントを。amazedは感心した、とかびっくりした、とかいう意味で、だから質問が出ないんです、ということなのだがこれをあのタイミングで言えるとはすごい。今度同じ状況になったときに使わせてもらおう。

2007年4月28日土曜日

YAPC::NA 2007の講演一覧が発表された

6月に行われるYAPC::NA 2007の講演一覧が発表された。このブログを読んでくださっている方のほとんどは日本人のはずなので、YAPC::Asiaの関係者を拾い出してみる。
  • Jeff Kim(Inside Net::Amazon::EC2)
    • 先日の東京での発表を再放送? 東京では生で見られなかったので楽しみ。
  • Leon Brocard(PeaceDrum - Practical MapReduce)
    • 去年にmightyvを発表してから1年。相変わらず楽しそうなことをされている。
  • Jonathan Rockway(Building applications with Catalystほか)
    • 東京に続きCatalystの発表2題。
  • Dave Rolsky(Intro to Masonほか)
    • 3題の発表のうち「Perl DateTime Project」は昨年の東京での発表にあった。面白い話題だったので、そのときから何が変わったのかに興味あり。
あとKaren Pauley(Management Skills for Geeks)は唯一の日本からの発表者。

楽しみです。


関連記事

YAPC::NA 2007まとめ

2007年4月27日金曜日

YAPC::Asiaメモ(その2)Angerwhale

Lightning talkから。
  • http://angerwhale.org/
  • ブログサーバソフトウェア
  • インストール簡単、設定簡単、使うの簡単
  • 一記事一ファイル、カテゴリはディレクトリ(DBいらない)
  • URLの形式たくさん(Catalyst使ってます)
    • http://localhost:3000/articles/
    • http://localhost:3000/tags/
    • http://localhost:3000/2007/01/01
    • http://localhost:3000/categories/カテゴリ名
  • 記事のファイル形式はいろいろサポート(HTMLとかテキストとか)
  • 出力もいろいろな形式(Atom、JSON、YAML)
  • キャッシュ多用、だから早い
  • PGPで個人を識別
  • PODたくさん
  • IRCもあるよ
記事=ファイル、カテゴリ=ディレクトリだとシェルでいろいろできそう。でもシェルを使えるサーバを持っていないといけない、と考えたら敷居は高いかも。家庭内ブログだとOK? 今日の献立、とか?

2007年4月26日木曜日

DBIx::SimpleとSQL::Abstract

前回のエントリでPerlからSQLを使うのって面倒、ということを書いたらさっそくmiyagawaさんから「つDBIx::Simple」というお返事が。これのperldocに書いてある通りSQL::Abstractを組み合わせたらSQLも書かなくてよくなって、かなり良さげ。

Inline::CはPerlの中でCを使う自由を与えてくれたけど、Perlの中でSQLを使わない自由もあっていいと思う。だってSQLなんてバッドノウハウのかたまりじゃない? 言いすぎ?

あとはPerlの正規表現でSELECTができるラッパーがあれば最強なんだけれど、ありませんかねえ(と書いたらまだ誰かが教えてくれるかも)。ちなみに、前回書いた/i、つまり大文字小文字を区別しないマッチはSQL::Abstractがこんなふうにやってくれる。たとえば、
$sql = SQL::Abstract->new(convert => 'upper');
%where = (keywords => 'MaKe iT CAse inSeNSItive');
はこうなる。
WHERE upper(keywords) like upper('MaKe iT CAse inSeNSItive')

普通のWHERE文はこんなふうに表現できる。
my %where = (
requestor => 'inna',
worker => ['nwiger', 'rcwe', 'sfz'],
status => { '!=', 'completed' }
);

慣れないブログを始めて1週間足らず。はてなブックマークやLivedoor Readerに登録してくださった方々、そして来訪してくださった皆様に感謝申し上げます。

2007年4月24日火曜日

YAPC::Asiaメモ(その1)Introduction to DBIx::Class

データベースのプログラミングには苦手意識がある。理由のひとつは$dbh->prepare()だとかfetch()とか、おまじないが多すぎるからで。それを解消してくれるかもしれないモジュール。
  • ORM(Object-relational mapper):オブジェクトからリレーショナルデータベースへのマッパ。最近話題らしい。
  • SQLを書かずにPerlを書こう。
  • MySQLをはじめいろいろなDBに対応。
  • 気に入った書き方をスライドからコピペ。
my $table = $schema->resultset('table');
$table->find(1); # primary key

my $people = $schema->resultset('Person')->
search({ firstname => { like => 'Jon%' } });
悪くない。でも使いたいかと言われれば微妙。クラススキーマをいちいち定義しなければいけなかったり(自動化できるみたいだけど)、結局$table->findにしても新たなおまじないを覚えなくてはいけないし。

個人的にはこういうインターフェイスが理想なんだけど。
@rows = $dbh->select(
from=>"people",
where=>"name =~ /^Joh?n.*Kennedy/i"
);
for my $row (@rows) {
say $row->{name};
say $row->{address};
}
ポイントはPerlの正規表現を使ったSELECTと、列の名前であるnameを$row->{name}として使えるようにすることなんですが、こういうことをやってくれるモジュールはありませんでしょうか。

Xの画面がずれた

Linuxで使っているディスプレイにWindowsをつなげてあれこれしたせいか、Xの画面が右にずれた。Google先生に聞いてあっさり解決。

http://linux2ch.is.land.to/index.php?FAQ%2FXWindowSystem#ia0d9ace

「ずれた」を英語でいうとなんだろう? shift?

2007年4月23日月曜日

Linux + Firefox + Flash Player = SIGSEGV

LinuxでFirefoxを動かすと、Flashを使ったページでブラウザごと落ちるという話に悩んでいる。これと同じ症状かな。

http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=44&catid=184&threadid=1233705&enterthread=y(英語)

Flashを使ったページなんて普段は見ないので全然気にしていなかったのだけど、とりあえずプレイヤー(~/.mozilla/plugins/libflashplayer.so)を削除してからバージョン7にダウングレード。Google Videoは見られるようになった。

http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_7_linux.tar.gz

2007年4月22日日曜日

YAPC::NA 2007に行こう

観客として行くことにした。ヒューストンは初めての訪問。

http://conferences.mongueurs.net/yn2007/


関連記事

YAPC::NA 2007まとめ

Bloggerの設定:覚書

設定したこと。
  • Formatting -> Time Zone:EST
  • Comments -> Who Can Comment? -> Anyone

言語の設定は意図的にEnglish (United States)のまま残す。でないと月別アーカイブの見出しが「4月 2007」みたいなダサいことになる。

BloggerのテンプレートでJavaScriptを使う

Template -> Page Elements -> Add a Page Element -> HTML/JavaScript
でHTML/JavaScriptを追加する。

で、Page Elementsのところに戻って
HTML/JavaScript -> Edit

こうしないとテンプレートでJavaScriptを使えない。面倒ですね。