\r\n\r\n
Linuxには多くの魅力があります。多数のディストリビューションのコアコンポーネントであり、大規模なモバイルプラットフォームが依存するプラットフォームであり、他のより一般的なオペレーティングシステムよりも優れています(間違いなく意見ではありません)。
しかし、その欠点は、デスクトップでの普及率が低いことです。プログラムの可用性です。幸いなことに、これを助けてくれるものがいくつかあり、Monoはその一つです。
ソフトウェアフレームワークは、最もエキサイティングなものではありませんが、それなりに裏方として働いてくれる便利なものです。.NETフレームワークと同じように、monoもその一つです。
これらのフレームワークは、特定のデスクトップ環境または複数のオペレーティングシステムに使用することができます。例えば、KDE Pla**aデスクトップには、統合されたネイティブアプリケーションを書きやすくするためのソフトウェアがいくつも用意されています。これには、独自の統合開発環境「KDevelop」も含まれています。
これは、エンドユーザーにとっても多くのメリットがあります。開発者は、より速く、より簡単にアプリケーションを作成することができるため、より早く変更と改善を推進することができます。巨人の肩の上に立っているようなものであれば、背伸びも苦にならないでしょう。
フレームワークの中には、本質的にクロスプラットフォームであり、そのフレームワークで書かれたプログラムは、異なるオペレーティングシステム間で動作することができます。これは、開発者にとってもエンドユーザーにとっても有益なことです。一方では、より多くの人に届けることができ、他方では、より多くのユーザーに使ってもらうことで信頼性を高めることができます。
Monoは、Windows、macOS、Linuxなどのプラットフォームで利用可能なクロスプラットフォームフレームワークの一例です。元々は、Linux上での.NET Frameworkのオープンソース実装として設計されたものです。それ以来、さまざまなOSに対応し、それ以上の存在になっています。
Mono(.NETなど)は、プログラミング言語C#と密接に連携しており、移植性の高さで知られています。例えば、ゲームエンジン「Unity」は、クロスプラットフォームでゲームを作る方法として、C#を使用しています。C#はCIL(Common Intermediate Language)に変換することができ、ネイティブコードにコンパイルするか(高速だが移植性は低い)、仮想マシンを通して実行する(低速だが移植性は高い)ことができます。monoは、Cプログラムをコンパイルして実行する方法を提供し、.NETフレームワークに似ています。
現在では、エミュレートしようとするソフトウェアの所有者であるマイクロソフトが開発している。.NETフレームワークのオープンソース化により、Monoはこれまで以上に、そのコードを自分のデザインに統合することができるようになりました。また、このプロジェクトには、MonoDevelopという、Linuxのvisualstudioにやや似た特別なIDE(統合開発環境)が含まれています。
このように考えると、Monoのクロスプラットフォーム機能は、WindowsからLinuxに移行するユーザーにとって非常に有効であることが分かります。2つのOSをつなぐもう一つの橋渡し役として、乗り換え時の大きな問題の一つである「排他的ソフトウェア」を解消します。
Monoで書かれたプログラムはたくさんあります。これらのアプリケーションはクロスプラットフォームである可能性が高く、複数のオペレーティングシステムで使用することができます。これに加えて、Monoは実際に多くの既製の.NETバイナリ(つまりvisualstudioで書かれたC#のEXEファイル)をサポートしています。したがって、まだLinux上で動作していない.NETプログラムは、将来的に利用可能になる可能性が高い。
あなたも気づかないうちに、これらのアプリを使っているかもしれませんよ。
KeePassは優れたオフライン・パスワード・マネージャです。つまり、LastPassとは異なり、お客様の情報がサーバーに縛られることのない利便性があります。しかし、これは、より高度なコントロールを手にするために支払う価値のある代償となり得ます。
また、Monoで書かれており、様々なプラットフォームで動作させることができます。主にWindowsを対象としていますが、macOSとLinuxにも対応しているということです。とてもネイティブには見えませんが、しっかり機能しています。さらに、パスワードにアクセスできるようにしておけば、十分です。
Pintaは、Paint.NETのクロスプラットフォーム版(Microsoft Paintの上位版)であると言えます。これはかなりシンプルなアプリケーションで、画像の編集や作成にかなりの能力を発揮します。KeePassと違って、異なるOS間でも少しはマシに見える。
悲しいかな、モノラルの限界も証明しています。Paint.NETは、.NETフレームワークを使って書かれたアプリケーションから着想を得ていますが、やはりWindowsに限定されます。ほとんどのものは2つの間で動作しますが、プログラムがWindows用に定義されたフレームワークのコンポーネントに依存している場合、代替手段を見つける必要があります。
Monoは、Windowsアプリケーションを実行するための互換性レイヤーであるWineを拡張することによっても、Windowsスイッチャーの助けとなります。 Wineは多くのWindows機能をリバースエンジニアリングし、その動作をLinuxの同等機能に変換します。そのため、Linux用に設計されていない多くのプログラムを、あたかもLinux用に設計されているかのように実行することが可能です。
実際のMonoのインストールファイルには、他のプログラムがコンポーネントを構築するために使用できるソフトウェアライブラリが多数含まれています。これらは、(クロスプラットフォームとはいえ)可能な限り.NETフレームワークを実装するように設計されています。このため、このフレームワークを使ってWindows向けに書かれたものの多くは、Monoでも動作します。
Wineは、Monoが長年にわたって行ってきたすべての作業を利用し、それを使って、上記のようなコンポーネントを含む.NETアプリケーションの実行を支援することができるのです。例えば、ゲームによっては、ある程度フレームワークに依存しているものもあります。
前述したように、.NETフレームワークのほとんどがオープンソース化されており、さらにその先もある。Windows以外のプラットフォームでも、すでに(ある程度)活用することが可能です。それなら、どうして単核球症がまだ人の役に立つのか、と思うかもしれない。
答えは簡単で、利用可能な.NETコンポーネントの多くは、エンドユーザーには見えないからです。マイクロソフトの現在のオープンソースフレームワークだけで、クロスプラットフォームのグラフィカルなアプリケーションを構築することは、まだかなり困難です。一方、Monoは十分に成熟しており、ほとんど手間をかけずにネイティブスタイルのプログラムを書く方法が複数用意されています。これからもますます発展し
もちろん、.NETのオープンソースコンポーネントがもっと成熟すれば、現在Monoが提供している多くのメリットを享受することができるだろう。これはLinuxにとって、またLinuxに乗り換えたい人にとっても良いことです。やはり、携帯できるアプリケーションが増えることは歓迎すべきことです。
Linuxでのアプリケーションギャップはどのように処理するのですか?
写真提供:Ondrej Prosicky/Depositphotos