MonoはMac OSアプリケーション開発にヒントを与える

3311 ワード

Monoは、各プラットフォームでの使用体験を改善しようと努力しています.Miguel de Icazaはこのほど、MonoMacが新しいバージョンを発表したとブログで発表した.MonoMacはMac OSX API向けのC#バインディングであり、そのAPI設計は主にMonoTouchに啓発され、後者はMonoに基づいてオリジナルのiOSアプリケーションを開発することができる.MonoMacスイートの目標の一つであり、独立したリリースでもある.appアプリケーションは、エンドユーザーをMonoへの依存から解放します.
数年前、Geoff NortonはCocoaSharpを作成した.これはCocoa API向けの最初のセットである.NETバインド.その時から、Monoユーザーは利用を試み始めた.NETクライアントはObjective-CのAPIを呼び出す.数年来、Objective-C和を統合する他のいくつかの方法も現れた.NET言語のフレームワークは、それぞれメリットとデメリットがあります.1年以上前、Monoはこれらのライバルを結びつけることを望んでいたが、残念ながら最後には病気で終わった.
その後、MonoTouchの成功は良好な基礎であり、MonoはCocoa APIをC#と使用し始めた.NETの世界のモデルと慣例の使い方が表現され、開発者がCocoaアプリケーション全体の開発ツールを提供しています.設計の面では、MonoMacは「Framework Design Guidelines」という本でまとめた設計決定と提案を参考にしています.主に以下の内容が含まれています.
  • インシデントを減らす
  • は、C#その他に基づく.NETクラスライブラリ
  • エラーを低減する可能性
  • 開発の楽しさを増す
  • 生産性を向上させ、開発者の時間を節約する
  • はすべてを利用する.NETに関する知識
  • Miguelは,.NETは最初から相互運用が容易なフレームワークとして設計されており、実行時およびフレームワークにまたがるシームレスな通信に多くの高度なサポートを提供しており、Cocoa APIのバインドの作成に役立ちます.MonoMacの設計原則はMonoTouchに非常に近いので、十分に考慮している.NETプログラマーの習慣的な要件は、例えば、Labda式と委任を使用してObjective-C APIの「block」を表す.
    CocoaのAPIは、AudioToolbox、CoreGraphics、CoreFundation、CoreTextなどのCベースのAPIの2つの部分からなり、P/Invoke方式で直接Cクラスにカプセル化されている.UIの面では、FoundationやAppKitなど、多くのObjective-Cが作成したAPIです.MonoMacは新しいバインドエンジンMonoMacを提供しています.ObjCRuntime、およびbtouchバインドジェネレータ.btouchバインディングジェネレータはC#言語形式のAPI規則を受け入れ、MSActionCellなどのバインディングを自動的に生成する.
    
    [BaseType (typeof (NSCell))]
    interface NSActionCell {
        [Export ("initTextCell:")]
        IntPtr Constructor (string aString);
    
        [Export ("initImageCell:")]
        IntPtr Constructor (NSImage  image);
    
        [Export ("target")]
        NSObject Target  { get; set; }
    
        [Export ("action")]
        Selector Action  { get; set; }
    
        [Export ("tag")]
        int Tag  { get; set; }
    }

    Objective-C APIの生成には多くの重複作業があるため、MonoMacはまた、Objective-CのヘッダファイルからほとんどのAPIを生成できるヘッダファイル解析ツールを提供している.しかし、いくつかの生成結果については、設計の要件を満たすためにいくつかの変更が必要です.たとえば、NSArrayのパラメータと戻り値は、ドキュメントに基づいて適切な強いタイプに変更する必要があります.
    MonoMacはまだ完全なCocoa APIをカバーしていませんが、APIの作成に基本的に使用でき、コミュニティの貢献を受け入れることができます.現在のバインドは次のとおりです.
  • AddressBook(完了)
  • AudioToolbox(完了)
  • AppKit(90%完了)
  • CoreAnimation(完了)
  • CoreFoundation(設計原則に必要な部分が完了した)
  • CoreText(完了)
  • CoreLocation(完了)
  • CoreData(完了)
  • CoreGraphics(完了)
  • Foundation(他の部分を含む設計原則に必要な部分)
  • WebKit(DOMコードが欠けている)
  • MonoMacはOSXアプリケーションを開発するためのクラスライブラリにすぎません.MonoMacチームは同様にMonoDevelopベースの開発ツールを発表し、その生成結果はMac OS下のappアプリケーションパッケージである.さらに、Mono 2.8には、「Monoパッケージ(bundler)」という新しいツールも含まれています.この梱包器はあなたのことをチェックすることができます.NETアプリケーションは、依存する部分をパッケージ化します.このテクノロジーは現在、OSXバージョンのBansheeプロジェクト(MonoとGtk#ベースのプレーヤー)に使用されており、リリース後のアプリケーションにはターゲットマシンにMonoフレームワークを装着する必要はありません.
    MonoMacはMIT X 11ライセンス契約を使用してリリースします.ソースコードはmonomacとmaccoreの2つの部分に分かれており、いずれもGitHubで入手できます.前者はMacOS向けのバインディングを含み,後者はMonoMacとMonoTouchが共用するコードを含む.OS Xの場合.NET開発やMonoMacに興味がある方は、この開発ガイドを参考にしてください.
    一方、最近Logos Bible Softwareの技術リーダーであるDavid Mitchell氏はMonoメールリストで、Windowsプラットフォームのために開発したソフトウェアをMonoに基づいてMacプラットフォームに移植し、両者はほとんどのコードを共有しているが、唯一異なるのはUI側がWPFからOS Xのオリジナルインタフェースになったことだと明らかにした.ただし、MonoMacのやり方とは異なり、Logos Bible Softwareのやり方はObjective-Cが作成したUIインタフェースで呼び出す.NETコード.