2018年11月27日
川俣晶の縁側ソフトウェア技術雑記total 909 count

実体験Blazor開発記・ゲーム【カンスト・キング】はどうやって産まれたか

Written By: 川俣 晶連絡先

「さて、ここからは技術のターンだ」

「淡々と進めてくれ」

TypeScriptで敗北 §

「カンスト・キングというアイデアが最初に産まれた時、TypeScriptで書かれたSPAとして作成しようと思って実際に5割ぐらい書いた」

「それで?」

「実際に分かったことは以下の3点だ」

  • TypeScript開発は実は効率が良くない
  • TypeScriptの型表現力は実はあまり高くない。C#で当たり前に書ける型が書けないケースがある
  • 仕様に冗長性がある

「ふむふむ。TypeScript開発は実は効率が良くないって何?」

「JavaScriptより圧倒的に効率は良いのだが、C#で書いていたようなコードを書こうとすると、効率はあまり高くないことを実感した。一度トラブルが起きると半日1日ぐらい掛かってしまうこともあるが、C#だとせいぜい1時間が2時間で突破して先に行ける。非常に大ざっぱな体感だけどね」

「じゃあ、TypeScriptの型表現力は実はあまり高くないって?」

「ゲームに登場するキャラクターやモンスターの型を定義しようとしたとき、必要な情報が書けなかった。だから少し甘い型定義になっていた」

「甘い型定義になると何が問題なの?」

「コンパイラの型チェックが不徹底になる」

「じゃあ、仕様に冗長性があるってなに?」

「それはアプリ側の問題。書いていると【実はなくても良かった機能】に気付かされる」

「たとえば何が不要だったの?」

「ショップ、ゲーム内通貨とかダンジョンだね。あれは無くても良かった。だからBlazor版には含まれていない」

Blazor登場 §

「じゃあ、問題点が3つ分かって君はどうしたの?」

「その時、丁度Blazorにはまったところ」

「それで?」

「これならC#で書き直した方が早い!と思ったね」

「実際に速かったと思う?」

「5割書いたソースを捨ててしまうので、現実的な期間の問題は微妙だが、開発効率がグッと上がったことは事実だ」

「ソースは変換しなかったの?」

「最初は機械的に書き換えようかと思ったが結局全部新規で書いたようなものだ。実は構造がまるで違うので機械的に置き換えても良いソースにならない」

「使ったのはBlazorだけ?」

「nugetでBlazorのstorageライブラリも使った。カンストキングのセーブ時の保存先はWebブラウザのローカルストレージだ。クラウドは単に実行ファイルを配布する機能しか持っていない」

「なぜそんな形式にしたの?」

「利用者が増えてもページの初期ロード以外では重さを感じないで済む」

「実際にBlazorでの開発はどうだった?」

「Blazor自身が実験的なプロジェクトだから細かい制限事項やトラブルは多かったよ」

「たとえば?」

「Dictionary<string,string>以外のDictionaryクラスはストレージに保存できない制限がある。レポートしたけどトリアージされたのでしばらくは続く制限事項だろう」

「それで?」

「でも、それを含めてもTypeScriptでの開発より効率が良かった。本当にサクサクと作業が進んだ」

総合評価 §

「ふむふむ。それは君としてはBlazorをどう評価する?」

「No More JavaScript。No More TypeScript。Blazor一択。次もBlazor開発で頼む」

「JavaScript<<TypeScript<<Blazorということだね」

「この先、JavaScriptでWebの世界を乗り切れると思っている人は多いようだが、それはたぶん無理。あれよりマシな言語は山ほどあって、それらがすべてWebAssembly経由でWebブラウザに殺到する。C#より優れた言語もみんな来る。JavaScriptがいかに大勢力であろうと、その他言語連合のオールスターズを前にしては負けるだろう。JavaScriptプログラマーは認めないだろうけどね」

「それで、君はBlazorなのかい?」

「当面はBlazorだな。Blazorだけが今のところ未来への道だ」

「なぜ他の言語を使おうとしないの? 他の言語も動くのだろう?」

「なぜならC#の資産があるからさ」

「それだけ?」

「それに、ろくに評価もしていない別言語への移行はリスキーだしな」

「じゃあ次もBlazor?」

「当然だ」

「C#で他のタイプのソフトは書かないの?」

「目的に応じて書くかもしれないが、メインはBlazorになりそうな気がする」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2018年
12月
05日
Visual Studio 2019 PreviewでC# 8.0の機能を使う場合の注意点
3days 141 count
total 821 count
【技術雑記】の前のコンテンツ
2018年
10月
26日
Windows 10にて、邪魔なウィンドウを移動させたら勝手に最大化してもっと邪魔
3days 75 count
total 1777 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20181127113621
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.29 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.