GitHub人狼 -- みんなでプログラムを書いてカジュアルに遊びたい!
目的
本記事の目的は,みんなでプログラムを書いてカジュアルに遊ぶためのパーティゲーム「GitHub人狼」を提案することです. 以下では,このゲームの遊び方,提案の背景,期待する効果,懸念点について説明します.
遊び方
ゲームの概要
「GitHub人狼」は,ソフトウェア開発プラットフォーム「GitHub」を利用するゲームです.開発チームに紛れ込んだ「人狼」の妨害を回避しながら「村人」達が成果物を完成させることを目指します.
- 参加人数:3人以上
- 所要時間:2時間以上
勝利条件
「村人」と「人狼」の勝利条件を以下に示します.
村人の勝利条件は,開発するべき成果物の「仕様」が定義されており,かつ,以下が全て満たされることです.
- 最終的な成果物が実行可能である.
- 定義した全ての仕様が実装されている.
人狼の勝利条件は,開発するべき成果物の「仕様」が定義されており,かつ,以下のどちらかが満たされることです.
- 最終的な成果物が実行可能でない.
- 定義した仕様のうち実装されていないものがある.
勝利条件が満たされない場合またはルール違反をした場合には敗北となります.
ゲームの流れ
ゲームは以下の流れで進行します.
- 仕様定義
- リポジトリ作成
- ロール決定
- 開発
- 成果発表
仕様定義
開発チーム内で相談し,開発するべき成果物の「仕様」を定義します. 仕様は,成果物に実装するべき動作についてスライドなどにまとめます. 仕様定義に割くことのできる時間は,あらかじめ決めておきます.
リポジトリ作成
GitHub上で開発チームのリポジトリを作成し,メンバーはそれぞれフォークして開発環境を整えます.
ロール決定
開発チームを構成するメンバーそれぞれのロールを決定します. ロールは「村人」と「人狼」のどちらか1つをランダムに割り当てます. ただし,村人の人数が過半数以上となるようにします.
開発
村人は定義した仕様を満たすプログラムの実装を進め,人狼はこれを妨害します. 具体的には,以下の手順を繰り返します.
- 開発チームのメンバーはそれぞれプログラムを書く.
- プログラムを書いたメンバーはプルリクエストを送る.
- プルリクエストに対し,メンバーはマージするかどうかについて匿名で投票する.
- 投票でマージの得票数が過半数以上になった時,プルリクエストをマージする.
開発に割くことのできる時間は,あらかじめ決めておきます.
成果物発表
開発チームのメンバーは互いにロールを公開し,成果物発表を行って勝利条件を確認して勝敗を決定します. 成果物発表では,村人は成果物発表を行い,成果物が実行可能であることおよび全ての仕様が満たされていることを示します. 人狼は,成果物が実行可能ではないことまたは満たされていない仕様があることを指摘します.
オプショナルルール
- 人数に余裕がある場合はゲームマスターがいても良いです.ゲームマスターは,時間管理,ロール決定,票の収集,過半数の得票があったプルリクエストのマージ,勝利条件の確認を行います.
- 全ての人狼が合意した場合,投了した上で開発に協力することができます.この場合,村人は勝利となり,人狼は敗北となります.
- GitHubを利用するのではなく,GitBucket,GiteaまたはGogsなどを利用しても良いです.
提案の背景
私は,自分が所属するプログラミングサークルにおいて,以下のような部員同士の交流に関する問題を解決し,プログラミングに触れながらカジュアルに交流したいと考えていました.
- プログラミング:それぞれの興味がバラバラで個人プレーになりがちである.
- 勉強会:コミュニケーションが一方的になりがちで,なかなか盛り上がらない.
- チーム開発,ハッカソン,競技プログラミング:ハードルが高く,カジュアルじゃない.
- 麻雀,人狼,AmongUsなどのパーティゲーム:交流はできるが,そもそもプログラムを書かない.
そして,共同開発に人狼やAmongUsのような駆け引き要素を取り入れることはできないかと考えた結果,上の「GitHub人狼」を思い付きました.
期待する効果
「GitHub人狼」で遊ぶことにより,以下の効果が期待できると思います.
- プログラミングを通してカジュアルに交流できる.
- プログラミングをパーティゲームとして楽しめる.
- スキルに差があってもゲームとして成り立つ.
- 共同開発っぽい体験ができる.
- プログラミングとGitの練習ができる.
懸念点
以下の懸念点が挙げられます.
- プログラミングとGitの基本スキルが必要となる.
- 仕様が曖昧だと勝敗も曖昧になってしまう.
- 現状ではテストプレイが不十分である.
遊んでみた感想
遊んでみてから書きます.