BGA「花火(Hanabi)」の基本戦略

この記事は主に A WINNING HANABI STRATEGY の翻訳で、文中の図もすべて同記事の引用です。

BGA(Board Game Arena) でプレイできるボードゲーム『花火(Hanabi)』の入門的な戦略についてまとめました。元になったボードゲームの作者はアントワーヌ・ボゥザで「ドイツ年間ゲーム大賞2013」に選ばれています。

右捨て左出し

BGAにおいては常に新しいカードが左から右に並びます。 つまり左端が最新のドローカード、右端が捨てられやすいチョップカードです。 ヒントがなければ右端から捨てて、ヒントをもらったら左端から出す。 これが花火の基本戦略になります。

右端から捨て、左端から出す

2枚ヒント

基本のヒントは「次に出せる1枚」を指定しますが、それだけではパーフェクトに届かないのが『花火』というゲームです。 「次に出せる2枚」を一気に指定するヒントを目指しましょう。

下の3種類は「次に出せる1枚と他1枚の色と数字」を一気に伝えられる高度なヒントです。

Finesse(技巧)

下の場面でアリス(A)はFiness(技巧)と呼ばれる「2枚ヒント」を出せます。

Finesseの例

手番のアリスはボブ(B)の左端の黄2に気づきます。ここでボブの左端の1枚に色ヒントを出せば「1枚ヒント」です。ボブは迷わず出せるでしょう。

しかし上級者のアリスはチャーリー(C)が黄3を持っていることに気づいて、そちらに色ヒントを出すことにしました。これが「Finesse(技巧的な2枚ヒント)」です。

このヒントが成立するには、チャーリーの黄3にヒントが出されたことにボブが首を傾げる必要があります。今すぐに出せないカードになぜ色ヒントを出したのか? もしかして自分の手札の左端に黄2があるのではないか。

そう確信したボブは黄2を出し、チャーリーが黄3を出して、ゲームをスピーディに進められました。

Reverse Finesse(逆の技巧)

同じ状況で手番がボブ(B)だった場合、Reverse Finesseという2枚ヒントを出せます。

Reverse Finesseの例

ボブはアリス(A)が緑3、チャーリー(C)が緑4を持っていることに気づきます。単純にはアリスに「1枚ヒント」を出せばいいでしょう。でももっと効率的にプレイできると考えて、ボブはチャーリーの緑4に色ヒントを出しました。

チャーリーは考えます。今もらった緑ヒントに従って緑3として出そうか。でも周りを見渡すとアリスも緑3を持っています。ボブはそれを知っているのに自分に緑ヒントを出したことになりすこし不自然です。

この緑ヒントはアリスに「左端は緑3」だと教えるFinessであり、かつチャーリーに「指定したカードは緑4」だと教えるReverse Finesseなのだとチャーリーは深読みします。

ここまでをチャーリーとアリスが確信できればアリスは左端の緑3を出し、次巡にチャーリーが緑4を出すことができます。

いかにも高度なヒントでありボタンの掛け違いで間違いが起きそうですが、決まれば気持ちよさそうですね!

Bluff(はったり)

さらに同じ状況で手番がチャーリー(C)だった場合、Bluffという2枚ヒントを出せます。

Bluff の例

チャーリーはアリス(A)とボブ(B)の手札を眺めて、ボブの赤3に色ヒントを出しました。

アリスはFinesseにより自分の左端が赤2だと考てプレイします。しかし実際には緑3でした。

ボブはチャーリーのヒントとアリスのプレイを注意深く観察して、自分の赤3に色ヒントが出されたからこそアリスはFinesseと勘違いしてプレイしたのだと推測しました。これを赤3として覚えておこうとボブが思えれば2枚ヒントの成功です。

3枚ヒント

ヒントや行動を組み合わせることでさらなる効果を狙うこともできます。

Free Discard(ただ捨て)

下の状況で手番がアリス(A)だった場合を考えましょう。アリスはすでにヒントをもらって黄4であることを確信しています。このまま出せばOKですね。

Free Discardの例

しかし、とアリスは気づきました。ボブ(B)もまた左端に黄4を持っている。うまくやればこのことを伝えられると考え、アリスは自分の黄4を捨てることにしました。

それを見ていたボブはびっくりします。出せるとわかっている黄4を捨てるなんてアリスはなにを考えているんだ! そしてすぐ冷静になりました。他に誰も黄4を持っていないということは、ボブ自身がそれを持っているというメッセージではないか。

そう考えてボブが左端の黄4をプレイできれば Free Discard の成功です。アリスは出せるカードをただ捨てすることで、ボブからカードを引き出すことができました(追加で不要カードを1枚捨てられた分だけお得です)。

Finesse からの Free Discard

同じく下の状況でボブの手番だとします。

Finesse からの Free Discardの例

