PyCon JP 2011を撮ってきました

どうも。Python界の草履取りです。
と言っても、自分は人の草履を懐に入れて温める、などという芸当は到底できませんね。えぇ。

それはさておき

早速ですが昨日、品川の産業技術大学院大学にて 8/27,28 で開催のPythonのカンファレンス、PyCon JP 2011について書いてみたいと思います。

公式サイトはこちら。

PyCon JP 2011

twitter 上ではハッシュタグ #pyconjp で皆さんツイートしてたので、searchしてみるとカンファレンスの雰囲気とかが分かるかも知れません。

事の次第

元々、企画の段階から携わっていたわけではありませんでした。

今年の1月に開催された Python mini JP 2011 で会場提供側ボランティアとして関わってはいたものの、普段の仕事の他にこういったイベントの企画として継続してMTGなどに参加できるほど器用に振る舞えないと思ったので、運営チームとして関わることは自粛していたのです。
とはいえ、運営チームの皆さんはいずれも普段 Sphinx-users.jp や Python mini Hack-a-thon 等でお世話になっている方々だったので、少なからず情報は耳に入ってはいました。

月を重ねる毎に少しずつ情報がオフィシャルになり、公式サイトで公開されていくのをワクワクしながら眺め、開催当日までのカウントダウンを目にする度に「どんなカンファレンスになるのだろう」とドキドキしながら "その日" を待っていました。
そういう意味で自分は、今回参加された皆さんとの方がこのカンファレンスに対する「距離感」というか「関わり方」という意味では近かったかも知れません。


"その日" を2週間後に控えた、とある金曜日。
仕事の終わりに「飲みたいな」といったニュアンスのツイートをしたところ twitter 上でいくつかリプライがあったので、渡りに舟とばかりに待ち合わせて飲みに行くことにしました。

例によって twitter でやり取りをしつつ、代々木で待ち合わせてから店に向かいました。その道すがら、同行する人の顔ぶれから「あぁ、PyConJPの打ち合わせだったのか。。。」と気づいたのです。その瞬間、自分は少々申し訳ない気分になりました。
というのも、あれだけ楽しみにしていた PyConJP のチケットを手に入れることが出来ていなかったのです。

これは自分が迂闊だったと言う以外に無いのですが、チケットを手に入れようと思ったときには既に販売を締め切っていて、購入することが出来なくなっていたのでした。


そんな感じで飲みの席につくなり、座長の @terapyon さんから「写真を取る人がいないから、頼めないか」という打診を頂いたのです。

唐突なフリだったので最初は「へ?」という感じだったのですが、せっかくのチャンスを見逃す手は無いと思って快諾させてもらいました。

本題

で、当日。

https://lh6.googleusercontent.com/-Fmoer5Oz_Dc/TlkFM--5hJI/AAAAAAAABss/V6qYTDImnQk/s400/DSC00431.JPG

写真は今回の PyConJP 2011 の公式プログラム、ステッカー、ピンバッジ、そしてアイコンをデザインした飴です。これらは参加者全員に配られました。

Expert Python Programming の著者、Tarekの基調講演で始まったカンファレンスは English セッションも含め3トラック、20近くのセッション が行われ、参加者はスタッフ・発表者を含めて200名を超え、大盛況と好評のうちに無事終了しました。
どのようなカンファレンスであったかは、いずれ運営チームからオフィシャルの開催レポートが公開されることになると思うているので、ここでは触れないでおきます。ぜひ、レポートを楽しみにしておいてください。
運営チームより、オフィシャルの開催レポートが公開されました。PyCon JP 2011 参加レポート[前編] :レポート|gihyo.jp … 技術評論社 をご覧下さい。

自分はといえば、どんな写真がとれるだろうかという悩みは抱えつつも、自分なりに楽しんで「画」を撮ることが出来たと思います。途中でカメラのバッテリーがあがり、家まで充電器を取りに戻ったりするハプニングもありましたが、朝の準備から最後のLTまで都合250枚弱、なんとか第一部の最後まで撮り切ることが出来たのでよかったと思います。第二部の様子を写真に収められなかったのは反省点として次回への課題にしておくことにしようと思います。

反省すべき点はいくつか残ったものの、非常に有意義な時間を文字通り「最高の仲間」と過ごすことができました。

エンジニアとして、プログラマとして、いちプログラミング言語のユーザーとして、まだまだヒヨッコの自分がコミュニティに還元できることは大した事ではないのかも知れませんが、少なからず貢献できたのかなーと勝手に思っています。

このような機会を提供してくださった運営チーム座長の @terapyon さんを始めスタッフの皆さん、各セッションで発表をして下さったスピーカーの皆さん、PyConJP に参加して下さった皆さん、そして遠くフランスから基調講演のために駆けつけてくれた Tarek と ビデオチャットで参加者の質疑に応じてくれた Guido にこの場を借りて感謝の意を表したいと思います。



2011.09.07 追記

運営チームのオフィシャル開催レポートが公開されました。

PyCon JP 2011 参加レポート[前編] :レポート|gihyo.jp … 技術評論社

sphinxjp.themes.bizstyle 0.1.2 リリース

python界の末席を今日も汚しながら生きております。ハイ。
仕事の上でもプライベートでも、最近何をやりたいのかが分からなくなってきました。

話の前提

いきなりなんの話?という感じかと思うので、手短に。

今年の3月にSphinx+翻訳Hack-a-thonに参加した際に、同じ社内の人もやはりその場に参加をしていて、Sphinxをどうにかして社内向けの仕様や手順のドキュメンテーションツールとして導入できないか、といった話をするきっかけがありました。

で、その話を流れで社内向けのSphinx用のテーマを作成してみようと思い立ち、実際に作ってみたものを PyPI – the Python Package Index · PyPI で公開をしたのが sphinxjp.themes.bizstyle です。

http://pypi.python.org/pypi/sphinxjp.themes.bizstyle/0.1.2

中身を見ると元々の組み込みで入っている sphinxdoc のテーマをベースにしてCSSでの配色や線種を変更しただけのチャチな作りだと分かるシロモノですが、使っていただいた方々からはそこそこ評価をして頂いていて、そのたびに恐縮するばかりです。

sphinxjp.themes.bizstyle 0.1.2 リリース

そんな sphinxjp.themes.bizstyle ですが、この度 0.1.2 をリリースさせて頂きました。

