このページの内容

Awesome F#

F#を扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次

言語に関する主要リポジトリ

人気 .NET ライブラリの F# ラッパー

人気の .NET ライブラリを F# から快適に利用するためのラッパーをまとめています。

アクターフレームワーク

  • Akka.NET - コミュニティが中心に開発した人気のJava/ScalaフレームワークAkkaを.NETに移植したプロジェクト。
  • Akkling - Akka.NET向けのF#型API。
  • Orleankka - Microsoft Orleansフレームワーク向けの機能拡張。
  • Orleans - 分散型仮想アクターモデル。
  • Proto.actor - .NET、Go、JavaおよびKotlin向けのプラットフォームを越えたアクターフレームワーク。

ビルドツール

  • FAKE - “F# Make”は、クロスプラットフォームのビルド自動化システム。
  • Xake - F# で実装された Make ユーティリティ。完全な宣言型で、手軽に並列化でき、Shake に着想を得ています。

クラウド

  • Chia - Azureクラウド操作やログ、報告に関するヘルパー関数を含むF#ライブラリ。
  • Farmer - ARMテンプレートを用いたAzureデプロイの繰り返し実行を簡単に行えるようにしたツール。
  • FsFirestore - Google Cloud Platform(GCP)またはFirebaseにホストされたFirestoreデータベースへのアクセスを可能にするF#の機能的ライブラリ。
  • Pulumi.FSharp.Extensions - Pulumiコードにおけるボイラープレートを減らすためのF#の計算表現。

コード解析

コード生成

  • Hawaii - OpenAPI/Swaggerサービスから型安全なF#クライアントを生成するdotnet CLIツール。
  • Myriad - 事前コンパイルコードジェネレーター。

他プラットフォーム向けコンパイラ

  • Fable - F#からJavaScriptへのコンパイラ。
  • Fez - F#からErlangへのコンパイラ。
  • FunScript - F#からJavaScriptへのコンパイラ。JQueryなど、TypeScript型プロバイダーを通じてマッピング。
  • Juniper - Arduinoおよびその他のマイクロコントローラ向けの機能的反応プログラミング。

並行・非同期・並列プログラミング

  • FIO - 純粋な関数型プログラミングに基づく、F#向けの型安全かつ高スケーラビリティかつ非同期なライブラリ。
  • FSharp.Control.AsyncSeq - 非同期シーケンスのサポート、IAsyncEnumerableとの統合。
  • FSharp.Control.FusionTasks - F# Async workflow <—> .NET Task/ValueTask の容易かつスムーズな相互運用ライブラリ
  • FSharpx.Async - F# 用の非同期プログラミングユーティリティのコレクション
  • Hopac - F# 用の並列 ML 風の並列プログラミングライブラリ
  • IcedTasks - コールドタスク、キャンセル可能なタスク、async ワークフロー向け拡張機能
  • Ply - F# 用の高パフォーマンス System.Threading.(Value)Task 計算表現
  • Reaction.AsyncRx - .NET および Fable 用の F# での Async Observable の実装
  • TaskBuilder.fs - F# 用の System.Threading.Tasks の計算表現ビルダー

設定

  • Argu - F# アプリケーション向けの宣言型 CLI 引数/XML 設定パーサ
  • FsConfig - 環境変数および AppSettings から設定データを読み取るための、型安全な F# ライブラリ
  • Skid - シンプルで、1ファイルのポータブル CLI ユーティリティ(設定テンプレート用)
  • docopt.fs - CLI 引数パーサー、docopt の F# ポート

