1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【プロトタイプ】GCP上で動作するオンライン将棋アプリ

1
Posted at

GCP上で動作する、本格的なオンライン将棋アプリケーション


✨ アピールポイント

⚡ Go による高パフォーマンスバックエンド

バックエンドには Go 1.23 を採用。Goのgoroutineによる軽量な並行処理で、数百の対局セッションを低メモリ・低レイテンシで同時にさばくことができます。JavaやPythonと比較してメモリ効率が高く、Cloud Runのコールドスタート時間も最小限に抑えられます。


🧠 将棋AIエンジンに「水匠5.7」を採用

本アプリのAI対戦エンジンには、コンピュータ将棋界のトップソフト 水匠(すいしょう) の評価関数ファイル(v5.7)を使用しています。

  • 藤井聡太・渡辺明など、プロ棋士も棋譜解析に使用する実力派エンジン
  • 世界コンピュータ将棋選手権・電竜戦で複数回の優勝実績を持つ強豪ソフト
  • やねうら王の探索部(USIプロトコル)と組み合わせたNNUE(深層学習系)評価関数を採用
  • 10段階のレベル調整により、初心者から上級者まで幅広い対局体験を提供

🔥 Firebase × Firestore によるリアルタイムマッチング

待機部屋システムはすべて Firestore のリアルタイムリスナー で実装。ポーリング不要で、対戦申請や承認の通知が即座に全クライアントへ伝播します。

  • 待機ユーザーは TTL 10分で自動クリーンアップ。古くなったデータが残らない設計
  • ブラウザを閉じた瞬間に WebSocket切断を検知し、待機リストから即座に削除
  • 対戦申請〜両者合意〜対局URLへの自動リダイレクトまでをシームレスに実現

🗄 データ特性に応じたハイブリッドDB構成

データ 使用DB 理由
ユーザー情報・戦績・棋譜 Cloud SQL(PostgreSQL) 永続性・整合性・統計クエリ
待機リスト・マッチング・セッション Firestore リアルタイム同期・TTL・一時データ

1つのDBに無理に集約せず、データの性質に合わせて最適なDBを使い分ける設計により、スケーラビリティと保守性を両立しています。


🔐 Firebase Authentication + 2FA 対応

  • メール+パスワード認証に加え、TOTP(Google Authenticator等)による2段階認証をユーザーが任意で設定可能
  • すべてのAPIリクエストはサーバー側で Firebase JWT を検証。フロントエンドの認証情報をそのまま信頼しない設計

♟ サーバー側での厳密な将棋ルール判定

不正操作を防ぐため、すべての指し手はサーバー側でバリデーションしています。

  • 二歩・打ち歩詰め・王手放置などの反則手を自動検出
  • 成り・不成の選択、強制成りの判定
  • 詰み・投了による自動終了処理

🏗 CI/CDパイプライン(Cloud Build × Terraform)

  • GitHub main ブランチへのpushで Cloud Build が自動起動
  • ビルド時に ユニットテストを自動実行し、テストレポートをCloud Storageへ保存
  • AVX2バイナリの存在チェックをCIに組み込み、誤ったバイナリのデプロイを防止
  • インフラは Terraform で IaC 管理。Cloud Run・Cloud SQL・Firestore・Artifact Registry をコードで定義

📱 レスポンシブ対応UI(React × Tailwind CSS)

  • PCでは盤面横に情報パネル、スマホでは縦積みレイアウトに自動切り替え
  • 駒選択時に移動可能範囲を半透明の矢印でガイド表示
  • Framer Motion によるなめらかな駒移動アニメーション
  • 駒を置く効果音など、将棋の臨場感を演出するUI/UX

🛠 技術スタック

領域 技術
バックエンド Go 1.23 / gorilla/websocket / Firebase Admin SDK
フロントエンド React / TypeScript / Tailwind CSS / Framer Motion / Zustand
認証 Firebase Authentication(TOTP 2FA対応)
データベース Cloud SQL(PostgreSQL 15)/ Firestore
AIエンジン やねうら王(USIプロトコル)+ 水匠5.7評価関数
インフラ GCP / Cloud Run / Firebase Hosting / Cloud Load Balancer
CI/CD Cloud Build / Artifact Registry / Terraform
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?