変更内容はというと、背景部分に表示されるハズの画像(淡いストライプを構成させるためのpng画像です)がパッケージに含まれていない、といういわゆるパッケージングのミスを補填するもので、何かデザインの変更を行ったわけではありません(汗

既に利用していて「背景真っ白だよー」という方は、是非最新版にアップデートして頂きたいと思います。

これから

特にupdateの計画があるわけではないのですが、自分が「こんなテーマがあるといいなー」と思ったものを作っていければいいかな、とぼんやり考えていたりします。
当然、このテーマの「ここ直して!」とか「ここって何とかならんの?」みたいなのがあればご意見を頂けると嬉しいです。

というわけで、今後とも宜しくお願い致します。


MacPorts 2.0がリリースされていた

世間では MacOSX 10.7 Lion(以下、Lion)のリリースと、新しいMacBookAirの発売に沸き立ってる昨今ですが、自分はというとそんな話はどこ吹く風といった様相でこのブログを書いていたりします。

金額的に買えないモノでもないですが、そうそう何度も買い直す必要があるわけでもないし、AppleStoreや家電量販店の店頭で現物を見てしまったら、またぞろ物欲の虫が疼いてしまいそうなので極力目を向けないようにしている、というのが本音ですが。。。

本題

さて、そんな流れの中でMacPortsのお話。

最初はいつものようにCLIでselfupdateをしたのです。

$ sudo port selfupdate

すると、MacPorts本体が1.9.2 → 2.0.0 へと Lion のリリースに合わせてメジャー・バージョンアップ(?)をしていました。
その時は、特に問題もなくすんなりとupdate自体は完了したのであまり気にしていなかったのですが、後になってWebのニュース等を見てみたところ、ソースからのコンパイルがユーザー権限で実行するように変更されたとか、ダウンロードしたアーカイブをデジタル署名でチェックするようになったとか、なんかそのような話でした。

自分の場合OSのバージョンは10.6のままだし、Xcodeのバージョンも上げてないので特に影響を受けるような要素はなかったのだですが、ちょっと気になってしまったのとインストール済みパッケージの中に不要なものがたくさん紛れたままになっていたので、「ここはいっちょ、入れ直すかー」ということでこちらのブログ(古くなったMacPortsを再インストール - Shin x blog)を参考にやってみることにしました。

1.古いMacPortsの削除
$ sudo port deactivate active
$ sudo port -f uninstall installed
$ sudo port clean all

最初の port deactivate active のところはインストールされていたパッケージの一部がどうもうまく deactivate 出来なかったらしく、エラーで終了してしまうので諦めて port -f uninstall installed を実行。

それから port clean all で全部キレイに掃除して完了です。

参考にしたサイトの方では、既存のパッケージで使っていた設定ファイルを残すため、/opt/local 以下をリネームして居ましたが、自分は特にそういう事情もなかったので、あっさり消してやることにしました。

$ sudo rm -rf /opt/local

ハイ、さようなら。
ちなみに port コマンドは /opt/local/bin/にインストールされているので、この時点で使えなくなります(当たり前ですね)。

2. 新しい MacPorts をインストール

The MacPorts Project -- Download & Installation

MacPortsのサイトからディスクイメージ(.dmg)ファイルをダウンロードします。
ディスクイメージの中にインストーラパッケージ(.pkg)ファイルがあるので finder からダブルクリックするとインストーラが起動します。

後は指示に従ってすすめるだけですね。

3. インストールが終わったら

念のため、というほどのことでもないですが、最新の状態にするために以下のコマンドを実行しておきます。

$ sudo port selfupdate
4. 日々のメンテナンス

MacPorts でインストール出来るソフトウェアはそれなりの頻度でアップデートが行われています。
特定の事情があって、バージョンを固定しなければならないということが無い限りは、こまめにupdateを行うのがいいでしょう。

$ sudo port selfupdate
$ sudo port upgrade outdated
5. ちょっとした話

複数バージョンのpythonコマンドラインで切り替える python_select というパッケージがあるのですが、
パッケージ名と同じ python_select コマンドが無くなっていますね。

切り替えを行う場合は port のサブコマンド select を使うようです。

$ sudo port select --list python
Available versions for python:
	none (active)
	python25-apple
	python26
	python26-apple
$ sudo port select --show python
The currently selected version for 'python' is 'none'.
$ sudo port select --set pyhton python26
Selecting 'python26' for 'python' succeeded. 'python26' is now active.

今回は過去の資産を使い回さずに、まっさらの状態にすることを前提にアップデートをしたので大きな問題などはありませんでしたが、これがそうでなかったとしたらどこかに落とし穴があったかもしれません。

MacPorts Guide には丁寧なドキュメンテーションがあるので、マニュアルを参考にアップデートを行うのがよいと思います。

今日、buildoutでハマったこと

はじめに

先日 エキスパートPythonプログラミング読書会 で教わってきた zc.buildout を使って簡単に Sphinx が実行できる環境を整えるための方法を模索しているわけなのですが、今日はその中で自分が躓いた(というかモノを知らなかっただけ)ところをメモ。

ざっくり環境について

やったこと

bootstrap.py を手に入れてinitまで

まず最初に、何は無くともこれを手に入れて環境を作るところから。

$ cd ~
$ mkdir buildout
$ cd buildout
$ wget "http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py"
$ ls 
buildout

$ python -V
Python 2.4.3
$ python bootstrap.py -d init
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.14.tar.gz
Extracting in /tmp/tmpuJpIrj
Now working in /tmp/tmpuJpIrj/distribute-0.6.14
Building a Distribute egg in /tmp/tmpTjLePX
/tmp/tmpTjLePX/distribute-0.6.14-py2.4.egg
install_dir /tmp/tmpTjLePX
      :
      :
Generated script '/home/USER/buildout/bin/buildout'.
buildout.cfg を書く

Sphinxの実行環境をつくる (http://www.freia.jp/taka/docs/buildout/sphinx.html) にある記述を元にして、以下のように記述。

[buildout]
parts = app docutils
versions = versions

extensions = buildout.dumppickedversions
dump-picked-versions-file = versions.cfg

extends = versions.cfg

[app]
recipe = z3c.recipe.scripts
eggs = 
        sphinx

interpreter = sphinx-py

[docutils]
recipe = zc.recipe.egg:scripts
eggs = 
        docutils

[versions]
#lxml = 2.2.8
buildout実行

設定が書き終わったらbuildoutを実行。

$ touch versions.cfg   #=> ファイルがないと怒られるので、空のファイルを作っておく。
$ bin/buildout
Getting distribution for 'buildout.dumppickedversions'.
install_dir /home/USER/buildout/eggs/tmpSu3nvA
Got buildout.dumppickedversions 0.4.
Getting distribution for 'z3c.recipe.scripts'.
install_dir /home/USER/buildout/eggs/tmpCqwZdF
Got z3c.recipe.scripts 1.0.1.
Getting distribution for 'zc.recipe.egg>=1.3.0'.
install_dir /home/USER/buildout/eggs/tmp20ZVNr
Got zc.recipe.egg 1.3.2.
Installing app.
Getting distribution for 'sphinx'.
Got Sphinx 1.0.7.
Getting distribution for 'Jinja2>=2.2'.
install_dir /home/USER/buildout/eggs/tmpfO0ShP
      :
      :
docutils.parsers.rst.directives.misc: module references __file__
docutils.writers.html4css1.__init__: module references __file__
docutils.writers.pep_html.__init__: module references __file__
docutils.writers.s5_html.__init__: module references __file__
docutils.writers.latex2e.__init__: module references __file__
docutils.writers.newlatex2e.__init__: module references __file__
docutils.writers.odf_odt.__init__: module references __file__
Got docutils 0.7.
*********************************************
Overwriting versions.cfg
*********************************************

$ cat versions.cfg
[versions]
Jinja2 = 2.5.5
Pygments = 1.4
Sphinx = 1.0.7
distribute = 0.6.14
docutils = 0.7
z3c.recipe.scripts = 1.0.1
zc.buildout = 1.5.2
zc.recipe.egg = 1.3.2

これで環境ができました。ついでに、出来上がったbinディレクトリをPATHに追加します。

$ export PATH=~/buildout/bin:$PATH
$ echo $PATH
/home/skumagai/buildout/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
ところが。。。
$ sphinx-quickstart
Traceback (most recent call last):
  File "/home/skumagai/buildout/bin/sphinx-quickstart", line 17, in ?
    import sphinx.quickstart
  File "/home/skumagai/buildout/eggs/Sphinx-1.0.7-py2.4.egg/sphinx/quickstart.py", line 18, in ?
    from sphinx.util.osutil import make_filename
  File "/home/skumagai/buildout/eggs/Sphinx-1.0.7-py2.4.egg/sphinx/util/__init__.py", line 22, in ?
    import docutils
ImportError: No module named docutils

エラーメッセージを見るとdocutilsが読めていない様子。「あれ?」と思って確認。

$ sphinx-py
Python 2.4.3 (#1, Sep 17 2008, 16:04:01)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-41)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sys
>>> from pprint import pprint
>>> pprint(sys.path)
['',
 '/home/skumagai/buildout/parts/app',
 '/usr/lib/python24.zip',
 '/usr/lib/python2.4',
 '/usr/lib/python2.4/plat-linux2',
 '/usr/lib/python2.4/lib-tk',
 '/usr/lib/python2.4/lib-dynload',
 '/home/skumagai/buildout/eggs/Sphinx-1.0.7-py2.4.egg',
 '/home/skumagai/buildout/eggs/Jinja2-2.5.5-py2.4.egg',
 '/home/skumagai/buildout/eggs/Pygments-1.4-py2.4.egg',
 '/usr/lib/python2.4/site-packages',
 '/usr/lib/python2.4/site-packages/Numeric',
 '/usr/lib/python2.4/site-packages/gtk-2.0']
>>>

と、なんとdocutilsのeggが入っていない、という事態。
Ububtu10.10, Python2.6.6 の環境で同じbuildout.cfg使ったときは何の問題もなかったんだけどなー。と思いつつ、しみずかわ先生のbuildoutで開発0: zc.buildout で環境を作る — 清水川Web を見ながらbuildout.cfgを書き換える。

[buildout]
parts = app
versions = versions

extensions = buildout.dumppickedversions
dump-picked-versions-file = versions.cfg

extends = versions.cfg

[app]
recipe = z3c.recipe.scripts
eggs = 
        docutils
        sphinx

interpreter = sphinx-py

[versions]
#lxml = 2.2.8

そしてリトライ。

$ bin/buildout
Uninstalling docutils.
Uninstalling app.
Installing app.
Generated script '/home/skumagai/buildout/bin/sphinx-build'.
Generated script '/home/skumagai/buildout/bin/sphinx-quickstart'.
Generated script '/home/skumagai/buildout/bin/sphinx-autogen'.
Generated interpreter '/home/skumagai/buildout/bin/sphinx-py'.
*********************************************
Overwriting versions.cfg
*********************************************
$
$ sphinx-quickstart
Welcome to the Sphinx 1.0.7 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]:

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/N) [n]: y

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]:
      :
      :