データサイエンス

  • Deedle - .NET 用の探索データライブラリ
  • DiffSharp - 関数型自動微分(AD)ライブラリ
  • FsLab - データサイエンス向けのライブラリのコレクション。これにより、少ないコードで高度な分析を書くことが可能になります。
  • IfSharp - Jupyter Notebook 用の F#
  • Math.NET Numerics - 科学、工学、日常用途における数値計算のメソッドとアルゴリズム。F# 特有のバインディングが提供されています。
  • Math.NET Symbolics - 完全に F# で書かれた、.NET、Silverlight および Mono 用のオープンソースコンピュータ代数ライブラリ
  • SIMDArray - SIMD を活用した Array 拡張機能による高速計算
  • Synapses - F# 用のニューラルネットワークライブラリ
  • m2cgen - 訓練済みの古典MLモデルを、ゼロの依存関係でネイティブなF#コードに変換するCLIツール

開発ツール

IDE

  • F# Playground - F#用の最小限のプレイグラウンド
  • JetBrains Rider - F#をサポートするクロスプラットフォーム.NET IDE(ライセンスは非営利用途で無料)
  • MonoDevelop - 主にMono/.NET開発者を対象としたクロスプラットフォームIDE
  • Visual Studio - Microsoftから提供されるF#を優先的にサポートするIDE(Windows専用、ライセンスは非公開)

エディタープラグイン

  • Emacs F# mode - EmacsにおけるF#のサポート(包括的にIntellisenseおよびインタラクティブモード)
  • FSharpFar - Far ManagerにおけるF#のサポート
  • FSharpLint - F#コードのリントツール
  • Fantomas - F#コードのフォーマッタ
  • Ionide - クロスプラットフォームF#開発用のAtom EditorおよびVisual Studio Codeパッケージセット
  • Vim F# - VimにおけるF#のサポート
  • VimSpeak - 声認識を用いてVimを制御するツール
  • fsharp-notebook - F# Interactive用のデータサイエンスノートブック
  • neofsharp.vim - (Neo)Vimにおける基本的なF#のサポート

パフォーマンス解析

  • fasm - F# JITディスアセンブラー(.netツールとして)

汎用ライブラリ

  • Aether - F#用のOpticsライブラリ(HaskellのData.Lensパッケージに類似)
  • Chessie - レール指向プログラミング
  • Donald - ADO.NET用のシンプルなF#インターフェース
  • DustyTables - ms sql serverへのデータアクセスを容易にする、スリムなF# API(機能的な要素を上に追加)
  • ExtCore - F#の拡張されたコアライブラリ
  • FSharp.CosmosDb - CosmosDB SDKをF#でラップしたツール、より機能指向にしやすい
  • FSharp.HashCollections - 高速ハッシュベースの不変マップとセット
  • FSharpLu - 文字列操作、ログ記録、コレクションデータ構造、ファイル操作、テキスト処理、セキュリティ、非同期処理、パーサー、診断、設定ファイル、JSONシリアル化に必要な軽量ユーティリティ
  • FSharpPlus - F#用の拡張機能
  • FSharpx.Extras - F#で使用するためのライブラリとツールのコレクション
  • Fli - システムプロセスの実行とその出力を管理するための計算表現
  • Fling - 複雑なドメインエンティティを複数のテーブルに効率的に保存・読み込みするために必要なボイラープレートを大幅に削減
  • FsToolkit.ErrorHandling - チェスリーにインスパイアされた、明確でシンプルかつ強力なエラー処理(レールオリエンテッドプログラミング)
  • Fumble - SQLiteへの軽量F# API。機能的なアプローチでSQLiteデータベースへのアクセスを容易に。
  • LiteDB.FSharp - F#用の(.NET用の埋め込みシングルファイルデータベース)サポート LiteDB
  • Npgsql.FSharp - Npgsql(PostgreSQLデータベースドライバー)への軽量F#ラッパー
  • SqlHydra - F#でデータベース操作を行うためのNuGetパッケージのセット。クエリ表現とコード生成ツール(データベーステーブルに基づいて強型F# DTOレコード型を生成)を提供。MySQL、PostgreSQL、Oracle、SQL Server、SQLiteに対応。
  • TypeShape - 実用的なジェネリックプログラミングに最適な小さな、拡張性の高いF#ライブラリ
  • Validus - F#用の組み立て可能なバリデーションライブラリ。ほとんどのプリミティブ型に内蔵されたバリデーターを提供し、カスタムバリデーターで簡単に拡張可能
  • Vp.FSharp.Sql - ジェネリックF# ADOプロバイダーラッパー(SQL Server、PostgreSQL、SQLite)

