おはこんばんにちは senehataです。
今回は久しぶりの開発系記事の更新ですねー
ちなみに今まではアプリ開発日記としてたんですが、自分が普段作ってるのはアプリというよりかはゲームなので、しれっと名前をゲーム開発日記に変更しました()
まあそんなことではどうでも良くて、今日の本題がc#の文法についてですね
僕はUnityというゲームエンジンを使ってゲームを作ってるのですが、プログラミング言語はC#っていうのを使ってます。なので、当たり前ですがC#の知識量によって開発効率や作れる機能の幅が変わってきます。
ちなみに僕はUnityを始めたのが2022年の4月で今が2024年の2月なので、もう少しで2年が経とうとしてます。それまで暇な時間はゲームの個人開発に興じていたのですが、もちろんC#も自動的に2年近く触れてきました。
で少し前の僕のC#の知識量としてはとりあえず超基礎的な文法は知っているってレベルでした。例えば変数の宣言、繰り返し、条件分岐、メソッド、クラス、くらいは知ってて、それとUnityでよく使うSetAcrive(false);みたいなやつだったり、[serializefield]みたいなのも知ってて、あと設計を少しだけ齧ったので、例えばstrategyパターンとか早期リターンとかは知ってました。
そんで、きっかけはバイトなのですが、一応プログラムを書くバイトをしていて、既存のコードを読んだりするのですが、もはや何を書いてるか分からん状態なんですよね。例えば=>がたくさんあったり、ActionとかFuncとかがあったりする訳です。
なので、これはいかんなと思い、最近独習C#っていう、高校生時代にお世話になったであろうチャート式みたいな600ページ近くある文法書を最初から最後まで全部読むって作業をやってみたんですよ。
そしたら、今まで訳分からんかった呪文がだんだん分かってきたんですよね。例えばラムダ式の初期化の使い方だったり、プロパティの使い方だったり、ラムダ式は元々デリゲートが源流で、そこから派生して生まれたものだから、メソッドを抽象化する過程でラムダ式使うのが有益な使い方だということだったり、Action型だったり、Func型も便利な型であるということだったりですかね
特にアロー演算子=>については文法を本格的に学んでない人はよく理解できないし、意味わからん呪文のように見えるかもしれないですね。自分がそうだったので。個人的な意見ですが、=>の意味と使い方とメリットを理解できれば、今ままで意味わからなかったコードの理解度がだいぶ上がるんじゃないかと思ってます。なぜなら、=>は便利なので多用される反面、文法を理解しなければかなり意味不明な記号だからです。
なので、しっかりC#の文法を体系的に学ぶとまず意味がわかるので、読めるコードの量が増えるし、使うメリットも分かればより拡張性や保守性に優れたコードを書けるようになる訳です。
よって凄い当たり前の結論に至ったのですがUnityを使っていくなら、本格的にC#の文法を体系的に勉強することはかなり価値のある行為なのかなと思いました。
(ただし、発端が無いと多くの人は文法の勉強は後回しにする気がします。現に僕がそうでしたから。ただ、これに関しては早く学んだ方が有益です。)
さらに文法の知識を固めるメリットを挙げるならば、コーディング中に分からない文法を調べるために一々記事を検索しながら進める必要が無くなることですかね。これは明らかな時短につながると思います。
僕はまだ本で学んだばかりで、コードには落とし込めてないので今から積極的にラムダ式やFunc,Action型などを使っていこうと思うのですが、実際に使うことでメリットをより明確に認識できるのかなと思っているので、また文法の勉強をやって気づいたことみたいなのは記事にしてみよういかなと思ってます。
最後に進捗報告と合わせて宣伝なのですが、今僕が作ってるうごかん(動く漢字間違い探し)のiOS版リリースに成功しました!以下リンクです。iOS版リリースに至る注意点なんかも記事にすると面白そうですねーそれでは
iOS : https://apps.apple.com/jp/app/%E5%8B%95%E3%81%8F…
Android : https://play.google.com/store/apps/details?id=com.Senehata.KanjiFindingGame
動画
コメント