はしがき
2023年12月2日、バンダイナムコスタジオ様が開催された『サーバーエンジニア編「Go 言語でゲームサーバーを作ろう!ゲームサーバー API プログラミング ワークショップ」』に参加してきました。
本記事では、参加レポートを記述します(ほとんど個人的な感想です)。今後、同社のインターンやワークショップに参加を検討されている方の参考なればと思います。
ちなみに、リモートで1日の開催です。
- 参考
全体的な感想
参加した理由
日常的に書いている言語がGoであったため、「Go言語のワークショップ」という言葉に惹かれ、気づいたらエントリーしていました。また、SQLやコンテナといった技術も勉強したことがあり、このワークショップに参加すれば成長できそうと考えました。
当日の流れ
当日は「Gather」というサービスを使用しました。Gatherは、RPGっぽいマップ上を移動して会話ができるツールです。マップ上には、全員が集まれる場所以外にも、一対一で話せる場所や4人程度で集まれる場所もたくさん用意されていました。
ワークショップは10時から開始でしたが、トラブルで遅れて10時30分からとなりました(本当にお疲れ様です)。最初に会社説明があり、次にワークショップ内容の説明がありました。その後、休憩を挟みながらコードを書き、最後に質疑応答と懇親会を行って終了しました。
実習では3人から4人ごとに分かれ、Gatherのプライベートエリアに入って作業をしました。私のグループでは、学生間での会話も少しありましたが、基本的には黙々と作業する雰囲気でした。定期的に講師の方がプライベートエリアに入って進捗確認や質問の対応をしていたので、その場で質問しやすい雰囲気だったと思います。
内容
今回は、ワークショップ用に簡素化された「ミスタードリラー」を使用して、WebAPIサーバーの実装を行いました。具体的には、ブラウザ上で動作するゲームからHTTPのリクエストを受け取り、処理を行った結果をレスポンスとしてブラウザに戻す、といったプログラムを書きました。そのため、JSONやHTTPレスポンスステータスコードについて知っていると、コードの理解が捗ると思います。
機能としては、ゲームリザルトの記録、複数ユーザ間のランキング、アチーブメントを実装しました。(私は「アチーブメント」という言葉を初めて聞きましたが、「実績」みたいな機能でした。「10回プレイした」とか「スコアを5000以上達成した」などです)
ワークショップの課題
課題は「Step 1」から「Step 6」までの6つの課題に加え、全て終わってしまった人のために追加課題がたくさん用意されていました。私も含め、多くの人は追加課題まで進めないほどの量なので、早く進めるより、ゆっくりロジックを考える方が得るものが多いと思います。
そもそも課題は学生向けにレールが敷かれているので、ぶっちゃけてしまうと、片付けるだけであれば考えることは多くありません。しかし、WebAPIの処理を中心に、周りのロジックがどのように動いているのかを考えてみると、かなり勉強になると思います。
私の場合、最初の方はゆっくり考えながら実装を行なっていました。しかし、時間が経つにつれ、「Step 6」までは終わらせたいという気持ちが強くなり、かなり急いで「Step 6」の実装をしました。振り返ると、課題を終わらせることが目的になっても仕方がないので、あまり良い行動ではなかったなと反省してます。
参加するにあたって必要な知識
まず、Go言語の基本的な書き方は知っている必要があると思います。Go言語の未経験者でも参加できるとは思いますが、事前に時間をかけて勉強をしておかないと、当日は結構辛そうな雰囲気があります。加えて、SQLがGo言語に次いで必要な知識かと思います。ただ、SQLが苦手な私でも問題なく取り組める程度の難易度感です。
上記は主観的な意見ですので私のバックグラウンドを補足すると、Go言語は勉強を始めてから半年程度、SQLは一年前に初心者向けの書籍を一周した程度です。
おわりに
今回のワークショップには、Go言語についてレベルアップをしたいと考えて参加しました。しかし、Go言語について詳しくなれたというより、開発に関わるツールや周辺技術の知識がつきました。他にも、バンダイナムコスタジオ様自体についてやゲーム業界について、より深く知ることができました。
すでに書かれたコードを読みながら実装を行う経験も貴重なものでしたので、今回のワークショップに参加できて幸運だったと思います。ワークショップで使用したWebAPIサーバーのソースコードはダウンロードして良いとのことだったので、時間がある時に眺めてみようと思います。