F#

F#開発環境の紹介

More than 1 year has passed since last update.

私が常用しているF#開発環境(古いXamarin Studio)を紹介します。個人的には、小規模なプログラミングでは最強の使い勝手だと感じています。これが便利でF#を使っていると言っても過言ではありません。

【注】新しいバージョンでは問題があるため、止むなく古いバージョンを使い続けています。実用上の問題はないと思いますが、保証はしかねます。

この記事ではWindowsを対象とします。このバージョンが現役だった当時はMac OS XやLinuxでも同様の環境を構築できてはいましたが、現状は未確認です。

【注】Xamarinと言えばスマホ開発で有名ですが、この記事で想定しているのはホストで動かすセルフ開発で、スマホとは関係ありません。

F#を試してみたい方は、入門記事を参照してください。

特徴

  • Xamarin StudioをIDEとしてではなくエディタとして使用します。
  • インストールするファイルが少なく(3個)、数分でインストールが完了します。
  • F#をファイル単体で扱えるためプロジェクトの煩わしさがありません。
  • 最低限のインテリセンス(関数名の補完など)が使えます。
  • ビルドしなくてもリアルタイムでエラーチェックしてくれます。
  • ツールチップで型が分かります。

インストール

以下の3つをインストールします。後述の理由のため、どれも最新ではありません。特にXamarin Studioはこのバージョンである必要があります。

  1. F# Tools for Visual Studio Express 2012 for Web
  2. gtk-sharp-2.12.25.msi
  3. XamarinStudio-4.0.13-38.msi

Xamarin Studio起動後にアドインからF# Language Bindingを追加して、Xamarin Studioを再起動してください。

使い方

プロジェクトを作らずに単体でF#のソース(拡張子 .fs または .fsx)を開くと、画面左上の (▶) ボタンで実行できます。

次の理由からF#スクリプト(拡張子 .fsx)が便利です。こういう使い方のための言語仕様なのかと感じました。

  • 参照ライブラリを #r ディレクティブで指定できます。
  • 複数ファイルを同時に開いてタブで切り替えられます。(▶) ボタンで実行されるのはそのとき開いているファイルです。複数ファイルの連携は #load ディレクティブで対応できます。
  • 複数ファイルで構成されるF#プログラムはファイルの順序を指定する必要があります。F#スクリプトではメインのファイルに #load ディレクティブを並べることで代用できます。
  • サブのファイルもF# ScriptでPythonのnameを真似するの方法でテストプログラムを含めて単体実行できます。

注意点

このバージョンでの既知のバグです。

  • 今回はプロジェクトなしでの利用を推奨していますが、F# プロジェクトを作るとビルドでエラーになります。.fsproj ファイルを手動で修正すれば使えます。 → 詳細
  • エディタ部分を右クリックするとエラーが表示されます。無視すれば2回目以降はエラーが表示されません。
  • F# Script (.fsx) を編集中、最初の行に赤い波線で System.Numerics.dll 関連のエラーが表示されます。実行には差支えないため無視します。
  • デバッグ実行ができません。printf デバッグで済むような規模が限界です。
  • このバージョンのアドインが F# 3.0 に依存しているため、F# 4.0 を利用できません。

大半は後のバージョンで修正されています。しかし後のバージョンではプロジェクトなしでの (▶) ボタンでの実行ができないという致命的な問題があり、バージョンを上げるに上げられません。現時点 (2016/12) での最新バージョン 6.1.2 では、プロジェクトを作らないと (▶) ボタンのクリックすらできなくなっています。

移行の検討

正直、このような古い環境を使い続けるのには問題があるため、移行できないかということは考えています。現時点で思っていることなどを書きます。

  • プロジェクトなしでの実行に拘らなければVisual Studioを使えば良いでしょう。この環境を知るまではVisual Studioを使っていましたが、小規模なプログラムではプロジェクトなしでの運用があまりに気軽だったため、捨てがたいものがあります。
  • Visual Studio Code + Ionide も基本的にプロジェクトでの運用となります。.fs はプロジェクトなしの単体でも補完やエラーチェックが効くのですが .fsx は対象外のようです。.fs ではプロジェクトなしで参照の管理などができないため、単体運用に限界があります。また実行に関しても FSI (F# Interactive) に送る機能はありますが、全体をその場でビルド・ランして結果を表示することはできないようです。
    • 【追記 2016.12.31】Ionide-fsharp 2.16.1 では .fsx ファイル単体でも補完やエラーチェックが効くようになりました。
  • 補完やリアルタイムのエラーチェックを気にしなければ、適当なエディタでも書けなくはないです。しかしあまり快適ではなく、今度はそこまでしてF#に拘るのかという話になって来ます。

Visual Studio Code + Ionide は惜しい所まで行っているので、今使っている環境がいよいよダメになったときは Ionide に手を入れることも考えないといけないかもしれません。

その他

このバージョンが現役だった時に書いた記事です。

後のバージョンで実行できなくなっていることをバグレポートしたのですが、私の英語力の問題でユースケースをうまく伝えられませんでした。

Komodo Edit

余談ですが、Pythonの話です。

フリー版のKomodo Editには有料版のKomodo IDEとの差別化で実行機能がありませんでした。しかしJavaScriptで数行のマクロを書くことで簡単に実行機能が実現できました。

このマクロを使えばファイル単体で開いて実行可能で、カレントのタブが実行されるなど、今回紹介したXamarin Studioと同じような使用感でした。これが便利で一時期Pythonに傾いていたのですが、今回紹介したXamarin Studioの件に気付いて、以後F#の使用頻度が上がって現在に至ります。