BT

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

作者: Pierre-Luc Maheu , 翻訳者 笹井 崇司 投稿日 2016年9月6日 |

原文(投稿日: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
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

広告ブロッカーを使用されています。

何かの理由で広告ブロッカーを使用されていることと存じますが、InfoQを今後も無料でお使いいただけるようにするために、広告の表示にご協力いただけますと幸いです。InfoQはあなたの許諾なしに第三者にあなたの情報を提供することはありません。広告は読者の皆さんに関連するもののみを表示いたします。広告表示可能なサイトとしてご登録いただけますと幸いです。