Clojureで囲碁対局サイトを作ってみたい
Clojureで中規模なWebアプリ開発を個人プロジェクトとしてやってみたい。中規模のイメージとしてはTODOアプリ以上、eコマースサイト(これって死語?)未満。
というわけで、囲碁対局サイトを作ってみようと思う。
データベースは当然として、ユーザ認証、ウェブソケット、Clojurescriptを使った動的なフロントエンドあたりを盛り込んでいく。
LuminusやArachneのような、複数のライブラリを統合するようなフレームワークは極力使わず、ある程度低レベルなライブラリをいじりながら作る。
とりあえず使うのがほぼ決定なライブラリとしてはring, compojure, hiccup, garden, reagentあたり。re-frameはどうしよう。web socketはsenteを使うのもアリか。デプロイはとりあえずHerokuかなぁ。
作りたいものを思いつくままにとりあえず書き出してみると:
- 現在進行中の対局リスト
- 現在参加可能な対局リスト
- ログイン中のユーザリスト
- ユーザに対する対局申し込みと承認・拒否
- 対局ボードの対局・閲覧モード
- 終局後の判定システム
- 対局中・感想戦用のコメントシステム
- 過去の棋譜のログ閲覧とエキスポート機能
- 各種AI(まあ初めはGNU GoとFuegoあたり)の追加
- 自分の対局成績の閲覧と分析
- モバイル対応のレスポンシブデザイン(スマホだとタップ一回はズームとか?)
あとは自分でAI実装してみたり、詰碁やらの問題集機能をつけてみたり、と色々やれることは多そう。
まあボード実装してオープンソースAIにつなげればとりあえずは自分で使えるようになるから、そうやってモチベーションを維持してぼちぼちと進めていこう。進めていければいいな。