Azure上に.NET Coreでモバイルバックエンドを作ってみる
このエントリは Microsoft Azure Advent Calendar 2016 - Qiita の17日目です。
最近弊社で Xamarin に取り組んでいることもあり、全然モバイル畑ではないですが、勢いで Xamarin(その2) Advent Calendar 2016 - Qiita にもエントリしてしまったので、Azure側でバックエンドを実装してみようと思います。
まず、AzureにはMobile Appという超便利なモバイルバックエンドがあるので、普通に簡単に使いたい人はそちらを使うことをおすすめします。
このハンズオン資料の通りに進めるとMobile Appを使ったいい感じのiOS/Androidアプリが出来上がりますので、使ってみたい方は是非こちらを参考にしてください。
github.com
github.com
さて、今回はXamarinで実装したiOS/AndroidアプリをクライアントとするWeb APIを作ります。
普段はRuby on Railsをメインで触っているのですが、 Azure App Services がRuby未対応でPHP/Python/Node.jsとあるのですが、どれもなんとなく触ったことがあり、せっかくXamarin触るのでASP.NET Coreで実装してみたいと思います。← OSS on Azure!!
C#でびゅー!!
完全にサンプルのため、細かい認証やセキュリティなど全く気にしておりません。
今回の環境はこんな感じです。
- Visual Studio for Mac Preview 2 (7.0 build 560)
- .NET Core 1.0.0-preview2-1-003177
リポジトリの準備
とりあえずリポジトリを準備しましょう。私は今回Bitbucketに作成しました。
ない方はFTPなどでもアップロード可能なので問題はありませんが、VSTS/GitHub/Bitbucketであればリポジトリとブランチの設定をするだけで、プッシュされた際に自動デプロイが行われますので、是非作成したいところです。
今回作成したリポジトリを一応公開しています。
bitbucket.org
Azure API Appの準備/設定
- Azure Portal(https://portal.azure.com)を開きます
- App Servicesメニューを選択します
- + Add ボタンで新規追加しましょう
- API Appで検索し、API Appを選択し作成
- App Nameを入力し、サブスクリプションを選択
- リソースグループを作成/選択しプランを選んで作成
(注意)プランはデフォルトでは課金されるプランだったと思うので、試しに触ってみたりする方はFreeプランを選択しましょう
作成されたAPI AppのDeployment optionsメニューを選択し、先程作成したリポジトリを登録します。
私はとりあえずサンプルなのでブランチはmasterにしました。
ここまでで一旦Azureはおしまいです。
(書きながらAzure Advent CalendarなのにAzure要素が少ない気がした・・・)
ソリューションの作成
実装
この ASP.NET Core で Riot.js その1 - Qiita 記事を参考にさせていただき、APIとして必要そうな部分だけを実装しました。
内容についてはリポジトリを参照ください。
本当はSQL Server使いたかったのですが、今回はMockで断念しました・・・
マサカリという名のプルリク緩募です。C#不勉強なもので、勉強させてください。
リポジトリへプッシュ&デプロイ
実装が終わりましたら、コミット&プッシュをします。
ここでプッシュをすると最初に作ったAPI App側でデプロイが始まります。
実際にリクエストしてみると・・・このようなjsonが返ってきました!
[ { "id":"a85f7358-a1b6-4aa1-9a9b-86b002824396", "name":"Udon", "zipCode":"222-2222", "address":"Nakasu", "phoneNumber":"092-222-2222", "memo":null }, { "id":"326b03d9-2eb7-4c49-9fb0-7b47d97abe08", "name":"Ramen", "zipCode":"333-3333", "address":"Nagahama", "phoneNumber":"092-333-3333", "memo":null }, { "id":"06810410-4358-47f8-bc99-79727974ef02", "name":"Pizza", "zipCode":"111-1111", "address":"Tenjin", "phoneNumber":"092-111-1111", "memo":null }, { "id":"320b65e3-4433-42af-8145-6286c0d06426", "name":"Bento", "zipCode":"000-0000", "address":"Hakata", "phoneNumber":"092-000-0000", "memo":null } ]
Azure要素がちょっと少なかったですが、これをベースに Xamarin(その2) Advent Calendar 2016 - Qiita こっちでクライアント実装を頑張りたいと思います。