この記事の目的

オセロAIに使ったソースコードを公開します。ファイルを開いたときだけコードを読み込みます。

使用したモデル

  • Gemma 4 E4B(mlx-community/gemma-4-e4b-it-4bit): VLM サーバーの既定のモデルです。今は読み込みに失敗していて使われていません。
  • mlx-vlm: Apple Silicon でモデルを動かします。
  • ローカルAI: 学習したモデルではありません。ソースはアルファ・ベータ探索、公開中のWebは一手の重み付けAIです。
  • 学習したモデルはまだありません。

フォルダ構成

  • src: Qt6 C++ アプリ。ルールエンジン(othello_board)、探索AI(aiplayer)、VLM クライアント(tcpvlmclient)
  • vlm_server: OT88 TCP サーバー、ルール、Gemma 4 のダウンロード
  • othello-web: Next.js のWeb対局。ルールエンジン(board.ts)、探索AI(ai.ts)、対局の保存(db.ts)、VLM の中継(api/vlm/move、ot88Client.ts)

サーバーのデプロイ設定、監視・自動化スクリプト、対局データとログは公開範囲から除外しました。広告やほかのゲームの一覧のようなWeb運用のコード、設定ファイルも除いたため、一部の import は公開していないファイルを指しています。

全ソース

37ファイル · 5,381行 — フォルダを開いてファイルを押すとコードを読み込みます。

プロジェクトルート1ファイル
CMakeLists.txttext · 30行 · 677B

コードを読み込んでいます…

othello-web/19ファイル
othello-web/app/api/game/[code]/route.tstypescript · 56行 · 2KB

コードを読み込んでいます…

othello-web/app/api/game/route.tstypescript · 23行 · 801B

コードを読み込んでいます…

othello-web/app/api/vlm/move/route.tstypescript · 55行 · 1KB

コードを読み込んでいます…

othello-web/app/globals.csscss · 48行 · 864B

コードを読み込んでいます…

othello-web/app/layout.tsxtsx · 33行 · 954B

コードを読み込んでいます…

othello-web/app/page.tsxtsx · 71行 · 2KB

コードを読み込んでいます…

othello-web/app/play/page.tsxtsx · 689行 · 20KB

コードを読み込んでいます…

othello-web/app/play/play.module.csscss · 209行 · 3KB

コードを読み込んでいます…

othello-web/components/OthelloBoard.module.csscss · 111行 · 2KB

コードを読み込んでいます…

othello-web/components/OthelloBoard.tsxtsx · 85行 · 3KB

コードを読み込んでいます…

othello-web/lib/ai.tstypescript · 145行 · 4KB

コードを読み込んでいます…

othello-web/lib/board.tstypescript · 209行 · 5KB

コードを読み込んでいます…

othello-web/lib/db.tstypescript · 190行 · 6KB

コードを読み込んでいます…

othello-web/lib/gameTypes.tstypescript · 42行 · 798B

コードを読み込んでいます…

othello-web/lib/guest.tstypescript · 43行 · 1KB

コードを読み込んでいます…

othello-web/lib/ot88Client.tstypescript · 181行 · 5KB

コードを読み込んでいます…

othello-web/lib/renderBoardPng.tstypescript · 106行 · 3KB

コードを読み込んでいます…

othello-web/lib/vlmClient.tstypescript · 103行 · 3KB

コードを読み込んでいます…

othello-web/package.jsonjson · 22行 · 489B

コードを読み込んでいます…

src/11ファイル
src/aiplayer.cppc++ · 167行 · 5KB

コードを読み込んでいます…

src/aiplayer.hc++ · 17行 · 334B

コードを読み込んでいます…

src/boardwidget.cppc++ · 205行 · 7KB

コードを読み込んでいます…

src/boardwidget.hc++ · 48行 · 1KB

コードを読み込んでいます…

src/main.cppc++ · 26行 · 784B

コードを読み込んでいます…

src/mainwindow.cppc++ · 785行 · 27KB

コードを読み込んでいます…

src/mainwindow.hc++ · 110行 · 3KB

コードを読み込んでいます…

src/othello_board.cppc++ · 211行 · 5KB

コードを読み込んでいます…

src/othello_board.hc++ · 99行 · 3KB

コードを読み込んでいます…

src/tcpvlmclient.cppc++ · 469行 · 15KB

コードを読み込んでいます…

src/tcpvlmclient.hc++ · 73行 · 2KB

コードを読み込んでいます…

vlm_server/6ファイル
vlm_server/__init__.pypython · 3行 · 69B

コードを読み込んでいます…

vlm_server/__main__.pypython · 92行 · 3KB

コードを読み込んでいます…

vlm_server/download_gemma4.pypython · 68行 · 2KB

コードを読み込んでいます…

vlm_server/othello_rules.pypython · 92行 · 3KB

コードを読み込んでいます…

vlm_server/requirements.txttext · 7行 · 195B

コードを読み込んでいます…

vlm_server/server.pypython · 458行 · 15KB

コードを読み込んでいます…