BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FableでF#をJavascriptにトランスパイルする

FableでF#をJavascriptにトランスパイルする

原文(投稿日:2016/08/22)へのリンク

FableはF#からJavascriptへのトランスパイラだ。F#スクリプトもしくはF#プロジェクト全体をJavascriptにコンパイルする。.fsxスクリプトもしくはプロジェクト全体をコンパイルするオプションを付けて、コマンドラインから実行する。Fableはnpmパッケージとして配布されている。

FableはF#コアライブラリの大部分と.NET BCLのほんの一部をサポートしている。基本型はすべて、完全もしくは例外付きでサポートされている。重要な例外のひとつはasyncだ。async計算式は、RunSynchronouslyが使えないことを除けば、期待通りに動く。

Fableはユーザ作成プラグインによって拡張できる。Fableプラグインは通常、コンパイル処理中に外部ライブラリ呼び出しを置き換えるのに使われる。プラグインの作成は、IReplacePluginインターフェイスとその単一のメソッドTryReplaceを実装することで行う。以下に、System.Randomを置き換えるプラグインのスケルトンを示す。

type RandomPlugin() =
   interface IReplacePlugin with
   member x.TryReplace com (info: Fable.ApplyInfo) =
     match info.ownerFullName with
     | "System.Random" ->
        match info.methodName with
        | ".ctor" -> failwith "TODO"
        | "Next" -> failwith "TODO"
        | _ -> None
     | _ -> None

プラグインを使うと、テストフレームワークの変換など、もっと複雑なシナリオが扱える。現在、NUnitはテストをMochaに変換するプラグインでサポートされている。

React Nativeを使うことで、モバイルアプリをFableで作ることも可能だReact NativeはReactアプリケーションをAndroidやiOSアプリにコンパイルするものであり、React Nativeへのバインディングを提供するFableプラグインが存在している。ただし、React Nativeによるモバイルアプリのサポートは実験的なもので、頻繁な変更に注意する必要がある。

FableはオープンソースプロジェクトでGitHubから入手できる。Fableのウェブサイトにはドキュメントサンプルコードがある。本格的なプロジェクトでの使用例に、Ionideがある。これはVsCodeとAtomでF#をエディットするためのプラグインで、その2.0リリース以降でFableを利用している。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT