Xamarin Component Store を眺めてみる

Xamarin には Component Store というものがあって、Xamarin で利用できる部品をここから購入することができます。(FREE もあります)

こちらです

"1"

TAGS のところで対応プラットフォームを絞りこめます。 iOS は MonoTouch の歴史が長いだけあってなかなかの数のコンポーネントがありますが、Android, Windows に関してはまだこれから、という感じでしょうか。 iOS/Android 両対応のコンポーネントも1ページに収まる程度の数はあります。

試しにつかってみる

試しに

"2"

を使ってみます。

確か、Component Store は Xamarin Studio と連携してるとのことなので、そちらから使ってみましょう。

プロジェクトの作成

Android Application、名称は AlertCenterSample としました。

コンポーネントを (Nu)Get!

メニュー → プロジェクト → Edit Components… から。

"3"

こんな画面になりました。次に Open Conponent Store をクリック。

"4"

Xamarin Components が出ました。Webサイトと同じやつです 。この中から Alert Center をクリック。

"5"

なんか動画が真っ黒ですが。気にせず Add to App をクリック。

"6"

ソリューションエクスプローラの Components に Alert Center が追加されました。また Getting Started が表示されています。

これで部品が追加できたようです、簡単でした。ちなみにコレ、NuGet というものが使われているそうです。(私は VS2005 以前の人なので使った事がありません)

"7"

ここから、Getting Started に表示されている通りに実装して動かしてみます。

AndroidManifest に権限を追加する

最初、完全に見落としていましたが、AndroidManifest.xml に SYSTEM_ALERT_WINDOW 権限を追加してください、と書いてありました。 Xamarin Studio での AndroidManifest.xml 編集については、

をご参考に。

確かに、SYSTEM_ALERT_WINDOW もありますね。

"9"

この手順を飛ばすと、ボタンをクリックした瞬間にアプリが落ちます(経験者

コーディング

Getting Started のコードをコピペで。

//MainActivity.cs
<省略>
using Xamarin.Controls;

namespace AlertCenterSample
{
    [Activity (Label = "AlertCenterSample", MainLauncher = true)]
    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.myButton);

            button.Click += delegate
            {
                AlertCenter.Default.Init (Application);

                AlertCenter.Default.PostMessage ("Knock knock!", "Who's there?", Resource.Drawable.Icon);
                AlertCenter.Default.PostMessage ("Interrupting cow.", "Interrupting cow who?",
                                                 Resource.Drawable.Icon, () => {
                    Console.WriteLine ("Moo!");
                });
            };
        }
    }
}

そういえば、コンポーネントを取得直後、なぜか Xamarin Studio さんがそれを認識してくれずエラーが出ていました(ビルドはできた)が、Xamarin Studio を再起動したらエラーは消えました。

"8"

動かす

ビルドして実行するだけです。

"10"

iOS/Android 両対応と言っても 'Write once' ではない(かも知れない)

Alert Center は、iOS/Android 両対応とされていますが、Getting Started の iOS と Android のコードをよく見るとわかりますが、異なっています。「Android は iOS に '似せて' いる」とも書かれています。 同じコードで iOS/Android 共に動く!という夢はやっぱり見ない方がいいです。クロスプラットフォームで開発する時は View の部分はプラットフォーム毎にプロジェクトを分けなければならないので、共有できるコードも少ないと思います。

他のコンポーネントも、UI に絡むものは Look&Feel が統一できるだけで、(コンポーネントを使った)実装はプラットフォーム毎に必要と考えた方が良いでしょう。

まとめ

Xamarin Studio に統合された Component Store はとても簡単に使うことができました。

試しに使った Alert Center の他にも、

などは、どこかで使えそうです。

また、Component Store でなくても、.NET framework の基本的なクラスのみで書かれた(POCO な)ライブラリであれば、Xamarin でも概ね使うことができます。 例えば、Amazon Web Services の .NET SDK

は、Xamarin.Mac で使うことができました。(Xamain.iOS/Android は未確認)

View 部分の共有は最初から想定しない思想なので、Model 部分を開発する際に使えるコンポーネントがさらに充実していくことに期待します。