×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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(日) ゆるはこ 拡大版 おわり