Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Xamarinの新しい話とMonoの深い話 atsushieno版

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Xamarinの新しい話とMonoの深い話 atsushieno版

Avatar for Atsushi Eno

Atsushi Eno

July 09, 2016
Tweet

More Decks by Atsushi Eno

Other Decks in Programming

Transcript

  1. Mono <= 1.0 ECMA 標準の利用 : Miguel de Icaza インタビュー

    Ximian: Gnome Desktopの会社 GNOME: Gtk+でGUIアプリケーションを開発 ↓ Gtk+ (Cライブラリ)のアプリケーションをCで開発するのはしんどい ↓ C#だ! → Gtk# (Win32->WinFormsみたいなもの)
  2. Roslyn "Language Service" - IDEの機能を実現 • コード補完 • 文法エラーのレポートと修正 •

    定義に移動 • 利用箇所の検索 • 名前の変更 • コードの自動フォーマット C#コンパイラ • ついでに、C#ソースコードがコンパイルでき る どう使われているの ? • VS2015 - Roslynがソース解析その他の機 能と、実際のコンパイルの両方を担当できる ◦ 従来はコンパイルだけ.NET Framework (csc) • MonoDevelop - NRefactoryから移行 ◦ VSと一貫性のある機能 ◦ XS(MD)チームの開発コストが下がる • OmniSharp (used by VSCode) ◦ これをサポートするエディタ拡張を作るだけで エディタがC# IDEになる http://atsushieno.hatenablog.com/entry/2012/12/19/162038 (MonoDevelop C#バインディングについて (ついでにtypescriptバインディングの話)
  3. Debug Engine Debugger = debugger client + debugger service 開発者がブレークポイントをセットする

    ↓ IDEがdebugger clientに「xxx.csのx行目にブレーク ポイントを設定しろ」と伝える ↓ debugger clientがdebugger serverにブレークポイ ントの追加命令を送る debugger server: ランタイムの一部 コードを1命令ずつ実行する前に、そこにブレーク ポイントが設定されていないかチェック ↓ ブレークポイントがあったら、 debugger clientに コールバック呼び出しをかける ↓ debugger clientは、コールバックに応じて、 IDEに コールバック呼び出しをかける https://github.com/mono/debugger-libs/ https://github.com/mono/mono/blob/master/mono/mini/debugger-agent.c https://github.com/mono/monodevelop/tree/master/main/src/addins/MonoDevelop.Debugger.Soft
  4. Debug Engine VSCode: デバッガー クライアントとデバッガー サーバーの通信プロトコルを決めた • 同じプロトコルをサポートしていれば、クライアントとサーバーは別のデバッガー実 装でも通信できる •

    同じプロトコルで別の言語のデバッガーも実現できる 同じプロトコルをXSがサポートすれば、VSCode用のデバッガーを使いまわせる Debugger Protocol
  5. Nugetizer 3000 Xamarin Plugins - 参照はコンパイル時のおとり、実装はplat.別 NuGetパッケージを作るのが面倒 参照アセンブリ、各実装アセンブリを全部構築 ↓ 自動化すれば楽なのでは?

    新規Nugetizer 3000プロジェクトに実装アセンブリのプロジェクトを参照として追加 → 参照アセンブリを自動生成 → nupkgも自動生成
  6. Linker 基本 - GCライク 設定ファイル(XML)で調整可能 Linker = marking steps +

    sweep カスタマイズ可能 iOS、Androidは大量のカスタマイズステップで構成