ボブはアリス(A)に青3に数字ヒントを出して、チャーリー(C)にFinesseを伝えます。チャーリーは左端の青2をプレイする……代わりに、それをただ捨てします。

アリスは少しびっくりしますが、ボブとチャーリーの手札を眺めて、チャーリーが Free Discard をしたことに気づき、左端の青2をプレイします。この高度な連携が成功すれば、ボブは一つのヒントで3枚のカードを伝えられます!

ただこの状況の場合、チャーリーは自分の手札がわからないのでボブが Bluff で自分の左端が白2であることを伝えようとしている可能性を捨てきれません。ちょっとした賭けです。

Color Finesse(色の技巧)

さらに同じく下の状況でボブ(B)の手番だとします。

Color Finesseの例

ボブはアリス(A)が青を3枚も持っていて、しかもそのまま順番に出せることに気づきます。そこでアリスに青の色ヒントを出しました。

チャーリー(C)はそれを見て、さらにアリスに4の数字ヒントを出します。

アリスは3枚の青カードがあり、右端が青4だとわかっています。右捨て左出しの法則から左端が青2だと推測でき、さらに青4のヒントをもらったことで間に青3があることを推察できます。

2ヒントで3枚のカードを明らかにできるのはなかなかのものです。

もっと知りたい人に

H-Group Conventions に大量の戦略(テクニック)がまとめられています。

BGAにはフィネス(Finesse)を知っている人用のテーブルも立てられていますので、興味のある人は参加してみてください。

BGAのコンベンション(2023/7/22)

BGAで花火のテーブルを立てるとき選べるコンベンション(約束)の一覧です。 公式の説明はなかったのでリンク先はバラバラです。

「当ブログのアクセス解析」

前文

Qiitaやteratail、DocBaseTwitterなど書く場所が広がるとブログは放置しがちですよね。 アウトプットすることの意味は常に意識しつつも、それを一般公開の長文でやるかは人生のフェーズによる感じはあります。

ところではてなブログからは、毎月100アクセスを超えたという通知が来ていました。なにも更新してないのに人は来るものだと思っていましたが、どんなキーワードでアクセスがあるかを見てみたら面白かったです。

アクセス解析

下のように「バッチファイル」が熱いですね。「プエルトリコ」や「極限脱出」などは息が長いのと情報源が少ないのとで、月に数人が見ているのかもしれません。

f:id:firedfly:20210630184005p:plain
アクセス解析

f:id:firedfly:20210630183715p:plain
アクセス解析

これから

転職して、会社支給のマシンがMacBook Proになって早2年。バッチファイル、AHK、そんなものもあったねと遠い目をしてしまいますが、MacにもシェルスクリプトやBetterTouchToolやAlfredがあります。マシンが壊れないうちに、カスタマイズの記録と整理をかねて記事を書きましょう。

セキュ塾「ホワイトハッカー育成コース」

セキュ塾「ホワイトハッカー育成コース」を修了したので感想を。 なお私はアプリケーションエンジニアで、業務用のフォーム・Webアプリを作ってそろそろ九年です。

1年間のハンズオン

本コースは土曜の10時から(後半は15時から)受けられるハンズオン(体験学習)。 全体としては3時間×3回×12ヶ月=108時間。大学なら10単位ぐらいとそこそこの負荷です。 月2万円のリーズナブルな月謝制と、毎回CTF(早解き競争)を実施するのが訴求力の高いポイント。

100時間で「未経験からエキスパートを育てる」は言い過ぎで 真面目にやればセキュリティエンジニアの入り口には立てるかな、という程度。 それでも自分の好きな分野が見つかれば、そこから独習で深めていくことは十分に可能です。

セキュリティ一本槍

ホワイトハッカーにテーマを絞ったことで サイバーセキュリティ関連の技術を学べるコースとして なかなか実が詰まっていたな、というのがわたしの実感です。

カリキュラムを見るに、セキュリティエンジニアの専門学校に行っても プログラミングやDB、サーバやネットワークなどエンジニアの知識を学ぶのがメインで バイナリ解析やシェルコード、OSINTやフォレンジックなど高度な領域は深く学べないと思います。

CTF

用意された問題を一斉に解いて早さを競う(CTF: Capture the flag)という ハッカーコンテストの文化がセキュリティ界隈にはあるのですが、 これを授業に取り入れているのが本コースの特徴です。

講義、CTF、解説の三段構成なので 集中して聴くし、周辺知識も進んで学ぼうとする。 3時間でもダレずに勉強してられるというはなかなかに希有です。

問題は歯ごたえがあり、そうそう全問は解けない上に リアルタイムで全員の状況が見えるので、つい本気で競い合ってしまう。 がんばった分だけ解説も沁みるし、悔しくて復習も捗るしで、すばらしい教育システムと思います。

難度と脱落率

