世界をちょっと支配してみた

ちょっと支配してみた

この記事はF# Advent Calendar 2014 - connpass 13日目の記事です。前日は ichiohta さんの F#で2ch専用ブラウザをつくろう | たがわ製作所ブログでした。

去年の記事でF#は世界を支配する - omanuke-ekunamoの日記というのを書いたのですが、支配を実案件で進めてみました。
あの記事の段階では調査段階だったのですが、その調査で行けそうということになりその後案件となりました。
WebSharperを使ったHTML5チャートは実装を終え稼働済み。
Xamarinの方は絶賛開発佳境中です。
ネット証券のスマホ案件、サーバー側のWebAPIをスマホから呼び出し。
スマホ側はMVVM構成でVMより上はFです。View側もF#で行けたかもですが、まだ案件の出だしのころはXamarinのF#テンプレートが落ち着いてなかったりとかサンプルC#多いので流用楽とかもろもろでヘタレてC#になりました。
いまだったら全部F#としても良かったかもしれません。
実験としてHTML5とXamarinでワンソース化したチャートはその後手を加えて製品レベルまでクオリティあげて先ほど述べたようにHTML5側は実稼働、Xamarin側もさっくり組み込み出来て調整待ちです。

実案件としてこれらの開発にF#を使った雑感

WebSharperでHTML5開発

やはりF#で書けるととっても楽です。普段使ってるasync workflowで書いたものがjavascriptになってそのまま動くとか胸アツです。
チャートのモジュールをF#で書いた後、HTML側のjavascriptから呼び出して動かしてましたがすぐタイポしたりもろもろ間違いを起こしやすくF#のよさを実感できます。まぁ単にjavascriptになれてないだけという話もありますが。
開発環境もVS使えてとてもいいです。
2.5でMailboxProcessorも使えるようになったらしく(未確認)、また3.0もAlphaが出たらしく着々と改善されています。
3.0からはApatchライセンスになるらしいので是非触ってみてください。

Xamarin

上で述べたようにMVVMのVM側をPCLとしてF#で記述、View側をC#で記述しています。
Windows上でVMのF#プロジェクトとC#iPhoneプロジェクトを分けてVSで開発していますが、おおむね安定しています。
VSからのiPhoneデバッグが繋がらなかったり途中で切れるというのは自分のネットワーク環境だとよくあるのですが、そのほかは問題ないです。
C#iPhoneプロジェクトからデバッグで別プロジェクトのF#側にステップインするのも問題ないです。
F#とC#を両方使いながら開発してますが、改めてF#の楽さを実感します。
型推論、簡潔な構文、パターンマッチなどでシンプルに書けます。
いまだにいろいろと入る仕様変更も戻り値とそれを使う場所だけつじつま合わせれば何とかなるのもF#のいいところです。
C#に戻るとタプルを書かなきゃいけないところで心折れます。
Xamarinは実行環境としてすこぶる安定してます。F#側でよくわからない挙動ですっ飛ぶとかもないです。。
ツールはかなりこなれてきたとはいえ(去年はひどかった…)たまにデバッグがつながらないとかありますが、概ね問題ないです。
MVVMで書けばC#側は薄いViewレイヤーにとどめてほとんどのロジックをVM以上で可能。
F#でほとんどかけると皆さまならお分かりだと思いますが、とても幸せにコードが書けます…

これから

色々なものをF#で書けるのはやはりいいです。うまくやればワンソースでWindowsからスマホからHTML5までいけるので皆様ぜひチャレンジしてくだしあ。
.NETCoreとか出てきて今まで以上にLinuxMacでもF#使えるようになるんですかね?よくしらんけど。
来年はF#がもっと発展することを願ってこの辺で締めたいと思います。