ゲーム開発

  • FsUnity - Unityゲームエンジン用のF#ライブラリ、ツール、プラグイン
  • Garnet - エンティティ・コンポーネント・システム(ECS)およびアクターのようなメッセージ機能を備えた軽量ゲーム構成ライブラリ
  • Godot - F#とGodotを使用する方法に関するチュートリアル
  • Nu Game Engine - 機能的なスタイルで構築されたクロスプラットフォームF# 2Dゲームエンジン。SDL2とFarseer Physicsを使用。

GUI

  • Avalonia.FuncUI - F#とAvaloniaを使ってクロスプラットフォームMVU GUIアプリケーションを開発可能
  • Elmish.WPF - WPFプログラミングにおけるElmish(またはMVU)アプローチ
  • Epoxy - NET向けの独立した柔軟なXAML MVVMライブラリ
  • Fabulous - F#による宣言型動的UIアプリ開発

HTTP クライアント

  • FsHttp - F#でHTTP/RESTエンドポイントを消費するための便利なライブラリ
  • Http.fs - F#向けのシンプルで機能的なHTTPクライアントライブラリ
  • Oryx - 高パフォーマンスな.NET対応マルチプラットフォーム機能型HTTPリクエストハンドラライブラリ。HTTPクライアントの作成やWebリクエストのオーケストレーションに使用。

ロギング

  • FsLibLog - F#ライブラリにログ抽象を提供する、コピー&ペースト可能またはPaket GitHub依存関係として追加できる1ファイルのライブラリ
  • Logary - monoおよび.NET向けの高パフォーマンス、マルチターゲットログ、メトリクス、トレース、ヘルスチェックライブラリ

パッケージ管理

  • NuGet - Microsoft開発プラットフォーム(.NETを含む)向けのパッケージマネージャー
  • Paket - NuGetパッケージおよびGitリポジトリをサポートする.NET向けの依存関係マネージャー

構文解析

  • FParsec - F#向けのパーサーコンビネータライブラリ
  • FsAttoparsec - HaskellのBryan O’SullivanのattoparsecをF#に移植したパーサー
  • XParsec - F# 3.0および4.0向けの拡張性があり、型およびソースにポリモーフィックで非線形な適用型パーサーコンビネータライブラリ

シリアライズ

  • FSharp.Json - 反射ベースのシリアライズライブラリ
  • FSharp.SystemTextJson - System.Text.Json向けのF#型拡張
  • Fleece - F#向けのJSONマッパー。JSONライブラリのJsonValueからあなたの型へ、そしてあなたの型からJsonValueへマッピングを簡便にします。
  • FsCodec - F#のイベント・ユニオン契約のバージョン対応可能なコンバーター付きエンコーディング
  • FsPickler - .NET向けの高速かつマルチフォーマットメッセージシリアライザ
  • Legivel - F# Yaml 1.2パーサー
  • Thoth.Json - Elmをインスピレーションとして設計されたJSONエンコーダ/デコーダライブラリ

シミュレーション

静的サイトジェネレーター

  • SkunkHTML - GitHub Pages で利用可能なマーカードブログ

テスト

  • Expecto - F# 用のスムーズなテストフレームワーク(テストを値として扱い、並列実行をデフォルトで提供)
  • Faqt - F# のテストとドメインコードに最適なフリュイドなアサーション
  • FsCheck - .NET 用のランダムテスト
  • FsUnit - F# でのユニットテストをより楽しいものに。あなたの好きな .NET テストフレームワークに特別な構文を追加。
  • NBomber - プルおよびプッシュシナリオ向けのシンプルなロードテストフレームワーク
  • Persimmon - F# 用の計算表現を用いたユニットテストフレームワーク
  • altcover - .NET/.NET Core および Mono 用のクロスプラットフォームカバレッジ収集および処理ツールセット
  • canopy - F# 用のウェブオートメーションおよびテストフレームドワーク
  • fsharp-hedgehog - F# 用のプロパティベーステストシステム
  • unquote - F# ユニットテストのアサーションをクォート表現として記述できる
  • xUnit.net - .NET フレームワーク向けの無料、オープンソース、コミュニティ中心のユニットテストツール

