F#超超超入門

# F# is 何 ?
Microsoftが開発した.NET上で動く関数型言語です.  
.NET互換の環境であれば動作するので, .NET Framework上でも, .NET Core上でも, mono上でも動きます. つまり, Windows/Mac OS/Linuxどこでも動く言語なわけです.  

# なぜ F# なのか...
@cannorinさんが投稿した「[F# を知ってほしい](https://qiita.com/cannorin/items/59d79cc9a3b64c761cd4)」や, p_tan's blogさんの「[なぜC#よりもF#なのか 2017](http://p-tan.hatenablog.com/entry/2017/09/05/060934)」を読んでいただくことで, F#の魅力をヒシヒシと感じていただくことができるかと思います.  

私の拙い語彙力ではあまり魅力を伝えられませんので, 先人の方々のお言葉をお借りして, 魅力を感じていただければと思います.  

ということで, 早速 F#に超超超入門 していきましょう.
(とは言っても Hello, World するだけですが...  )
  
# 開発環境  
Windows/Mac OS環境であれば, Visual Studioをインストールすればよいと思います. Linuxの場合は, .NET Core + VS Code の組み合わせが良いのではないでしょうか？そこはお好みでどうぞ.   

ちなみに私は, Win/Mac両環境ともVS Code + .NET Core環境でやっていますが, Visual Studioを導入してしまった方が楽です. 今回はWindows環境向けに記事を書いていきますが, Mac OS環境でも大して変わりません. 変わるとしてもIDEの使い方くらいです(それが一番大きい気もするが...).  

Visual Studioは以下からCommunity版のダウンロード/インストールをしてください. 
>[Visual Studio ダウンロードページ](https://visualstudio.microsoft.com/ja/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=navigation+cta&utm_content=download+vs2017&rr=https%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fvisualstudio%2Finstall%2Finstall-visual-studio%3Fview%3Dvs-2017)


基本的にはOKを連打していれば良いのですが, 下のようなウィンドウが表示されたら,
![FSharp2.png](https://qiita-image-store.s3.amazonaws.com/0/125601/c5bffe89-7854-dff2-b800-aac567b8a7c3.png)
【変更】ボタンを押下して, 
![FSharp1.png](https://qiita-image-store.s3.amazonaws.com/0/125601/292a4185-026d-4944-501e-b4cae601f1b3.png)
【F#デスクトップ言語のサポート】と【F#言語サポート】にチェックを入れてあげてください.
この手続きを忘れても後からどうとでもなるので, 最悪忘れてしまっても問題ありません.  

さあ, あとはVisual Studioがインストールされるのを待つばかりです!!  

# Hello, World!!
すべてのプログラマはこの挨拶を標準出力に表示せねばなりません. もはやこれは義務なのです.  

例に漏れずにF#でHello, Worldを出力させていきましょう.  
  
まずはVisual Studioを起動してみてください. Visual Studio 2017 では次のようなページが出ると思います.
![FSharp3.png](https://qiita-image-store.s3.amazonaws.com/0/125601/0750ea4a-8fbe-d7e3-ea7a-8a497eef4e9d.png)
もしかすると画面の構成や表示されている内容が違うかもしれませんが, 気にせずに, 【新しいプロジェクトの作成】を押下しましょう.  

そうすると以下のような画面が表示されると思いますので, 【Visual F#】を選択 →【コンソール アプリケーション (.NET Framework)】または【コンソール アプリケーション (.NET Core)】を選択 →【OK】を押下します.  
![FSharp4.png](https://qiita-image-store.s3.amazonaws.com/0/125601/c71a06ba-62be-e0d7-9668-3984de3ddfc4.png)

すると, 自動的に以下のようなコードが生成されると思います.
![FSharp5.png](https://qiita-image-store.s3.amazonaws.com/0/125601/85d8b684-ae57-74cb-059d-a4b210002f12.png)

そうしたら, 6行目を

```fsharp
printfn "Hello, World!!"
```

と書き換えてあげて, 【Ctrl+F5】を押すと...
![FSharp6.png](https://qiita-image-store.s3.amazonaws.com/0/125601/fe794ac8-8cd2-19fb-9945-b986f2cb8273.png)

なんと黒い画面に【Hello, World!!】が出力されました.  

おめでとうございます. これであなたは, F#プログラマの第一歩を踏み出すことができました. 
今日は素晴らしい記念日となるでしょう.  

# おわりに 
茶番にお付き合いいただき, ありがとうございました.  

私は普段C#とC++をメインに書いているのですが, F#の素晴らしさを広めるべく活動をせねばと思い立ち, Qiitaに投稿をした次第です.  

F#はC#に比べて非常に知名度が低い言語です. しかし, それはC#より劣っていることを意味していません. 一度でもF#に触れてしまうとC#には戻れなくなるほどの魅力を持っています(誇大表現). 　

ただこれは, 常にF#がC#より優位, または 常にC#がF#より優位な言語であると極論を言いたいわけではありません. お互いの良いところをコラボレートすることに高い価値があると思います.   

幸いなことに, F#とC#は両言語とも.NET環境上で動作するため, 非常に親和性が高いです.
F#が得意なところはF#で, C#が得意なところはC#で書くような流れになってくれればな～と思います.  

# 余談
私は常日頃からMicrosoft Docs/MSDNの日本語訳を解読することが難易度の非常に高い作業だと感じていました. 
そのため, 公式ドキュメントをもう少しわかりやすく日本語化したもの+簡単なサンプルコードを追加したサイトを作成しました. 
> [Midoliy.com |> F#](https://midoliy.com/content/fsharp/index.html)

やはり, 日本語のドキュメントが読みにくいと新規で始める人にとっては高い障壁となりますので, その辺りから解消できればと思っています. 
まだまだ書き途中かつ拙い文章ですが, もしF#をこれから始めたいと思っている方がいらっしゃいましたら, ぜひご利用ください.