連続駅五七五を調べた

「信濃町 – 四ツ谷 – 市ヶ谷 – 飯田橋」で五七五になるんだそうです。これ、総武線の連続する駅なんですね。よく見つけたものだと感動しました。

soubusen

調べてみると「#連続駅五七五七七」という、短歌になってるやつについてのまとめがありました。でも単なる五七五については特にまとまってないようでした。

そこで、五七五について他にどんなのがあるか、プログラムを書いて調べてみました。

結果

全国で59件見つかりました。
たとえば、東京は以下の8つが見つかりました。

JR中央線(快速)
飯田橋 – 市ヶ谷 – 四ツ谷 – 信濃町

JR中央・総武線
錦糸町 – 亀戸 – 平井 – 新小岩
新小岩 – 小岩 – 市川 – 本八幡

東武伊勢崎線
鐘ヶ淵 – 堀切 – 牛田 – 北千住

東京メトロ千代田線
根津 – 湯島 – 新御茶ノ水 – 大手町

東京メトロ南北線
飯田橋 – 市ヶ谷 – 四ツ谷 – 永田町

都電荒川線
栄町 – 王子駅前 – 飛鳥山

総武線だけで2つもあるのはすごいですね。

他に気になったもの

奈良の大和路線というのがいいです。

大和路線
郡山 – 大和小泉 – 法隆寺

法隆寺、で終わられたらもう俳句そのものです。鐘が聞こえてきそうです。
富山もいいですね。

富山地鉄本線
西魚津 – 電鉄魚津 – 新魚津

どんだけ魚津なのかと。

使用したデータ

駅と路線データについては「駅データ.jp」のデータを利用しました。ただし無料で利用できるデータには駅名の読みが入っていないので、その点については「日本全国駅名一覧」のデータを利用しました。

探索のプログラムは Ruby で作りました。大雑把にいうと、路線図の最初の駅から順に575の最初の5を探し、見つかれば次の7を、失敗すれば次の駅に進んで最初の5から、みたいに探しました。

すべての結果

最後に、すべての結果の一覧です。

JR函館本線(函館~長万部)
尾白内 – 東森 – 森 – 桂川

JR函館本線(小樽~旭川)
納内 – 伊納 – 近文 – 旭川

JR富良野線
北美瑛 – 美瑛 – 美馬牛 – 上富良野

JR東北本線(黒磯~利府・盛岡)
五百川 – 本宮 – 杉田 – 二本松
二本松 – 安達 – 松川 – 金谷川

ドラゴンレール大船渡線
脇ノ沢 – 小友 – 細浦 – 下船渡

JR北上線
柳原 – 江釣子 – 藤根 – 立川目

JR田沢湖線
鑓見内 – 羽後四ツ屋 – 北大曲 – 大曲

JR常磐線(いわき~仙台)
久ノ浜 – 末続 – 広野 – 木戸 – 竜田

JR中央線(快速)
飯田橋 – 市ヶ谷 – 四ツ谷 – 信濃町

JR中央・総武線
錦糸町 – 亀戸 – 平井 – 新小岩
新小岩 – 小岩 – 市川 – 本八幡

宇都宮線
野木 – 間々田 – 小山 – 小金井 – 自治医大

JR内房線
蘇我 – 浜野 – 八幡宿 – 五井 – 姉ヶ崎

JR身延線
波高島 – 下部温泉 – 甲斐常葉
甲斐常葉 – 市ノ瀬 – 久那土 – 甲斐岩間

JR飯山線
上境 – 上桑名川 – 桑名川

JR飯田線(豊橋~天竜峡)
上市場 – 浦川 – 早瀬 – 下川合

JR高山本線
美濃太田 – 古井 – 中川辺 – 下麻生

JR東海道本線(浜松~岐阜)
愛知御津 – 三河大塚 – 三河三谷

JR紀勢本線
大泊 – 熊野市 – 有井 – 神志山

大和路線
郡山 – 大和小泉 – 法隆寺

JR山陰本線(園部~豊岡)
上夜久野 – 梁瀬 – 和田山 – 養父 – 八鹿