Finished: An initial directory structure has been created.

You should now populate your master file ./source/index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

$

とゆことで、めでたくSphinxでプロジェクトが作成できましたとさ。

残った疑問

buildout.cfg の書き方の違いが意味するものは何?
というか、きっと単純にbuildoutのドキュメントに書いてありそうな話ではある。ドキュメント読めってことなんでしょうなァ。。。

Sphinx + 翻訳 Hack-a-thon 2011.02 に行ってきました

イントロ

行ってきました。はい。

今回が初参加というわけではないので、いささか新鮮味に欠ける内容かも知れないなぁと思いつつ本日の記録を残しておこうと思います。

Sphinx + 翻訳 Hack-a-thon 2011.02 : ATND

この勉強会(通称: 翻訳ハッカソン)は、ソフトウェアのドキュメンテーションの翻訳に興味のある方を対象に、Sphinx-users.jpが主催しているイベントです。

参加対象者は


というあたりです。

あと、参加に必要なもの、ですがATNDにも記載されている通り、

  • PC
  • 翻訳又はSphinxで知りたいことのネタ


です。必須項目はこれだけ。

本題

で、今日の翻訳ハッカソンには上述のATNDで参加表明をして下さった方々が、総勢25名!
過去最多!!(ですよね?)しかも、ドタキャンすることなく25名全員集まって下さいました!!!

