F# で Web アプリケーション開発を ~App Serviceに添えて~
これは Microsoft Azure Tech Advent Calendar 2022 の 18 日目の投稿です。
(ひょぇ~、投稿が一週間も遅れてすみません 💦)
F# に入門したての初心者が、Web アプリケーションのプロジェクトを用意し、デフォルトのサンプルアプリを Azure App Service にデプロイして公開するところまでやってみました。
この記事を読むとわかること
- SAFE スタックを用いた Web アプリケーション開発の始め方
- SAFE スタックを用いた Web アプリケーションを Azure App Service にデプロイする方法
注意とお願い 🙇
F# の記事と題しておきながら、F# のコードはほとんどでてきません。期待されてた方ごめんなさい 😓
これからも F# and/or SAFE スタックを触っていくつもりなので、知見がたまったら別途記事にできたらよいな。。。
また .NET Core のインストールや Azure アカウントの作成は終わっている前提で話を進めていきます。
それらの話題が気になる方は本記事の最後の参考資料をご参照ください。
動作を確認した環境
- macOS 13.1
- WSL 上の Ubuntu 20.04.5 LTS
(Windows 上でも動きそうだけど未検証です)
F# って?
マイクロソフトが開発した .NET 向けのマルチパラダイム言語です。
本家ドキュメントやマイクロソフトのドキュメントではそれぞれ
# 本家
F# empowers everyone to write succinct, robust and performant code
# マイクロソフト
F# は、簡潔性、堅牢性、パフォーマンスの高いコードを書くためのユニバーサル プログラミング言語です。
と宣伝されており、簡潔性、堅牢性、パフォーマンスの高さが特徴だそうです。
うーむ。まだ私にはピンとこないです。違いがわかるまでもうちょっと使い込んでみます 😓
SAFE スタックって?
F# で Web アプリケーション開発をサポートする選択肢は結構多く[1]、F# 初心者の私はそれだけで最初ちょっと圧倒されてしまいました。
そんな中、この SAFE スタックは Azure (App Service)との連携すること前提という謳い文句だったので、これを使ってみることにしました。
ちなみに SAFE のそれぞれの文字は次のワードの頭文字だそうです。
ここではそれぞれについて深くは触れないので、興味がある方は上のリンクより詳細をご確認ください。
SAFE スタックを用いた開発にに必要なツール
本家ドキュメントによると以下のものが必要です。
Quick Start - SAFE Documentation (safe-stack.github.io)
Web アプリケーション開発を始める
ここから実際に SAFE スタックを使って Web アプリケーション開発を始めていきます。
SAFE プロジェクト用のテンプレートは初回時のみインストールが必要です。
$ dotnet new install SAFE.Template
以下のコマンドでプロジェクトを作成します。
-o 以降はプロジェクト名なので、適宜よき名前に変更してください。
$ dotnet new SAFE -o MySAFEApp
ローカル環境で動かしてみる
ローカル環境で開発用サーバーを動かしてみましょう。
以下のコマンドを実行し、途中でエラーが出て止まったりしなかったら準備 OK。
$ cd MySAFEApp
# ローカル用ツールのインストール
$ dotnet tool restore
# 開発用サーバーを動かす
$ dotnet run
ブラウザで http://localhost:8080/ を開いてください。
以下のような画面が表示されるはずです。
App Service への デプロイ
最後は App Service にデプロイします。
私が SAFE スタックって良いな~と感じたところのひとつは、Azure ポータルなどを使って事前に自分で App Service 環境を準備しなくても SAFE スタックくんが良い感じ?に用意してくれるところです。
次のコマンドを実行するだけで OK !
途中で Azure のログインを求められたら指示にしたがってログインしてください。
$ dotnet run -- Azure
無事に処理が終われば、以下のように App Service(+ リソースグループ、App Service プラン)が作成され、そこにアプリケーションがデプロイされています。
Azure ポータルなどで確認できる URL にアクセスして、先ほどローカル環境で確認したのと同じ(※ 背景はリクエスト毎に変わるみたい)画面が表示されれていれば無事にデプロイが成功したようです。やったね
※ デフォルトでは App Service プランの location が WestEurope だったり、Usage Tiers が Free だったりするので、良しなに変更する必要があります。
プロジェクトルートにある Build.fs
のここら辺を触ると良さそう(なのですが、時間が足りず未検証です)
まとめ
SAFE スタックを使って Web アプリケーション開発を始める ~ App Service にデプロイする、をお見せしました。
.NET や Azure CLI のインストールや Azure アカウントの開設を除けば 30 分もかからずに(デフォルトのサンプル)アプリを公開出来ちゃいます。
すごいですね 😮[6]
ぜひ皆さまも、これを機に F# を触ってみては如何でしょうか?
参考資料
F# を学ぶ
SAFE スタックを学ぶ
.NET Core、、Azure アカウントの作成方法は本記事では取り上げません。
以下の本家のサイトや、他にもわかりやすく説明されているサイトがたくさんあるのでそちらをご参照ください。
.NET Core をインストールする
Azure を始める
-
.NET 7.0.1 でも試してみたのですが動きませんでした。.NET 6.0.404 では動作することが確認できました。 ↩︎
-
手元の環境で試してみたところ v18.12.1 でも動作することが確認できました。 ↩︎
-
npm v9.2.0 でも試してみたのですが動きませんでした。npm v8.19.3 では動作することが確認できました。 ↩︎
-
2.43.0 で動作することを確認しました ↩︎
-
ただ、TODO アプリなのにアプリケーションがアンロードされちゃうとデータが揮発するなど、このままではアプリとしてはちょっと使えないです。私はここら辺を改善できるようチャレンジしてみる予定です。その内容も記事にできるといいな 😅 ↩︎
Discussion