C#について、プログラム初心者の僕が感じたことをつらつらと書いていきます。
良かったら読んでみてください。
コメントやアドバイスなどは受け付けておりますが、過激な発言などはお控えください。(僕がしんどいです)
そもそもC#とは
C言語→C++の派生系だと考えています。
C言語がオブジェクト指向に対応していないのに対して、C++はC言語の良さを取り入れ改善されたオブジェクト指向型言語、C#はC++よりも拡張性を高くしたオブジェクト指向型言語という位置づけのようです(かなりざっくりした説明ですね)。
C#自体様々なプラットフォームで動作が可能です。
.Net 6.0(C# 10.0)ではそれはもう本当に素晴らしい。
MAUIというiOS、macOS、AndroidOS、Windowsなどに対応したアプリケーションの開発が可能だとか…
.Net 6.0だからこそできることでしょうね。
.Net 5.0の時代はXamarinと呼ばれる.Net Frameworkに属するフレームワークを使用しないと開発不可能だったのが、.Net 6.0が導入されたことによって敷居が低くなった感じです。
Xamarinって?
AndroidOSではJavaやKotolin、iOSではObjective-CやSwiftを使用して開発を行う必要がありました。
XamarinはC#で統一してソースコードを書けるという画期的な代物です。
UIなどデザインの観点ではOSによって書き方を変えないといけない(複数のXAMLファイルを書く必要がある)のが完全な統一化となっていないのが残念です。
が、将来的には様々な機能が増えて(.Net 6.0でそうなる予定だったのが延期に…)で.Net 7.0ではこれまでと比較して容易にアプリ開発が可能になるとのことです。
.Net〜〜〜って?
この辺ごちゃごちゃしています。
.Net Standard、.Net Framework、.Net Core…
まずは.Net Standardからでしょうか?
.Net Standardの位置付け
この.Net StandardはBCL(Base Class Library)と呼ばれるものです。
.Net Standardとは、根幹になる部分と考えるのがいいかもしれません。
土台に.Net Standardがドンッと構えているのを想像してみてください。
.Net Framework
この.Net Frameworkは、Windows向けのアプリを動作させるためのランタイム実行環境、すなわちWindowsには必要な機能となります。
アプリケーションフレームワークというものでもあり、開発時にはWindowsの機能の実装を簡単にしてくれるみたいです。
.Net Frameworkはバージョン4.8を最後にサポートが切れるとのことです。
下記に記載した.Net Coreに統合されるのかはたまた…
.Net Core
.Net Frameworkよりも幅広くプラットフォームを対象としているソフトウェアフレームワーク。
Linux系OSやmacOS、そして当然Windowsも対象です。
現在の.Net Coreのバージョンは「.Net Core 3.1」となっております。
実は・・・
Xamarinも.Netなんちゃらに含まれる構成員の一人です。←表現w
これが冒頭でお話ししたiOSやAndroidOSのアプリ開発が可能になるという機能なんですね〜
技術的には.Net FrameworkとC#なのですが、Monoというライブラリを使用した開発となります。
.Net6.0で標準で付いてくるMAUIというものはXamarinと似たようなものですが、別物のようです。(?)
Xamarinとは違って、コントロールの配置が直感でできない(デザイナー機能がない)ようで、XAMLコードを書く必要があるため、XAMLの知識なども必要だなと感じました。
この辺は別の記事で細かくご紹介しますね。
最終的には…
.Net Standardを土台として、その土台の上に上記の.Net Framework、.Net Core、Xamarinが分かれて乗っかっている感じです。
分かれて乗っかっているということは、土台との互換性はあっても、横の繋がりはないということになります。
そりゃBCLなんだから互換性ないとだめよね。
とにもかくにも最終的には.Netは一つになるようです。
.Net○○というややこしい関係はなくなり、様々なプラットフォームの開発がさらに容易になるということなのかなと考えていますが…
プログラム初心者のためよくわかりませ〜ん笑
まとめ
初心者だからこその観点でざっくりした説明になってしまいました。
ちなみにUnityという技術もあり、ゲームプログラミングなどでは重宝されているようです。
今後記事の改訂、内容の増強などもしていきますよ〜
ちなみに執筆時点(2022/3/20)でこの程度なので有識者の方々からすればその程度じゃC#は語れねぇよ…とか言われそう笑
インプットばかりでアウトプットができてないので、とりあえず簡潔に、自分なりにまとめてみました。
全然理解していないことの方が多いので、今の段階ではこんな感じに理解しています。間違っていたらご指摘いただけると幸いです。(言葉は選んでちょ)
ここまで読んでくださりありがとうございます。