このようなポスターで参加者を募った
「お前ら、最高だ!」という大会でした
物々しい文章ではじめたが、そんなザ・冗談の大会が本当に行われてしまった。
C、Perl、PHP、Python、Ruby、JavaScript、Go、Java、合計8言語はそれぞれ5名でチームを組織すべくプログラマーを「CROSS 2015」会場で募集。
自分の愛する言語への思いを腕にこめ、エントリーした40人のプログラマーが全員本気で綱を引いた。
予想を越える参加希望者に参加できなかった方々もたくさんいたのだが、そういった方もみな綱をかこみ熱い声援を送ってくれた。
ユニフォームを引き渡すかたちでエントリーを受付。17時半の試合開始を前に13時には定員がいっぱいになる注目度の高さであった
受付には「なぜShellがないのか」、「COBOLに参加したいのだが」と今回出場言語に選出されなかった言語を想うプログラマーのみなさんも。
「C#で出たいのに」「C#の方はCにエントリーしてくださいよ」「え~っ、無理いうなよ~」「やっぱりそうですよね~」など、本大会の解説者で技術顧問的な役割を担ってくれた法林浩之さん(日本UNIXユーザ会幹事)と激励のようなたわむれをしてはみなさん笑顔であった
そう、この大会は世界一冗談が通じる職種であろうエンジニアの方々の胸をかりて行った大会といっていい。
(なお、綱引きというのは比喩表現で、実際はトークセッションをすると思っていた方も多くいたようで、「え、ほんとに綱引きなの?」と驚いていた。なんとなく、しめしめ、と思った)
実況の古賀(左)と、技術顧問であり解説の法林浩之さん(右)
プロの技術顧問がちゃんと頭をひねっております
冗談とはいえ、きちっとやるべきところはやったと自負したい大会でもある。
出場8言語は「CROSS 2015」がWEB系のエンジニアが集まるイベントであることなどをふまえあまたある言語のなかから厳しく選出。
対戦カードも抽選などではなく言語間のライバル関係などを重視し決定している。
すべて法林さんが頭をひねってくれた点なので「きちっとやるべきところはやった」のは正確にいうと私ではないのだが胸は張りたい。
エディタでトーナメントを書く法林さんのエンジニア魂
綱引き進行のプロも来た
さらに、選手であるプログラマーが普段しなれない運動で怪我をしないためのバックアップも万全であった。
運動会の企画運営サービス「
運動会屋」で日々企業の運動会を仕切っている綱引き進行のプロにきていただいたのだ。運動会屋代表の米司さんと中島さんである。主審・副審を担当してくれたばかりでなく、5対5の対戦にぴったりくる長さの綱までかついできてくれた。
合図が出るまで綱に触れない、試合は20秒1本勝負! 厳正に審判してくださった(左から、副審の中島さん、主審の米司さん)
万全の体勢に加え、エントリー選手たちがユニフォームである言語名入りTシャツを早々に着て会場を練り歩いてくれたこともあり、試合開始前から会場は試合開始に向けてじわじわとテンションを上げていたのだった。
そして17時すぎ。いよいよ本当に!綱がよこたえられた。会場もヒートアップ!
「うなれチューリング完全!第一回プログラム言語対抗綱引き、いよいよ試合開始です!」「うおおー!」「やったろうぜー!!」
では、ここから一気に死闘を振り返っていきたい。
各言語をかっこよく呼び込んでいくのでぜひモニタの向こうで読みながら歓声をお願いしますぞ。
一回戦、第一試合
WEBに特化、データベースやcookieのアクセスが容易に可能、HHVMの登場によりいよいよ新時代の幕が開ける…disられる時代は終わった! ハイパーテキスト プリプロセッサー、
PHP!
なめてっとおまえんとこのAPI実装すんぞ
対するは
磐石の需要、堅牢な実行環境。多重繰り返しからの脱出で勝負に挑む…帝王、
Java!
カプセル化したろうかこら
期せずしてどちらも男性4名、女性1名のプログラマーで構成されたPHPとJava。バランスの良い一戦が期待できる。
「どちらかというと『お仕事言語』というか、好きじゃないんだけどこれで書いてるって人が多い言語同士の対決。
選手層が厚い(ユーザが多い)言語同士とも言えますが、言語への愛情は薄めなので、どれぐらいやる気を出せるかが勝敗の分かれ目か」(以下、緑の文字は法林さん解説より)
いざ、勝負!
PHP! PHP!
Java! Java!
結果、勝者はJava!
破れたPHPの主将、三土さん(当サイトのライターでもある)いわく「掛け声が“PHP”なのがよくなかった。“CGI”ならもっといけたかもしれない」。
一方Javaの主将タマルさんは「PHPには絶対負けられない、勝ってよかった」。
言語への愛情度が不安視された両言語であったが、勝たねば今日もどこかでコードを書いているであろう同胞プログラマーに面目が立たない、といった強い責任感が伝わった一戦であった。
一回戦、第二試合
出場言語の中ではもっとも長い歴史を誇る。高い自由度と実行速度を追求、OSを支える言語。膨大なプログラマーが応援してるぞ、ゴッド・ファーザー、
C!
そっちの言語はCPUに同梱されてんのか、ああん?
対するは
強力な文字列処理、連想配列をサポート、多次元データ構造が利用可能。やりかたは一つじゃない、やりたいようにやらせてもらうぜ!
Perl!
モジュール拡張して奥歯がたがたいわしたろうか
「出場言語の中でもっとも歴史の長い2言語の、いわばベテラン対決です。ユーザの年齢層が高めなので、スタミナが持つのか?も見どころ」
両チームともにプログラマー歴10年を超えるベテランが多数エントリーした一戦、どうなる!
「掛け声は『Perl』だと引きにくいので『ピーエル』でいきましょう!」「おー!」
「……(小細工は…しない!)」
スタート! 「ぴー、える!」「ぴー! う、うわー」
勝者、C!
PHPが3拍子の掛け声(「PHP!、PHP!」)でうまくいかなかったのを見、「ピーエル!」と2拍子の掛け声を用意したPerlだったが、なんと無言で勢いよく攻めるCに完敗…!
静(的言語)が動(的言語)に打ち勝った瞬間であった。
一回戦、第三試合
Google社によって開発され、2009年に登場した新言語。チャンネルによるスレッド間通信機能を持つ新世代の並列処理言語…分身殺法、
Go!
型アサーションでのしたるわ
対するは
ブラウザの唯一神、標準で十二分なモジュールが添付されたバッテリ付属言語。実はJavaとはあんま関係ない。八面六臂、
JavaScript!
愛され言語に啖呵は必要無ぇ
「若年層プログラマーに人気の言語対決。Web系ではもっともユーザが多いJavaScriptに対し、最新鋭でユーザ拡大中のGoがどう挑むか」
解説どおり、会場でも人気度では抜群だった2言語(JavaScriptは全言語中最短の受付開始40分で定員達成)。
Goは最新鋭だけにプログラマーが集まらないのではと心配されたが「ちょうどこれから勉強するつもりだった」的な要員が次々とエントリーした。
人気の高さは綱引きの強さにも反映されるのか。
勝負!
「Go Go Go Go Go Go!!!!!!!!!!!!!」
「JS! JS!」
勝者は、Go。圧倒的な強さであった。
JavaScriptは「JS」が奇跡的に「オーエス(OSじゃなくて、綱引きするときの掛け声)」に似ていたこともあり綱の引きやすさは8言語でも一番かと思われたのだが、まさかの瞬殺。
「OK、まず一勝」 圧倒的強さにざわざわする会場!
「一瞬でしたわ~、もう笑うしかない」
これまで「コンパイル系が強いか!」「静的言語と動的言語の対戦です!」などとあおってきたが、このGoの強さには、綱引きって腕力なんだよな…と我に返らざるを得なかった。
プログラム言語対抗っつっても…やってることは…綱引きなんだよな……。
はっ! いかんいかん、覚めた目をもう一度つむって、一回戦、最後の試合です。
一回戦、第四試合
統計解析のデータ入出力可視化、モンティ・パイソンの「パイソン」です。言語会の委員長とも言われるが、ハッカー御用達って本当ですか。良い子だけでは生きていけない、
Python!
がたがた言ってっとコード行数減らすぞ
対するは
日本発、ストレスなくプログラミングを楽しむための言語仕様策定、変化を受け入れやってきた。強力な正規表現処理、マルチスレッド、クラス定義に例外処理。クールジャパン、
Ruby!
エンジョーイ、プログラミーング! イェー!
「オブジェクト指向スクリプト言語として、海外で作られ日本に入ってきたPythonと、日本で作られ世界に出て行ったRuby。立ち位置の近い両者のライバル対決です」
一回戦の中でもザ、ライバル対決といった一戦。共通点の多い両言語であるが、「主将の人柄がおだやか」という点も両者共通であった。勝敗は。
Python! Python!
エンジョーイ! Ruby!
モンティ、Python、モンティ、Python!
うわーっ!
1回戦最後の試合、勝者はPython!
この試合、観客が熱を持って応援するという意味では場内がもっともゆれた一戦のようにもおもわれた。
「Ruby! 勝ってくれー!」「いけーっ、Python!」会場がRuby派、Python派に二分され、声援が自然に飛ぶ会場が一体となった試合であった。
Python、やった!
Ruby~~! でも惜しかった。よくやった!
コンパイル型が強い! 2回戦から決勝まで
1回線の結果、準決勝に駒をすすめたのはJava、C、Go、Python。
スポーツ漫画あるあるに従い、2回戦以降はさらにコンパクトにダイジェストでお伝えしよう。
準決勝第一試合、これもライバル感の強いC対Java! 両チーム、選手が掛け声ではなく気持ちで合わせて綱を引いた静かな試合
初戦敗退のチームも思い思いの言語に声援を送る…「Java! まけんな~っ!」「C! いけー!」
結果、決勝進出はC。
しかしJava主将は「綱引きには負けましたが、言語としてのJavaは決してCには負けません!」と最後まで力強かった。
「こちら解説席です。Cは勝ったものの明らかに疲労してますね」「Cは1972年登場の言語。今年で43歳です。立派なおっさんですからね」
女性参加者として唯一2試合を戦った同じくJavaのズオンさんも「Javaは最高の言語です!」と負けてなお強気である。
そうだ、言語の優劣は綱引きぜんぜん関係ないぞ! と企画の根底をゆるがす空気が会場をつつんだ。Javaは今大会で一番愛を語ったチームなのではないか。
準決勝第二試合、Goは重心が低い!あと主将の腕が太い!
これにはさすがのPythonも持ち味を発揮できず…
うぉっし
決勝進出はGo。
負けたPythonにはすかさず「Python、がんばったよ、いい言語だよ!」と声援が飛んでいた。
ここで勝ったGoは第一試合で決勝進出を決めたCに比べ、明らかに疲労も少ない。これがGoogleの力なのか。C、大丈夫か。会場の興奮も最高潮である。
ほんとに今日はじめて組んだチームか? という安定感、Go
試合ごとにフォーメーションをかえて戦ってきたC
うおー! アセンブラー! コンパイラー!
ポリモーフィズム! スレッド間通信!
とはいえ、Cの善戦に胸を熱くしたのは私だけではあるまい。おつかれさまでした!
そして王者! なんだ、かっこいいなおい
メダルの授与後、メディアに囲まれるGo。この勝者っぷり!
ちなみに、一部メディアで優勝のGoはメンバー全員一度もGoを書いたことがないと報道されていたが、実際はメンバーのマイケルさんがちゃんと1年くらい書いているということでした! よかった!(?)
現場はもっとおもしろかったんだ!
以上が、2015年1月29日に行われた「第一回プログラム言語対抗綱引き」である。
しかしこれがすべてではないのだ。今回は筆者が当日現場で実況をしていたため、興奮もあいまって対戦前後に行った主将インタビューの内容などを十分に押さえておくことができなかった。
みなさんそれぞれに熱いコメントをいただいたことだけは覚えている。実況しながら胸の熱さで肉が焼けそうだった(だから夜は焼肉にした)。
本当に盛り上がりました。ありがとうございました。また、来年!(やんの?!)
おめでとう、Go! Tシャツにプリントしていちばんかっこわるそうな言語、なんて言ってごめん!(結局GoはTシャツもちゃんとかっこよく仕上がって、そういう意味でも圧勝)
参加者のみなさま
言語の名の下に初対面のプログラマが寄せ集まったチームでの奮闘、ありがとうございました。
集合写真の柄の悪さでは群を抜いていた、PHPチーム:三土さん(主将)、近藤さん、トダさん、ソラクボさん、カシワザキさん
言語への愛情の強さが際立ったJavaチーム:タマルさん(主将)、板橋さん、いじゅさん、ズオンさん、オオクワさん
体がつらいつらいといいながらまさか決勝まで駒を進めたCチーム: オガワさん(主将)、市角さん、高野さん、フクモトさん、ツボさん
ユーザ会のえらい人も応援してくれたPerlチーム:キジマさん(主将)、クリハラさん(副主将)、もりさん、佐々木さん、フジワラさん
選手集めは異常に早かったJavaScriptチーム:見川さん(主将)、川本さん、タケダさん、トヨダさん、タナベさん
文句なしの優勝、Goチーム:コバヤシさん(主将)、タジマさん、オトンさん、マイケルさん、オオヌマさん
開始は17:30と知りながらそわそわ17時ごろにはみんな集まってきたPythonチーム:タカハシさん(主将)、つちやさん、ニシザワさん、ババさん、エグサさん
enjoy programmingの精神を見事に体現していたRubyチーム:mz-kenさん、ミナミさん、フジサキさん、マツイさん、yoさん
エンジニアへの憧れが綱引きという形で爆発
今回の企画、ひごろ企画制作の仕事をしている私がぽろっと提案した際、一番最初に賛同してくれたのはデザイナーだった。
次いでやりましょう手伝います、と手を上げてくれたのは営業職である。実はスタッフにエンジニアは法林さんしかいなかったのだ。
みんな、エンジニアに心のどこかであこがれていて、彼らならきっと笑って楽しんでくれるだろうと確信していた。
で、やったら本当にあほみたいに盛り上がった。最高だ。こうなったら私も明日からコード書くしかない(Flash4ならちょっとかけるぞ。得意な関数はtellTarget)。
スタッフ:田畑智孝(制作)、橋本静香(ユニフォーム作成、現場進行)、石川大樹(撮影)、卓泰勝(撮影)