奈良線
東福寺 – 稲荷 – JR藤森 – 桃山 – 六地蔵

きのくに線
冷水浦 – 海南 – 黒江 – 紀三井寺

JR山陰本線(米子~益田)
波子 – 久代 – 下府 – 浜田 – 西浜田

JR福塩線
道上 – 万能倉 – 駅家 – 近田 – 戸手

よしの川ブルーライン
鮎喰 – 府中 – 石井 – 下浦 – 牛島

JR予讃・内子線
伊予横田 – 鳥ノ木 – 伊予市 – 向井原

JR鹿児島本線(下関・門司港~博多)
陣原 – 折尾 – 水巻 – 遠賀川

東武東上線
朝霞台 – 志木 – 柳瀬川 – みずほ台

東武伊勢崎線
鐘ヶ淵 – 堀切 – 牛田 – 北千住

東武野田線
新柏 – 増尾 – 逆井 – 高柳

京急久里浜線
津久井浜 – 三浦海岸 – 三崎口

東京メトロ千代田線
根津 – 湯島 – 新御茶ノ水 – 大手町

東京メトロ南北線
飯田橋 – 市ヶ谷 – 四ツ谷 – 永田町

名鉄名古屋本線
新清洲 – 大里 – 奥田 – 国府宮

名鉄犬山線
石仏 – 布袋 – 江南 – 柏森

南海高野線
帝塚山 – 住吉東 – 沢ノ町
紀伊清水 – 学文路 – 九度山 – 高野下

京阪本線
丹波橋 – 伏見桃山 – 中書島

京阪石山坂本線
浜大津 – 三井寺 – 別所 – 皇子山

阪急宝塚本線
売布神社 – 清荒神 – 宝塚

阪急京都本線
高槻市 – 富田 – 総持寺 – 茨木市

阪神本線
甲子園 – 久寿川 – 今津 – 西宮

フラワー長井線
白兎 – 蚕桑 – 鮎貝 – 四季の郷

都電荒川線
栄町 – 王子駅前 – 飛鳥山

新京成線
高根木戸 – 高根公団 – 滝不動

千葉都市モノレール2号線
小倉台 – 千城台北 – 千城台

北しなの線
北長野 – 三才 – 豊野 – 牟礼 – 古間

富山地鉄本線
西魚津 – 電鉄魚津 – 新魚津

豊橋鉄道渥美線
大清水 – 老津 – 杉山 – やぐま台

三岐鉄道三岐線
伊勢治田 – 東藤原 – 西野尻

叡山電鉄鞍馬線
二軒茶屋 – 市原 – 二ノ瀬 – 貴船口

水間鉄道水間線
近義の里 – 石才 – 清児 – 名越 – 森

西九州線(有田~伊万里)
西有田 – 大木 – 山谷 – 夫婦石

西九州線(伊万里~佐世保)
佐々 – 小浦 – 真申 – 棚方 – 相浦

肥薩おれんじ鉄道線
肥後高田 – 日奈久温泉 – 肥後二見

知ってる路線だと、おおっと思いますね。

訂正

当初書いていた以下のものは誤りでしたので削除しました。

JR成田エクスプレス
池袋 – 新宿 – 高尾 – 八王子

JR中央線(快速)
飯田橋 – 市ヶ谷 – 四ツ谷 – 信濃町

福北ゆたか線
桂川 – 筑前大分 – 九郎原(けいせん を かつらがわ と認識しちゃってました)

単純な一直線じゃない路線の場合がおかしかったみたいです。

街角の鑑賞ガイド「街角図鑑」

「街角図鑑」という本を書きました。

26052462263_14c107f416_o

街を歩いているとよく見かける、なんでもないものを集めた本です。

パイロンとか、車止めとか、マンホールとか、そういうもの。ありふれているからこそ、かえってちゃんと見たことがない。でも集めてみると、じつはいろんな種類があって、それぞれ全部違うんだという驚きがあります。

26052454463_cef4b97d1a_o

