MonoMac
MonoMac(読み:ものまっく)とは、MonoおよびMonoDevelopを用いてC#でMac OS X用の「ネイティブアプリケーション」の開発を可能にする統合プログラミング環境のことである。
概要
MonoMacは、iOS向けのMonoTouchの技術をそのままMac OS Xに持ってきたものである。
2011年3月17日、MonoMac 1.0が公開された。今後、F#、IronRuby、IronPython、UnityScriptといったプログラミング言語のサポートを進めていくと説明されている。
ライセンス
有償版のみのMonoTouchとは異なりMonoMacは完全に無償で提供されている。 ただしMonoMacはライセンスにGPLおよびLGPLが用いられており、開発したプログラムを配布する場合は必ずオープンソースにしなければならないという条件がついている。
そのままでは商用利用できない、ソースコードは公開したくない、という人のためにオープンソース化しなくてもよいというXamarin.Macという有償版も提供されている。 いわゆる資金源である。
Xcode連携
UI部分のデザインにはInterface Builderとの連携に対応しているため従来のXcodeを用いたMac OS Xアプリケーション開発と基本的に同様である。 ただしMonoDevelop経由でxibファイルを開きInterface Builderを起動すると、xibファイルが監視された状態となり、UIを編集し保存した瞬間にまるでVisual StudioでWindows Formsをデザイン編集したときのように全自動で部分クラスが生成されるなど、その連携具合は手動でアウトレットを書かなければならないXcodeより何故か遙かに優れている。
日本語周り
なお、2012年3月19日時点では、MonoDevelopでの日本語表示に一手間必要であり、また日本語入力は一切できない。アプリ中に出現する文字列は、多言語対応のためにもソースコードに直接日本語を埋め込まず、リソースで管理しましょうという思し召しに違いない。
2013年11月5日現在の最新バージョンでは日本語表示も日本語入力も問題なくできるようになっている。いつの間に対応したんだよ。
ネイティブコード
Monoと言えば.NET Framework互換のオープンソースプロジェクト、その.NET Frameworkと言えば中間コードと仮想マシンをまず思い浮かべるだろうが、MonoMacが吐き出すのは生粋のネイティブコードである。
MonoMacではC#で書いたソースコードを、ほぼ人間の読めないObjective-Cのソースコードに変換し(いわゆるトランスコード)、それをXcodeでビルドする。なお、この一連の動作はMonoDevelopがバックグラウンドで行うので開発者は気にする必要がない。また、このネイティブコード寄りな仕様の関係上、リフレクションなどの.NET Framework特有の一部機能は使えなくなっている。
C#のソースコードからObjective-Cのソースコードに変換するという荒技は、かつてアドビとアップルによるFlashによるiPhoneアプリ開発をめぐる紛争の末に制定されたApp Storeのサードパーティ締め出し利用規約を強引に回避するために編み出した必殺技である。 [1]
使い方
- MonoMac/インストール
- MonoMac/ウインドウを閉じた際にアプリを終了させる
- MonoMac/フルスクリーン表示に対応する
- MonoMac/Interface Builderでカスタムコントロールを使用する
- MonoMac/NSImageをファイルに保存する
- MonoMac/NSImageをSystem.Drawing.Imageに変換する
- MonoMac/Resource Bundleを利用する