【LLTVレポート】劇的ビフォーアフター、匠の技(前編)

あの機関車がFirefoxに! slジョークコマンドを大改修

2009/09/07

 2003年にスタートした軽量プログラミング言語(LL:Lightweight Language)をテーマにした“LLイベント”が、今年もまた、2009年8月29日に東京・中野で開催された。Perl、Ruby、Python、PHP、JavaScriptといったメジャーなものから、Lua、Gauche、Rといった比較的マイナーなものまで、LLに関する発表やパネルトークを行うイベントだ。内容は、まじめな討論や高度なプログラミングの議論、ジョークネタまでと幅広い。

 2005年には「LL Day and Night」と昼夜2部構成にしてみたり、2006年には「LL Ring」と題して会場にプロレスのリングを設置、プログラミング言語対決をしてみたりと、例年、趣向を凝らせたプログラムが見物だ。

 7回目となる今年は「LLTV」と題し、有名テレビ番組のパロディーで構成されていた。番組タイトルと内容は、以下の通り。

番組名 概要
朝から生テレビ LL最新事情など次々とテーマを変えて討論
渡る世間は雲ばかり クラウドサービス向けフレームワークの紹介と議論
LLフィーリングカップル 男女4人ずつの参加者がプログラミング観、仕事観などを質問して答え合う
プロトタイピング〜もの作りの流儀〜 プログラミングから少し離れてハードウェアスケッチングやデザインエンジニアリングのテーマで発表
大改善!!劇的ビフォーアフター 既存プログラムやシステムを匠の技で大幅改善
LLレッドカーペット いわゆるライトニングトーク

LLTVの番組表

 いずれも、テーマソングや効果音などは本物の番組と同じものを使っていたほか、幕間の番組表の表示やNHK風のアナログ時計の表示なども“テレビ放送風”という雰囲気を醸し出していた。プロジェクタ設定のトラブル時には、放送事故のときに表示される「そのままお待ちください」という画面まで大写しにされる手の込みようだ。

 この記事では、匠の技の数々が、会場からどよめきと笑いを誘った夕方の番組、「大改善!!劇的ビフォーアフター」を前編、中編後編の3つに分けてレポートしたい。

nhk.jpg 今年のLLイベントの基調は、テレビ番組。すべてのプログラムが何らかの有名番組のパロディーとなっていた
collage.jpg 討論会、まじめな発表のほか、IT漫談まで盛りだくさんの内容

RubyのfortuneコマンドをラップするDSL

 「大改善!!劇的ビフォーアフター」は、言わずと知れたテレビ朝日系列のヒット番組、「大改造!!劇的ビフォーアフター」(「改善」「改造」と1字違い)をパロディー化したオムニバス形式の発表だった。

 発表は計4つ。2つがネタ系、2つが“まじめにスゴイ”という内容だ。

before.jpg

 ネタ系の1つ目はRubyを使ってfortuneコマンドを“増築”するというテーマ。発表したのは、日本UNIXユーザ会、日本Rubyの会に所属する高野光弘氏。fortuneコマンドは、多くのUNIXに標準インストールされているコマンドで、実行すると警句や箴言のような短文を表示する。

takano.jpg 高野光弘氏

 オリジナル番組の劇的ビフォーアフターに倣(なら)うなら、コマンド自体を改修することになるが、高野氏はfortuneのラッパーをRubyを使ったDSL(Domain Specific Language)として実装。オリジナルのfortuneコマンドの出力をWebサービスを使って翻訳したり、Twitterへ投稿したりといったことを容易に行えることを示してみせた。DSL設計の典型的なやり方の1つとして、動作を制御する各種オプションをハッシュとして受け取る仕様を紹介。この仕組みで、対応言語(Webサービスへ受け渡す文字列)の追加や、実行時の言語指定が柔軟に行える様子をデモンストレーションしてみせた。例えば、オリジナルの英語テキストを日本語に翻訳、それをさらに韓国語に訳すといったフィルタのパイプ処理をコマンドライン上からの「Translator.filter(:english, japanese, :korean)」というように指定できる。

dsl01.jpg 翻訳言語の指定を切り替えることで言語間翻訳をフィルタのように使える

 英語→日本語→韓国語→日本語などと重訳すると、「税金の目(雪)があなたにいます」など、オリジナルがまったく想像できない哲学的(もしくは単にナンセンス)なテキストが出てくるなど、高野氏はジョークを交えて会場の笑いを取っていた。「働くと負け」というセンテンスを一気に多言語に翻訳して標準出力に表示したり、「ふざけるな」という言葉の翻訳が「なんと5カ国語で同じだと分かる」(高野氏)など、実例がユーモアに溢れていた。最後には、出力先制御のオプションに「:ヒウィッヒヒー」とマルチバイトのシンボルを使って、コマンドラインからfortune出力の翻訳をTwitterへ投稿するデモンストレーションを行い、Ruby 1.9の多言語化のありがたさを示してみるフリをしつつ、「単にヒウィッヒヒーと言いたかっただけでは」という疑念で会場を沸かせるなど、最初から最後までユーモアのある楽しい発表だった。

