VisualStudioもF# も何も知らないズブの素人がLinux上でF# でHelloWorldしたメモ

※追記

F# Advent Calendar 2014 - connpassの26日目の記事になりました。今年は一切アドベントカレンダー参加してなかったのに25日越えてほとんど縁遠かった分野のアドカレに参加することになるとは…。


今までも数多くの物事を完全にマスターしてきた僕ですが、よりオープンになった新生Visual Studio~無償版Visual Studio Community 2013ほか,注目機能が多数実装,.NET Framework/.NET Core RutimeはOSS化:レポート|gihyo.jp … 技術評論社によるとVisualStudio Pro相当の機能が無料で使えるようになったとの事なので、前からガブさんに微妙にプレッシャーをかけられていた気がするし、F# 触ってみました。

最初は「Linuxで動く.NET実行環境出たっぽいし試してみよう」と言う感じだったのですが、何かざっくりぐぐってみるとまだリリースされてないっぽいのでmonoと言う前から存在していたそれっぽいやつでやってみます。

VisualStudio CommunityEditionのインストール

Downloads | IDE, Code, & Team Foundation Server | Visual StudioからDLしてインストールします。ウィザードなので特にすることはありませんがむっちゃ時間かかりました。
日本語リソースのインストール中に

とか言われましたが無視してもインスコできたっぽいです。

コンソールアプリケーションの作成

最初からF#のプロジェクト作成が選べたので、よくわからないまま[新規作成] -> [プロジェクト]からF#のコンソールアプリケーションを選んでプロジェクト作成しました。

プロジェクト作成時点で既にHelloWorldより高度なプログラムが作成されている気がしないでもないですが気にしないことにして勘でこのようにコードを修正します。

[<EntryPoint>]
let main argv = 
    printfn "F#完全にマスターした"
    0

実行

上の方にある[▶ 再生]というやつを押すとプログラムを実行できるっぽいです。
実行するとコマンドプロンプトが立ち上がってプログラムが実行されるんですが、上記のプログラムを実行すると人間が視認するより早くプログラムの実行が終了し、コマンドプロンプトも閉じてしまうため実行されている感じが分かりません。
上部のビルドメニューからソリューションのビルドというのを実行するとbinフォルダ配下にexeが生成されるらしいので、それを実行すると普通に実行結果が見れます。

…だるすぎませんかね?と思っていたら

と言うお告げを頂きました。
Ctrl + Alt + Fを押すとFSharp Interactiveと言うペインがニョキッと現れ、そこに

printfn "にゃん";;

と入力すると入力したコードが実行されます。楽ですね。
ちなみに「;;」は「入力したコード評価してください」という意味とのことです。

mono環境の構築

docker pull mono

以上

mono上でさっきのexeを実行する

さっき作ったexeを適当なディレクトリにおいて

$ docker run -i -t -v /path/to/dir:/tmp mono /bin/bash

みたいな感じでコンテナを起動し

$ mono FSharpHelloWorld.exe

とすれば

ウッ。

上記のdockerイメージだと日本語環境になってないので

$ apt-get update && apt-get install -y locales && echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen && export LANG=ja_JP.UTF-8

を実行します。

で、改めて実行すると

やりましたね!

まとめ

F#完全にマスターした*1

*1:この程度のこと達成するのに4時間ぐらいかかりました