たとえばこれ、パイロンです。三角コーンとか、カラーコーンとか呼ばれています。カラーコーンというのはパイロンの商品名の1つで、それ以外に「HKスコッチコーン」とか「サワーコーン」みたいな少しづつ違うパイロンがいっぱいあるんです。すごいですよね。

これからは、街でこういうのを見かけても「あ、パイロンだ」じゃなくて、「レボリューションコーン700だ」と思うことができるんです。便利!

著者がまた豪華なのです。

・石川初さん:「仮設と常設」「重力が支配する」「指標としての路上園芸」「舗装のなかま」「縁石・排水溝のなかま」
・磯部祥行さん:「勝手ミラー」
・伊藤健史さん:「のぼりベース入門」、「擬木のなかま」
・内海慶一さん:「装飾テント」
・大山顕さん:「雰囲気五線譜」
・柏崎哲生さん:「井戸ポンプのなかま」
・木村絵里子さん:「送水口鑑賞ノート」
・小金井美和子さん:「マンホール蓋のなかま」「境界標のなかま」
・佐々木あやこさん:「送水口のなかま」
・八馬智さん:『街角にあふれる「お店では買えないモノ」のデザイン』
・村田彩子さん:「路上園芸」

タイトルだけでも楽しそうでしょう。読むとじっさい楽しいですよ!

この本の「はじめに」の章は、著者の一人でもある石川初さんに捧げられています。まさに「はじめに」です。この本を作るきっかけの1つが、石川さんの早稲田大学の授業での課題「新しい鑑賞ガイド」だからです。

街にありふれているけれども、ふだん目を向けられることがないものを鑑賞するためのガイドを作りなさい、という課題。

SAM_8574

SAM_8681

たとえばこれは、学生の方が提出した「ガイドポストさん」です。素敵ですよね。こんな本が作りたいなと思ったのです。

そしてこの本の「フィールドワークにでかけよう」という章は、同じく著者の大山顕さんと内海慶一さんに捧げられています。見ていたはずなのに見えていなかったものが街にはいっぱいあるということを、お二人に教わりました。

この本は多くの方の協力によって出来ました。きっかけとなる「街角図鑑」という記事を書く場所を頂いたニフティのデイリーポータルZ、それから執筆いただいた著者の方々、編集の磯部祥行さん、原稿をレビューして頂いた方、多くの方に感謝します。写真撮影や校正などを手伝ってくれた妻にも。

今まで同じに見えていたものが違って見える。見えなかったものが見えるようになる。そういう本になるといいなあと思います。

「街角図鑑」(実業之日本社)
http://www.amazon.co.jp/dp/440811183X

 

 

 

 

オセロをひっくり返して生き物の模様をつくる

small-moyou

「所さんの目がテン!」の「生き物(模様)の科学」の回で、1万枚のオセロを2つのルールでひっくり返していくと生き物の模様みたいになる、という実験をやっていたようです。

ようです、というのは後で知ったからです。すごく面白そうなのに見られなかったのが悔しいので、番組のホームページの記述をもとに、同じ手順をシミュレートしました。オセロなんですがマスは六角形に並んでいて、次のような反転のルールがあります。

反転のルール

1. 自分の周りに自分と異なる色のマスが4つ以上あるか
2. 自分の周りの2周分がすべて同じ色か

この1と2のどちらかが満たされると、自分のマスの色を反転します。

幸い、jsdo.it というサイトに六角形版のライフゲームが公開されていたので、それをちょっといじって上記のルールになるように変えてみました。

生き物の模様ゲーム
http://jsdo.it/t.mitsuchi3/YPJ9

スクリーンショット 2015-10-05 23.29.00

実際にやってみると、こんな感じです。

最初はランダムな白黒。

スクリーンショット 2015-10-05 23.31.56

ルールに従って1世代進めると、ちょっとまだらな構造が現れる。

スクリーンショット 2015-10-05 23.32.16

さらに世代を進めると、たしかに生き物の模様っぽくなります。

スクリーンショット 2015-10-05 23.25.20

