Fable(F#からJSへコンパイラー)の紹介

どこでもF#を使いましょう!

皆さま、スペインからこんにちは!これは日本語の「F# Advent Calendar 2016」 の25日目の記事です、一日遅れましたがご了承ください(;^_^A アセアセ・・・


今回もしつこくFableという自分のプロジェクトについて話したいです。私のプログラミングの経験は 大体.NET/C#,2年前に同時に関数プログラミングとWebプログラミングを始めて、F#言語に憧れて F#をウェブに対応できる方法を探しまして、その時FunScriptを見つかりました。 FunScriptはF#のソースコードをJSへコンパイルし、とても面白いプロジェクトでした。それがきっかけで 初めて私のオープンソースの経験としては下手でしたがFunScriptに色々な貢献をしてみました。2015年にも 鈴木さんのおかげで東京のF#グループの前でFunScriptについて喋る 機会がありました

残念ながらFunScriptもいろいろな限度がありましたので大きいアプリを開発するにはあまりふさわしいツールでは なかったです。去年の終わりにF#でもJS側でもソースコードではなくAST(Abstract Syntax Tree) を読んだり書いたりなどのツールができましたので(F# Compiler ServicesBabel) ゼロから新しいコンパイラー作るチャンスだと思いました。最初は単純にただBabelにただ文字を変えて「Fabel」 の名前でしたが、F#のコミュニティの意見を聞いたら、やっぱり「Fable」はもっと似合う名前でした。

新しいコンパイラーを作るにはどのメリットがあるかと聞かれたら…

  • 直接F#ソースコードを読みますので、JSへ変更する時間は早くなります(特に--watchモードにて)
  • ES2015を目的としていますが、Babelを通じて古いブラウザでも実行できます
  • F#のファイルはES2015 モジュールモジュールに なりますので、JSとの相互運用は高くなります
  • ウェブだけではなく、JSの実行できるところ(デスクトップやモバイルなど)のターゲットもできます

Fableの初めてのコミットしてからもう一年になりますが、その間F#コミュニティの応援のおかげで大きなプロジェクトに なりました。もうFableで制作されたThe Gamma Projectのような大きなプロジェクトウェブは 発表されています。まだ英語だけですが、皆さん興味がありましたら、Fableのホームサイトサンプル をチエックしてください。そして質問がありましたらご気軽に連絡をお願いします。Fableを使って皆さんがすごいアプリを 作ることを期待しています!

Fork me on GitHub