Mac でオタク

2007-04-28 作成
2007-05-05 改訂

目次

能書き
こけつまろびつ MacOS X Tiger
Terminal Emulators
Virtual Machines
Mail 環境
Web 環境(2007-05-05 (Sat): 追補)
Emacs

能書き

「新しい Linux Machine を」とずっと思ってきたのに、昨年の 9 月にあっさり Mac Pro に篭絡されてしまった。しかしまだその時は、すっかり MacOS に転向しようとまでは思っていず、しかも「なあに Linux 類似の環境は、Mac でも『すぐに』作れるさ」と高を括っていた…… その頃漠然と思っていた「然る可き環境」とは あたり。まあささやかな (本当か:-) 要求だし、何の事はないはず、と思っていたのだが、 実際はそう簡単ではなかった。無くしてみて初めて解る Linux のありがたみ…… (←まだ無くした訳じゃないし、Linux だって最初はそんなに簡単じゃなかったはずだけど。)

最初は、Linux 機のフロントエンド (X server?) のように使えればいいや、 くらいに考えていた。それが、MacOS に一本化しようと思立つまでの経緯…

Linux マシンとの並立時代:

それまで使っていた Linux (FC5) 機に、何の設定もしないで ssh で login できた。 Terminal.app は日本語対応だし、はなから anti-aliasing (AA) フォントなので見かけ上は以前と殆んど変らない「生活環境」が構築で きた。(元々、MLterm の上で XEmacs を使っていたから。)但し、日本語フォントは Osaka 決め打ち。さらに iTerm と、Luxi ttf を導入。iTerm は ASCII と Asian font を個別に設定できるので、Luxi Mono と ヒラギノ明朝 W6 を設定した。spacing に加えて、文字間隔も設定できるので、所謂「等幅」で、かつバランスの好い組合せが実現できた。

X11 on MacOSX:

しかしやはり漢字が若干間延びして見えるので、0.9 倍幅の Luxi を .fonts.conf で、と欲張って MacOS X の X11 を試したが、これが思ったよりかなりショボかった。 苦労して MLterm-2.9.3 をコンパイルして、 アンチアリアスフォントを使えるようにしたのに、ls で一行一行書き変っていくのがわかる程遅い。何より、zsh がちゃんと動かん!(port の MLterm=2.9.2 でもこれは同じ。X11 がショボいに違いない!) それではと、代替 X Server として XFree86 を試したが、あまり改善は見られない。Xorg に至っては、起動さえできない。 その途中で Perl のパッケージが管理がおかしくなってしまい、削除する事も、 上書きする事もできなくなってしまった。このあたりで、port や X11 に嫌気が差してきた。

Virtual Machines:

ちょうどその頃 Parallels Desktop や、VMware Fusion が出て、ちょっと試してみたら、これが結構いけそうという感触。 FC6 のインストールは何の問題も無かったし、Linux 機で動いていたサーバ類もすぐ移植できた。Parallels へは、上記の iTerm から ssh でログインできたので、Linux 機はデータを移してからおはらい箱にした。 しかし使い続けていると、使い勝手や安定性に不満が出てくる(後述)。 というか、二つ並べて使っていたせいで、 「あっちでできる事がどうしてこっちでできないの?」 という事が重なり、満足できなかったのかも。(VMware さんの作戦成功か?:-)

XEmacs, Aquamacs, Carbon Emacs:

ならば、MacOS へ一本化しようか、となったが、しかし実はこちらにも問題が有って、 日本語の表示が何かと不安定。しかもこれが terminal 達だけのせいでなく、その上で走らせる XEmacs-21.4.19/20 にも原因があるらしい事が解った。それ以降 (X)Emacs を色々試してみた。しかし、まず XEmacs-21.5 シリーズは、その上で Wanderlust を動くようにできなかった。次に試した Aquamax Emacs は、私にはとても斬新だったけど、今一使い続ける事に踏み切れなかった。 (第一 Wanderlust をどうインストールすれば好いのかさえ解らんかった。) しかし、最後に試した Carbon Emacs (Package) が、まさにビンゴ!という感じで、 これを使ってみる事にした。

残るは…

これで勢いがついて、Linux (on Emulator) から完全移行しようというオタク的衝動にはずみがつく。 で、その後紆余曲折を経てサーバ機能等も移す事ができた。あとは、EBview を移せたら、もう Linux を完全に卒業できる、という段階まで来た。