小さくするとよりそれっぽいです。

small-moyou

ね!こういう皮膚の魚いそう。

1つめのルール「自分の周りに自分と異なる色のマスが4つ以上あるなら反転」、これは周りと同化しようとするルールだと思います。そして2つめ「自分の周りの2周分がすべて同じ色なら反転」、これは適度にまだらにするためのルールなのかなと思います。

たとえばルール1だけを働かせると最終的にこんな風になります。

スクリーンショット 2015-10-05 23.52.01

同化の力が働いて大きな島ができるんだけど、安定してしまってこのまま模様が変化しない。ルール2があると、より撹乱されてまだらになる感じです。面白いなー。

ちなみに実験は、生き物の模様の研究で有名な阪大の近藤先生が協力されていたようです。見たかった。

ルミネのCMと地形

ルミネの新しいCMが話題になっている。

浦島さんの言う通り、奥に見える地形は確かに妙だ。真ん中の女性の顔のすぐ後ろに車があることからも分かるように、車道は急に高くなっているのに左側の歩道は同じレベルのままだ。

そして、この道には見覚えがある。印刷博物館の前の、神田川沿いの道だ。昔から大曲と呼ばれるあたり。

IMAG0997車道だけが高くなっている理由は、右から伸びてくる水色の橋にある。実は対岸のほうが2メートルほど高いので、こちら側の橋の根元の地面を盛り上げてレベルを合わせているのだ。

shiratori-bashi

橋は、上の図(東京地形地図のキャプチャー)の真ん中の白い線のようにかかっている。視線は赤い矢印の向き。色が濃いほど標高が高いので、こちら側が低いというより向こう岸が高くなっているのが分かる。

IMAG1009

別の場所から対岸を見たところ。ちょっと分かりにくいけど、向こう岸がずいぶん高いところに見えるのが分かる。じゃあ、ここらへんの岸はぜんぶそうかというと、そうでもない。たとえば隣の橋は両岸とも同じレベルにある。

IMAG1003ほらね。普通だ。

そうすると気になるのは、こんなふうに両岸で高さが極端に違うのはどんなときかってことだ。一つ思いつくのは、この場所が「大曲」と呼ばれていたように、神田川がぐぐっと屈曲している現場だってこと。川が曲がっている部分の内側を削り残す、みたいなことがあるんだろうか?

そう思って神田川やその支流の曲がっている部分を見てみると、確かにそう思えなくもない箇所はある。

myoushouji

赤く点を打った場所は、川が大きくカーブする内側の標高がずいぶん高い(色が濃い)。ただ、これと逆に外側のほうが高いような場所もふつうにある。

kandagawa-2

これは神田川の上流だけど、ここだと赤く点を打った外側のほうが高くなってる。だから必ず内側が高いということはないようだ。ただし、眺めてる限り、大きく曲がるようなところで両岸の標高に差があるということは割合あるように思える。因果関係としては、急に高い崖にぶつかったから大きく曲がるっていうこともあるかもしれない。

ここらへんのことは地理とか地形を勉強した人なら基本的な知識だと思うので、お前もうちょっと勉強しろってことだとは思うんだけど。

印刷博物館の前のあの道路は、以前からちょっと妙だなとは思っていた。だからこそルミネのCMを見たときにあそこかなと思えたんだけど、浦島さんに改めて「奇妙な地形」と言われるまでその理由はあまり考えたことがなかった。ルミネの新CMと浦島さんの指摘に感謝したいと思います。

Googleマイマップの埋め込みヘルパーを作った

「新しいGoogleマイマップ」で作った地図をブログとかに埋め込もうとしたとき、旧マイマップみたいに大きさや位置、縮尺を自由に決められなくて不便!と思ったことはありませんか。

実は「デフォルトビューを設定」の機能でマイマップ1つにつき1つの視点は設定できるんだけど、複数の場所に埋め込もうと思ったら依然として不便だ。

そんなときのために「Googleマイマップ埋め込みヘルパー」というのを作りました。

Googleマイマップ埋め込みヘルパー

