F#

F#開発環境の紹介

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

【2018.07.31】記事を全面的に書き直しました。以前の内容は非推奨です。

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

Visual Studio Code の拡張機能では Markown+Math もお勧めです。


特徴

Visual Studio Code の拡張機能 Ionide-fsharp の紹介です。

Ionide-fsharp には様々な機能がありますが、今回は F# スクリプトでの使い勝手に焦点を絞ります。


  • F# スクリプトをファイル単体で扱えるためプロジェクトの煩わしさがありません。

  • 補完が使えます。

  • トップレベルの定義には型が表示されます。それ以外でもツールチップで型が分かります。

  • ビルドしなくてもリアルタイムでエラーチェックしてくれます。

  • コードのアウトライン(関数や変数の一覧)が表示されます。

  • エディタ内で実行して結果を確認できます。

使用イメージです。

image.png


バージョン

執筆時点のバージョンは以下の通りです。


  • Visual Studio Code 1.25.1

  • Ionide-fsharp 3.25.0


インストール

F# 環境と Visual Studio Code をダウンロードしてインストールします。


Windows

Build Tools for Visual Studio 2017 をダウンロードします。

実行すると Visual Studio Installer が起動します。

※ 名前が誤解を招きやすいですが、今回は Visual Studio をインストールするわけではありません。

インストール対象を選ぶ画面になるので「.NET デスクトップ ビルドツール」をチェックします。

image.png

右側に表示されるオプションで「F# コンパイラ」をチェックします。

image.png

右下の[インストール]をクリックします。

インストールが終了したらウィンドウを閉じてください。

image.png


macOS

以下のページの Option 1 を参照してください。


Linux

以下のページを参照してください。


共通

Visual Studio Code を公式サイトよりダウンロードしてインストールします。

Visual Studio Code を起動して、拡張機能をインストールします。


  1. 画面左の拡張機能のアイコン image.png をクリックします。

  2. テキストボックスに ionide と入力します。

  3. Ionide-fsharp の [インストール] をクリックします。

  4. インストールが完了したら [再読み込み] をクリックします。Visual Studio Code の画面の中身が消えますが、しばらくして元の画面に戻れば完了です。


使い方

F#スクリプトのソース(拡張子 .fsx)を開きます。

画面左の F# のアイコン image.png をクリックするとコードのアウトラインが表示されます。

画面右上の実行のアイコン ▶ をクリックすると実行できます。

image.png

シンプルですが、ちょっとしたスクリプトを書くにはこれで十分です。


注意点


  • 右下に Consider using the .Net Core language services by setting `FSharp.fsacRuntime` to `netcore` という警告が出ることがありますが、とりあえず無視しても問題ありません。
    image.png

  • 実行のアイコン ▶ をクリックしてもソースが自動保存されません。明示的に保存操作を行わないと、修正内容が反映されないまま実行されます。実行前に必ず [Ctrl]+[S] で保存してください。

  • 実行結果が表示されるターミナルを閉じずに再度実行すると、以前のターミナルがそのまま残ります。その都度閉じるか、定期的にすべて閉じるかする必要があります。


F# スクリプト

F# スクリプトは柔軟性があり便利です。こういう使い方のための言語仕様なのかと感じました。


  • 参照ライブラリを #r ディレクティブで指定できます。

  • 複数ファイルを同時に開いてタブで切り替えられます。実行のアイコン ▶ で実行されるのはそのとき開いているファイルです。複数ファイルの連携は #load ディレクティブで対応できます。

  • 複数ファイルで構成される F# プログラムはファイルの順序を指定する必要があります。F# スクリプトではメインのファイルに #load ディレクティブを並べることで代用できます。

  • サブのファイルも「F# ScriptでPythonの__name__を真似する」の方法でテストプログラムを含めて単体実行できます。