オカエ・ザ・超雑記帳

徒然趣味主義主張

爽やか

201609週末記

土曜日

毎年恒例の同期ハゼ釣りに行った。

こちら人間陣営は毎年のトライアンドエラーによりハゼを釣るための施策を練りまくっているのに対し、ハゼ陣営と言えばアホ面さらしながら川底を漂って寝て飯を食っているだけであり、彼我戦力差は目に見えているのである。

結果爆釣、ほぼオールタイム入れ食いでした。ハゼとはなんと脆いものか・・・

3年前の初ハゼ釣りではみんな合わせて10匹くらいだったけど、今回は一人当たり7,80匹はゲット出来てた、人間の成長は早い。

陸に上がってBBQして肉の隣で焼いたりして食ったけど、流石に食いきれずクーラーボックス係の僕が家で処理することに。処理したレシピは以下である

ハゼの素揚げ

ハゼ 100匹位

サラダ油 適当

塩 適当

胡椒 適当

 

うますぎる・・・浜口は素揚げ連打してたけど気持ちは良くわかる。

でもハゼの素揚げは身が脆いのでボロボロになりがち、手間を惜しまない人は魔法の粉を付けて揚げましょう。

日曜日

高校時代の友人ワロス君(仮名)の家で世界最古であり至高のカードゲーム、マジックザギャザリングをやった。今回は新段カラデシュの発売ということで、新カードを使ったゲームに興じた。

割とメンツが固まりつつある中、HN:無欲な安部(仮名)が新規参入してきたが、話すこと全てが貪欲すぎて、これまで禅の者達が偉そうに語ってきた無欲という言葉の定義をあいまいにしていく逸材だった。

ここ最近のカードだが、コズミックホラーとかタイムリープとかハードSFを引きずりまくってやたら重たいストーリーに沿ったどんよりとしたカードが多かったけど、ことカラデシュに関してはなかなか爽快なインド映画風デザインになってて結構頭とろけてる感じでフィールグッドだと思います。

ダークネスエボルヴ語

こんにちは、今朝メンテが完了して無事ダークネスエボルヴが実装されてましたね、というわけで新段のカードが各リーダーにどんなデッキをもたらすのかについて妄想していきたいと思います。

1:ヴァンプ

今回のカードリストを眺めてると、まず目につくのはヴァンパイアの強カードですね。

貴き血牙

吸血姫・ヴァンピィ

のアグロ要素超強化により序盤は蝙蝠アグロで強力な立ち回りができそうです

中盤以降は

ブラッディメアリー + 漆黒の契約 or ソウルディーラー

でバーストダメージが期待できそうですね。

ブラッディメアリーは5/4/5なので5ターン目に暇ならバニラとして出しつつ、終盤に上記の同時出しを狙う形になるでしょうか?ブラッドウルフや、3点火力と組み合わせるだけでもかなり強烈そうです。

貴き血牙がエルフに対して有効そうであり、ウィッチは高速アグロに弱いため、なかなか活躍しそうな気がします。ただしこれまでのヴァンプと違いロイヤルを受け回せなくなりそうなのは注意ですね。

2:ビショップ

ハンプティダンプティが追加されて一番喜ぶのはビショップだと思います。特にロイヤルとの対戦ダイヤは劇的に改善されそうですかね。

ただし、コントロールというデッキタイプ事態が冥府への道により否定されている現状、使用者数が増えるとは思えません。メタの変遷によりロイヤル・ネクロ・ヴァンプが隆盛することになればソリューションとして使うのはよさそうです。

あと地味に5/2/4とステータスこそゴミなもののCIP3ゲイン1ドローという小器用な事をするレディアントエンジェルは良さげかな、エンシェントアルケミストに近い性能だと思うけど、GMDのが強いか? 

アグロ観点で行くとガルラ、うんアルミラージで良い、4/4と2/1疾走アミュは強いけど、劇的に強いわけでもないからまだまだ無理そうですね。

3:ネクロ

魂の再利用、メチャ強くないですか?ネクロが収穫祭を手に入れたまである。

