ゆるはこ 拡大版、2019年10月20日(土)の発表資料です。 connpass -> https://yurui-hakodate.connpass.com/event/149594/ ----------- C#で何でも書こう。 フロントエンドでXamarinを,バックエンドでAzure Functionsを用いたAll C#なモバイル開発を提案します。
考えてみればXamarinあんまり説明できてないっ!!
All C#なモバイル開発フロントエンドはXamarinで,バックエンドはAzure Functionsで.Speaker:@AtriaSoft2019/10/20(日) ゆるはこ 拡大版
View Slide
About me.@AtriaSofthttp://atriasoft.work/Atria64• 畑 大地(a.k.a. Atria)• 公立はこだて未来大学B1• C#/C++を触ってます• 競技プログラミングが趣味• 最近はAndroidが楽しい• 目標は”未来大のC#er代表”• ラッキーピエロ(函館のハンバーガーショップ)がすき
About me.• 畑 大地(a.k.a. Atria)• 公立はこだて未来大学B1• C#/C++を触ってます• 競技プログラミングが趣味• 最近はAndroidが楽しい• 目標は”未来大のC#er代表”• ラッキーピエロ(函館のハンバーガーショップ)がすき@AtriaSofthttp://atriasoft.work/Atria64
ラッキーピエロを知っていますか?Speaker : @AtriaSoft
函館のソウルフード(?)ラッキーピエロ• チャイニーズチキンバーガーはいいぞ• シルクバニラソフトカップはいいぞ• 函館スノーバーガーはいいぞ• オニオンリングはいいぞ• ラキポテはいいぞ• ラッピはいいぞSpeaker : @AtriaSoft
割引が熱い• 毎月何かが安くなる「ハッピーデイ」• チラシなどで広告される「祭シリーズ」• 気づいたら店舗に張り出されてる「キャンペーン」キャンペーンがあると、めっちゃ安いしボリューム十分!…けど、情報をなかなか覚えることができない。※2019/10/17時点での情報ですSpeaker : @AtriaSoft
意外と難しい値引き情報• ハッピーデイには無効期間や無効条件があります。• 対象店舗が限られている場合があります。• 個々のキャンペーンも、対象店舗が限られている場合が多いです。• Twitterフォローしてるとなんとかなる場合もラッキーピエロオタクじゃないと、完全には把握できないのが現状。(むずかしい)※2019/10/17時点での情報ですSpeaker : @AtriaSoft
この問題を解決するべく一人のC#erが立ち上がった
完成品 LP_Navi(ラピナビ)• 毎日の特売情報をサジェスト• 無効条件などの複雑な処理を自動で行う。• Xamarin. Androidを用いて開発• C#でバリバリ書ける• Azure Functionsを用いて特売情報などを取得• C#でガリガリ書ける• じつは非公式…
• 毎日の特売情報をサジェスト• 無効条件などの複雑な処理を自動で行う。• Xamarin. Androidを用いて開発• C#でバリバリ書ける• Azure Functionsを用いて特売情報などを取得• C#でガリガリ書ける• じつは非公式…完成品 LP_Navi(ラピナビ)
構造
Httpリクエスト Jsonオブジェクト特売情報を格納しているストレージ
Azure Table Strageの中身
バックエンド編
そもそもAzure Functions とは• サーバーレスアーキテクチャ• サーバー管理を気にせずに開発できる• 従量課金制、かなり安いほうだと自分は思う• Azure Functions ランタイムはオープン ソース• 開発言語はC#、Java、Javascript、Python などから選べる
Azure Table Strageを使うために• Microsoft.Azure.Webjobs.Extensions.Storageの導入が必須• CloudTableを用いること– Iqueryableは使用できなくなった。これでかなり詰まった。– あまりにも日本語文献などがないので、今度記事書く。
Jsonを生成するコード 実際に書いたJsonを生成するコード
Jsonを生成するコードLPINFOはレコードを取得する用のクラス。これを作るとListで管理できる。
Jsonを生成するコード[Table(“LPInfo”)]などでデータとバインディングしている。これについてはAzure Functionsについて調べてみて欲しい。説明時間が…
Jsonを生成するコードAzure Table Strageにアクセスし、データをリストに格納している。すべての格納が終了した後に、Jsonファイルを生成している。最後に生成したJsonファイルを返す。
そんなこんなでJsonを返してくれるようになった
フロントエンド編
画面をパパッと記述する• Xamlファイル(Javaではxml)を記述する。• デザイナーがあるので、簡単に記述することができる。
Json.NET(Newtonsoft.Json)の導入• C#でJsonを簡単に扱えるようになるスゲーやつ• NuGetできるので簡単に使用開始できる。• C#の強み、「LINQ(言語総合クエリ)」に対応している。
ロジックを組む• 長くなるので割愛
これで完成達成感の塊
LP_Navi(ラピナビ)のこれから• 日時による絞り込み– 時間が確保できず、まだ未実装• 対象店舗による絞り込み• ホーム店機能の実装(対象店舗情報をプッシュ通知)• 他になんかいい感じの機能あったら教えて下さい
All C#なモバイル開発フロントエンドはXamarinで,バックエンドはAzure Functionsで.Speaker:@AtriaSoft2019/10/20(日) ゆるはこ 拡大版おわり