かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Xamarinに感じてること

ここ1年くらいDLして使えるようになってたのですが、なかなか使ってませんでした。理由としては以下のような感じです。

  • iOSアプリの開発にはMacが必要…。
  • Androidアプリの開発は、エミュレータが遅すぎて使いものにならないので実機がほぼ必須
    • 早いエミュレータも探せばあるみたいですがHyper-Vと共存できなかったり色々難点が
  • 日本語環境だとちゃんと動かないっぽいという噂?
  • XamarinのVisual Studio拡張機能を入れたらWindows ストア アプリのXAMLエディタが壊れる(これ一番インパクトでかかった)
  • XamarinのVisual Studio拡張は、新規作成したあとちょっとした修正しないと動かなかったりと微妙だった

現状は?

ただ、結構Xamarinは頻繁に更新がされていて不具合っぽい動きは、ちょっとずつですが確実に改修されていってます。とりあえず、個人的に一番大きなダメージだったWindows ストア アプリのXAMLエディタが壊れる件はなくなり、日本語環境にインストールしても既存環境が壊れるということはなくなりました。

個人的にはこれから・・・!と感じてます。

PCL対応

Xamarinが出てから、ここ一年でPortable Class Libraryがかなり充実してきました。クライアントサイドの処理は、こいつで大体サポートできるうえに、サーバーサイドも.NETで作る際は共通のREST API等で返すクラスを共有することで、サーバーサイドでもクライアントサイドでも似たようなコードを書かないといけないということもなくなります。地味だけど、単純作業がなくなってとても嬉しいと個人的に思ってます。

ただ、ReactivePropertyをPCLにして、ターゲットフレームワークにXamarin.iOSとXamarin.Androidを含めただけだと、うまいことインストールできない(ビルド時にエラーになる)ので、Android, iOS, Windows desktop, Windows store, Windows phoneで共通で使えるライブラリとかを作るのは、ちょいとノウハウがいりそうに感じてます。

画面は個別に作ろうという思想

個人的には、この思想はいいと思うのですが、HTML/JavaScriptで1ソースだよね。Xamarinは画面をプラットフォームの数だけつくらないといけないの?というのに「はい!」というのがつらいところ。

まぁ、プラットフォームのガイドに合わせたアプリと、どのプラットフォームでも同じ画面のどちらがいいのか、コンシューマ向けでは前者だけど、社内向けだと…?どっちもいい点がありそうで悩ましいと思ってたり思わなかったり。ユーザーさんから、なんで、おんなじことするのに画面が違うの??という突っ込みがきたら嫌だ。(作る側の立場)そういう意味では、画面まで含めて1ソースで作れるようなものもあってもいいのではないかと思う今日この頃でもあります(難しいけど)

まとめ

Xamarinのサブスクリプションが、あとちょっとで切れるよ・・・!というメールが来て、そういえばTwitterで○○が動かない…!とかxxxがダメだ!とかしかつぶやいてないなぁと思ったので、今思ってることを書き綴ってみました。

まぁ、色々書きましたがC#という強力な言語(async, await, yiled return, ラムダ etc...)が使えるというのがメリットですよね・・・!Love C#!!