得意なアグロの息切れに使うもよし、無限のアドでコントロールの可能性も出てきたんじゃないか?ただしコントロ(以下略。

毎ターンネクロマンスしなきゃいけないので冥府・デスタイとの相性は悪そうか。

コントロールならスパルトイソルジャーとかも地味によさげですね。

蠅の王は見た目以上に使いづらそうに見えるが、最初4/4守護ひいて本体守れれば強そうだと思う。

4:ロイヤル

えー・・・アドバンスブレーダー・・・アークエンジェル・レイナ・・・えーパッとしない印象、脳筋系でデザインに幅が出せないせいか、カードプールが広がるたびどんどん弱くなっていってしまいそう。

5:ドラゴン

ムシュフシュは相手の進化殴りで相打ち取れる率が高いのでかなり強そうです、既存のドラゴンライダーと丸ごと交換してよさそう。荒牙の竜少女は運命とコンボで大ダメージらしいですが・・・ドラゴンが運命を上手に使えるとは思えず、前評判だけのような気がします。

ファイアリザード+ジークフリートで確定除去になるので、両方3積みしたミッドレンジドラゴンが安くて強そう。

あと竜呼びの笛、これ2枚目以降は全部4/3に代わると考えると超強いかもしれないですね。

6:ウィッチ

スペルウィッチはウーン微妙、バウンススノーマンは強いっちゃ強いが重いのでブースト稼げない印象、進化フォロワもマーリン一択すぎるので割り込みは難しいか。

秘術ウィッチは低コストに優秀な土が2種追加されたのでかなり強化された、パメラはノノノの次ターンで出るとやばいがそれ以上でも以下でもないか。

7:エルフ

まず根源の回帰ナーフによる影響は結構大きいと思われます。特にロイヤル・ネクロのエルフに対する勝率が大幅に改善されそうです。

冥府エルフは最早アグロに寄せてしまうか、森の意思、フェアリービーストを代替案とするかになると思いますが、デッキ力の低下は否めなさそう

逆に優秀な中コストが増えたことでミッドレンジが組めそうです。ロイヤルのようなデッキを組めばわからん殺しできるかもしれないですね。

メタ妄想

結局のところ、まずは新段関係なしに根源の回帰ナーフによるエルフ:アグロロイヤル&ネクロの相性改善によりアグロロイヤル、ネクロが増える+新段で明確に強化された蝙蝠ヴァンプが増える。ような気がします、つまりアグロ環境。

あれ?ハンプティダンプティ系のコントロール行けるんじゃね?竜かビショか・・・いやあえてヘビーネクロにしてぶち込むか・・・

まああたるかあたらんかはともかく予想は大事、ことさら人の作ったデッキがすでに時代遅れになるのがシャドウバースというゲームなので、先見の明は必要だと思います。

モトズキッチンリバイバル その1

さあやって参りました、月に一度新鮮な魚を手に入れたときにだけ開かれるキッチン!それがモトズキッチンリバイバルでございます。

モトズキッチンとは

筆者がツイッターかなんかで適当に作った晩飯をすげえ適当なレシピと共に上げる企画。いわば男の料理であり、塩・胡椒・醤油・油・焼く!みたいなそんな感じである。

しかしながら実家の飯が余り旨くなかった事もあり、自前でささっと簡単にうまいものを作る技術は中々の物であると自負しているのである。

今日のメニュー

・あら汁

・魚と香る野菜を蒸したやつ

 の2本立てです、こっそり裏で刺身にしてますが、刺身は切って醤油かける以上の事が発生しないので割愛。

 

あら汁

伊豆へ行き魚を捕まえてフリースタイル魚捌きしてあらを用意する。

あらをザルに突っ込む。

湯をかける、これは湯引きというプロセスであり、仕上がりの臭みが消えるとか消えないとか。

湯を沸かす、適当に塩と酒入れる。

沸いた湯にあらを入れる。

気の済むところまで煮たら味見をして、ちょうどいい味になるまで塩を足す。

塩加減が良いかなといったところで醤油を垂らす。

椀に盛って、お好みでネギとか散らす。

完成

レシピ

あら 2匹分

塩 適量

醤油 3垂らし位

酒 適当

水 あらに対して3~5倍くらいの量

感想

もう毎度これ食ってるけどうまい、特に魚の顔とカマがうますぎる。

ぶっちゃけ新鮮なんで湯引きとか灰汁とりとか要らんかもしれん。

自分の好きなとこまで後出しで塩を振れるので、間違いなく自分好みの味になるので安定感がある。

あらは最強出汁なんで化調も昆布も不要、素材からゴリゴリ出汁のでる料理は塩、間違いない。

蒸したやつ

伊豆へ行き蒸し物に最適な魚を捕まえる。

長ネギ、青い部分は魚の下に敷くので10cm位。白い部分の回りは細切りで白髪ネギ、芯は輪切りにして香味油に使う。

三つ葉、葉っぱは適当に切って魚の下に敷く、茎は白髪ネギ位の長さに切る

ミョウガ、適当に細く切っといて、上に置いたり下に敷いたりハラに詰めたりする

冬瓜、乱切りにして下に敷く、冬瓜なんて料理したことなかったのでググったら皮と種喰えるって書いてあったんで皮種付きのまま乱切り、皮は良いが種はメロンぐらい主張してきたので種は取る安定。

野菜の上に魚を乗せて、酒を散らして塩を適当にかけて蓋をして火にかける。

汁が出たら水気が飛び過ぎないように火を弱くする。

f:id:inmoress:20160926221500j:plain

 こんな感じになったら三つ葉の茎と白髪ネギとミョウガを上に乗せて熱したネギ油をかけて完成

レシピ

魚 1匹 + 刺身にしなかった腹の部分

冬瓜 1/4

長ネギ 1本

ミョウガ 3個

三つ葉 1束

塩 適当

酒 適当

感想

蓋開けたら三つ葉臭が来て勝ちを確信した。のっけたネギと三つ葉の茎がシャキシャキで下はくたっと出汁が染みてまいうーだった。汁が旨いのはわかってたんで冬瓜突っ込んだけど最強の瓜だった。

ネギ油はよくわからんかった、ぶっちゃけ下の部分だけでも良かったまである。

モトズキッチンズプロパガンダ

出汁の出そうな何かに塩を振って加熱すればどうやったって超旨い。

醤油だけで味付けすんのやめてください、本だしで良いので入れてください、塩入れてください。

美味い食材食う時、めんつゆはめんつゆ味にしかならないので使わんといてください。

鍋食う時、初手ポン酢やめてください。

なんとなくうまくなりそうだから酒入れてるけど、あんまよくわかってないので聞かなんといてください。

 

おわり

合法的何して遊び方のススメ

ねえねえ何してねえねえなねえねえ何して遊ぶのー?

shadow verseで遊んでんだ、わかるな?

というわけで今日はcreepy nutsの曲に合わせてエルフのプレイングcipをまとめていきたいと思います。

仕事中に鼻歌で「ッテッテッテーっててれてれてれてれ」が無限再生される位にはハマるこれです。

Creepy Nuts(R-指定&DJ松永) / 合法的トビ方ノススメ 【MV】 Clean Ver. - YouTube

 

YO 溜めに溜めた墓地のカード パッと開放する冥府のロード
どうしたのリノさんピストン運動みたいに導かれるフェイスアグロ
収穫祭のナーフでもいけない強さ持ち合わせそう
ランク上げるならぶちまけろ 気持ちいいことしよう
One shot!!

妖精液体フェアリーとメイジ囁き 森荒らしへの報い
運命が答え 逝きたいと絶えずのさばるフェアリーに置き換える
砕いて裂いて巻いて焚いて吸って吐いても
まして炙っても打っても得れてる死体に
たまらず Give Some More ei yo!!

耳から体内に入る 脳内を蝕み犯すリンゴン(リンゴン)
再生するたび息吹き返す お前ねえねえ何して遊ぶの~?
いつだってクレイジーなエンシェントのエルフの数値
魂売るのは30回 対戦相手はすぐに死ぬ

サイゲームスのテストから海の向こう 蔓延する elf & elves & elven & Royal
調教済みの豚共は声上げろ 超越するwhich & Drugs & Rock & Roll

とっくのとうにプリンセスメイジ 逆らえない僧侶
フェアリーサークル※もリノセウスも場末のベルエンジェルも

無くてはならない 抜いてる奴クレイジー
根源と収穫祭よこせ
合法的なトビ方を心得よ

※フェアリーサーコーと発音し、フェは4拍子食いで入る事

 

気持ちいいことしよう

手札が大回転
さあ枯れない具合に手札をダンプしてプレイ
ソートの寄る戻す冥府下の方
手札に3枚異常でしょう?
後遺症残りそうな乙姫の業
寄り添っちゃ突き放すヴァンプの微笑

フォルテの返しで遊びましょう(1点)
ねえねえ何して遊ぶの〜?

One shot!

 

インアウトインインアウト
自然の導きでリノ回す

高めの打点でお死体積み上げます
ですから押し倒して乗ります

何点?二撃で8点 進化で10点 ゴブリンマウンテン
めちゃ強グロリノセウス
増やしたるビッチアス電話したウィスパラー

フェアリー ワンダエルフ でも 不安もわかるけどワンダエルフ
いつもはぐらかしてたぶらかして引く

カスカードの名は冥府!

この替え歌が出回ればshadowverseでエルフの使い方ムズいから誰か手取り足取りくれよんとか言ってる頭パーな女子高生達がシャドバ上級者達に体を売らずに済む・・・

お後がよろしいようで(二番は無い、なぜならアニメとかドラマのオープニングだって二番流さないでしょ、別に面倒くなったとかではなくそういう仕様なんです。)

9/19 3連休暇すぎたので誰も望まぬ二番が出来ました。

 

ポケ廃百匹一首のゲームデザイン考

ポケモーニング。

前書き

百人一首とのふれあい

先日知人氏が参加する百人一首大会を見学しに行ってきました。JS,JC,JKがバチバチに超反射ハイスピードバトルを繰り広げるさまは圧巻でしたし、その知人氏も一回戦を勝ってたのでなかなか見応えのある見学となりました。

色々見たり聞いたりする中で百人一首が持つ競技性の高さとか高尚さというか、んまあとにかく古来から積み重ねてきたゲームシステムとかセオリーなんかは非常に洗練され合理的であり他の対人競技と比較しても非常に優れてる面があるなあと、そう感じました。

とにかく百人一首は奥の深そうな面白そうなゲームです。最近は素潜りなりシャドバなりちょっと面白そうだなと思ったらとりあえずやってみてるチャレンジ精神旺盛なわたくしでございますのでちょっとやってみようかなと思った次第であります。

参入障壁の高さ

百人一首、勝負できるようになるまでには最低でも百首の上の句と下の句の関連を覚える必要があります。もっと詳しい話をすると下の句と対応する決まり字の関連なんですが・・・まあそこら辺興味のある方は一回見学しただけの僕なんかよりカルタ者様の方々が詳しいので他のサイトで勉強してください。

とにかく、万葉集?それ三葉虫とどっちが歴史古いの?古文?僕21世紀レペゼン現代人なんでね。というレベルで古典文学に興味のない私には百首を記憶する行為は超苦行です。というか苦行が透けてて結局覚えようともしてません。

きっとうら若き小僧だった時代なら余裕だったかもしれませんが、最早おっさんの手前、残される時間も限られている事を悟り始めた僕にとって、なかなかにヘビーな訓練を課す百人一首を始めるってのは、勇気の要る事であきらめざるを得ませんでした。

天啓

見学させてもらった大会の終了後、浦安で適当に知人氏達と飲んでいたのですが、その時に盛り上がった内容が今回のブログを書くきっかけとなりました。

あんまはっきり覚えてないんですが、百人一首やってみたいが~百首覚えるのが~今の内JSに唾つけれれば~ていう上述したような件をくだくだ話していた所

「オカエ氏、700匹居るポケモンの名前と形覚えてるし、レート頻出のポケモンならタイプと種族値覚えてるんだから、百人一首も同じようなもんでしょ」

みたいな話を振られ、 ああそうか、ポケモンの色、形、名称、属性値を覚えるのは上の句下の句と同じで1:1のデータをあてていく事だから一緒か・・・いや待てよ?上の句と下の句が覚えられない事が百人一首を始める障壁になってるなら我々が古来より記憶してる内容(ポケモン情報)を上の句下の句にしてしまえば障壁を超えて百人一首できね?しかもあの競技性の高さに足してポケモンというキャッチーさは鬼に金棒ちゃうか?

そう、小倉が過去の人になった瞬間である。(ただし小倉百人一首の小倉は苗字じゃなくて場所)

なんか面白そうなのでどういったゲームにするか考えてみることにしました。

概要を詰める

概要詰めるも何も、既存のゲームの組み合わせな訳でプロダクトする部分ほとんどなかったです。

ゲームの名称

ポケ廃百匹一首

買ってくれそうなターゲット層

ポケモンバトルに精通しており、かつ百人一首をやってみたいが百首覚えるところで挫折してしまった10-50代の男女

レート人口は多分10万人位いて、そのうちの百人に一人が興味を示してくれれば1000人・・・

ポケ廃向けっていう話題性により購買数爆増も有りうるのでビジネスチャンスとしては無くはなさそう。

ゲームルール

百人一首と基本的に同じとする、ただし読み手への要求事項は異なり、かるた風の風流な感じではなくアニメのオーキド風に詠む。

特殊ルールは出来るだけ作らない方向にしたい、が・・・

でもせっかくポケモンを題材にしてるので取った時に効果が発動する特殊な札(メガ進化札を取ったら追加で相手に一枚渡せるとか、ギルガルドを取ったら次のターン相手は札を取る手を逆にしなきゃいけないとか、キノガッサを取ったら次のターン相手はうつ伏せスタートとか、ガルーラ取ったら両手使えるとか)とかそういう体を使ったルール破壊要素があったら面白いかもしれん。

首数を考える(百匹への過程)

現在(2016/9/12)のポケモンの種類数は721種居る。そのため最初の内は七百二十一匹一首も考察していたが、以下の理由から百匹一首が妥当であると判断した。

・721匹分の種族値はさすがに知らない。

 僕の想像を遥かに凌駕する廃人の方はどうか知りませんが、基本的にレートに出ないような進化前、どマイナーポケモン種族値を把握している人はあんま居ないと思われるので百匹のレート頻出ポケモンで札を作るのがちょうど良さそうです。

百人一首のルールが百札前提で考えられている。

 詳しいルールは省きますが七百二十一首もあると百人一首のルールが破たんしオリジナルルールを設ける必要がありゲームルールの前提に反するのは厳しい。

上の句を考える

上の句はひとまず以下の内容と順番の構成がポケ廃向けになりそうです。

素早さ種族値

タイプ1

タイプ2

ほにゃららポケモン(ネズミポケモンとかのあれ)

ポケモンの名前

"皆もポケモン、ゲットじゃぞ"

何故素早さ種族値が最初に呼ばれるんやか?という点、ポケモンバトルにおいて素早さは非常に重要な要素であるため、他の種族値に比べ皆が覚えてる率が高いし、ポケ廃百人一首からポケモンバトルに参入する人にとっても素早さ種族値って重要なんだなあと言う刷り込みができる。

上にも書いたけど百人一首の上の句には決まり字っていう何文字まで読んだら下の句が確定する。っていう理論があるんだけど、それをポケ廃百匹一首でも似たような形で再現したかったのもあり、かぶりのあったりなかったりするS種族値を読まれる先頭に持ってきた。

たとえば70とかならニョロトノメタグロスキリキザン等結構いるのでタイプまで聴かないと札を取りに行けないが、S61ならバンギラスしかいないので読み手がオーキド風に「ロクジュウイ・・・」と読んだ瞬間にバンギ札を取れる。

下の句

下の句は見た目で判別出来ればいいのでポケモンの絵が描いてあれば十分でしょう。

百匹を選ぶ

ガブガルゲンアローニンフカイリュークレセボルトランドドランスイクンライコウエンテイエルフテラキルカリオマニュハッサムクロバトノグドラルンパサザンガルドギャラロトムバシャナットサンダーサルサマリルリラグキザンマンダバンギドリュブルンノオーシャンドサイジバコゴチルランクルスカポトドンクチヤミラミキッスリザバナゲッコウガガッサグロスドーブル・・・

上ので大体50匹位、100匹列挙はきついか?まじめにやるなら上の句と一緒にエクセルでデータ化すべき

 

とりあえずここまで決まればゲームとして体を為すかな?ルールと上の句はテストプレイでより良い物に出来そう。

後書き

たぶん完成したら一部に大受けすると思うんだけど、いかんせん企画力が足りない。行けると思った誰か氏ー全権委譲するんでコミケに出品しましょう。

知っておくと得するSQL

ハローワールド

今日はSQLのSELECT文について書いていきたいと思います。SQLって何だ?って人は日本人にとって共通言語は日本語、SEにとっての共通言語はSQL(ここでHTMLとか言うやつはSEというかWEBやってる人です。)みたいなものだと思ったりしてそっとタブを閉じてください。

SELECT文なんて大体同じ、だがたまに居る問題児

SQLってそこそこ業務系のプログラムやってればもう大体定型句みたいな感じで「あーはいはいこういう時はこういう奴ね」という感じでさくさくと書ける様になるもんですよね。(・・・僕は物覚えが悪いのか数ヶ月ぶりにINSERT書く時とかは毎度ググってますが)

なぜ定型句になってくのか?ってとこですが、そこら辺の企業の扱ってるデータの関連なんて大体がマスタトランとかヘッダ明細のモデルの組合せで9割以上が表現しきれてしまえるためです。

扱うデータが違えどデータの関連が似た構造になるので、どの企業のデータを扱っても「こういう奴ね」ってなって過去のSQLと同じような実装で対処できる訳ですね。

実際、RDB上手の人たちが受けるデータベーススペシャリストの問題も上述したマスタトラン、ヘッダ明細、たまに連関、位のリレーションの組合せによるデータ構造を例とした問題が殆どです。

なぜそこら辺の企業のデータ構造が大体「こういう奴ね」ってなるモデルに集約されてしまうのか、という話をし始めるとDOAとかデータベース正規化の話をしていかなければいけませんが、次に行きたいので省きます。

今回の記事はシステム開発を行なう上でたまーに居る「こういう奴ね」に該当しない1割弱のデータ構造をどうやってSELECTしていくかっていう話になります。

頻発しないせいかネットでググってもうまく業務要件に該当してるかわからんわけで、と言ってもググっても出てこないだけで脱初級者レベルの専門性ではあるんですが、日々しょうもないレベルの仕事を延々こなすIT土方にとってはアカデミックな専門書を読む時間もまま取れぬということで。

今回のケースですが、一緒に仕事してたおっさんが数週に渡り頭を悩ました結果ゴミのような処理に仕上げてしまいました代物です。知ってれば半日足らずで綺麗に解決出来たのに、知らないと時間と精神だけが削られて行くわけで、やはり無知は罪ですね。

そんな可哀想な人が増えないようここに解決法を書いておく事で一人でも多くの迷えるプログラマーを救いたいという思いです。

ケース1:階層構造型データ(隣接リストモデル)の検索

RDBってのは行列形式にデータを蓄積していく仕組みなんで、階層がいくつも重なる多次元的なデータモデルは扱いづらいってのが定説です、実際RDBで階層構造を扱うぜ!って話だけでクッソ分厚い技術書を1冊かけるらしいのですが、今回は階層構造型のデータの内、最もポピュラーらしい隣接リストモデルを用いたデータ構造の検索方法について述べていきます。正にこいつが知ってれば半日、知らんと数週間の初見殺しマンでした。

1-0:EMP表の説明

ではここからはscott/tigerのEMP表を例としてSQLの解説をしていきます。(注:scott/tigerはオラクルDBのデフォルトで入ってるスキーマ、ちなみにオラクルにはSQLを独自で拡張したCONNECT BY句とか言う超便利な文法がありこれから書く内容と同じことを超簡単なSQLで実装できるのでオラクラーの人はそっちでどうぞ)

EMP表、日本語で言うと社員マスタといったところです。この表が何故隣接リストモデルに値するデータ構造なのか?というところを軽く説明すると

外部キーとしてEMP表のプライマリーキー(上司の従業員番号)をデータに持ってるから

とか書いておけば情報処理の試験では○を貰えるんじゃないでしょうか?データの中身と様式は以下のような感じです。

従業員テーブル(EMP)

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
従業員番号(★) 名前 職種 上司の従業員番号(☆) 入社日 給与($) 歩合給($) 部署コード(☆)
7369 SMITH CLERK(事務員) 7902 80-12-17 800   20
7499 ALLEN SALESMAN(営業マン) 7698 81-02-20 1600 300 30
7521 WARD SALESMAN(営業マン) 7698 81-02-22 1250 500 30
7566 JONES MANAGER(管理職) 7839 81-04-02 2975   20
7654 MARTIN SALESMAN(営業マン) 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER(管理職) 7839 81-05-01 2850   30
7782 CLARK MANAGER(管理職) 7839 81-06-09 2450   10
7839 KING PRESIDENT(社長)   81-11-17 5000   10
7844 TURNER SALESMAN(営業マン) 7698 81-09-08 1500 0 30
7900 JAMES CLERK(事務員) 7698 81-12-03 950   30
7902 FORD ANALYST(アナリスト) 7566 81-12-03 3000   20
7934 MILLER CLERK(事務員) 7782 82-01-23 1300   10

 

http://replication.hatenablog.com/entry/2015/02/26/093000氏から引用しました。問題あれば消します。

こういう持ち方をしておけば常に階層の下位が一つの上位の階層をポイントできる(社長のKING氏は一番偉く上位がないのでnull)ため、階層構造、つまりこの例で行くと社員の序列を表現できてるということです。

今回は以下の要件に当てはまるSQLの実装を書いていきます。

・とある管理職が管理すべき社員を一覧したい(上位から下位への検索)

1-1:SQLの実装と概説

初めに断わっておきますが、DB2環境の業務に使ってるテーブル向けに書いたSQLをEMP表に読み替えて手書きで再作成したSQLです。手元にORACLEの環境もないので、動作確認もしてませんので動かなくても知りません。(ちなみに元のSQLもIBMknowledgecenterの奴を丸パクリ・・・つまり長ったらしく書いてるけど、URL張れば一発で終わってしまう内容である。)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

とある管理職の部下にあたる従業員番号を一覧するSQL

WITH REMP (PATH,LVL,MGR,EMPNO) AS
(SELECT EMPNO, 0,ROOT.MGR, ROOT.EMPNO 
  FROM EMP AS ROOT
  WHERE MGR = "とある管理職のEMPNO"
  UNION ALL
  SELECT CONCAT(PARENT.PATH,CHILD.PATH) , 
  PARENT.LVL + 1 ,CHILD.MGR,CHILD.EMPNO 
  FROM REMP AS PARENT, EMP AS CHILD
  WHERE PARENT.EMPNO = CHILD.MGR AND LVL <= 100
 )
SELECT * FROM REMP ORDER BY PATH

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

説明しやすいように色分けしてみました。結論から書くとSQLで実装された再帰処理ですね。階層構造は再帰的な形状をしてるので再帰処理で検索するのが筋です。

最初の黄色、WITH句でREMPというビューを定義してます。WITH句で先にビューを宣言しとくと後続でそのビューを参照できるって奴ですね。このREMPビューの検索内容が()内の緑と青になりますが、青の検索にWITHで宣言したREMPを使うため再帰的検索となります。

の検索は検索の始点です。とある管理者の直属の部下達が検索されます。

の検索ではREMP表とEMP表を結合させて、部下の部下達を検索します。検索した結果はREMP表に格納されていきそのREMPの内部では部下の部下の部下達を検索し・・・、と末端に辿り着くまで階層構造を検索します。

ここで注意したいのは俺の部下が実は俺の上司だった、つまり釣りバカ日誌的状況です。このようなデータがあると「俺だ、浜崎だ、俺の会社の社長は鈴木だ、呼んでくる。俺だ、鈴木だ、俺の釣りの師匠は浜崎だ、呼んでくる。俺だ、浜崎だ・・・」と再帰処理が無限に循環してしまうのでスタックオーバーフローを起こします。循環を起こさないために茶色を入れて深い階層が発生しないよう100階層までの検索で打ち止めにしてます。

ちなみにPATHというデータはとある管理職からとある従業員に至るまでの上下関係の変遷となります。イメージとしてはPCの絶対パスみたいなもんですね。これをデータとして持っておくと、別パターンの階層構造である経路列挙型モデルの実装にも応用が利くようになるんじゃないでしょうか。

終わりに

見出しにケース1とか連番振っておいて終わりかよ!って感じですけど。ケース一個で取れ高十分すぎたので終わり。このブログの記事は僕が終わりと思ったら終わる。そんなブログ。

冥府考

こんばんみ、今回はshadowverse最強カードの一角?である冥府への道を軸としたデッキ作成をする際に、なんとなく体系化できそうな部分があったので文書化を試みてみようと言う趣旨です。

冥府への道について

皆さんご存知かも知れませんが導入として簡単に冥府への道について触っておきます。

コスト4のアミュレットで、自ターンの終了時自分の墓場が30以上であれば相手リーダーと相手の全てのフォロワーに6点ダメージを与える。というのが冥府への道です。

つまり墓場を30以上にして場に出せばほぼ勝利条件だよ!みたいな事がこのカードには書かれていますね。

この事から相手の攻撃を凌ぎ生き延びる事、そして墓場を肥やす事、この2点が冥府デッキの基本戦略となります。

墓場を肥やす事

攻撃の凌ぎ方も勿論大事ですが、今回書きたい内容は冥府デッキの基本戦略の内、墓場を肥やす事についてです。

ライフポイントがある対人ゲームにおいて、相手を倒しきるまでのターン=キルターンと言うのは勝敗に密接に関係します。冥府デッキのキルターン≒冥府への道が機能するターン=墓場が30枚以上になるターンと言うところで、とにかく墓場を効率的に肥やせれば肥やせるほど冥府デッキのキルターンは短くなり勝てるデッキになっていきます。

shadowverseのルールでは墓場はいろんな方法によって肥えていきますよね。

戦場のフォロワ・アミュが破壊される、手札からスペルを唱える、手札上限枚数からカードを引く、手札を捨てる、墓場が増える効果が発動する。

大体こんなもんでしょうか、いずれにせよカードを切ってゲームをしていけば自然な形で墓場は肥えていくと思って良いでしょう。

効率的墓地肥やし方のススメ

墓地肥やしの評価

では墓場を肥やす効率とは、あるいは効率を評価する単位とはどの様に考えていけばいいでしょうか?

まず率と言う事なんで墓場の増える数が分子ってのはいいですかね、となると注ぎ込むリソースが分母に値するんですけど、shadowverseのリソースと言えばカードか、あるいはPPですかね、ならそれぞれで墓場の肥える数を割った率を便宜上HKPC(HakabaKoe Per Card)、HKPP(HakabaKoe Per Pp)として考える事が出来そうです。

今回はデッキ構築の話をするのでHKPC、HKPPにおける評価の単位はデッキの最小単位であるカードの種別単位としてで良さそうです。

墓場肥えの分子は以下で集計とします、フォロワーとアミュに関しては場に出た時点で墓場にカウントするのが単純で良いですね。

・戦場にフォロワをN体出す +N (いずれ壊されるとして計上、消滅と場持ちを考慮するなら9掛けとかでも良いが)

・戦場にアミュレットをN個出す 0 or 1(アミュ破壊は破壊されない体、ただし土・カウントはいずれ壊れるので1を計上)

・スペル +1

・カードをN枚引く +N * M ※Mは下に説明あるが、M = デッキ内平均HKPC

・手札をN捨てる +N

・墓場がN増える効果が発動する +N

 

いくつか実際のカードを例に挙げてみたいと思います。

墓場肥やし評価ケース1:ゴーレムの練成

PP2でスペル、効果でフォロワーが1体出るので

HKPC = (1+1) / 1 = 2、HKPP = (1+1) / 2 = 1

単純ですね、では次の場合も考えてみます。

墓場肥やし評価ケース2:雄大なる教え

PP2でアミュレット(土)1、1枚ドロー・・・ドローの期待値に関しては分子 = デッキ内平均HKPC、HKPPの分母 = デッキ内平均PPが正しい値となりそうですが、概算として2枚墓地が肥えるPP3のカードを固定で引くと考えると以下です

HKPC = (1+2)/1 = 3、 HKPP = (1+2)/(2 + 3) =3/5=0.6

ドロー系のカードは手札を経由するので、HKPCはデッキに依存し、HKPPは低い値を取る傾向になりそうです。では次

墓場肥やし評価ケース3:新たなる運命

PP2でスペル、残りN枚の手札を全て捨て、N枚ドロー、このNによって大きく値が変わりそうですが、基本は大きな値を取り得る状況以外ではバンバン使わないスペルなので手札上限枚数-2のN=6位が妥当でしょうか、ここは概算値すら出しづらいので妥協です。引いてる分捨てており、捨て分と引き分のカードは等価と考えるのでドローによる率の変動は無し、と考えれば以下となります。

>HKPC = (1+6)/1 = 7、 HKPP = (1+6)/2 =7/2=3.5

・・・前のカードを比べると脅威的ですね、つまり墓地を肥やすデッキは新たなる運命を3枚必ず入れろ!と言いたくなる程の墓地肥やしのエキスパートです。(実際にはPP2で手札1枚を消費して盤面に影響を及ぼしていないのでもう一つの基本戦略である攻撃を凌ぐ性能としては最低です。更に手札に2枚目が来ると完全死に札になるしで新たなる運命*3がマストと言う構築は僕は疑問視していますが・・・)

こんな感じで時にフレキシブルにデッキのカードのHKPCとHKPPを求めていき、それぞれの合計/40をすることでデッキ平均HKPCとHKPPが求まります。(ちなみにドローの絡むカードのHKPCは平均HKPCを参照してるので循環参照状態になってます・・・適当な初期値を与えて再帰で正しい値を求め続ければ漸化していくと思いますが・・・まあ上手い事やってください・・・結局はどんぶり勘定が大事です。)

ここからは求まった平均HKPCと平均HKPPから冥府デッキの速度を求めていきます。

平均HKPCの評価

求まった平均HKPCとは一体どういう数字でしょう?例えば構成するカード全てがゴーレムの練成であるデッキを考えると平均HKPCは2です。このデッキが墓地を30枚に満たすまでにかかるターン数は以下の式で求められますかね。

とあるターンにおける墓場の数 =  平均HKPC * とあるターンまでに得るカードの累計

30 = 平均HKPC(2) *(3.5※ + 冥府達成可能ターンA)

冥府達成可能ターンA = 30/平均HKPC - 3.5

※0ターン目平均初手(後手が2枚引くので)

冥府達成可能ターンA = 11.5

数式から見て、平均HKPCが高ければ高いほど冥府状態に辿り着くターンが短くなると言えます。

11.5は流石に遅いですかね。

平均HKPPの評価

かたや平均HKPPはどんな値でしょうか?もう一度ゴーレムの練成40枚デッキで考えてみると以下の数式で冥府ターンを考えられそうです(平均だから引きムラとかマナカーブとか気にしない)。

とあるターンにおける墓場の数 = 平均HKPP * とあるターンの累計PP

30 = 平均HKPP(1) * (冥府達成可能ターンB(1 + 冥府達成可能ターンB)/2)※

冥府達成可能ターンB = (1 ±√(1 + 240/平均HKPP))/2※※

※累計PP = 初項1、公差1、項数がターン数の等差数列の和

※※二次方程式の解

冥府達成可能ターン数B = 約7.25 

ゴーレムの練成はカード当たりの効率は微妙ですがPP当たりの効率で言えば中々の性能と言えそうです。ただしこちらはPP当たりなので毎ターンPPをフル消化する前提の値と言えますし中々そうは行かないと思いますが。まあ理論値なので良しとします。

冥府達成可能ターン

平均HKPCと平均HKPPから冥府達成可能ターンのA(カード供給的可能ターン)とB(PP供給的可能ターン)の理論値が求まりました。

このAとBの内、大きな値を取る方がその冥府デッキにおける平均冥府達成可能ターン≒キルターンといって良さそうですかね。

以上です。墓地肥やしの速度をある程度体系化出来たんじゃないかなと思ってるんですが、とはいえ机上の空論の域は出てないので、間違ってるところあったら指摘が欲しいところです。

まとめ

必死に書いといてあれだが、要はカード単位の墓場の肥やし方が相手の状況に左右されず不変的に求まるんで、ゲーム中のリソースで割ったら大体のデッキ速度求まるんちゃう?って話でした。多分ライブラリーアウトとかも同じ考えが適用できるんだろう

余談 

今思えばエルフで冥府を使ってた時はとにかく収穫祭のドロー枚数の定義がはげしすぎてHKPCは求められなかったろうし、求まったとしても相当大きい値を取り得るからHKPPが重要だったのかも知れんな

HKPPは毎ターンのPP余りとかをターン数算出時に考慮出来たらもっと良くなると思うし、HKPCは手札0で墓場に達するターン数だから、実際にはもうちょっとターン数は大きい値を取りえそう。汎化ってのは難しいもんですね。

次回

次回はHKPP,HKPCの考え方も交えながら攻撃を凌ぐという観点も考慮して作成した冥府ウィッチの解説をしていけたらなと思います。