使い方は簡単!まずは、作ったマイマップのURL、

スクリーンショット 2015-01-20 4.08.23

これをコピーして、埋め込みヘルパーのここ

スクリーンショット 2015-01-20 4.08.39

ここにペーストして、「地図を表示する」ボタンを押す。すると、下に地図が表示されるので、

スクリーンショット 2015-01-20 4.09.09

これを動かしたり縮尺変えたり、大きさを変えたりする。すると、

スクリーンショット 2015-01-20 4.09.26

その下に埋め込みURLが書かれているので、これをコピペしてブログとかに埋め込む。これだけ!

ぜひ使ってくだせー。

森ビル開発史マップを作った

「新・都市論TOKYO(集英社新書)」という本を読んでたら、森ビルの歴史が面白そうだなーと思ったので、調べてまとめてみました。

森ビルは六本木ヒルズのような大規模再開発を手がけるデベロッパーですが、その歴史は西新橋の小さな貸しビル業から始まったそうです。

時代ごとに、どんな場所で、どんな規模の開発をしてきたかを知るために、森ビルが手がけたビルやプロジェクトを年代ごとに色分けした地図を作りました。日曜日の朝からNHKの将棋中継も見ないでまとめました。

■1960年代   ■1970年代   ■1980年代   ■1990年代   ■2000年代   ■2010年代

古いほど青く、新しいほど赤くなるように色分けしています。データは森ビルのサイトからひっぱってきましたが、もう建ってないビルは載っていないので残念ながら全部ではありません。ただ傾向は分かるんじゃないかと思います。

都心についてはこれがだいたい全体図ですが、小さすぎてよく分からないので時代ごとにズームしながら見てみます。

1960〜1970年代

■1960年代   ■1970年代   ■1980年代   ■1990年代   ■2000年代   ■2010年代

右上の「西新橋」の文字の近くの青緑色の四角が、森ビルが1956年に最初に建てた「西新橋2森ビル」です。

SAMSUNG CSC

後から竣工した「西新橋1森ビル」もすぐ近くの外堀通り沿いにありましたが、今は取り壊されてしまいました。

その後、1960年代から1970年代にかけては虎ノ門付近に多くビルを建てたようです。青と紫の四角がよく見えます。この時代のビルには「虎ノ門35森ビル」のように名前に数字がふられていたため、ナンバービルと呼ばれたとのこと。

1978年のラフォーレ原宿は、初めての商業施設であり、初めて港区の外でおこなった開発でもあったようです。この頃からちょっと手を広げ始めた感じですね。

 1980〜1990年代

■1960年代   ■1970年代   ■1980年代   ■1990年代   ■2000年代   ■2010年代

この時代の大きな成果は、左にある紫の大きな領域、1986年のアークヒルズです。

SAMSUNG CSC

アークヒルズは、赤瀬川原平の「超芸術トマソン」で「ビルに沈む街」としてまさに開発中の様子が取り上げられた場所でもあります。有名な煙突写真が撮られたのとほとんど同じ場所に、アークヒルズの煙突が建っているのは偶然と思えない、ということが本にも書かれていますね。SAMSUNG CSC

このアークヒルズが、単一のビルにとどまらない面的な開発の足がかりとなりました。

次の大きな開発は1999年のお台場ヴィーナスフォートでだいぶ間が開くんですが、別にさぼってたわけじゃなくてずーっと次の準備をしていたようです。

2000年代以降

■1960年代   ■1970年代   ■1980年代   ■1990年代   ■2000年代   ■2010年代

地図左下、2003年の六本木ヒルズは、森ビルとして最大の開発になりました。計画開始は1986年だそうで、まさにアークヒルズ竣工の年なんですね。それから17年間も、ずーっと六本木ヒルズの準備をしていたと。

roppongi

何百人もいる地権者を説得してすこしづつ買い上げたりとか、森ビルのプロジェクトはこんなふうに長い時間をかけてようやく実を結ぶということがあるらしいです。