こけつまろびつ MacOSX Tiger

MacOS X は、NEXTSTEP の、さらに遡っては BSD Unix の流れを汲むものらしい。 しかも、Apple さんは、その上で走る Xcode という開発環境を供給してくれるという。それならば、Linux 上の今の生活環境を移す作業はそんなに難しくないだろう…。 と思っていたが、これは大外れとまではいかないまでも、ちょっと甘い観測であった。 そもそも、BSD/MacOSX 環境に慣れるのが大変。

ディレクトリ構成

まず、ディレクトリの構成が Linux とかなり違っている。 BSD/NEXTSTEP を良く知らないので、どこが BSD ゆずりで、どこが Tiger 独自の「違い」なのかわからいけど、ちょっと忌々しくもある。 (そもそも何で '/' 直下のディレクトリ名に大文字を使うんだ? スペースを入れてないだけ有難いと思え、とも言えるが:-p) 違う上に、概してディレクトリが無闇に深い。 後知恵ながら /Users/home という link を張っておくだけで、 以下の四苦八苦のかなりの部分が軽減できたのではないかと思う。 加えて /opt/local/usr/local から link しても面白いと思うが、こちらはあまり確信が持てない。

env/bin ではなく /usr/bin/ にある。可搬性を考えたつもりで

#!/bin/env python
……
などとしてあったスクリプト達はことごとくアウト。とりあえず、 /bin/env/usr/bin/env から link を張って胡麻化した。

Daemon の起動

また、daemon 達の起動方法がとても混み入っている。というか、Linux でのように、サービスを activate するというのは要するに daemon を起動する事なんだ、と考えればスッキリするはずのところを、 わざわざすごく面倒な事にしていると思える。B. Jepson, E. E. Rothman の MacOSX Tiger for Unix Geeks には随分助けてもらったけど、 このあたりは、何度読み直してもよくわからない。まあ私なりの解釈だと という感じ。Postfix についての実例は下記参照。

次に解らなかったのが、アプリケーションへ渡す環境変数の扱い。 ダブルクリックで起動した場合、shell が設定する環境変数が渡される筈は無いのはまあそうだろうけど、 それが ~/.MacOSX/environment.plist で、しかも XML で書かないといけないとは…。 ダブルクリックで起動して、かつ環境変数を見る、 というアプリケーションは少ないだろうけど、Emacs.app がこれを見るので無視できない。

Network の構成・設定方法

がかなり違う。 まず、Firewall が、iptable ではない…。ipfw というのか?ともあれ、例えば IMAP4 や SMTP のポートを開くには System Preferences -> Sharing -> Firewall と辿り、New... button を叩いて、 Port Name: で Other を選び(私には、なかなかこれが解らなかった!), TCP Number(s): 以下を埋めていく。私は Description: を protocol 名にしておいた。

あと、/etc/hosts を変更しただけでは参照されない。 これを明示的に参照させる方法が解らない…。reboot するしかない? 行を削除するについては、即反映されるようなので、全く参照されないのではなく DNS の chache か何かのせいかも知れない。

フォント

Tiger には英語版でも(というか、そもそも違う版が存在するのか?) ヒラギノが付いてくる。これはちょっと嬉しかった。 外部フォントを使う事に拘らなければ、何も設定する必要は無いが、 私は Luxi Mono に嵌っているので、Linux からコピーしてきて使っている。 luxiXXX.ttf を全部、~/Library/Fonts の下に置いてから、FontBook.app で、Edit ⇒ Add Fonts … で、それぞれのファイルを選んでやるだけ。


Terminal Emulators

CUI + zsh はどうしても手放せないので、自分の生活環境としては Terminal Emulator は必需品。Linux の世界で、xterm, kterm, MLterm 等と遍歴してきたけど、なんだか「有ってあたり前」と思うきらいが有った。 しかし、これこそ無くしてはじめて有難味が解る最たるものかも。

