| @雑談

昨夜、吉野家の牛丼を食べた。狂牛病騒動があってからは怖くて吉野家とか松屋の牛丼はかたくなに食べないようにしていた。しかし昨夜は暑かったしむしゃくしゃしていたし、なにより牛丼270円キャンペーン中だったので大盛つゆ抜き玉子を頼んで食べてしまった。

アルバイト先の隣の隣に吉野家があったので、15分休憩のときに一杯、30分休憩のときにまた一杯と、学生時代は吉野家の牛丼を常食していた。常食というか、愛していた。吉野家と愛し合っていた。

俺は吉野家の牛丼はつゆ抜きが一番うまいと思っている。つゆだくはご飯がべちゃべちゃになってダメだ。何も考えずに「つゆだくで」とか言ってるやつを見かけると虫唾が走る。お前、つゆだくって言いたいだけちゃうんかと。

牛丼に生卵をつけないやつも信じられない。吉野家の牛丼は関東風の塩辛い醤油をたらした生卵を牛肉の上にかけることで始めて完成する。なのにつゆだくに七味やら紅ショウガやらを盛大にぶっかけて食べている連中を見かけると反吐が出る。ただのものを全部トッピングしてやろうという貧乏人根性が丸見えだ。

吉野家での最も甘美なコマンドはアフターだ。吉野家に通い詰めていた俺も、アフターコマンドを聞いたのはこれまで一度しかない。あるとき吉野家で並つゆ抜き玉子をかき込んでいると、長髪小太りのテレビ番組制作会社社員のような男が入ってきた。牛丼を頼む際、注文の最後に「アフター並」と男は言った。アフターってなんだよ、後からキャバ嬢でも来てアフターしちゃうのか? と俺は悩んだが、アフターとは食後に牛丼を持ち帰るということであった。なんと甘美なコマンドだろうと俺は思った。今にして思えばUNIXの哲学が反映されているような気がしないでもない。男はスーパープログラマーだったのかもしれない。

とまぁ、こんな感じで、土曜の夜に博多駅で感傷に浸りながら牛丼を食べた。こんなことができるのは嫁がいない一人の夜だけだ。今の俺はなんと不自由なんだろう。一筋の涙が頬を伝った。

というわけで6月に結婚しました。金ないのに結婚してやっていけるか心配です。ご祝儀寄越せとか言わないので福岡にお立ち寄りの際はもつ鍋でもおごってください。

| @技術/プログラミング

Jekyllを使いだしてから気がつくと一年経ってました。いろいろ便利に使えており気に入っております。

PygmentでコードをシンタックスハイライトしたりLSIで関連記事表示したりと結構手を入れてはいたんだけど、いわゆる世間の一般のブログにあるようなカテゴリ一覧表示機能と、カテゴリごとの記事アーカイブ機能がなくて、それを若干不便に思っておりました。

ググってみたところ、プログラマー向けなブログツールなだけあっていろんな方法が出てきました。以下そのまとめ。

カテゴリ一覧

JekyllのLiquid (テンプレート言語) には {{ "{{ sites.categories " }}}} みたいタグがあるんだけど、こいつが意図したとおりに動かない。普通のRuby使いの感覚からすると site.categories ってカテゴリを沢山持った配列になってそうな気がするんだけどこれが違う。