2006年には表参道ヒルズの再開発もありましたが、こういう派手な開発ばかりじゃなく、2009年には芝三田森ビルという小さなかわいいビルを建てたりもしていて、なかなか好感度アップです。

2014年の虎ノ門ヒルズは、森ビルがこれまで虎ノ門周辺で手がけた小さなビルに囲まれた、少なくとも場所的には原点回帰の開発となったんですね。地図を描いてよく分かりました。

丸の内をどかんと払い下げられた三菱と違って、森ビルは何もないところから少しづつ自力で港区を開拓していった。一案件に17年もかけたりして。なんとなく悪者のイメージありましたけど、そういうところはすごいなーと思います。

全体の地図はここから見られます:「森ビル開発史マップ
間違いなどあればご指摘ください。

参考:森ビル公式サイト「ビル一覧

追記:

フォトグラファー/ライターの大山顕さんが、森ビル開発史マップを年代ごとにアニメーション化したものを作られました。

故郷に錦を飾った森ビル | 「住宅都市整理公団」別棟

森ビルの開発の場所や規模がどう移り変わってきたかが、アニメにすることでとても分かりやすく表現されていてすごいです。ぜひ見てみてください。

ISUCON4本戦にチーム「ナイスカロリー」で参加して4位に入賞しました

ISUCON というのはITエンジニア向けのコンテストで、課題となるウェブアプリケーションをチューニングしまくって、出来る限り多くのアクセスをさばけるようにしようというものです。

第4回めとなる今回は、主催がLINE、出題はクックパッド、インフラはテコラスさんという贅沢なものでした。参加者は3人1組のチームで、今年は185組が予選に参加、そのうち上位28組がLINE本社で開かれる本戦に参加することができます。

同僚の @h_nakamura、@kawataso とともに「ナイスカロリー」とういい加減なチーム名で予選に参加したところ、主に同僚二人の活躍でなんと予選突破、11月8日(土)にLINE本社で開かれる本戦に参加できることになりました。

SAM_9184

 

LINE本社といえば渋谷ヒカリエです。こんな環境で予選突破した猛者たちと本戦を戦うことになり、当日はたいへん浮足立っておりました。

会場はこんな感じのおしゃれな場所です。

IMAG0189

 

さっそく窓際のよさそうな場所を確保しました。真ん中に写ってるのが同じチームの二人です。

11時にコンテストが開始されると、レギュレーション、つまりルールが公開されます。これをちゃんと読んでおかないと、後になって「そんなルールがあったの?」ということになって時間を大量にムダにするので、とにかく熟読しました。実装言語はいくつか選択できるのですが、慣れているPHPにしました。

課題となるウェブアプリケーションの見た目はこんなでした。

スクリーンショット 2014-11-10 10.44.22

 

動画広告配信のウェブアプリです。まずこれがどんなアプリなのかを把握しないといけません。おおよそ次のようでした。

  • 広告主は、広告の表示場所(スロット)と、クリックされた後のリダイレクト先URLを指定して、動画を入稿する
  • 広告を掲載するサイトは、スロットに登録された動画から1つを選んで表示する。
  • ユーザーが広告をクリックすると、リダイレクト先へジャンプする。
  • 広告主は、広告が表示された回数、クリックされた回数のレポートを閲覧できる。

動画についてはサンプルが用意されているのですが、出題チームががんばってつくったなーという感じの伝わるほのぼの映像となっていました。

スクリーンショット 2014-11-10 10.51.39

どんなアプリなのかがだいたい分かったので、つぎは計測します。チューニングの鉄則として有名な言葉が「推測するな、計測せよ」です。どこにボトルネックがあるのかコードから推測するのは効率が悪いし、はずれることも多い。とにかく計測が大事です。

ボトルネックを計測するために予選のときから準備したのは、

  • ウェブサーバーのアクセスログに応答時間を追加し、LTSVで出力する
  • LTSVを処理し、一回のベンチマークでアクセスされたURLごとの処理時間の合計を出す

ということです。URLごとの合計時間は、PHPの初期実装では次のようでした。

