第3回KLab Server Side Campに参加させていただきました!

初めに

初めまして、私はregiと言います。普段は競技プログラミング音楽ゲームなどに力を入れている大学生です。執筆時点では大学4年生です。

私は2022年9月上旬にご縁がありまして、KLab様が主催されている「第3回KLab Server Side Camp」に参加させていただきました!

今回の記事では、その報告をしていきたいと思います!

KLab Server Side Campとは?

それは、KLab様が開発された音楽ゲームを通して、そのアプリのサーバサイドの技術はどうなっているのかを「講義形式での説明→各々実習」という形で理解を深めて経験も積もう!といったインターンです!期間は5日間です。また、第3回ではオンライン開催でした。

SQLは講義や開発で触ったことある程度…sshはよく分からない…でも音楽ゲームの知識は豊富」といった私でも一通りの実装をすることが出来たので、「このインターン気になるけど、SQL?よく分からないから無理そう…」などと思ってしまっている方々も、気になると思ったらとりあえずエントリーしてみるべきです!

また、KLab Server Side Campについて詳しく知りたい方は、下の記事も是非読んでみてください!

http://dsas.blog.klab.org/archives/2022-01/52381462.html

インターンの流れ

1日目

初めに参加者の方々やメンターの方々が皆それぞれ自己紹介をし、それからインターンで使うCodespaces, MySQL, SQLAlchemy Core, ipythonの扱い方や概要などを教えていただきました。扱い方に関して実習も交えながらの説明であったため、理解した上で安心して後半の課題にも望むことが出来ました、本当にありがとうございました!

関係無いですが、この日に私のノートPCの内臓マイクがとうとう機能しなくなってしまったので、私だけ何もしゃべれない状態でした...メンターの方々には迷惑を掛けてしまいました...。そのため、この日の夜に近所のドン・○○○○まで行ってマイクを買いました(笑)

2日目

FastAPI, pydantic, Swagger UIの扱い方や概要などを教えていただきました。また、ここで音楽ゲームマルチプレイをするためのRoom APIをいくつか実装するという課題が与えられました。少し補足すると、RequestやResponse、その他Enumなどの構造体の仕様も与えられた状態で、それをもとに各自で実装していく形でした。

私はipython上でSQLAlchemy Coreの挙動をいろいろ確認して「Djangoを使っていたときはデータベース操作の際にSQLを書いていなかったけど、やっぱりSQL書いた方が挙動分かりやすくていいな!」と呑気に感動していたら、各Room APIのRequestやResponseのクラスやその他構造体を実装しただけで終わってしまいました、反省...。

3日目

データベース操作におけるトランザクションについて教えていただきました。それ以外は基本与えられた課題の続きをしました。

私はRoom APIの半分ほどを実装し終えました。このとき、データベースのテーブルに格納するデータとして何を採用するべきか迷いましたが、「どういったタイミングでデータを取得したいか」や「さらに機能を拡張する」などの観点からも考えると良いということをメンターの方々や他の参加者の方々から知ることができ、無事データベースの構成を考えて作ることができました。ありがとうございました!

ちなみに、この日のインターンが始まる前や終わった後にその音楽ゲームの全曲フルコンを狙っていましたが、1曲だけどうしても出来ないものがあったので断念しました...。実は指がかなり硬いので、人差し指中指薬指の6Kは辛かった。

4日目

同様に課題の続きをしました。この日からRoom APIの実装を全て終え、実際に音楽ゲームマルチプレイを他の参加者の方々とテストプレイし始めていた方も居ました。

私も形だけはRoom APIの実装を全て終えましたが、数々の原因不明のバグに見舞われてしまいました...。このとき、あと数十分でインターンが終わる時間であったため、他の参加者の方々のテストプレイの方に合流してました(笑) 実際にテストプレイに合流すると、参加者の方々が「ホストが退出した際にはホストやその部屋をどうするか?」や「ライブ中に途中で人が抜けた場合はどうするか?」などについて話していました。特にホスト退出問題に関して私は当初、「ホストが退出した際はその部屋そのものを削除する仕様」にしようと考えていましたが、「部屋はそのまま残して、まだそこにいる誰かにホストになってもらう仕様」にしようと考えている方も居て、「どちらにした方がユーザのためになるのか...?」と執筆時点の今になって不思議に思いました。

5日目

最終日では、午前に課題進め、午後から資料作成、成果発表、懇親会という流れで締めくくられました。

私は最後の課題を進める時間内で全てのバグを取り切ることが出来なかったので、インターン中に私の音楽ゲームマルチプレイテストすることは出来ませんでした...。しかしながら、今までサーバサイドに関して理解があやふやであった部分が整理され、より体系的に理解出来た気がするので、大満足でした!

資料作成、成果発表では、文字通り成果発表用の資料を作成し、参加者1人ずつ発表していく流れでした。その後になんどKLab様から第3回KLab Server Side Campの修了証を頂きました...!ハンコ部分はこだわってデザインなされたそうで、嬉しかったです!

f:id:regichan:20220914183905j:image

そして懇親会では、メンターの方々や他の参加者の方々と技術、またはその他の趣味について話し合う機会があり、素敵な時間を過ごすことが出来ました。特にメンターの方々には興味深い技術に関する話をたくさんしていただけたため、時間の経過が早かったです(笑) その中でも、音楽ゲームの作り方、特にゲームエンジンらや判定部分、描画部分などの話も詳しくしていただけました...。元々「そういうことに関しても教えていただけたりしないかな...」と薄々考えていたため、非常にありがたかったです...。

ちなみに、この懇親会を通して、私の中に眠っていた「音楽ゲームを作りたい!」という気持ちが大きくなったため、現在Unityの本を既に買い、早速開発し始めています(笑)

現時点では私が遊べる用として開発していますが、もしもこの気持ちがより大きくなって私が作った音楽ゲームを配信することになりましたら、そのときは是非とも遊んでいただきたいです!

特に学びたい・押さえておきたいと感じたこと

・FastAPI

・SQLAlchemy Core

・pydantic

・Swagger UI

・テストの設け方について

・循環Importについて

・コード上の長い文字列の表示について

SQLに格納出来るデータの容量制限について

リファクタリングについて

Makefileについて

・データベースの構成方法について

ゲームエンジンについて

感想

率直に言いますと非常に楽しかったです!サーバサイドに関する知識も深まり、音楽ゲームの作り方も詳しく教えていただけたので、私にとって非常に濃い5日間となりました!

運営やメンターの方々、他の参加者の方々、そしてその他このインターンに関わった方々、本当にありがとうございました!

最後に

2022年9月14日現在、第4回KLab Server Side Campも行なわれることが決定しており、エントリー受付中です!

↓エントリーはコチラから!↓

https://klab-hr.snar.jp/jobboard/detail.aspx?id=MxhYoTHEWuM

 

日程:2022年12月26日(月)〜2023年1月6日(金) ※平日5日間

【2022年12月下旬】

1日目:12月26日(月)

2日目:12月27日(火)

3日目:12月28日(水)

【2023年1月上旬】

4日目:1月5日(木)

5日目:1月6日(金)

※第1次応募締切:10/3(月)まで

 

最後まで読んでいただきありがとうございました!ではまたいつか!