<ul>
{{ "{{ for category in sites.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

↑みたいな感じのコード書くと何も表示されない。 site.categoires はHashで、{ "カテゴリ名" => カテゴリ内の記事一覧 } みたいな構造になってる。LiquidでHashのキーを取りだす方法が分からず、どうにもこうにもいかなかったので他の人が作っているプラグインを利用することにした。

↑のファイルを JEKYLL_ROOT/_plugins にコピーする。(_plugins というディレクトリがなければ作る)。そんでテンプレートを変更する。↑のやつを↓みたいにする。

<ul>
{{ "{{ for category in sites.iterable.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

2行目のところが変更点です。これでカテゴリ一覧表示ができるようになる。

カテゴリごとの記事一覧

カテゴリごとの記事一覧を表示する方法だけど、こういうのを発見した。

ここの generate_categories.rb を使えばカテゴリ内の記事一覧を作成できる。こんな感じ。

これもさっきのと同じように、JEKYLL_ROOT/_plugins にファイルをコピーする。そんでLiquidテンプレートを書き換えるんだけど詳細はプラグイン内の記事をご確認くだしあ。

| @雑談

E-19PL was mine

6年前に買ったゴルフ2を手放した。

所有していたゴルフ2はE-19PLという型番で、GTIというラインだった。時の流れと重力と金のなさには抗えず、福岡に引っ越したことや経済面で維持が難しくなって、四度目の車検を前に手放した。査定はゼロ円だったので無料で買い取り業者に引き取ってもらった。

大学を出て実家に帰り、病気が治って一度目の退院をした後にばあちゃんに買ってもらったのがこのゴルフ2だった。その後病気が再発したため、G-CSF注射による骨痛や倦怠感に耐えながらゴルフを運転して通院したり、病気が治ってからは天気が良いとばあちゃんを連れて久住をドライブしたり、就職してからは毎日の通勤のほか九州各地の映画館に映画を見に行ったりと、20代の大半の時間はゴルフと一緒だった。

希少な3ドアのゴルフ2 GTIをあっけなく手放したことは後ろめたくもある。買い取り業者はスクラップにはしないと言っていたけど、こんな感じで手放すくらいなら誰か欲しい人を探して直接譲れば良かったと思う。

最後一年は洗車すら満足にしてあげられなかったが、本当に楽しかった。ありがとう。

| @技術/プログラミング

ポータルシットをLokkaに置き換えたくていろいろやってる。ポータルシットの過去記事をYAMLでエクスポートし、それをLokkaのDBに取り込む作業をやってる。TDD BootCampに参加したので、テストファーストしながらの作業。RSpecでテストコードを書き、ログが正しくインポートできることを確認する。テスト終了時 after(:all) フックで、取り込んだログを削除してる。コードはこんな感じ。ちなみにLokkaはDataMapperをORMに採用してるので以下はDataMapperでの話。

after(:all) do
  Category.all.destroy
  Entry.all.destroy
end

しかしこれでは AUTO INCREMENT の値がリセットされず、テストを繰り返す度に AUTO INCREMENT の値が増えていってうざかった。

DataMapperの機能で AUTO INCREMENT 値をリセットするのってないのかなと5秒くらい探してみたけど見つからなかったので、SQLを直接実行する方法を採用した。

ちなみにRDBMSに採用してるのはSQLite3。SQLiteでは UPDTE sqlite_sequence SET seq=0 WHERE name='テーブル名'; みたいなコードで AUTO INCREMENT 値を任意の値に設定できるみたい。

最終的な after(:all) フックはこんな感じ。

  after(:all) do
    Category.all.destroy
    Entry.all.destroy
    Entry.repository.adapter.execute('update sqlite_sequence set seq=0 where name="entries";')
  end

テスト実行後にはすべてのデータがデータベースから削除されて、AUTO INCREMENT の値もリセットされる。人畜無害なテストコード万歳。

| @WWW

先週、九州産業大学で行われたWordCamp Fukuoka 2011に行った。仕事でWordPress使う機会はないけど、福岡のWeb業界がどんな感じなのか知りたくて行ってみた。

WordPressは ゴンゴンの見た映画 で使ってて、前職場でもウェブサイトにブログを付けるときによく使った。また友達のホームページにも導入したことがある。以下そのときに書いた過去記事から引用だけど、

WordPress 2.7やMovable Type 4とかもそうですけど、ブログのなかで読者が触れる部分っていうのはここ数年のアップデートの中でもそうそう変化なくて、書き手が触れる部分、書き手にしか見えない部分がえらく進化してます。サーバーにインストールして使うタイプのブログツールでも、外部のフィードを取ってきて管理画面に他サイトの更新状況や人気のプラグインが表示されたりしますし、まるでレンタルブログサービスを利用しているかのようです。いかに書き手を書く気にさせるか、ってのが今日のブログツールの潮流なのかなーって感じました。これ大事なことですよね。

portal shit! : Twitterのフィードを加工して自サイト内にマイクロブログを作る

このように、WordPressは管理系の機能が非常に進化しているように思う。バージョン2.7から、自動アップグレード機能がついて、何も知らん人でもWordPress本体をサーバーにアップロードして、MySQLにデータベース一個つくればそれで使えるようになる。面倒くさいアップグレードとかもボタン一つで完了、さらに世界中のデザイナーがデザインしたWPテンプレートが使える。

WordCamp Fukuoka 2011は “Publish” がテーマだったけど、本当に誰もが簡単に “Publish” できるようになりつつあると思う。開発者とデザイナーとユーザーがそれぞれたくさんいて、非常に活気があると感じた。それゆえにユーザーの声が反映されて、使いやすい管理画面(ダッシュボード)になってきてるんじゃないだろうか。一人でブログを書いてるのに、一人じゃないのがWordPressの良いところだと思う。後ろにオープンソースコミュニティが付いている感じ。

一方、かつてはブログツールの代名詞的存在だったMovable Typeは、Six Apartの買収などのいざこざがあり、アメリカの親会社から日本法人に権利が売却されてしまっていた。

なんでMovable Typeがダメになったのか。WordPressと異なり、元々オープンソースじゃなかったのが原因だろう。2007年にオープンソース化されたけど、そのときにはWordPressとの勝負には決着がついていたように思う。そもそもMovable Typeは、個人がPublishするためのツールというより、企業のホームページを管理するためのツールを指向していた。公式サイト(ウェブサイト管理の新標準。Movable Type 5 - Six Apart)を見れば、右上の目立つ位置に「ご購入はこちら」のボタンが配置してあり、基本的に有償のソフトウェアであることが分かる。

WordCampの活況とMovableTypeの身売りがあまりにも対照的で、コミュニティのあるなしで、ブログプラットフォームの盛衰が左右されることを実感した。一人で黙々とブログやプログラムを書いていてはダメで、何かしらで外とつながってなきゃいけないのだと思う。

| @映画/ドラマ/テレビ

ソーシャル・ネットワーク

『ソーシャル・ネットワーク』、面白かったです。マーク・ザッカーバーグよかった。真冬なのに短パン、サンダルで登校し、アイディアが思いついたら早速寮に帰ってもくもくとプログラムを書く。ルームメイトとアイディアを出し合い、窓にアルゴリズム式を書き、ああでもないこうでもないと徹夜で開発を行う。 “wget” やら “Emacs” やらみたいな単語が飛び交い、見る人の創作意欲を刺激する良い映画でした。サンデープログラミング頑張ろうという気にさせられました。ウェブ好きっ子は見て損はないです。

| @映画/ドラマ/テレビ

ザ・ウォーカー

評価 : ★★★★☆

あらすじ

核戦争後の未来の話。世界は荒廃し、荒くれ者が容赦なく弱者から奪うまるで北斗の拳のよう。水が圧倒的に枯渇しているため、水のありかを知るものが権力を握る。

主人公のウォーカーは廃墟と化したアメリカ大陸をひたすら西へと歩いていた。水を独占するやくざカーネギーの支配する街に立ち寄ったウォーカーは、バーでカーネギーの部下と乱闘騒ぎを起こし、あっという間にやっつけてしまう。その強さと物怖じしない性格を気に入ったカーネギーはウォーカーを部下にしようとするが、ウォーカーはそれを拒む。しかしウォーカーがカーネギーが長年探し求めていた物を持っていることを知ると、カーネギーは力尽くでそれを手に入れようとする。

感想

見たい映画の時間に間に合わなくてしょうがなく見た映画でしたが、大変楽しかったです。

まず冒頭からして楽しい。いきなりナウシカ的な死の灰の様なものが降り積もる森で、ウォーカーが猫が突然変異したような変ちくりんな外観の動物を弓で狩る。そんでその後廃屋に入っていって寝床を確保し、孤独かあるいは空腹に耐えかねて自殺した前の住民の首つり死体から靴をはぎとって履く。このシーンのデンゼル・ワシントンの表情がいい。新しい靴の履き心地をえらく気に入り、とてもいい笑顔を見せる。夜になってたき火をたき、解体した猫を焼く。核戦争の猛火をくぐり抜けたケンタッキーのお手ふきで体をふき、猫の肉を食べ、タッチホイール式の第三世代iPodでやたら渋いソウルを聴く。なんかこれだけで涙出てきそうになる。

とにかくこの映画は最初の30分くらいが面白くて、その後も路上で助けを求める女がいたが実はそれは罠で、チェーンソーを持った危ない男達が出てきてバトルになる。デンゼル・ワシントンは新しい靴を得たことで喜んでいたときとはまったく別人となり、恐ろしく切れ味の鋭いナイフで盗賊の腕を切り落としたりする。超バイオレンス。僕はあんまり暴力物とかアクション映画は見ないのですが、たまに見ると楽しめますね。

全体的には極限状況での人間の行いと聖書がこの映画のテーマです。男達は隙あらば女をレイプしようとする存在として描かれている。カーネギーの部下達は旅行者の夫婦を見つけるやいきなり夫の方を殺して妻をレイプし、所持品を奪って妻も殺す。非常にすさんだ世界なわけです。その世界を正すのが聖書だという筋書き。しかし聖書のために戦争が起こったと考えた人類は片っ端から現存する聖書を燃やしてしまった。ウォーカーはその聖書の最後の一冊を持っていて、それを西へ届けようとするわけです。またカーネギーは聖書さえあれば人々の人心を掌握することができると信じており、字も読めない部下達に血眼になって聖書を探させる。

聖書に書かれている内容は人類愛とか平和的なものなはずなのに、ウォーカーは聖書を守るためとはいえ、襲いかかる盗賊達を無慈悲に殺していく。腕をナイフでちょんぎったりとかね。またカーネギーも世界を完全に制覇するために暴力を駆使して聖書を手に入れようとする。バカで欲望丸出しな民衆を聖書の力で大人しくさせようと考えている。どっちもどっちだなという面もなくはないかなと思いました。

蛇足だけど、金物屋の親父役で出てくるトム・ウェイツが良い味出してました。ケンタッキーフライドチキンのおしぼりと交換でバッテリーを充電してあげたりするの。シネコンで上映された派手なアクション映画だけど、細部に小細工が聞いていて映画好きの人にも楽しめる佳作だと思いました。