Tiger 純正の Terminal.app、その後入れた iTerm.app (-0.9.5) とも、最初の印象は「まぁまぁ」なんですが、使い込むと結構ボロが出てくる。 何より、たまに文字化けするのが情け無い。 アプリケーションのデフォルトの文字コードと shell の LANG, LC_ALL のコードの色々な組合せを試したが、安定した組合せを見付けたかな、 と思っていると、ポロリと文字化けが表われる。euc-jp, iso-2022-jp, utf-8, shift-jis それぞれの短いファイルを作って、普段から表示を確認するのに使っているが、それで OK でも、lv や less, w3m, xemacs -nw で長い文章を読んでいると、稀に文字化けしてしまう。 また、表示が乱れ、またとんでもなく離れた場所の文字が挿入される事もある。 ターミナルとアプリケーションのどちらが悪いのか未詳だけど、XEmacs も Emacs も X や、Aqua の上だと問題無いので、やはりターミナルが疑われる。

Terminal は比較的安定しているが、何故か shell のプロンプトの左端の文字がゆらゆら揺れる。 (というか、カーソルのある行の左端の文字が揺れる、という事らしい。) これがカーソルのブリンクと同期している。

一方 iTerm.app は安定性に難が有って、 Exit する時によくハングする。Shell から exit で抜けると大丈夫だが Command-Q ではかなりの確率でハングする。一旦ハングすると、Force Quit でも、プロセスを消せない(window が残る)。最近、Force Quit を二度やると、まず間違いなく消せる事が解った:-p。

何とかしたいが、X11 の上のターミナルも、 まともの動くのは、xterm くらいのものなので、 日本語を表示するのはこちらでも無理、という事らしい。 幸い XEmacs も Emacs もターミナルの上でなければ、文字化けは無いので、 長い日本語の文章はこちらで読む事にして、 これらのターミナルを日本語モードで使うのは、已むを得ないときだけ(例えば、 Namazu を使う時とか)に制限する事にする。


Virutual Machines

Parallels Desktop を最初に触った時は、あまりの素晴しさに 「おお、これで勝ったも同然」 なんて思った。 実際、Linux を install してそれまでお世話になっていた環境を再現するのは「お茶の子」だった。 が、しかし、Tiger と共存するには問題が…。 Linux を Guest OS とした時は対応する Parallels Tools が無く、 などとなかなか面倒臭い。 その後二度程アップデートが有った(最新は 3/7/07 の Build 3188) が、この問題は直っていない。

一方、VMware Fusion はβ版ながら、このような問題は無い。 (というか、Fusion がこのような機能をきちんとこなすので、Parallels に対して不満がつのった、のが真相か。)しかし、こちらは Host(Tiger の事) と接続できないという大問題が有った。β2 ではこの問題は、"Experimental" な機能ながら解決された。が、しかし同時に、cursor の動きが極端に遅くなる、という問題が出てきた。 その後、4/5 にβ3 となったが、cursor の問題はそのまま。

どちらの不満も、贅沢と言えば贅沢なんだけど、どうしても気になって、 どちらかに決める事ができない。 で、両方並行してしばらく使ってみたが、どうもこれは少し不安定な気がする。 特に、EyeTV や Skype, X11 と相性が悪いらしく、時々ハングする。 このハングは性質(タチ)がわるくて、Force Quit も効かず、power button を押さざるを得なかった。それまでは、とても安定していたし、Fusion と Parallels をインストールした後も、これらを起動してなければ、 power button のお世話になる事は皆無なので、ちょっと印象が良くない。 (それにしても Mach kernel でも、こういう事は有るんですねぇ。) あと、Parallels の方だけだけど、clock を UTC と設定できない、自動調整もしてくれない、等という問題も出てきた。


Mail 環境

どこかにも書いたけど、これまで Linux server で実現していたメール環境は、mail message を
  1. ISP の pop server から fetchmail で pop してくる。

  2. postfix と forward メカニズムを使って、procmail に送り込む。

  3. procmail のレシピ(~/.procmailrc)で spambayes に送り込み、診断結果のヘッダを付ける。

  4. さらに procmail のレシピの中で、診断結果にによって、spam や unsure を振り分け、MH ディレクトリに入れる。

  5. 流量の多いメイリングリストのメッセージも、この後のプロセスでそれぞれの MH ディレクトリに。

  6. 最後に抜けてきた(spam でもなく、ML からでもない、要するにすぐに読むべき)メッセージを、 maildir 形式のディレクトリ(例えば ~/Maildir) に入れる。

  7. local からも remote からも dovecot 経由でこの maildir にアクセスする。
