この記事はN高等学校 (2) Advent Calendar 2020の後出しじゃんけん24日目です。
N高を去年卒業(2期生)して、東京理科大学の理工学部 数学科に今年入学した@kakudo415と申します。
8年の不登校期間を超えて、ついに大学でのリアル授業だと意気揚々としていたらパンデミックの影響でほぼ全ての授業がオンラインになってしまいました。その中で生まれた不便を解消しかけた話を書きます。
なぜ作るか
理科大の人気授業(多分)に「囲碁で養うコミュニケーション力」があります。
本来は教室に行って実際に対局をするのでしょうが、このご時世でそうもいかなくなってしまいました。
少なくとも僕が受講した前期においては、全てZoomと画面共有した棋譜ソフトによって授業が行われていて、ブレークアウトルームに分かれた学生同士が口頭で打ちたい手を相手に伝えると言った状況でした。
作る
世の中には既にいくつもの素晴らしい対局サイトがあります。にもかかわらず、あえて不便な方法を取っているということは大学という組織で利用することの面倒さ(手続きとか)などがあるのだろうと思いました。ならば、学生が作ったサービスなら使ってもらえるだろうと思ったわけです。
何で作るか
僕のスキル的にWebアプリ一択でした。2021年はネイティブアプリにも手を出したいものです。
GoでいくつかしょうもないWebサービスを作ったことがあったので、自信満々で作り始めました。
サービスの概要
学生同士がただ対局できればそれで良いので、それ以外の機能をなるべく省きました。
具体的には、個々の対局にIDが振られていて、対局作成時に自動生成されるパスワードを入力することで対局に参加できるようにしました。パスワード無しに対局にアクセスした場合は石を置くなどの操作ができないようにして、観戦ができるようにしました。
対局はWebSocketを使って実装しました。囲碁のようなボードゲームでWebSocketを使うのは過剰だと思いますが、サーバー側からクライアント側への通信を簡単に行いたかったので使うことにしました。
実装
以下のような順に作っていきました。全てが整わないと動かないようにするのではなく、それぞれの段階である程度の動作が確認できるようにしました。
- 簡単なフロントエンドUI
- 対局作成UIとハリボテAPI
- 石を置くなどのフロントエンド(通信なし)
- フロントエンドからの通信を受け取れるように、ハリボテAPIを本実装
- バグ潰し + リファクタリング
https://github.com/kakudo415/online-igo
(現在進行形で動いているサービスのコードを公開するのは少し気が引けますね。セキュリティ上マズいことなどあれば教えてください)
できた
しかし
担当の教授の先生にメールをお送りしたところ、授業の中でサービスを発表する機会を頂きました。
残念ながら、不便さが生むコミュニケーションもあるらしく授業での採用は見送りとなってしまいました・・。(先生が付けた注文の全てに応えられなかったというのも大いにあると思います。)
ニーズがあるか事前に把握しようというのが教訓ですね。(とはいえ提案するには動くプロトタイプが必要というジレンマ)
終わりに
2枚目のAdvent Calendarが埋まってないので、卒業生のみんなでがんばって埋めましょう!!!
明日(今日)はK4133さんの「僕自身今年一年プログラミングをやってみた学び、振り返りをします。」です!お楽しみに!
N高等学校 (1) Advent Calendar 2020
N高等学校 (2) Advent Calendar 2020