ゆうなぎ日記

日常を綴る

VRChat をしている人が初めてプログラミングを学びたい場合、 UdonSharp ではなく素の C# を学んだ方がよいと思う

VRChat では、ある程度 VR の世界を自由にカスタマイズするために、 UdonSharp と呼ばれる言語を使うことができる。 その文脈で、VRChat 上で何かを作ることだけが目的なら、UdonSharp から学ぶのはよい選択肢だ。 しかし、 VRChat をきっかけにプログラミングの勉強をしたいのが目的であるならば、 UdonSharp はわたしとしてはあまりオススメできないと思っている。 理由としては、

  • UdonSharp は C# の機能のうち、 VRChat 向けに使える機能のみを限定的に抜粋したもの
    • 分かる人向けに言えば、 UdonSharp は C# のサブセットでしか無い
    • これはわからないことに出会った際、 UdonSharp として分からないことを調べようとしても、でてくる情報がかなり少ないということ
    • 逆に C# を学んだ後であれば、どこが UdonSharp 固有の仕様なのかのみを追加学習すれば、 C# の情報も含めて適切に調べることができ、問題解決がやりやすくなる
    • 通常、外国語として日本語を学ぶのに、東北弁から学ぶよりは標準語から学んだ方が効率は良いだろう
  • ベストプラクティスに従っていないケースが多い
    • UdonSharp で組まれたコードを参考にした場合、 C#/Unity で一般的に推奨される事項 (名前空間を指定する、適切に asmdef を使うなど) に従っていないことが多い
    • C# は言語としては古い方 (来年25周年!) なので、ちゃんと学んでいけばベストとまでは行かずとも、ベタープラクティスを知ることが可能
      • せっかくプログラミングに興味を持っているのだから、どうせなら良い手法を学んで欲しい
  • 応用が効きにくい
    • 例えばもうちょっと枠を広げて Unity のゲームを作りたい!となった場合、 UdonSharp の知識のみの場合は勉強する範囲が大幅に増える
    • UdonSharp を学んだのであれば枠は VRChat の中で収まってしまうが、 C# を学んだのであればゲームプログラミングはもちろん、デスクトップアプリからスマホアプリ、サーバープログラムまで書ける

最初に述べたとおり、 VRChat 上で何かを作りたいのが目的であるならば、 UdonSharp を学ぶので問題は無い。 ただし、プログラミングを勉強したいのならば、 C# を学んだ方が情報も多く応用が利くし、早い段階でベストプラクティスも知ることができる。 そして UdonSharp はあくまで C# のサブセットなので、 C# が書けるようになったのならば、同時に UdonSharp のプログラムも書けるようになる。 ので、プログラミングの勉強をしたいという人には、 UdonSharp ではなく C# をオススメした方が良い、とわたしは思っている。