マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】F#

【OSS情報アーカイブ】F#

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「F#」とは

基本情報

概要

F#(エフシャープ)とは、Microsoftが開発した「.NET Framework」向けマルチパラダイム関数型プログラミング言語です。「OCaml」言語をベースにしています。

関数型言語とは

C#/Java/Rubyなどの手続き型言語に対して、関数型言語があります。

関数型言語は歴史がある言語で、工学的基礎(ラムダ計算)が可能です。並列処理/分散プログラミングを得意とし、高演算処理能力を発揮します。

関数型言語は、「なるべく状態を持たせない」「なるべく変数を使わない」という特徴があります。「引数として関数を受け取る」「戻り値が関数」というのは関数型言語では普通のことです。すべての関数は、何らかの戻り値を必ず返します。

「関数型プログラミング」とは、「複数の式を関数の適用によって組み合わせていくプログラミングスタイル」とされています。

基本説明

F#は、静的型付けコンパイラ型言語です。関数型言語ではあるものの、オブジェクト指向型言語としての特徴も合わせ持ちます。

関数型言語「OCaml」との関係

「OCaml」は、F#のベースとなった関数型言語です。オブジェクト指向的要素が追加されている点が特徴です。関数型言語としてはかなり高速に動作します。

F#は、関数型言語「OCaml」から多くの要素を引き継いでいます。関数型/オブジェクト指向型のマルチパラダイムです。型安全、型推論の機能を持ちます。ただし、オーバーロードをサポートしているため、「OCaml」が持つ型推論の完全性を失っています。

「OCaml」互換の標準ライブラリを備えており、「F#」と「OCaml」のどちらでもコンパイルできるコードを記述することも可能です。しかし、クラス構文などは、「F#」と「OCaml」で異なっています。

経緯

「F#」の「F」は「Functional」とされています。

2002年、マイクロソフトリサーチのDon Syme氏らによって、OCamlをベースに開発開始
2005年、F#の最初のメジャーリリース
2010年、Visual Studio 2010リリース、F#が標準搭載

主な特徴

マルチパラダイム言語

F#の主たるパラダイムは「関数型」ですが、他に、「手続き型」「オブジェクト指向プログラミング」などもサポートしています。

型推論

F#ではコンパイラの型推論機能により、変数/関数の定義において、型が文脈から自動的に決まるのであれば型宣言を省略できます。型推論に頼らず明示的に型を指定することもできます。

変数

変数は、基本的に「不変(immutable)」ですが、「書き換え可能(mutable)」として定義することもできます。

並び順強制

F#では、ソースファイル/type/module/関数などについて、依存順になるように並び順を制御する必要があります。

これにより、ソリューション全体のマクロ構造を楽に把握できます。

コード記法

コード記法は、「軽量構文」と「(OCaml風の)冗語構文」の2種類用意されています。

コンパイラとインタプリタ

F#の処理系は、「コンパイラ」と「インタプリタ」の両方を持っています。

F#をスクリプト言語として動かすことも可能です。

マルチスレッド処理

マルチスレッド処理特有の問題(スレッド間の排他制御など)への対策をカプセル化し、並列処理のコード記述をシンプルで可読性の高いものにするために、他の.NET言語にない独特の構文表記方法とライブラリが用意されています。

.NET Framework言語

.NET Framework言語(「C#」「Visual Basic」など)と相互運用性があり、.NETクラスライブラリの利用/開発が可能です。

ポイント

・判別共用体とパターンマッチ
・アクティブパターン
・シーケンス式
・計算式(Do構文)
・非同期/並列計算を支援するライブラリ
・コード引用符
・モジュール拡張が容易
・IDEによるコーディングサポート

同様製品(概要情報)

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「OCaml」「LISP」「Scala」など。

導入事例

.NET Frameworkの1言語として、幅広く利用されています。

ライセンス情報

F#のライセンスは、「Apache License」「Microsoft Public License (Ms-PL)」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。