POST /initialize HTTP/1.1 0.082
GET /me/final_report HTTP/1.1 0.32
POST /slots/*/ads 29.944
GET /me/report HTTP/1.1 40.462
GET /slots/*/ads/* 50.821
GET /slots/*/ad 52.249
GET /slots/*/ads/*/redirect 53.722
POST /slots/*/ads/*/count 59.053
GET /slots/*/ads/*/asset 380.54

右端の数字は、合計の処理時間のマイクロ秒です。これを見ると最後の GET /slots/*ads/*/asset にもっとも時間がかかっていることが分かります。

レギュレーションを読むと、どこに何点の配点があるかということが分かるので、それをもとにもっともスコアに効いてくるボトルネックを順につぶしていくということをひたすら繰り返すことになります。

本戦ではサーバーが3台ありました。動画をとにかく数多く配信することがスコアアップにつながるようでしたので、キャッシュサーバーを前に2台を置いて1台をアプリサーバーとするというようなチューニングをしていたところ、5位以内くらいに浮上するようになりました。

スクリーンショット 2014-11-08 13.30.43

 

コンテストのあいだは、こういうランキングが随時更新されるのです。「ナイスカロリー」が僕らです。

いろいろやっていたのですが、どんなチームもまだ1万点を超えないという状況の中、「チームフリー素材」というチームがいきなり30万点を出して衝撃が走りました。その後その点数は消えてしまったので、ベンチマークのバグかな―とおもってやりすごしてしまったのですが、本当はバグじゃなかったようです。後で分かるのですが、実はそこがポイントでした。

コンテストの終了間際になり、ぼくらのチームはベンチマークのスコアが安定しない、というよりベンチマークの出す原因不明のエラーにより0点になるという状況がずっと続きました。その状況が改善しないまま19時に競技終了。これはもうだめか、最下位か・・と思いながら発表を待っていると、なんとちゃんとスコアがつき、しかも14448点で、4位でした!56f563d4

 

ぼくらのチームです。写真はISUCON公式ブログからお借りしました。

しかし、1位のチームはなんと61万点。ぼくらの40倍です。じつはベンチマークプログラムが賢くて、Cache-Control ヘッダを適切にかえしていれば、次から同じ広告は取得しに来ないので、結果的に広告をたくさん配信できた、ということだったようです。33万点というスコアを見てその可能性に気づいたのはトップのチームだけだったようですから、ぼくたち参加者は出題者に完敗したような気分です。

ともあれ、たくさんの参加者の中に身をおいて、純粋にエンジニアとして競争するというのはいままでにない経験で、得るものが多かったです。優秀なのはチームの他の二人でぼく自身はあんまり何もしてなかったとはいえ。

最後になりますが、LINEの主催チーム、クックパッドの出題チーム、テコラスのインフラ提供チームのみなさんには感謝の言葉しかありません。傍から見ていても本当に大変そうでした。特に出題チームの3人は、前日から徹夜したうえで、当日もベンチマークの不具合対応などで終始忙しそうでした。次回も開催されるようですが、ぜひ主催側に無理のない形やスケジュールで開催していただければと思っています。ありがとうございました。

Io言語の if then else の実現方法がかっこいい

Io っていうプログラミング言語の if then else の実現方法がむちゃくちゃかっこよかったのでメモ。

まず if then elseの見ためはこんな感じ。

この場合は、4を2で割った余りが0なら「偶数」と表示され、そうでないなら「奇数」と表示される。この if then else はこういう構文があるわけじゃなくて、メソッドチェインで実現されてる。そこがかっこいい!

具体的には上のコードはこんなふうに評価される。まず先頭の if( 4 % 2 == 0 ) は実は if メソッドを引数「4 % 2 == 0」で呼び出すという意味で、4 % 2 == 0 は真なので true オブジェクトが返る。なのでこうなる。

つぎに true then( ”偶数” print ) が評価される。これは true オブジェクトのthenメソッドを引数「”偶数” print」で呼び出すという意味だ。これは引数を評価したうえで nil を返す。まず、引数の「”偶数” print」は「偶数」という文字列のprintメソッドを呼び出すという意味なので、「偶数」という文字が表示される。そのうえで nilが返るからこうなる。