今回はオラクルさんに会場提供をして頂き、オラクル青山センターにて開催したこともあって、過去の開催実績の2倍〜3倍強の人数設定をした訳ですが、ドタキャンすることなく25名全員集まって下さいました(大事なことなので二回言いました)。

今回の参加者の中で特徴的だった、というか「へ〜」って思ったのが PHP ユーザーの中にも Sphinx がドキュメントツールとして受け入れられつつあるということです。参加者の中に Symphony や CakePHP のドキュメントが近々 Sphinx ベースに変わるらしいとのことでこの会に参加したという方が数名いらっしゃいました。

さて、実際にはどうだったかといいますと、全体の流れとしてはこんな感じでした。

10:30  開場
11:00  自己紹介〜ハカソン午前の部 開始
12:30  昼食
14:30  ハカソン午後の部 開始
16:15  唐突に発表タイムへ突入
19:00  終了

当初の予定と大差がないですね。はい。
非常に協力的な皆様のおかげで大きな遅れもなく終了できました。ありがとうございます。

夕方の発表タイムは shimizukawa 先生の sphinxjp.themes *1関連のデモから始まり、勉強会初参加にして初発表! takuan_osho さんの Ren'Py というノベルゲーム作成ライブラリ*2の紹介で締める、という発見に満ちた内容でした。

いや、ほんとに。
こないだの PyCon mini JP の時もそうでしたが、これだけいろいろ出てくると Python で出来ないこと無いんじゃないかって思うくらいネタが溢れてる。。。
発表してくださった皆さん、お疲れさまでした&ありがとうございました。

また、Symphonyに関しては関係者の方から宣伝用に、とステッカーを頂きました。宣材として利用させて頂きます。ありがとうございました!

最後になりましたが、会場提供をしてくださった日本オラクル様に厚く御礼申し上げます。そして開場調整をしてくれた ymotompoo 、ありがとうございました & お疲れさまでした。

アウトロ

自分の立ち上げ当初からの参加ではなかったのですが、ここ半年くらい関わって来ているのでだいぶ顔なじみな方々も増え、どちらかというと「いつものメンツ」と言って頂けるようになってきました。
相変わらずLTで発表ができるとか、PyPIに上げるとかそういう成果が出せていないので若干焦りを感じつつの参加ではありますが、どちらかというと翻訳作業そのものをメインに参加しているので地道に翻訳に取り組ませて頂いてます。

今日の成果は Packt Publishing から発刊されている『Solr1.4 Enterprise Search Server』の第1章の翻訳をちょろちょろと進めてました。書籍からの翻訳なので著作権の都合上、翻訳した成果を公開というコトが出来ません。ゴメンナサイ。

先日書いた、2011年の目標とか - use No::Name;ってのもあるので、牛歩でも何でもまずはしっかり足場を固めながら進もうかと。

*1:主に https://bitbucket.org/shimizukawa/sphinxjp.themes.s6 とか。

*2: http://www.renpy.org/ 組み込みのチュートリアルからしてノベルゲームという。。。w

2011年の目標とか

何を今更な感じになるのだけど、ちょうど今日付けで異動があってちょうど区切りがいいということもあったので、「目標を立てる」というところから今年は入りたいと思います。

