#31 Windows
普段はMacを使っているので、Windowsには苦手意識があります。ですが、そうも言ってられない状況になってきたので、重い腰をあげて勉強します。.Netてなに?ランタイム?
.Net Framework
.Net Frameworkは、Windowsでの開発に欠かせないプラットフォームです。CLR(共通言語ランタイム)という仕組みを使って、開発言語の違いを吸収します。また、仮想マシン上で動作するためOSや機種に依存せずプログラムを実行できます。
つまり、C++やC#、Visual Basicといった様々な言語で書かれたコードを組み合わせてプログラムの開発ができ、あらゆるWindows端末で実行できるということでいいでしょうか。
.Net Core
.Netはオープンソース化されていて、こちらは「.Net Core」と呼ばれています。Windowsのみならず、Linux・Macにも対応しており、.Net Frameworkの後継という位置付けのようです。
DLL
Windowsの実行ファイルといえば、exeですが、大抵のアプリには一緒に大量のdllファイルが格納されています。これらは、動的リンクライブラリ(Dynamic Link Library)というもので、よく使う機能などが共有ライブラリとしてファイルにまとめられていると考えればよいでしょう。危ないコードをdllに埋め込み、アプリで使用されているものと差し替える「DLLインジェクション」なる攻撃も存在します。
WinRT
WinRTは、Win32 APIをベースにより手軽にOSのAPIを呼び出せるように設計されています。WinRTで使用されるwinmdファイルには、型情報などのメタデータも格納されています。そのため、例えば、C#からC++で実装されたクラスを再利用する場合にも、言語間の差異を気にすることなく利用できます。ただし、セキュリティのため実装に制限があります。
UWP
UWP(Universal Windows Platform)は、WinRTを利用したアプリの実装のひとつです。Windows10、11に対応しており、全てのWindowsデバイスで共通に利用することができるアプリが作成できます。デザインが少し現代的になっており、セキュリティを意識しているためか、機能に制限があります。
まとめ
Windowsの歴史は、私の人生よりもかなり長いので、当然こんなメモでは書ききれませんが、調べながら頭の霧が晴れてきた感じがします。「あらゆる言語で、あらゆるプラットフォームに対応する」というところが、Microsoftの目指すところなのでしょうか。開発者としては、惹かれるものがあります。触れながら、さらに深みにハマって行こうと思います。
EOF
この記事が気に入ったらサポートをしてみませんか?