Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

構造

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Azure Table Strageの中身

Slide 14

Slide 14 text

バックエンド編

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

フロントエンド編

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

こ れ で 完 成 達成感の塊

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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