dsl02.jpg 「働くと負け」の多言語翻訳もコマンド一発
dsl03.jpg Ruby 1.9系ならシンボルにマルチバイトも利用できる

ブラウザから飛び出すSL機関車!

teramako.jpg teramako氏

 2つ目の匠の技は改築でも増築でもなく、むしろ、新興住宅街に古風でデコラティブな建物を作ってしまったというような楽しいハック。発表したのは、Vimperator使いのteramako氏。Vimperatorは、Firefoxのプラグインで、Vimのような操作でブラウザを扱える。例えば「:ls」とすれば、現在開いているタブの一覧が表示され、「j、k」で選択、タブの切り替えが行えるといった具合で、コマンド数は100を超えるという。

 teramako氏は、このVimperatorにslコマンドを実装した。

 slコマンドとは、UNIX系OSのジョークソフトだ。頻繁に入力する「ls」を「sl」と間違って入力することがある。たいていは舌打ちをしながら打ち直す。ところがslコマンドのインストールされた端末では、いきなりアスキーアートで描かれたD51機関車が画面をトロトロと走り出す。知らずにslを起動した人は驚くし、たとえ知っていたとしても、イラッとする。思考の流れが数秒ほど遮られて呆然と機関車を眺める間に、名状しがたい悔恨とslコマンド作者への怨嗟の念に駆られつつ、そのユーモアのセンスに心和むというソフトだ。

sl01.png slコマンドの実行例。lsと打つつもりで間違えると、いきなり機関車が端末を駆け抜けて驚く、というジョークソフト

 teramako氏は、この機関車アニメーションを、Firefox上のVimperatorで実現。最初はDOMを使ったHTMLで実現する方法やSVGを使う方法を考えつつも、それでは「おもしろくない」と、比較的新しい技術である「Canvas text」を採用。さらに銀河鉄道999のように空に駆け上る機関車や、ボディにロゴを描いた機関車などと表現はエスカレートしていき、ついにウィンドウ装飾なしのポップアップを行うFirefoxの機能を使って全画面表示する派手なデモンストレーションとなっていった。数十個のカラフルな流星が画面上を川のように流れる中、最新技術に不似合いなアスキーアートの機関車が走り抜けるという力一杯のジョークに会場から拍手がわき起こった。

sl-web.jpg とてもブラウザで実行しているとは思えない、派手なslコマンド(?)の実装。カラフルな流星とともに画面いっぱいに広がる機関車

 Vimperatorにはlsコマンドの上位互換ともいえる強力なbufferコマンドがあるため「そもそもVimperatorでlsコマンドを打とうというやつはいない」(teramako氏)という。このように、slコマンドをブラウザで実現するというテーマは徹底したジョークだが、teramako氏は発表の随所で技術詳細に触れていたのが興味深い。例えば、Canvasが意外に重たく、オブジェクト数が増えると処理落ちすることや、X上のFirefoxではCSSのアルファチャネルを使った半透明化にバグがあることなどにも触れていた。また、Canvasを使ったアニメーション作成方法の基本に触れつつ、「タイムライン制御が簡単になるライブラリやフレームワークがほしい」(teramako氏)と、Canvasを使ったアニメーションが、まだツール不足で難しいことも指摘していた。

 「LLTVレポート 劇的ビフォーアフター、匠の技(中編)」では、C言語に「本物のマクロ」(Scheme Artsの川合史朗氏)を入れることでlsのソースコードを半分に“リフォーム”したという発表を、後編では、サイロ化して連携利用が難しかった多数の業務システムを、bashスクリプトとフラットテキスト、多段パイプ処理の組み合わせというUNIX的アプローチで劇的にリフォームしてしまったUSP研究所の當仲寛哲氏の発表をレポートする。

(@IT 西村賢)

情報をお寄せください:

Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

古くて新しいMMM(マーケティングミックスモデリング)が今注目される理由
大手コスメブランドのEstee Lauder Companiesはブランドマーケティングとパフォーマンス...

Yahoo!広告 検索広告、生成AIがタイトルや説明文を提案してくれる機能を無料で提供
LINEヤフーは「Yahoo!広告 検索広告」において、ユーザーが誘導先サイトのURLを入力する...

生成AIが生み出す「バーチャル生活者」の声を聴くメリットとは?
博報堂は、独自の大規模生活者調査データベースに生成AI技術を組み合わせて作り出した「...