これまで同様、これは nilオブジェクトに対する elseメソッドの呼び出しになるんだけど、nilはelseメソッドに対してなにもしないので、「奇数」という文字は表示されない。これで if then else がみごとメソッドチェインで実現されたことになる!

なお、ふつうの言語なら上の例で elseメソッドに引数「”奇数” print」が与えられたら、まず引数を評価してから elseメソッドの本体に渡すので、「奇数」はどうしても表示されちゃう。Io の場合は引数の評価が遅延されるのでこういううまいことができる。

ちなみに else と then を逆に書いても問題なくうごく。つまり、

と書いても大丈夫!具体的に評価を追って行くと、さっきと同じように冒頭の if がまず true になる。

trueオブジェクトにelseを呼ぶと、引数を無視して単にtrueオブジェクトを返すから、

こうなる。これはさっきもやったとおり “偶数” と表示されるので、これで終わり。なるほどーって感じだ。

if then else が制御構造じゃなくてメソッドだっていうのはどうやら Smalltalk に由来していて、それっぽい ifTrue() とか ifFalse() っていう書き方も別にあるようなんだけど、ぜったいこっちの if() then() else() のほうがかっこいいと思う。

主役のせいでキャプションがずれる

駅で電車を待ってたら、目の前の看板で冨永愛さんが片桐はいりさんになっていた。

1

これは違う。片桐はいりさんはこんなエラじゃなかったはずだ。と思ったら、左隣では本物の片桐はいりさんが寺島しのぶさんということになっていた。

なるほど、これはキャプションがずれてるんだ。

2キャプションのずれはちょうど赤線のようになっていた。一番右の松尾スズキさん辺りでは合ってるのに、左に行くに従ってずれてる。なんでこんなふうになっちゃったんだろう?

よく見ると、一番左に「大森南朋」と名前だけがあって写真がない。これがカギだ。もっというと、これはキャプションじゃなくて、写真とは独立に役者名を並べたテキストが、偶然キャプションに見えていただけなのだ。

じゃあ大森南朋さんの写真はどこにある。

3

なるほど。すべては主役の写真だけを別枠にしたせいだったのか。

今日、気づいたこと。

主役のせいでキャプションがずれる。

江戸の海岸線を散歩する

新潮講座で「東京『江戸の海岸線』散歩」というのをやります!

  • 東京「江戸の海岸線」散歩(全3回)
  • 2013年 10/12、11/9、12/14(毎月第2土曜日)13:00~15:30
  • 第1回「品川・高輪篇」、第2回「八丁堀・鉄砲洲篇」、第3回「小名木川・深川篇」
  • 受講料+教材費 9675円(3回分)
  • お申し込みはこちらから

今日は第1回の品川の下見をしてきました。場所は旧品川宿。

SAMSUNG CSC品川は目黒川の河口に沿って中世から栄えた町でした。
なのでもともとの本場はいま品川駅がある辺りじゃなくて、もうちょっと南。新馬場駅とかの辺り。

SAMSUNG CSC

品川が湊として栄えたのは、目黒川が上図左みたいに蛇行してたから。蛇行によって海側に砂州ができて、自然と防波堤みたいになり、船も泊めやすかったという経緯で湊が発展したようです。

京急の北品川駅あたりを通る旧東海道は海岸線のすぐぎりぎりを通ってたので、道から海側を見るとこんな感じ。

SAMSUNG CSC

すとーんと落ちてる。300年前はこの先がもう海でちゃぷちゃぷしてました。

旧東海道筋は、さすがに江戸時代から残ってる建物はほとんどないものの、昭和の始めくらいの雰囲気のものは結構残ってます。

SAMSUNG CSC

見事な銅板葺きの看板建築。

SAMSUNG CSC

それに煉瓦塀。なかなか素敵でしょう。

「東京『江戸の海岸線』散歩」。ご参加お待ちしてます。