体験者のブログに「脱落率50%」とあり覚悟していましたが、 終わってみればそこまで突き放した難度ではなかったです(脱落率も20%くらい)。 カリキュラムやPC環境をどんどん改善しているという話も聞きました。

私の場合、講義内容を理解してまとめ直すのに毎週3時間は復習が必要でした。 解くのに環境がいる問題もあり、2時間まで居残りできたのはありがたかったです。

アセンブリ言語通信プロトコルなど 素養がない分野だと時間が何倍もかかりますから、 業務が忙しかったりすると心が折れてしまうかもしれません。

今後について

これだけでセキュリティを仕事にできるかというと辛そうですが 需要は増える一方なので、若さや熱意があれば就職もじゅうぶんに可能そう。

わたし自身は直接はセキュリティとは関係のない仕事をする予定ですが いろんな形の脆弱性を知れたこと、コンピュータの基礎を深く広く学び直せたこと、 ハッカー文化に触れられたこと、継続して勉強できたことなど、満足のいく1年間でありました。

Gigazine のRSSフィードをフィルタリング

概要

GigazineRSSフィードは全部入り

ニュースサイトGigazine には毎日20件ほどの投稿があり、記事は約30のカテゴリ1 にわけられています。ただし提供されているRSSは全記事・全カテゴリを配信するものしかありません。

不要なカテゴリはフィルタリングしたい

全方位的に興味のある人もいるでしょうが、カテゴリを絞ってRSSリーダーで受け取りたい人もいます。そんなの簡単だろ……と思いきや少し苦労したのでメモっておきます。

Feed Rinse で解決した

RSSの実体はXMLでcategoryというタグが公式にあります2Gigazineもそれに則っているのですがRSSフィルタサービスの方でcategoryに対応したものがありません。 試行錯誤の結果、Feed RinseというサービスでRSS 2.0postを条件にするとうまく行きました。

f:id:firedfly:20180831152933p:plain

Feed Rinseの使い方は「Feed Rinse」でRSSフィードから特定のキーワードでフィルタリングした記事を取得・除外するなどをご覧ください。

以下は試行錯誤メモです。

Feed Rinseではbodyを選んでもうまくいきましたが、tagでは駄目でした(postとbodyの違いは……)。 siftrssはタイトルと概要しかフィルタ条件にできずマッチしません。RSSフィードフィルタもタイトルしか選べません。それぞれシンプルなよいサービスなので適材適所ですね。

またATOMはRSS2.0よりシンプルで好きな形式ですが3、Feed Rinseではうまくマッチしませんでした。


  1. 2018/08/31時点で28カテゴリ。ピックアップ、ヘッドライン、レビュー、取材、インタビュー、試食、モバイル、ソフトウェア、ネットサービス、ウェブアプリ、ハードウェア、乗り物、サイエンス、生き物、動画、映画、マンガ、アニメ、ゲーム、デザイン、アート、食、メモ、セキュリティ、お知らせ、コラム、メンバー限定、広告。

  2. 参考:RSS 2.0 Specification 日本語訳 - futomi's CGI Cafe

  3. 参考:RSS1.0,RSS2.0,ATOM のフォーマット・仕様・構造

まとめ

コーチングはコミュニケーション技法のひとつであり、社長に対するビジネスコーチングなど、コーチングする側に解答がないでも適用可能という点に感銘を受けた(それは占い師やカウンセラーがやっていることだ)。

傾聴と承認によって信頼関係を築き、問題と解決方法を明確化して、自主的な行動を引き出すというプロセスは建設的なコミュニケーションの基本でもある。

信頼せず、相手を否定し、問題を決めつけ、方法を押し付けて、責任を取らない、というようなアンチコーチングをしないようまずは気を付け、傾聴や質問の精度などコミュニケーションの各スキルに気を配っていきたい(特に奥さん相手とか!)。

各段階における指導法

ティーチングは初心者相手に基本行動を「指示する」のに向くが、指示がなければ動かない依存的関係を作りやすい。

コーチングは中級者の応用行動を「支援する」のに向き、依頼するだけで動く自立的関係を作りやすい。

その先には上級者の習熟行動に「委任する」フェイズとなり、コーチングもほぼ不要となる共働的関係となる。

ティーチングとの比較

ティーチング(teaching)はティーチャーが相手の問題を分析し、適切な解決方法を示し、それを実行させる手法であり、相手以上に相手の問題に精通している必要がある。

コーチングにおいてはコーチは相手の専門分野などをまったく知らなくとも、相手が抱えている問題を明確化し、相手の考えている解決策を引き出し、並べさせ、相手が最適と思っているものを実行させることができる。

抱えている問題を打ち明けさせる信頼とそれを心から承認する前向きな態度、そして相手のやり遂げる力に任せて、結果に対する責任を約束することで相手の自主性を開花させることに、コーチングの本質はある。