勉強として、ズンドコ節アプリを実装しました。
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
— てくも (@kumiromilk) March 9, 2016
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
- 基本的な内容は 2016 年当時に作成済みだったが、2020 年にフレームワークの最新化やリファクタリングを行った。
https://zundoko-dotnet.ushibutatory.net
- BackEnd
- C#
- AWS Lambda + API Gateway
- FrontEnd
- Next.js
- Vercel
- Route53
- 歌を増やしやすくする(拡張性を考える)。
- インタフェースとクラスの分離。
- 複数の歌を格納するアルバムクラスを作った。
- 今回の要件であれば、歌データを静的ファイルなどの外部リソースで管理するように作ったほうがより拡張しやすい作りになったかもしれない。
- DI を使う。
- あまり効果的に動いていないが、DI の練習として。
- CUI アプリケーションらしくする(ヘルプオプションなど)。
- .NET の
CommandLineApplication
を使って実装する。
- .NET の
- 「キ・ヨ・シ!」は観客側のセリフにしたい。
- 歌手クラスと観客クラスを定義し、それぞれ歌クラスから担当フレーズを取得するようにしてみた。
- 歌手や観客は、会場に集まっていることにしたい。
- 会場クラスを定義し、歌手と観客を入れるようにした。
- ランダムな挙動のロジックに対して、どんなテストコードを書くとよいか?
実装済みの歌を出力します。
$ dotnet Zundoko.App.dll list
Arashi
Kinchan
LoveSomebody
NetsujoRhythm
Progress
SoranBushi
Thrill
Ultrasoul
ZundokoBushi
回数を指定して実行します。 未指定の場合は 100 回試行します。
$ dotnet Zundoko.App.dll play z
ズンドコズンズンズンズンドコ\キ・ヨ・シ!/
7回で完成しました。
$ dotnet Zundoko.App.dll play s 100
ソーランソーランソーランソーランヤーレンヤーレンソーランソーランソーランソーランソーランヤーレ
ンヤーレンヤーレンソーランヤーレンソーランソーランソーランソーランヤーレンヤーレンヤーレンヤー
レンソーランヤーレンヤーレンヤーレンソーランヤーレンソーランソーランソーランソーランヤーレンヤ
ーレンソーランソーランソーランソーランヤーレンヤーレンソーランヤーレンヤーレンソーランソーラン
ヤーレンヤーレンソーランヤーレンヤーレンヤーレンヤーレンソーランソーランヤーレンソーランソーラ
ン(ハイ! ハイ!)
59回で完成しました。
絶対成功します。
$ dotnet Zundoko.App.dll cheat z
ズンズンズンズンドコ
\キ・ヨ・シ!/
チートモードで完成しました。
$ $ dotnet Zundoko.App.dll cheat s
ヤーレンソーランソーランヤーレンソーランソーラン
(ハイ! ハイ!)
チートモードで完成しました。