まずはじめに、はっきりと宣言しておきます。
C#を愛してやまない人たちは、絶対に見るべきセッションである!!ということを。
正直、こんなに盛り上がっているセッションは初めて見ました。
そして、私の中でも今まで見たセッションの中で一番面白かった|д゚)コソッ
Twitterなどで目にする満足度もとても高く、C#好きの人たちは絶対見た方がいい!と、勝手に宣言いたします。
登壇者は、こちらの方々°˖✧
みなさん北陸にゆかりがある方々のようで、とても良い雰囲気。
なんでも、このライブコーディングイベントは定期的に行われていて、メンバーの誰かがぶりしゃぶを食べたくなったら集合がかかって開催される、ぶりしゃぶ会 兼 勉強会らしいです(なにそれめっちゃ行きたい)
さて。
始まる30分前くらいから、会場の空気を温めておくためにフリートークをがんがんされている登壇者さんたち。
観客の方々も参加してヤジとかツッコミとか入れてくださいねー!と会場を盛り上げてました?
わたしはそわそわ待機しながら一生懸命ツイートする時間。
そして、始まった第一問!
第一問「Blazorで令和表示!!」
西暦と和暦を変換してね!入力は西暦で出力は和暦だよ!制限時間は10分だよ!
この時点で、会場はどよどよ。
登壇者の室星さんは、「この問題予想してたから予習してきたもんねーー!」と声高らかに宣言。
(ちなみにBlazorとは・・・WebAssemblyという仕組みを用いて、C#のコードをブラウザ上で動作させるフレームワークで、クライアント側実装用の Blazor ビューがふつーに C# で書けちゃうよ!というもの。ASP.NET Core MVC等で普段サーバー側のコーディングしている人は、そのままクライアント開発までC#だけで一気通貫でできる)
どうやるのかなーとみんなわくわくしながら見ている中、動きが!!
いきなり小島さんのエディタ画面がクローズアップ!
革新的すぎる漢字ロジック・・・!!
めちゃめちゃいじられ、会場大爆笑。
そして、なんと声高らかに予習してきたと宣言した室星さんを抑え、この回は鈴木さんがスマートに勝利!(コード写真撮ってなかった、ごめんなさい)
そして第二問!!
第二問「Blazorで令和”元年”表示!!」
先ほどは令和1年だったものを令和元年に変更する!というもの!
制限時間は5分!
ここでは、鈴木さんが一度たどって失敗した道を、室星さんが時間差で自信満々にたどって失敗する、という事件が(゜-゜)
会場からは、登壇者の皆さんに対して「えっ?なんでそのコード書く??」「逆にめっちゃややこしくしてない??」と言わんばかりのヤジが飛びまくり会場沸きまくり・・・!だってツッコんでね、ヤジ飛ばしてねっていってたもんね。
オーディエンスの笑い声が響く中・・・
小島さんは安定の漢字ロジックを組む・・・!カオス・・・!!
5分という短い時間だったということもあり、この結果はイーブンに。
第二部はじまり。
石野さんの唐突なお話からはじまった第二部。
「タイトルにあるバトルとは何だと思いますか?・・・そう、俺たちはコードと戦うのではない・・・。コードで戦うんだ!!!
七並べバトルだ!!!」(ほんとにこんな感じ、脚色あんまりなし)
実はみなさん、事前に七並べのCPU処理を書いてこられたそう。そしてその成果物をもとに七並べをし、勝ち残った人が勝利というルール。
どう勝つか考えてきた、それぞれの作戦が発表される・・・
まずは室星さんの作戦から。
「ルールに沿って皆がカードを出しているように”表示され”るよう、”操作”して最終的に室星さんのカードがなくなって”表示され”るよう、”操作”して「室星さんの勝ちです。」って”表示”されるよう”操作”する」
あれ・・・??なんかおかしいぞ・・・??これは正攻法なのか・・・??
「imgタグのsrcや、pタグの中のテキスト、スタイルに直接アクセスしてDOMを書き換える!」
チート発動ーーーーー!やっぱりなんかおかしいと思った・・・
もはやC#じゃなくてJavaScript呼び出しとるーーーーー!!
ははーん・・・。これはチート合戦なんだな、と会場が理解し始めたその時。
小島さんの作戦発表。
Σ(゚д゚lll)ガーン
さっそくチート潰しにいったーーーー!!
(まるで室星さんが過去にチートを連発してきたかのような書き方ですがこれ以上は何も言わないでおきましょう)
しかし、不正に”自分以外”のパスの回数を書き換えるとチート対策が発動という、室星さんのチートには引っかからない内容。これは室星さんが勝つのでは・・・?と会場が思い始めたその時・・・!
鈴木さん「死ななければ負けない作戦!!」
自分だけ無限にパスできるようにしよう!そうすれば負けないよね!!無限パス作戦!
Σ(゚д゚lll)ガーン
しかも、小島さんの不正パス対策にも引っかからない内容。だって、”自分以外”のパス回数を書き換えるんじゃなくて、”自分だけ”のパス回数を書き換えるんだもん、ということでチート対策ギリギリ回避・・・!!(ちなみに手持ちパス回数は3回)
もちろんチートだけじゃなく、ちゃんとどのカードから優先的に出して、どんな場合だったらパスをする、というような計算されつくしたロジックは組まれております。やっぱりすごいさすが°˖✧◝(⁰▿⁰)◜✧˖°
そして最後に、石野さんの作戦。
石野さん「そもそもチートしたら殲滅しちゃうよ作戦!!」
チートした時点で即退場させられるそうですw(ちょっとうろ覚え)
石野さんのチート対策、果たして効果はあるのか・・・!?
まずは石野さんのチート対策なしバージョンで戦ってみると、室星さんが圧勝だったので反則レベルということで室星さんは外されることにw
そして石野さんのチート対策を発動させ、いざ尋常に勝負!
小島さん、パス回数が3回を超え死す・・・!
鈴木さんの不正パスがさく裂・・・!
石野さんのチート対策がそれを発見し処理する・・・!
鈴木さん、退場させられたというような表示が出る・・・!!
と思いきや、なぜか生き残っている鈴木さん。
石野さんの仕掛けた不正チェッカーに鈴木さんの不正が引っかかったのに、うまく動かなくて反則負けにはならなかったようですw
というわけでゲーム続行!
結果!
鈴木さんの勝利!!°˖✧◝(⁰▿⁰)◜✧˖°
チート対策がうまく発動しなかったところでは、私も思わず大声でリアクションしちゃうほどその場に飲み込まれており、会場全体が一体となっていました。(一人で見てたので恥ずかしいですが)
私はC#を勉強している発展途上なので、詳しいことは分からない部分もありましたが、めちゃくちゃ楽しめました。わからないところでもわかっている風にくすくす笑っていましたがそれもまた楽しかった!
実際オーディエンスに見られながら最適なコード書くって緊張するし難しいと思うのに、こんなに楽しくエンターテインメントにできちゃうことってあるんですね。 すごく勉強になりました。
3行でまとめ。
・ライブコーディングバトルめっちゃおもしろかった
・戦い方、コードの書き方が人それぞれで大変興味深かった
・いつか自分たちでもやってみたい!
私は今回のようなお題はまだできないので、「私が自分でコード書くならこうかな?」みたいな記事は書けないのですが、コードと戯れるこんなに楽しいセッションがあるなんて!と良い体験をさせていただきました。
来年も楽しみです!