Rubyを覚える
異動で仕事が変わって、メインで使う言語がRubyになったのでコレを機にきちんと覚えるのが目標です。WEBサービス一つくらい作れる程度まではやりたいかな。
GAEでサービスを作る
せっかくアカウント作ったのにそれっきりで放置した状態になっているので、Pythonistaの皆様と懇意にさせて頂いている手前、やっぱりPythonでなんか作りたい。そこはJavaじゃなくて、はい。Javaでもできるならやってみたいですけどね。しばらく触ってないので勘を取り戻すのに時間がかかりそうで、それだったら今使っている言語でまずはトライしたいな、と。
OSSのドキュメント翻訳をやって公開する
いろいろとあるとは思うんですが、これまでやっていた翻訳は書籍ばかりでさすがに勝手に公開とか出来なくて、手っ取り早く自分のやったことを人に見てもらうには少々敷居が高い感じでした。なので、OSSのドキュメントとかで勝手に翻訳してもOKなヤツを見つけて訳してしまおうと。
Sphinxの拡張を作る
翻訳のツールとして大変便利に使わせてもらっているSphinxですが、使うばっかりじゃなくてツールそのものに対しての貢献をしたいな、と。
Python Hack-a-thonで何か作る
今まで、ちょっと敷居の高さを感じて飛び込むのを躊躇っていたんですが、まぁ、まずはやってみようぜ!的なノリも大事だろう、ということで。ここはSphinxの拡張を作る、という部分とも重なるんで別立てにするのはナニかなとも思ったんですが、作りたいものがSphinx拡張になるとは限らないので、別にしておきます。
LTでびう
これまでいろいろなところで周囲の皆様の華麗なLTを観させてもらったんですが、おこがましくも「自分もやってみたいな」と思うようになったのでした。すっかり感化されてます。でも、人前で話すためのいろいろな事を身を持って体験するってとても大事なことだと思うので、まずは「やる」って宣言するところから。こうやって発信すると、どこかで拾ってもらえるんでしょうかね。。


と、そんな感じで今年も走って行きたいと思います。

Omakeをportsでインストールしてみる

先日 Sphinx-User.jp で小耳にはさんだ Omake が気になっていたので、入れてみようということに。
Sphinx で reStructuredText から HTML を生成する際に、毎度 "make html" とキーを叩くのが億劫になっていたんで、「渡りに舟」といった感じ。

前提条件

毎度の事ですが。

OSバージョン    : MacOSX 10.6.5 Snow Leopard
パッケージツール: MacPorts 1.9.2

MacPorts

Omake は MacPorts でパッケージが公開されているので、それを利用する。
が、その前にまずコレを。

% sudo port selfupdate
% sudo port sync
% sudo port upgrade outdated

MacPorts 自身を最新にしてあげる。重要。

次に本番。コマンド一発。

% sudo port install omake

で、ここで失敗するとですよ。

% sudo port install omake 
Error: Target org.macports.build returned: shell command failed (see log for details)
Log for omake is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_omake/main.log
Error: Status 1 encountered during processing.
To report a bug, see http://guide.macports.org/#project.tickets

えー。困るよ。。。
と、早速Google先生に質問してみたらこれを発見。*1

https://trac.macports.org/ticket/27220

これを見る限り、omake-0.9.8.5 の Portパッケージに含まれている Omakefile に定義されているFLAGの値がよろしくないらしい。
なので、該当するファイルを直接手で編集。

% vi /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_omake/work/omake-0.9.8.5/OMakefile
57   #
58   # OCaml options
59   #
60 - OCAMLFLAGS += -w Ae$(if $(OCAML_ACCEPTS_Z_WARNING), z)
   + OCAMLFLAGS += -w Aer-29$(if $(OCAML_ACCEPTS_Z_WARNING), z)
61   if $(THREAD_ENABLED)
62       OCAMLFLAGS += -thread
63       export

で、この状態でそのまま以下のとおりに実行。

% sudo port install omake
      • > Computing dependencies for omake
      • > Building omake
      • > Staging omake into destroot
      • > Installing omake @0.9.8.5-3_1
      • > Activating omake @0.9.8.5-3_1
      • > Cleaning omake

入ったー!!w やったー。

ちなみに、↑のタイミングで間違っても

% sudo port clean --work omake

とかしちゃ、ダメ、ぜったい。
*2

とゆことで、無事インストール完了しました。

*1:実際には日本語のBlogから探してみたものの、さすがにちと古かったので諦める、、、という経緯をたどったので小一時間くらい無駄に時間使ってた。。。orz

*2:実際やってしまっても手戻りが発生するってだけの話だけなんだけどね。せっかく編集した Omakefile もろともworkを消してしまうので、やるせなくなってしまう。