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

748cf16e1d5fdb508f9725cd91fe1768?s=47 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あんまり説明できてないっ!!

748cf16e1d5fdb508f9725cd91fe1768?s=128

Atria

October 20, 2019
Tweet

Transcript

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

  2. About me. @AtriaSoft http://atriasoft.work/ Atria64 • 畑 大地(a.k.a. Atria) •

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

    • 競技プログラミングが趣味 • 最近はAndroidが楽しい • 目標は”未来大のC#er代表” • ラッキーピエロ (函館のハンバーガーショップ) がすき @AtriaSoft http://atriasoft.work/ Atria64
  4. ラッキーピエロを知っていますか? Speaker : @AtriaSoft

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

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

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

    ラッキーピエロオタクじゃないと、 完全には把握できないのが現状。(むずかしい) ※2019/10/17時点での情報です Speaker : @AtriaSoft
  8. この問題を解決するべく 一人のC#erが立ち上がった

  9. 完成品 LP_Navi(ラピナビ) • 毎日の特売情報をサジェスト • 無効条件などの 複雑な処理を自動で行う。 • Xamarin. Androidを用いて開発

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

    • Azure Functions を用いて特売情報などを取得 • C#でガリガリ書ける • じつは非公式… 完成品 LP_Navi(ラピナビ)
  11. 構造

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

  13. Azure Table Strageの中身

  14. バックエンド編

  15. そもそもAzure Functions とは • サーバーレスアーキテクチャ • サーバー管理を気にせずに開発できる • 従量課金制、かなり安いほうだと自分は思う •

    Azure Functions ランタイムはオープン ソース • 開発言語は C#、Java、Javascript、Python などから選べる
  16. Azure Table Strageを使うために • Microsoft.Azure.Webjobs.Extensions.Storageの導入 が必須 • CloudTableを用いること – Iqueryableは使用できなくなった。これでかなり詰まった。

    – あまりにも日本語文献などがないので、今度記事書く。
  17. Jsonを生成するコード 実際に書いたJsonを生成するコード

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

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

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

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

  22. フロントエンド編

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

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

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

  26. こ れ で 完 成 達成感の塊

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

    他になんかいい感じの機能あったら教えて下さい
  28. All C#なモバイル開発 フロントエンドはXamarinで, バックエンドはAzure Functionsで. Speaker:@AtriaSoft 2019/10/20(日) ゆるはこ 拡大版 おわり