Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

【レポ】Prism for Xamarin.Forms入門 Hands-on を開催しました

こんにちは。エクセルソフトの田淵です。

JXUG Prism for Xamarin.Forms入門 Hands-on - connpass

こちらのハンズオンを開催しました。

ドキュメントは @nuits_jp さんが用意してくださったもので、私が皆さんとハンズオンをして、@nuits_jp さんに解説をしてもらう。という私にとっても凄くためになる内容でした。できるとわかるは違うので、ちゃんと分からないと一人でトレーニングとかでやるのは難しそうだなーと感じているところです。

テストも書かないと DI の有難みが分からんよなぁというような話を懇親会で @nuits_jp さんと話していました。

所感

f:id:ytabuchi:20180827191000p:plain:w600

アンケートでは大変良いご評価を頂きました。皆さん楽しんでいただいたようでなによりです。

やっぱりちょっと難しかったみたいですね。下に XAML の補足を書きましたので、ご覧ください。

謝辞

開催にあたり、メンター、スタッフとして関わってくださった @_shunsuke_kawai@mishi_cs@yamamo@nakasho_dev@masatoru@hiro128_777@y_chu5@yoruxama の皆様、ありがとうございます。

引き続き助けて貰えると嬉しいですw

また、終了後に懇親会をしているのですが、初めて参加してくださった方が 4名ほどいらっしゃいました!ありがとうございます!!楽しかったなーと思ってもらえれば何よりです。

補足

内容についてですが、会場で挙手をしてもらったところ、XAML を始めて書くよーって方が結構いらっしゃいましたが、XAML とは?という話が出来なかったのが悔やまれます。

XAML とはオブジェクトのインスタンスを組み⽴てるための⾔語」であって、UI 記述特化言語ではない。という点を踏まえるとハンズオンで書いていた XAML がよりすっと入ってくるのではないかと思います。この言葉は @okazuki さんのスライドをそのまま拝借したものなので、詳しくは以下のスライドをご覧ください。

www.slideshare.net

例えば

PrismHandsOn/04-BindableBaseを利用する.md at master · jxug/PrismHandsOn

LabelText プロパティをバインドして、ButtonCommand をバインドする部分は、XAML だと

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage ...

    <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <Label Text="{Binding Message}"/>
        <Button Text="Update Message"
                Command="{Binding UpdateMessageCommand}"/>
    </StackLayout>

</ContentPage>

となっていますが、C# では

public class MainPage : ContentPage
{
    public MainPage()
    {
        var label = new Label();
        label.SetBinding(Label.TextProperty, "Message");

        var button = new Button { Text = "Update Message" };
        button.SetBinding(Button.CommandProperty, "UpdateMessageCommand");

        var stack = new StackLayout
        {
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.Center,
            Children =
            {
                label,
                button
            }
        };

        Content = stack;
    }
}

と書けるわけです。XAMLコンパイルや動的ロードされて C# のコードになるので結局は同じですよね。Prism の自動で ViewModel をバインドしてくれるのも当然動きます(実際に試して動いてびっくりしましたけどw)。

XAML の属性(Attribute)がそれぞれのクラスのプロパティだったりメソッドだったりしている。というのが分かると理解が早いかもしれません。

この後は

このハンズオンをを終了された方は、DI でインジェクションされるオブジェクトをモックに変更することで、テストが簡単になるのを是非実感していただきたいです。(私も実感したいw)

ということで、

github.com

こちらもやってみると良いかもしれません。

また、9/22(土) には今まで JXUG でやったハンズオンをメンターについてもらいながら実施できるハンズオンのハンズオン(?)を開催しますので、ご興味があれば是非ご参加ください。

jxug.connpass.com

なお、アンケートのコメントで

「チャットボットなどのAIを組み合わせたハンズオンをやってみたいです。」とのご意見を頂きましたので、

cogbot.connpass.com

との合同ハンズオンでも企画しましょうかね。面白そうです!

GPSを使う、カメラを使うといったより実用的なハンズオンがあると嬉しいです。」とのご意見がありましたが、Xamarin 公式で Essentials というライブラリを使うと各 OS 固有のセンサーやデバイスが結構共通コードで掛けますので、ドキュメント見てみてください。

docs.microsoft.com

Xamarin 気になった方は

Visual Studio 2017 をインストールして触ってみてください。手順書は こちらのエントリー をご覧ください。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

Xamarin 有償トレーニング : XLsoft エクセルソフト

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。

エクセルソフト | ダウンロード | 学習用リソース | JXUG リンクページ | ブログ購読