といった塩梅。これを、そのまま MacOSX 上で再現する。

Postfix:

Tiger 附属のものをそのまま使う。

Fetchmail:

これも Tiger に附属。
  1. ~/.fetchmailrc: を編集
    # Configuration created Mon Apr  9 22:48:49 2007 by fetchmailconf 1.52 
    set postmaster "xxxx"
    set nobouncemail
    set no spambounce
    set properties ""
    
    poll pop-server.xxx.rr.com with proto POP3
           user 'yyyy' there with password 'zzzz' is 'xxxx' here 
    ##options keep   
  2. $ fetchmail を実行してテスト。option keep を uncomment しておけば、万一の場合でもメールを失なう事がないので安心。 受信したメールは、~/Maildir に配信されるはず。

Spambayes:

spambayes-1.1a3 をソースからインストールする。
  1. MacPython-2.5 の binary が /usr/local/bin/python にある事を確認する(←どの Python を使うかで、sb_*.py のインストール先が違う)。

  2. sourcforge からソースを取って来る。

  3. ソースを展開したディレクトリへ行き、
    $ /usr/local/bin/python setup.py build
    # /usr/local/bin/python setup.py install 
    できた binary は /Library/Frameworks/Python.framework/Versions/2.5/bin/ へ行くので、このディレクトリから /usr/local/pbin へリンクを張っておく。

  4. $HOME へ行き、spam/ham のサンプルを ~/Mail/spam と ~/Mail/ham に置いて、
     /usr/local/pbin/sb_mboxtrain.py -f -d .hammiedb -s ~/Mail/spam -g ~/Mail/ham    
    として、.hammiedb を作る。(-f は、サンプルに付いているかも知れない "Trained" フラグを無視するためのもの。二度目以降は不要)

詳しくは「迷惑メールを撃退する」を参照。

Procmail:

これも Tiger 附属。設定は Linux と同じでよい。
  1. ~/.forward:
    "|exec /usr/bin/procmail" 

  2. ~/.procmailrc:
    MAILDIR=Mail/ML
    DEFAULT=$HOME/Maildir/
    :0 fw:hamlock
    | /usr/local/pbin/sb_filter.py
        
    :0
    * ^X-Spambayes-Classification: spam
    spam/.
        
    :0
    * ^X-Spambayes-Classification: unsure
    unsure/.
    
    :0
    * ^X-ML-Name: connect24h
    connect24h/.
    .... snip .... 

IMAP server:

Dovecot をインストール、設定する。

  1. # port install dovecot

  2. /opt/local/etc/dovecot/dovecot-example.conf を編集して、 dovecot.conf を作成。(Wanderlust との組み合わせでは SSL を介してのアクセスはできなかった。)
    fukuda@quadra:~% diff /opt/local/etc/dovecot/{dovecot.conf,dovecot-example.conf}
    20c20
    < protocols = imap imaps
    ---
    > #protocols = imap imaps
    45c45
    < disable_plaintext_auth = no
    ---
    > #disable_plaintext_auth = yes
    85c85
    < ssl_disable = yes
    ---
    > #ssl_disable = no
    211c211
    < mail_location = maildir:~/Maildir
    ---
    > #mail_location = 
    749c749
    <   mechanisms = login plain
    ---
    >   mechanisms = plain    

  3. /Library/LaunchDaemons/ に org.macports.Dovecot.plist がインストールされ、次回システム起動時から daemondo で dovecot daemon が起動される。

  4. TCP port 143 を開いて、外部からアクセスできるかテスト。(Parallels Desktop の FC6 の上の Wanderlust on XEmacs を使った。 こういう時にとても便利だ。)


Web 環境

今のアパートのインターネット接続は登りが遅い (300 - 400 kbps) ので、 otacky.jp の公開は今後とも稲城の留守宅から、と決めて、 このサイト (otacky.us) は、ページ更新の際のチェックのため、という事にする。 要するに、 などを動かせたい。

httpd (Apache-2.2.4)

