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

All C#なモバイル開発. / All C # Mobile Development.

Atria
October 20, 2019

All C#なモバイル開発. / All C # Mobile Development.

ゆるはこ 拡大版、2019年10月20日(土)の発表資料です。
connpass -> https://yurui-hakodate.connpass.com/event/149594/
-----------
C#で何でも書こう。
フロントエンドでXamarinを,バックエンドでAzure Functionsを用いたAll C#なモバイル開発を提案します。

考えてみればXamarinあんまり説明できてないっ!!

Atria

October 20, 2019
Tweet

More Decks by Atria

Other Decks in Programming

Transcript

  1. All C#なモバイル開発
    フロントエンドはXamarinで,
    バックエンドはAzure Functionsで.
    Speaker:@AtriaSoft
    2019/10/20(日) ゆるはこ 拡大版

    View Slide

  2. About me.
    @AtriaSoft
    http://atriasoft.work/
    Atria64
    • 畑 大地(a.k.a. Atria)
    • 公立はこだて未来大学B1
    • C#/C++を触ってます
    • 競技プログラミングが趣味
    • 最近はAndroidが楽しい
    • 目標は”未来大のC#er代表”
    • ラッキーピエロ
    (函館のハンバーガーショップ)
    がすき

    View Slide

  3. About me.
    • 畑 大地(a.k.a. Atria)
    • 公立はこだて未来大学B1
    • C#/C++を触ってます
    • 競技プログラミングが趣味
    • 最近はAndroidが楽しい
    • 目標は”未来大のC#er代表”
    • ラッキーピエロ
    (函館のハンバーガーショップ)
    がすき
    @AtriaSoft
    http://atriasoft.work/
    Atria64

    View Slide

  4. ラッキーピエロを知っていますか?
    Speaker : @AtriaSoft

    View Slide

  5. 函館のソウルフード(?)ラッキーピエロ
    • チャイニーズチキンバーガーはいいぞ
    • シルクバニラソフトカップはいいぞ
    • 函館スノーバーガーはいいぞ
    • オニオンリングはいいぞ
    • ラキポテはいいぞ
    • ラッピはいいぞ
    Speaker : @AtriaSoft

    View Slide

  6. 割引が熱い
    • 毎月何かが安くなる「ハッピーデイ」
    • チラシなどで広告される「祭シリーズ」
    • 気づいたら店舗に張り出されてる「キャンペーン」
    キャンペーンがあると、めっちゃ安いし
    ボリューム十分!
    …けど、情報をなかなか覚えることができない。
    ※2019/10/17時点での情報です
    Speaker : @AtriaSoft

    View Slide

  7. 意外と難しい値引き情報
    • ハッピーデイには無効期間や無効条件があります。
    • 対象店舗が限られている場合があります。
    • 個々のキャンペーンも、
    対象店舗が限られている場合が多いです。
    • Twitterフォローしてるとなんとかなる場合も
    ラッキーピエロオタクじゃないと、
    完全には把握できないのが現状。(むずかしい)
    ※2019/10/17時点での情報です
    Speaker : @AtriaSoft

    View Slide

  8. この問題を解決するべく
    一人のC#erが立ち上がった

    View Slide

  9. 完成品 LP_Navi(ラピナビ)
    • 毎日の特売情報をサジェスト
    • 無効条件などの
    複雑な処理を自動で行う。
    • Xamarin. Androidを用いて開発
    • C#でバリバリ書ける
    • Azure Functions
    を用いて特売情報などを取得
    • C#でガリガリ書ける
    • じつは非公式…

    View Slide

  10. • 毎日の特売情報をサジェスト
    • 無効条件などの
    複雑な処理を自動で行う。
    • Xamarin. Androidを用いて開発
    • C#でバリバリ書ける
    • Azure Functions
    を用いて特売情報などを取得
    • C#でガリガリ書ける
    • じつは非公式…
    完成品 LP_Navi(ラピナビ)

    View Slide

  11. 構造

    View Slide

  12. Httpリクエスト Jsonオブジェクト
    特売情報を格納している
    ストレージ

    View Slide

  13. Azure Table Strageの中身

    View Slide

  14. バックエンド編

    View Slide

  15. そもそもAzure Functions とは
    • サーバーレスアーキテクチャ
    • サーバー管理を気にせずに開発できる
    • 従量課金制、かなり安いほうだと自分は思う
    • Azure Functions ランタイムはオープン ソース
    • 開発言語は
    C#、Java、Javascript、Python などから選べる

    View Slide

  16. Azure Table Strageを使うために
    • Microsoft.Azure.Webjobs.Extensions.Storageの導入
    が必須
    • CloudTableを用いること
    – Iqueryableは使用できなくなった。これでかなり詰まった。
    – あまりにも日本語文献などがないので、今度記事書く。

    View Slide

  17. Jsonを生成するコード 実際に書いたJsonを生成するコード

    View Slide

  18. Jsonを生成するコード
    LPINFOはレコードを取得する用のクラス。
    これを作るとListで管理できる。

    View Slide

  19. Jsonを生成するコード
    [Table(“LPInfo”)]などでデータとバインディングしている。
    これについてはAzure Functionsについて調べてみて欲しい。説明時間が…

    View Slide

  20. Jsonを生成するコード
    Azure Table Strageにアクセスし、データをリストに格納している。
    すべての格納が終了した後に、Jsonファイルを生成している。
    最後に生成したJsonファイルを返す。

    View Slide

  21. そんなこんなで
    Jsonを返してくれるようになった

    View Slide

  22. フロントエンド編

    View Slide

  23. 画面をパパッと記述する
    • Xamlファイル(Javaではxml)を記述する。
    • デザイナーがあるので、簡単に記述することができる。

    View Slide

  24. Json.NET(Newtonsoft.Json)の導入
    • C#でJsonを簡単に扱えるようになるスゲーやつ
    • NuGetできるので簡単に使用開始できる。
    • C#の強み、「LINQ(言語総合クエリ)」に対応している。

    View Slide

  25. ロジックを組む
    • 長くなるので割愛

    View Slide






  26. 達成感の塊

    View Slide

  27. LP_Navi(ラピナビ)のこれから
    • 日時による絞り込み
    – 時間が確保できず、まだ未実装
    • 対象店舗による絞り込み
    • ホーム店機能の実装(対象店舗情報をプッシュ通知)
    • 他になんかいい感じの機能あったら教えて下さい

    View Slide

  28. All C#なモバイル開発
    フロントエンドはXamarinで,
    バックエンドはAzure Functionsで.
    Speaker:@AtriaSoft
    2019/10/20(日) ゆるはこ 拡大版
    おわり

    View Slide