型プロバイダー

  • AzureStorageTypeProvider - F# Azure タイププロバイダー。Blob、Table、Queue の Azure ストレージ資産を探索可能で、CRUD 操作を簡単に適用できる。
  • DynamicsCRMProvider - Microsoft Dynamics CRM 2011 用のタイププロバイダー
  • EasyBuild.FileSystemProvider - プロジェクト構造または仮想ファイルシステムに基づき、ファイルとディレクトリの型を提供するタイププロバイダー
  • ExcelProvider - Excel 用のタイププロバイダー
  • FSharp.Configuration - プロジェクトの設定に必要なタイププロバイダーを提供。AppSettings、ResX、Yaml、Ini ファイルを処理。
  • FSharp.Data.Npgsql - よく知られた Npgsql ADO.NET クライアントライブラリの上に構築された F# タイププロバイダー ライブラリ
  • FSharp.Data.SqlClient - F# 用の静的に型を指定した T-SQL コマンドパラメータおよび結果セットへのアクセスタイププロバイダー
  • FSharp.Data.Tdms - F# 用の TDMS サポート
  • FSharp.Data.Toolbox - FSharp.Dataに基づくさまざまなデータアクセスAPI向けのライブラリ。現在、Twitterユーザーおよびフィードへのアクセス用のTwitterタイププロバイダーと、SASデータセットファイルを読み込むためのSASタイププロバイダーを含む。
  • FSharp.Data.TypeProviders - .edmxファイル、.dbmlファイル、WSDLサービス、ODataサービス、SQLデータベース向けのタイププロバイダーを含むライブラリ。
  • FSharp.Data - CSV、HTML、JSON、XML、WorldBankデータ向けのタイププロバイダーを含むデータサイエンスライブラリ。
  • FSharp.Management - マシンの管理に必要なさまざまなタイププロバイダーを提供。ファイルシステム、レジストリ、Windows管理インストルメンテーション、PowerShell、SystemTimeZonesを扱う。
  • FSharp.Text.RegexProvider - 正規表現向けのタイププロバイダー。
  • Facil - SQLクエリおよびストアドプロシージャからF#データアクセスソースコードを生成する。
  • FsXaml - XAMLプロジェクトとの作業に必要なF#ツール。
  • FsYaml - F#向けのタイプ付きYamlライブラリ。
  • GraphProvider - .dgmlステートマシンタイププロバイダー。
  • MatDataProvider - .matファイル(バイナリMATLAB形式ファイル)向けのエラストタイププロバイダー。
  • R Type Provider - Rとの相互作用に必要なタイププロバイダー。
  • Rezoom.SQL - F#向けの静的型SQL。
  • S3Provider - Amazon S3向けの実験的タイププロバイダー。
  • SQLProvider - 一般的なF#SQLデータベースエラストタイププロバイダー。LINQクエリ、スキーマ探索、個体、CRUD操作など、さらに多くの機能をサポート。
  • SwaggerProvider - Swagger向けの生成タイププロバイダー。

型プロバイダーの作成

可視化

  • FSharp.Charting - インタラクティブF#スクリプティングに適したチャートングライブラリ。
  • GG.Net - データサイエンティスト向けのビジュアライゼーションライブラリ。
  • Plotly.NET - F#向けのPlotlyベースの汎用プロットライブラリ。
  • SharpVG - F#でSVGベクターグラフィックスを作成する。
  • XPlot - F#プログラミング言語用のプロットライブラリ。

