BT

SAFEスタックによるF# Webデプロイメント

| 作者: Pierre-Luc Maheu フォローする 4 人のフォロワー , 翻訳者 h_yoshida _ フォローする 1 人のフォロワー 投稿日 2018年6月4日. 推定読書時間: 4 分 |

原文(投稿日:2018/04/30)へのリンク

読者の皆様へ: 皆様のご要望にお応えするべく、ノイズを削減する機能セットを開発しました。皆様が関心をお持ちのトピックを、EメールとWeb通知で受け取ることができます。新機能をぜひお試しください。

SAFEスタックは、Webアプリケーションを開発するためのF#ライブラリのセットだ。Tomasz Heimowski氏はこのスタックを、先日のF# eXchange 2018でのライブコーディングセッションで発表し、講演用の評価アプリケーションの作成とデプロイを行って、すべてのエクスペリエンスを実演してみせた。

SAFEスタックは次のもので構成されている。

  • Suave — スタンドアロンのWebサーバライブラリ
  • Azure
  • Fable — F#からJavaScriptへのトランスパイラ
  • Elmish — ElmにインスパイアされたUIライブラリ

開発には.NET SDK 2.0とNodejsが必要だが、アプリケーションの実行には.NET Coreがあればよい。まず最初に、テンプレートを使用して基本アプリケーションを作成する。アプリケーションにはサンプルコードとビルドファイルが含まれている。

dotnet new -i SAFE.Template
dotnet new SAFE
build run

Fable.Elmishが、HTML要素のための宣言的なF#バインディングを提供する。HTML要素はF#で構築されており、イベントハンドラと要素定義のワイヤリングが可能になっている。

let submit (model : Model) (dispatch : Msg -> unit) =
Button.aFa
[ Button.Color IsPrimary
Button.IsFullwidth
Button.OnClick (fun _ -> dispatch Submit)
Button.IsLoading model.Loading ]
[ str "Submit" ]

SAFEテンプレートには、ホットリローディング用のWebpackも含まれている。Webpackはクライアントサイドのモジュールバインダだ。SAFEスタックのユニークな機能としてHot Module Replacementがあり、アプリケーションの一部のみをステートを失うことなく交換することができる。

Fable.Remotingは、クライアントとサーバの両側でシリアライズとデシリアライズを処理することにより、クライアントとサーバがインターフェースを共有する手段を提供する。オブジェクト定義とサービスインターフェースは、それぞれクライアントとサーバの両方から参照されるライブラリに格納されている。

// Interface defining the service.
type IVotingProtocol =
  { getResults : unit -> Async<VotingResults>
  addVote : Vote -> Async<VotingResults> }

// Typed service definiton used by the client code.
let api : IVotingProtocol =
  Proxy.createWithBuilder<IVotingProtocol> Route.builder

サーバ側ではインターフェース実装が、SuaveのFable.Remotingヘルパを使用してサーバライブラリに接続される。

let init : WebPart =
let votingProcotol : IVotingProtocol =
  { getResults = getResults
  addVote = addVote }

// creates a WebPart for the given implementation
FableSuaveAdapter.webPartWithBuilderFor votingProcotol Route.builder

講演の最後では、作成したアプリケーションがAzureにデプロイされた。SAFEテンプレート自体はCloudプロバイダに直接統合されていないが、Dockerイメージを生成することが可能なので、開発後にプロバイダ、今回のデモではAzure Containersにデプロイすることができる。

SAFEスタックに関する資料は、コードサンプルとともにGitHubで公開されている。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT