Upgrade to Pro — share decks privately, control downloads, hide ads and more …

形四のWebアプリ作ってみた

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 形四のWebアプリ作ってみた

2026.02.21 デジもく会 での発表

Avatar for 西村 備山

西村 備山

February 25, 2026

More Decks by 西村 備山

Other Decks in Technology

Transcript

  1. 既存の形四アプリ 「形四96番勝負」 by @dnjiro さん Android / Chromebook 版(Google Play)

    Windows版 (keishi96w.zip) Mac版 (keishi96m.zip) Amazon Fire タブレット版(Amazonアプリストア) X68000 Z版(kc96x.zip)
  2. Webアプリ版も作ってみた • UIは JavaScript で記述 • 思考エンジンは Rust で記述 •

    Rust → WebAssembly にビルド • ネイティブアプリと遜色ない速度
  3. ネット対戦機能がほしい • 人間 VS 人間 のネット対戦 • ソフト vs ソフト

    のネット対戦 • 通信仕様どうする? • サーバどこに立てる?
  4. 高速化の工夫 • ミニマックス法 → アルファ・ベータ法 (アルゴリズムの改良) • 二次元配列 → ビットボード

    (データ構造の改良) • 動的なオブジェクト生成をなるべく減らす • 無駄に同じ計算を繰り返さない。(メモ化)
  5. 静的評価関数 自乗形四率 (Square Keishi Rate) を以下のように定義 4つの石の座標を P i =

    (x i , y i ) (i = 1, 2, 3, 4) とする。 相互の距離の自乗は D(P i , P j ) = (x i – x j )2 + (y i – y j )2 その最大値を D max 、最小値を D min とするとき 自乗形四率 k = D min / D max は 0 < k ≦ ½ であり、 四点が正方形をなすとき k = ½ となる。 どれだけ正方形に近いかの簡易な指標となる。
  6. ヒューリスティック • 「必殺形」全30パターン (トリプル中パンチ) • 「恐怖系」全12パターン (大パンチ + ダブル中パンチ) •

    これを評価関数に取り入れるのは… • 判定処理が面倒すぎて断念。 ( パターンは 回転、反転、平行移動 もありうる )