ウェブフレームワーク

  • Bolero - WebAssembly上でF#を使用し、.NET Blazorの全機能を活かしたSPAsを開発。
  • Falco - F#を使って素晴らしいASP.NET Coreアプリケーションを構築するための、関数型を第一に考えるツールキット。
  • Felicity - ボイラープレートなし、自然なJSON:API。あなたの美しい、自然なF#ドメインモデルに最適化。
  • Feliz - FableでReact APIを再構築し、F#でReactアプリケーションを構築するための高品質なコンポーネントのコレクション。
  • Genit - F#、SuaveおよびPostgreSQLまたはMS SQL Serverを用いた、プラットフォームを越えたウェブサイトジェネレーターおよびサーバー。
  • Giraffe - F#開発者向けのネイティブな関数型ASP.NET Coreウェブフレームワーク。
  • Oxpecker - ASP.NET Coreに基づくF#フレームワーク+サポートツール(ViewEngine、Htmx、OpenApi)。
  • Saturn - F#用の意見を反映したウェブ開発フレームワークで、サーバーサイドの関数型MVCパターンを実装。
  • Suave - シンプルなウェブ開発F#ライブラリ。軽量なウェブサーバーと、ルートフローおよびタスク構成を操作するコンビネータを提供。
  • WebSharper - F#ベースのウェブプログラミングプラットフォーム。F#コードからJavaScriptへのコンパイラを含む。

.NET Core テンプレート

リソース

ブログ

  • .NET Blog (F# tag) - .NETチームによるF#に関するニュースとディスカッション。
  • Codesuji - F#に関する機能面を焦点にしたコミュニティメンバーのブログ
  • Krzysztof Cieslak - Ionideのメンテナーが運営するブログ
  • Mark Seemann - ソフトウェア設計に関するさまざまな側面を議論するブログ
  • Sergey Tihon (F# Weekly) - エコシステム全体から集めた週間ニュースレター
  • Tomas Petricek - 多くのテーマに取り組んでいる有名なコミュニティメンバー

書籍

チートシート

  • F# Snips - F#コードのスニペットを共有してください
  • F# cheatsheet - 主な言語機能に関する迅速な参照ガイド
  • F# tour - マイクロソフトから提供される公式言語ツアー
  • Guide for C# devs to learn F# - C#プログラマ向けの30分間のF#チュートリアル(連続したコードスニペット付き)
  • Guide for Python devs to learn F# - Pythonプログラマ向けの30分間のF#チュートリアル(連続したコードスニペット付き)
  • Guide for Rust devs to learn F# - RustおよびF#のユーザーが読むことができる非公式マニュアル
  • Learn F# in Y minutes - F#でプログラミングを始めるためにおすすめされるガイド

コミュニティ

その他のリスト

  • Awesome .NET! - 素晴らしい.NETライブラリ、ツール、フレームワーク、ソフトウェアのコレクション
  • Companies using F# - F#を活用している企業のコミュニティがキュレーションしたリスト(就職を考えているなら役立つかもしれません)
  • F# Community Projects - F#コミュニティが生成したすべてのコンテンツ
  • Fable Resources - Fableに関連する有用なチュートリアル・ライブラリ・ソフトウェアをキュレーションしたリスト

ウェブサイト

  • Community for F# - ドジョー(dojo)やコミュニティ発表の録画へのリンク
  • Decompiler.com - オンラインC#/VB/F#デコンパイラ
  • DotNetFiddle - オンラインREPL
  • F# Software Foundation - メインサイト
  • F# for Fun and Profit - 参照チュートリアル
  • SharpLab - C#/VB/F# コンパイラ プレイヤー
  • Try F# - オンラインチュートリアル、現在はスリーバイト依存のためコード実行が不可
  • cs2fs - C#コードをF#コードに変換
  • fantomas-tools - Fantomas関連ツールの一覧(ASTビュー、オンラインバグ報告など)

動画

コース