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だけにしたかったのだろうか。