12/28碓氷峠Ingress(?)

碓氷峠行ってきたけど、断続的にネットが繋がらなかったのと、新しいデジカメが捗って撮り過ぎて写真がupできなかったのでこっちに垂れ流し。

本日のルート

ルートは池袋→(高速バス)→軽井沢→(徒歩)→寄り道→(徒歩)→横川→高崎→新宿。18きっぷ使ってるけど、殆ど収支プラマイ0だった。

碓氷峠は横川からだとひたすら登りになるために、体力事情的に軽井沢から入るのがほぼ必須だったが、軽井沢へ入るルートが18きっぷだと全く無いので高速バスで楽をした。横川までなら電車でも料金・時間共に言うほど差は無いんだが。

軽井沢

標高900m超の高原。避暑地として有名だが今回は真冬に行ったのでぶっちゃけ寒い。なぜこの日を選んだ。

そして日本東西交通の要所、碓氷峠のもう一端である。

軽井沢を降り立ち、とりあえずIngressの軽いmissionをこなしながら腹ごしらえ。

f:id:ponkotuy:20151228120950j:plain

駅そば発祥の地らしい。画像は山菜そば420円

あとは旧国道18号線をひたすら東進。

f:id:ponkotuy:20151228122822j:plainすごく山道っぽい雰囲気が(特に電光掲示板

f:id:ponkotuy:20151228123528j:plain

10分ぐらいのぼっていくとすぐに群馬県境(国境)に到着。ここが碓氷峠の頂点。

碓氷峠

東京から長野・北陸方面へ抜ける重要なルートの1つ。なので、国道18号、上越自動車道、北陸新幹線と一通りの交通機関がここを通過する。勿論昔は在来線もあって、信越本線と言われていた。

特徴は軽井沢が高原なので、トンネル掘っただけでは高低差が埋められない問題がある点。特に鉄道は上り坂に弱く、北陸新幹線開業までの信越本線の時代は、頻繁に改良され続けつつも、最後まで隘路であり続けた。新幹線が開通すると即廃線になった。今でも新幹線で最も急な上り坂は碓氷峠で、速度が制限されている。

ということで碓氷峠には廃線跡がある。しかも一度改良されているので2つも。これが今回の旅の主目的である(Ingressはオマケ)。幸いにして横川から途中までは公園で整備されていて手軽に楽しめる。

f:id:ponkotuy:20151228124633j:plain

峠から群馬県側。こんな

f:id:ponkotuy:20151228131938j:plain

ヘアピンカーブが連続する旧18号線をひたすら下っていく。途中で

f:id:ponkotuy:20151228132350j:plain

こんなゴミ山があって気になったり。不法投棄の割に少ないし労力掛かり過ぎる場所な気がした。

とかを過ぎつつ更に進むと

f:id:ponkotuy:20151228133253j:plain

f:id:ponkotuy:20151228133344j:plain

f:id:ponkotuy:20151228133421j:plain

でたー!廃線だー!国道から見えたときは綺麗に見えて現役かと勘違いしましたぐらいまだ綺麗ですね。旧18号線から簡単にアプローチできたので、廃線の中ではかなりアプローチしやすい方かと。

f:id:ponkotuy:20151228134018j:plain

f:id:ponkotuy:20151228133618j:plain

f:id:ponkotuy:20151228134029j:plain

この辺は鉄道と思しき構造物が残っていないが、おそらくアプト式時代の旧線。レールが人件費より高かった時代は転用してた模様。(アプトレールも建材として転用されている)

f:id:ponkotuy:20151228134445j:plain

思えば遠くまで来たものだと思いつつ

f:id:ponkotuy:20151228135219j:plain

f:id:ponkotuy:20151228135234j:plain

追加でパシャパシャ

f:id:ponkotuy:20151228140002j:plain

こういう沢がいたるところにあった。そういえば碓氷峠分水嶺だ。

f:id:ponkotuy:20151228141648j:plain

旧線のトンネルだと思うけど反対側にトンネルや土台が無かった。埋められたかな。

f:id:ponkotuy:20151228140627j:plain

f:id:ponkotuy:20151228140652j:plain

f:id:ponkotuy:20151228141716j:plain

この時点で軽井沢から8kmぐらい歩いている。で、この辺りからトイレ行きたくてはよ、って気持ちになってて、公園になってる熊ノ平信号所跡の駐車場に期待していたのだが

f:id:ponkotuy:20151228142629j:plain

なにもないつらい。後で知ったのだがここのトイレ廃止されてた。メガネ橋にあったらしいがそれもいつのまにか通過してて、結局碓氷湖までガマンした。

熊ノ平信号所。一時期すれ違い設備やら変電所やらもあって人が多く、社宅もあって駅だったらしい。50人が殉職する土砂災害もあったとか。

f:id:ponkotuy:20151228143126j:plain

f:id:ponkotuy:20151228143244j:plain

f:id:ponkotuy:20151228143358j:plain

最後、トンネルが4つあって、左2本が新本線、右から2つは旧線のすれ違い設備がトンネルまで伸びてるとかだったかな。熊ノ平信号所はトンネルの間にあってえらく狭いので、退避用のトンネルがあったとかなんとか(新線はそれを流用したようだ

f:id:ponkotuy:20151228143955j:plain

この後は歩道として整備された旧線のトンネルと橋梁

f:id:ponkotuy:20151228144118j:plain

f:id:ponkotuy:20151228150317j:plain

有名らしいメガネ橋。建築物としてかなり貴重なものらしい。ちゃんと撮れば良かったんだけどこれしか残ってなかった。トイレ我慢大会が限界に来ていた(なおちゃんと撮ろうと下に降りればトイレあった

f:id:ponkotuy:20151228150437j:plain

メガネ橋は旧線の橋梁だが、新線が上方に見える。

f:id:ponkotuy:20151228150937j:plain

猿がいた。結構いるらしい。ズームが効くカメラはやっぱり良い。

坂本ダムのダム湖、碓氷湖

f:id:ponkotuy:20151228151533j:plain

群馬に入ってから、鉄道や道路以外で見た始めての人工物。なお廃墟

f:id:ponkotuy:20151228151942j:plain

気を取りなおして碓氷湖

f:id:ponkotuy:20151228152248j:plain

ダムの裏

f:id:ponkotuy:20151228152431j:plain

ダムの上から

f:id:ponkotuy:20151228154122j:plain

排水してるなんだろう

f:id:ponkotuy:20151228154132j:plain

メインディッシュだー!ダムー!比較的小さめの重力式ダムですかね。

f:id:ponkotuy:20151228154504j:plain

廃線かと思ったら

f:id:ponkotuy:20151228160723j:plain

なんか営業してるっぽい新しいの分岐してる!?季節運航のトロッコがあるらしいです。

f:id:ponkotuy:20151228160800j:plain

峠の湯でのんびりお湯につかってモツ煮を食べていたら

f:id:ponkotuy:20151228165326j:plain

外は真っ暗闇だった。とはいえ登山ライトという心強い武器があるのでそのまま強引に新線へ移った歩道を歩いて横川まで邁進(完全に山の中なので実はちょびっと怖かった

f:id:ponkotuy:20151228173131j:plain

f:id:ponkotuy:20151228173241j:plain

夜に写真は工夫が必要。ぽんこつ覚えた。

このあとは横川駅でIngressのmissionを消化しつつ帰路に着いた。なお電車内で爆睡した模様。おつかれさま。

まとめ

結局、15kmぐらい歩いた。河口湖のときと同じぐらいか。上り坂が無ければこれぐらいよゆーよ!

自然あり廃線ありダムあり(実はちょっと足を伸ばせば、まだいくらかダムあった)の碓氷峠オススメ。Ingressはもっと別の場所でやりませう(横川駅近辺はmission portal多くて悪くなかったけど)

横須賀Ingressのススメ

はじめに

Ingress、楽しいですよね。様々なプレイの仕方があると思いますが、観光ついでにIngress(廃人エージェントならIngressついでに観光か?w)をすることも多いかと思います。そんなプレイングが好きな人なら横須賀行ってみようぜ、っていう話をします。

この記事は Ingress Advent Calendar 2015 - Adventar の11日目です。前日は Ingress グリフ語講座 読解編|GreyWagtail|note です。

なお本人は横須賀はIngressをしに3回行ってます。1回目は普通に、2回目と3回目はアルペジオコラボイベントmissionを制覇しに行きました(なお落選した模様)

横須賀基礎データ

 横須賀市東京湾の出口付近に位置する三浦半島にあります。比較的山がちな半島でありながら良港に恵まれており、古くから軍港として栄えた街です。この特徴から、山あり海あり産業遺構あり、という観光的にオイシイ場所です。

立地も良く、都内からであれば、品川から京急に乗って片道1000円も掛からずに行ける位置にあります。京急快特は速いので1時間足らずで着くことができるでしょう。

浦賀水道を挟んで対岸のportalを使えば巨大CFも簡単に作ることができます。もっとも、浦賀水道の対岸は交通の便が悪くド田舎…げふげふ。ま、まぁ車が無いと大変かも。

ついでに、横須賀市の観光課がとてもIngress誘致に熱心で、公式missionもあります(個人的にはイマイチ好みじゃないですが)。好きな人が観光課の中にいるんでしょうかね。

横須賀の見所(ポータル密集地)

横須賀市街地

横須賀の中心地は名実共に横須賀中央駅であり、決してJR横須賀線の横須賀ではありません。優秀なエージェントあれば全然歩ける距離ではありますが。市街地は横須賀中央駅〜汐入に広がっています。この辺りは普通にportalの平均密度も高く、名物のネイビーバーガーとか海軍カレーとかが食べられます。

三笠公園

横須賀中央から歩いて20分ぐらいのところに三笠公園があります。その名の通り記念艦として保存されている三笠があります。

三笠は今時どこ行ってもありがちな「平和〜平和〜」みたいな念仏を唱えることはなく、大変勇ましい解説と共に貴重な資料を見ることができます。あと艦これとかで第二次大戦艦を知ってる人なら、僅か数十年でとても変化があったことに驚くかもしれません。(艦橋が露天だったり)

三笠公園自体も音楽の鳴る噴水が、大量のportalと共にあったりします。missionも大量にあるのでガンガン進めましょう。

猿島

個人的には「大変ブチ切れ案件」があったのでとてもお勧めできないのですが一応。猿島自体はなかなか面白い島で、江戸末期から第二次大戦が終わるまでは軍港を守るための軍事的要所として砲台が置かれたりしてます。この為、様々な遺構が残ってます。

ブチ切れ案件は渡船です。1社で渡船を運航しているのですが、イベントがあったりすると割とあっさり「積み残し」しやがります。まぁそれ自体は安全対策で良いのですが、積み残しした後すぐに船が来て、おっ、すぐ来るのかサービスが良いな、と思わせておいて30分も放置した挙句団体客を載せて去っていったりとか(結局50分待たされた)、その間全く予定が開示されず、よく暴動が起きないものだと感心してました。というので競争してない航路はサービスレベルがアカンという結論になったり。片道10分ぐらいの航路なんですけどね。なお往復と入園料で1500円です。(これも高いなーと思ったりする)

ヴェルニー公園

京急汐入駅からJR横須賀駅の間に広がる公園です。ここもportal密集地で、missionもわんさかあります。三笠公園と違うのは洋風庭園なことでしょうか。運が良ければ自衛隊の艦船が見えます。それにしても横須賀市にはこういう綺麗に整備された公園が沢山あって、金あるなーとかいう謎の感心をしたりします。

馬堀海岸

自転車やランニングをするには大変良い感じに道路が整備されてる海岸です。対岸に横浜市街地が見えます。壁画が沢山あり、それがportalになってます。密度的には大したことないですが、頑張ればここから歩いて観音崎公園まで行けます。京急馬堀海岸駅が最寄りです。

観音崎公園

観音崎周辺に広がるとても広い公園です。園内に観音埼灯台、横須賀美術館、海水浴場、砲台跡地、森林etcがあります。missionで1周しましたが起伏も激しく、2時間ぐらい掛かった記憶があります。砲台跡地があるので、ぶっちゃけ猿島のデカい版の様相を呈しています。

交通が若干不便で、精鋭エージェントなら馬堀海岸から歩けますが、portalも少ないので普通にバスでもいいでしょう。バスは横須賀中央or浦賀から出ています。土日なら本数も多いのでバスに予定を合わせる必要はない筈です。

浦賀市街地

特筆すべき観光地はないですが、missionもportalもそこそこあるので、余裕があれば足を伸ばすのもいいでしょう。観音崎公園からバスでこっちに来るのもアリか。

浦賀港を中心に発展した街で、湾を横切る渡船が出ています。100-200円ぐらいだった記憶。ただし渡船は夕方6時までの運航なので、乗る場合は注意。

あとは西と東にそれぞれ叶神社があり、missionがあります。東叶神社にある叶神社本殿は山の上にあってプチ山登りになります(これを含むmissionも)。体力は大丈夫か?

久里浜市街地

行ってみましたが、missionが低調なイメージしか残ってないです。駅前はそこそこportalもありますが。ペリー上陸の地は相当残念観光地に入るかも。

一区切り

という感じで横須賀の魅力を紹介してみました。ここ1年で色々関東近辺の観光地らしいところに行ってIngressしてましたが、横須賀がダントツで面白いですね(ただし猿島を除く)。次点で鎌倉かな。

ところでお前誰よ

ここからは自分語りをします。

twitter.com

ぽんこつです。ネットだと大体ponkotuyで暗躍してます。プログラマは仮の姿で真の姿は勿論エージェントですね。TwitterでだらだらIngress実況しながらやってます。

f:id:ponkotuy:20151211022303p:plain

基本的には家のまわりではあんまりIngress真面目にやってなくて、土日に遠出してmissionやりながら荒らしまわってます。かなりmissionとunique capture重視のプレイスタイルなので、CFとLinkが絶望的に少ないです。もっと真面目にやれって言われる。ごめんね。逆にmissionは1000クリア間近だ。どや。

そういえば丁度始めて1年ぐらいになります。元々始めたキッカケはデブくなったのと、健康診断の結果が芳しくなかったからですが、今では元の鉄オタ成分が噛み合いリアル課金しまくってます。そういえば青春18きっぷの季節ですね、今回はどこ行こう。(なおダイエット効果は微妙です。何故ならIngress先で美味しい物を食べまくってるからです)

あとIngess行くようになってハマったのはダムですね。ダムほど機能的で巨大な人工物はなかなか無いし楽しいですね。山と水辺を好むのも理由としてはあります。ただ得てして鉄道が通じてないのが…つらい><

ダム好きが高じてこんな記事書きました。

ponkotuy.hatenablog.jp

Ingressしに行ったとか言ってたけど、八木沢ダムとかそもそも電波通じてないしダムがメインな奴です。

こんなとこかな。2015年Ingressしに行った場所リストみたいなのを近いうちに公開するかも。20〜30箇所ぐらいあるんじゃないかな。swarmのチェックイン見ればすぐに分かるので便利ですね。

新電力会社デラックス紹介

はじめに

この記事はボドゲ紹介 Advent Calendar 2015 - Adventarの4日目です。前日は心臓発作にならないための10の方法 - ろきぽよ〜〜〜〜〜明日はコヨーテの紹介 - 自己言及器官

金曜日は会社のボドゲデーで忙しいので寝る前に投稿します。

紹介するのは装いを新たにした電力会社です。とはいえ古い電力会社のことは良く知らないので新しい電力会社の話だけします。

目的

このゲームの目的は多くの都市を電力網で繋ぎ、電力を供給することです。最終ターンに一番多くの都市に電力を供給したプレイヤーが勝利です(同着の場合は残金で決まります)

都市を電力網に接続していくのも大事ですが、発電所or燃料が足りなくて電力が足りなくてもいけません。

全体像

このゲームは2-6人向けゲームです。1ゲーム大体2時間ぐらいですが、そんなにルールが重いゲームという印象はなくて、カタンと同レベルな感じがするので中量級な気がします。

ボードの全景は以下ような感じで、初期マップにはアメリカとヨーロッパがあります(細かいルールが違います)

f:id:ponkotuy:20151204003243j:plain

写真はアメリカマップです。

ステージ

ゲームは第1ステージから第3ステージまで進んでいきます。ステージが進む毎に買える発電所は高価になり、都市に多くの電力網を接続することができるようになります。また資源の供給にも変化があります。

収入

このゲームでは、電力網の建設、発電機の設置、資源の支払い、様々なものにお金(エレクトロ)を使いますが、その収入は、ターンの終了時に電力に接続した都市の数で決まります。

f:id:ponkotuy:20151204003744j:plain

多くなればなるほど増え幅が鈍化していきます。

建設

新たに都市を電力網に接続します。最初の都市はどこでも良いですが、2つ目以降は現在電力網に接続している都市(発電機ゴマを置いてる都市)に隣接して置く必要があります。

建設コストは、発電機ゴマを置くのに必要な配置コスト(10/15/20)と、接続コストの合算で計算されます。接続コストは下記で青がセントルイスにコマを置く場合、ナッシュビルorメンフィスからの9を支払えば良いことになります。全部で19です。

f:id:ponkotuy:20151204004312j:plain

 配置コストは都市で最初の電力網は10、次は15というように値上がりしていきます。また2つ目は第2ステージ、3つ目は第3ステージでのみ開放されます。ルート上重要な都市はすぐに配置できなることが多いです。

発電所

発電所は左下に発電に使うコスト、右下に供給可能な都市数、上の数字は4から50までのコストを示します。以下は一例です。

f:id:ponkotuy:20151204004033j:plain

左上は石油orガスの混燃ができる発電所です。真ん中下に原子力発電所とかあります。右下は…なんとエネルギー無しで発電できます、クリーンですね!

この発電所はオークションによって入手します。競売するので上のコストは最低コストになります。徐々に値を釣り上げていって一番高い値段を示した人が落札します。良い発電所はそれだけ高価です。(たまにボタ餅的に良い発電所が表示コストで入手できることもあります。幸運ですね!)

ただし発電所は3つまでしか持てません。後半になると巨大な電力網に供給する為に、大型の発電所が必要不可欠になるでしょう。

資源

資源のコストはそのときの市場在庫の量によって変わります。下を見てください。

f:id:ponkotuy:20151204003651j:plain

在庫は右から順番に置いていくので左に行くほど在庫が沢山あります。下の数字がコストになります。例えば一番上の石炭は左から3つ分は2で買えます。それ以上買う場合は3になります。上から2番目のガスはかなり減っていて、最初から4ですね。一番下の核はかなり数が少ないので、自分の番が来る頃には2だったのが5とか6とかになってることも。

資源コストはこのような特性があるので、場の発電所を見て、どの燃料の発電所が良いか考えねばなりません。

資源はターンの終了時に補充されますが、補充される量がステージによって変化します。

f:id:ponkotuy:20151204004514j:plain

主力の石炭が極端に変わったりするので悩ましいです。

手番の順序

このゲームの手番の順序は一風変わっていて、「都市接続数の多い人」次に「一番大きい数字の発電所を持っている」人が先にプレイしますが、必ず先手の人が不利な順番に置かれるようになってます。特に、建設フェイズが顕著です。逆順でプレイすることになっていて、先手がとても有利なので、ここで順位が引っくり返ることが良くあります。

またこのゲーム、高価な発電所はとても強力ですが、一方で強力な発電所を持つと同着の人との順序で不利になるので、なかなか難しいところです。

面白いところ

資源コストを考えながら自分の発電所の組み合わせを考えていく必要があるのですが、オークションで人気になり過ぎてなかなか買えないぐぬぬ、みたいなジレンマがとても面白いです。巨大になった電力網に供給するために高い石炭をガンガン焚いて、安い発電所に高い資源代金払ったりとかも日常茶飯事ですね。とか、ちょっとおま、ウラン買い占めてんじゃねー、とか。エコな発電所買ったはいいけど、電力不足で泣く泣く石炭に置き換えたりとか。ちなみに何度か電力会社やったぼくから言わせると、お財布にやさしい石炭発電がやっぱり最強ですね(ぉ

電力網の構築もなかなかアツくて、第1ステージで辺鄙な場所から始めてしまい、都市数稼げなかった人が、ステージ変わって一気に4都市接続して巻き返したりとか、ボーっとしてたら封鎖されて拡張できなくなったりとかします。ステージが変わると今まで拡張余地を奪いあってた敵が敵じゃなくなって隣の奴が敵になったりします。

欠点

とまぁ面白いのですが、いくらか欠点もあって、

  • (特に発電所オークションが)長い
  • 発電所カードの扱いが面倒くさいので、一人詳しい人間がいないと進行に支障がある
  • ボードの値段が高い

とかあったりします。でも長い以外に関しては簡単に解決する方法があります。ぼくの家でボドゲをすればいいのです!もう既に用意してあるし、ぼくが丁寧に解説します。十全ですね。おっ、早速12/12にボドゲ会があるじゃないですか! 早速登録して行きましょう。

ponkotuy.doorkeeper.jp

以上ステマ込みの電力会社紹介でした。明日はどんなボドゲが紹介されるのか楽しみですね!

 

奥利根ダム巡りの旅

はじめに

最近ダムを巡る旅をしていたら、興味を示したフォロワーの人が車を出してくれて、奥利根まで行ってきた。奥利根ダム日帰り強行軍の旅。

の写真を撮ったものの、行く先々で悉く圏外だったので、ここにupしておく。

矢木沢ダム

アーチ式ダム。湖は奥利根湖。Nexus6が掴めるdocomo電波が無く圏外という僻地。建設時、住民が元々いなかったので補償もなし。資料館が併設されてる。

最初に大量の流木がお出迎え。多いみたいで至るところで流木を見た。

f:id:ponkotuy:20150829140613j:plain

ダム体(湖側)。水位は7割ぐらいかな。

f:id:ponkotuy:20150829141128j:plain

奥利根湖

f:id:ponkotuy:20150829141546j:plain f:id:ponkotuy:20150829141555j:plain

下流から見て左側にある洪水吐(上から)。矢木沢ダム、洪水吐が別にある珍しいパターンなのだ。

f:id:ponkotuy:20150829143440j:plain

洪水吐の水門。

f:id:ponkotuy:20150829143503j:plain

ダム体。上が反っているので、濡れにくくに汚れないそうだ。

f:id:ponkotuy:20150829143722j:plain f:id:ponkotuy:20150829143726j:plain

洪水吐(放出側)。ダムに向かう途中で出喰わしてなんじゃこりゃ!?ってなった。

f:id:ponkotuy:20150829145646j:plain

↑の近く。完全に文明の及ばぬ地だ。

f:id:ponkotuy:20150829145650j:plain

奈良俣ダム

ロックフィル式ダム。堤高は矢木沢ダム(131m)より高い158mなのだが、アーチ式ダムはとてもデカく見えるらしく、最初矢木沢ダムより小さく見えた。湖はならまた湖。Xperia Z Ultraの電波が掴めないので別途upload。Ingressはちょっとできる。資料館がある。新しいだけあって内容は矢木沢ダムより豊富。

道中で撮影。ロックフィル式ダムであることを知る。

f:id:ponkotuy:20150829151937j:plain

上から洪水吐を挟んで。

f:id:ponkotuy:20150829154032j:plain

水門。ダム自体できたのが平成前後なので比較的新しい。

f:id:ponkotuy:20150829154042j:plain

洪水吐。真ん中が常用、左右が非常用 f:id:ponkotuy:20150829155034j:plain

雲が低いよー

f:id:ponkotuy:20150829155147j:plain

ならまた湖。対岸にキャンプ施設がある。カヌーもやれるらしい。

f:id:ponkotuy:20150829155745j:plain

湖側。降りれる(勿論立ち入りは禁止である

f:id:ponkotuy:20150829155751j:plain

逆側。メンテナンス用通路

f:id:ponkotuy:20150829155819j:plain

ダムの西側から降りれる通路があるのでそこから(ただし途中通行止めになってて引き返した) めっちゃでかいけど写真じゃ伝わらんよねコレ、っていう会話をするなど

f:id:ponkotuy:20150829160830j:plain f:id:ponkotuy:20150829160713j:plain

藤原ダム

重力式ダム。今となっては特にデカいわけでもない、観光用になんかある訳でもないので、面白いものではないかもしれない。

f:id:ponkotuy:20150829170822j:plain f:id:ponkotuy:20150829171620j:plain

ダム下にある奴。ダムの洪水吐からの鉄砲水をやわらげるサージではないかという予想。

f:id:ponkotuy:20150829170835j:plain

MyFleetGirlsがSQLのミスで死んだ

はじめに

MyFleetGirlsにDBのTableが増えるような新機能を入れたら、SQLにwhere句を1つ付け忘れただけで、1時間でDBを埋め尽くし、load averageを通常時の10倍以上に増やした事件の話。

新機能

新機能とはシンプルなもので、艦娘の経験値グラフを追加するものである。現行では艦娘の最新情報のみ保持しているので、履歴を別途取っておく必要がある。これが新しいTableに保存される。

このTableは簡単にRecord数の爆発が予想される。従って、最終更新からの差分を計算し、必要であればinsertするような仕組みを考えた。この部分にSQLのミスを埋め込んだ。

問題のTableはship_historyで、以下のようなものである。

https://github.com/ponkotuy/MyFleetGirls/blob/26d741efb21c2879856c33b8cf797995718627fb/server/conf/db/migration/default/V99__create_ship_history.sql

バグの内容

バグの修正commitは以下。

https://github.com/ponkotuy/MyFleetGirls/commit/26d741efb21c2879856c33b8cf797995718627fb

member_idの条件を入れ忘れている。findAllLastest関数はこんな感じ

https://github.com/ponkotuy/MyFleetGirls/blob/26d741efb21c2879856c33b8cf797995718627fb/server/app/models/db/ShipHistory.scala#L73

findAllLastestではwhere条件における最後に生成されたship_historyを返す。このときwhere条件としてcreatedを指定している。追加で引数のwhere条件を付け足している。

member_idの条件を入れ忘れた結果、2つの事象が発生する

  • 全く関係ないデータがヒットすることで常に差分が大きくなるので、全くfilterできてない
  • UNIQUE KEYの先頭のmember_idがwhere条件に入らないことで、Indexが効かなくなる

こうしてTableは肥大化し、非効率的なクエリによって、1時間でサーバリソースを食い尽くすまでに至る、というわけである。