なんと Tiger は、デフォルトで Web サーバ (Apache-1.3.33) が動くようになっているらしいが、 とりあえず、otacky.jp サーバ (-2.0.x) 向け HTML ファイルをチェックする事が目的なので、port の apache2 を使う事にする。
  1. Apache-1.3.33 を止める。 (Sharing メニューから、Personal Web Sharing のチェックを外す。)

  2. video stream 配信のための daemon が動いていたら、これを止める。(/etc/hostconf を編集して、
    QTSSWEBADMIN=-NO-
    QTSSRUNSERVER=-NO-
    とする。勿論、これらをインストールしてなければ、この必要はない。)

  3. apache2 をインストール。 (# poart install apache2)

  4. /opt/local/apache2/conf/httpd.conf を編集。
ここに、

Namazu

全文検索のための namazu をインストール。
  1. nkf, p5-nkf, kakasi をインストールしておく。
    # port install nkf p5-nkf kakasi

  2. namazu だけは Macport に無いようなので、最新版 (-2.0.17) を tar ball から make/make install した。
    $ tar xzvf namazu-2.0.17.tar.gz
    $ cd namazu-2.0.17
    $ cd File-MMagic
    $ perl Makefile.PL
    $ make
    $ sudo make install
    $ cd ..
    $ ./configure
    $ make
    $ sudo make install    

  3. できた src/.libs/namazu.cgi を "~/public_cgi-bin/" に、template/ 以下を "~/public_html/namazu_template" にコピーする。NMZ.head.ja だけは、ページの体裁を整えるため元の版を使用する。
ちょっとメモ書き

Python/Gnuplot

CGI は全て Python で書いている他、 このページに使っているような "Navigation Bar" を挿入したり、プロ野球の試合の結果を取ってきたりするスクリプトも Python で書いている。 まず、MacOSX にもとから付いてくる Python は古すぎて、codec の指定の仕方が合わない。別途インストールした MacPython が、
fukuda@quadra:~% ls -l /usr/local/bin/python
lrwxr-xr-x   1 root  wheel  68  4 21 22:45 /usr/local/bin/python@ -> \
    ../../../Library/Frameworks/Python.framework/Versions/2.5/bin/python
のようなリンクを張ってくれているので、むしろスクリプト側の変更は /usr/bin/env に関するものだけで OK。

Gnuplot は、MacPort で一発でインストールできるが、Linux ⇒ MacOS になり、同時に 4.0 ⇒ 4.2 となったせいか、なかなか元のスクリプトが動かない。 うーむ。


Emacs

20.3.b92 から始めて、もう 10 年近くも XEmacs を使ってきたが、なんだか時代はまた GNU Emacs に戻ってきたかのよう。 自由に font face が選択できるとか、multilingual への対応が進んでいる、画像まで表示できる、等々が XEmacs のウリだったのに、このところ Xft への対応や Unicode への対応がどうも滞っているような感じがしていた(勿論自分自身のスキルの問題もあるが)。 そうこうしているうちに、いつの間にか GNU Emacs がこれらの面でも追い付いてきて、 今や既に追い越しつつあるように見える。(かつて「私は XEmacs で生きてゆく」と書かれた山本(かず)さんも、とっくに Emacs 派、Mew は Emacs のみを正式サポートとしているみたいです。)

さて、Linux での環境を再現しようと、ターミナル上で (X)Emacs を使うべく四苦八苦する一方、X11 や Aqua の上の Emacs 達も試してみたが、いずれも「帯に短かし襷に長し」。 しかし、その間に出あった "Carbon Emacs (Package)" がそのじれったさを一挙に解決してくれた。

  1. Antialias font が、ASCII と Non-ASCII それぞれに指定できる。 しかも等幅 font でなくても可。

  2. Unicode の扱いがより完全になっている。

  3. Aqua (Carbon) との融合が綺麗。特に cut & paste が確実で嬉しい。

  4. Wanderlust, emacs-w3m 等の(自分には)必須パッケージが初めから付いてくる。

等々。特に朝日新聞の天声人語や社説を読めた時はかなりの感激だった。 それまでも Linux 上の XEmacs/Wanderlust/emacs-w3m で読んでいたけど、 これらのモジュールを別途インストールする必要が有ったし、 しかも最近、天声人語や社説が読めなくなったりしていたので。

しかし、悲しい事に Carbon Emacs Package (CEP) を使い始めてから一月程で emacs-w3m が同パッケージから外されてしまった。 また一方、このような追加のモジュールを CEP でインストール・維持する事は意外に面倒である事が解ってきた。 ターゲットのディレクトリや emacs のバイナリの置き場所が Linux 等とは相当違っていて、かつかなり深いところに有るので、モジュールの configure が面倒。その上 Carbon Emacs パッケージをアップデートすると、これらのモジュールは消されてしまう…。

それならば、という事で、自分で build してみたが、やってみると「案ずるより…」だった。 むしろ散在する Web 情報が古かったり間違っていて悩まされる事の方が多かった。 最初から GNU のサイトと README に直接当るべきだったかも。

Emacs-22.0.x のインストール

  1. ~/CVS というディレクトリを作って、そちらへ移動。

  2. CVS で Emacs-22.0 のソースを取ってくる
    cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs login
    cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs 

  3. ~/CVS/emacs へ移動してコンパイル・インストール
    $ configure --enable-carbon-app
    $ make bootstrap
    $ make
    # make install 
    これで Emacs-22.0.98 があっさりできてしまった。素晴しい。(cd ./mac とする、とどこかにあったけど、これをやるとコンパイルが途中で止まってしまう。)

  4. binary は /usr/local/bin に、lisp codes は /usr/local/share/emacs 以下に、また Emacs.app は /Applications に行く。 (これでモジュール群のコンパイル・インストールがとても見通しが良くなる。 以下のインストールはすべてこのビルドの構成が前提。

  5. .emacs を編集する。XEmacs の ~/.xemacs/init.el と殆んど共通であるが、若干わかり難い相違もある。
    • coding ごとのフォントの設定は、 create-fontset-from-fontset-spec を用いる。(luxi mono は、何故か "Customise Emacs" menu では設定できない。)
      (setq mac-allow-antialias t)
      (if window-system 
          (progn (require 'fontset)
      	   (create-fontset-from-fontset-spec
      	    (concat
      "-*-fixed-medium-r-normal-*-18-*-*-*-*-*-fontset-hiramin18,"
      "japanese-jisx0208: -apple-ヒラギノ明朝 pro w6\
          -medium-r-normal--18-*-*-*-m-*-jisx0208.1983-sjis,"
      ;;"ascii: -apple-luxi mono regular\ ;; 2007-05-05 変更
      ;;    -medium-r-normal--18-*-*-*-m-*-mac-centraleurroman" 
      "ascii: -apple-luxi mono\
          -medium-r-normal--18-*-*-*-m-*-iso10646-1" 
       ))
          (set-default-font "fontset-hiramin18")
          (setq default-frame-alist \
                    (append '((font . "fontset-hiramin18")))))
      )
      '\' で改行しているところは見易くするためのもので、本来は一行。 また、使える font spec のリストは (insert (prin1-to-string (x-list-fonts "*"))) を実行して得られる。
      2007-05-05 (Sat): ascii 用のフォント設定を上記のように変更する事で、Luxi Mono の baseline の問題は解決できた。

    • 行間隔、font-lock 等は "Customize Emacs" menu から調整する方が簡単で確実。(Options ⇒ Customize Emacs ⇒ Top-level Customization Groups で、Emacs のフレームがそのモードになる。 設定後 "Set for Current Session" ボタンを押すと、すぐにその設定が反映され、 "Save for Future Session" とすると、.emacs の最後尾に設定を反映した e-lisp code が付け加えられる。

    • python-mode は無くなっているので、auto-mode-alist 等に明示的に指定してあるところは削除するか、python に変更する。
      2007-04-28 (Sat): python-mode が復活したので、この必要は無くなった。

    • (ispell のための)aspell は別途インストールしてやる必要がある。
      # port ispell
      # port ispell-dic-en 
      (後の方(辞書)が無い時のエラーメッセージが、なんだか LOCALE の不具合を指摘しているみたいで misleading!)

追加パッケージ

ここで、追加パッケージをインストール。(Emacs がごく普通のディレクトリ構成になっているので、殆ど何も弄る必要がなく、 大抵 make; make install; で OK。 そうか、もともとこっちが「本家」なんだもんなと納得する。)

感想・課題

22.0.97 から 22.1.50 までを通じての感想は「とにかく素晴しい!」の一語。
Pros: Cons:
62/970,504
Taka Fukuda
Last modified: 2012-08-14 (Tue) 18:06:16 JST