Awesome F#
F#を扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- Main Language-Related Repositories
- F# Wrappers for Popular .NET Libraries
- Actor Frameworks
- Build Tools
- Cloud
- Code Analysis
- Code Generation
- Compilers for Other Platforms
- Concurrent, Asynchronous, and Parallel Programming
- Configuration
- Data Science
- Development Tools
- General Purpose Libraries
- Game Development
- GUI
- HTTP Clients
- Logging
- Package Management
- Parsing
- Serialization
- Simulation
- Static Site Generators
- Testing
- Type Providers
- Visualization
- Web Frameworks
- .NET Core Templates
- Resources
言語に関する主要リポジトリ
人気 .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#の計算表現。
コード解析
- Ionide FSharp.Analyzers.SDK - F# / FSharp.Analyzers.Cli向けのカスタム分析器を構築するためのライブラリ。
コード生成
他プラットフォーム向けコンパイラ
- 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エンコーダ/デコーダライブラリ
シミュレーション
- F# RISC-V Instruction Set formal specification - RISC-V CPUの形式的なISA仕様。RISC-V CPUシミュレータおよびELFファイルの実行
静的サイトジェネレーター
- 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.TypeProviders.StarterPack - F#タイププロバイダーを作成するProvidedTypes SDK。
可視化
- 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 テンプレート
- ASP.NET Core WebAPI F# Template -
dotnet new -i WebAPI.FSharp.Template::* - Expecto Template -
dotnet new -i Expecto.Template::* - Fable, F# |> Babel -
dotnet new -i Fable.Template::* - Fable-elmish -
dotnet new -i Fable.Template.Elmish.React::* - Giraffe Template -
dotnet new -i "giraffe-template::*" - MiniScaffold - .NETフル(net45)およびコア(netstandard1.6)をターゲットとするライブラリの作成・公開用のF#テンプレート、
dotnet new -i MiniScaffold::* - NancyFx Template -
dotnet new -i NancyFx.Core.Template::* - SAFE Stack Template -
dotnet new -i SAFE.Template::*
リソース
ブログ
- .NET Blog (F# tag) - .NETチームによるF#に関するニュースとディスカッション。
- Codesuji - F#に関する機能面を焦点にしたコミュニティメンバーのブログ
- Krzysztof Cieslak - Ionideのメンテナーが運営するブログ
- Mark Seemann - ソフトウェア設計に関するさまざまな側面を議論するブログ
- Sergey Tihon (F# Weekly) - エコシステム全体から集めた週間ニュースレター
- Tomas Petricek - 多くのテーマに取り組んでいる有名なコミュニティメンバー
書籍
- Domain Modeling Made Functional by Scott Wlaschin - ドメインドリブンデザインとF#を用いてソフトウェアの複雑性を克服
- F# in Action by Isaac Abraham - F#におけるソフトウェア開発の実用ガイド
チートシート
- 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ビュー、オンラインバグ報告など)
動画
- Amplifying F# YouTube Channel
- F# Online YouTube Channel
- Austin F# Meetup Group Recorded Presentations
- F# Chats on performance
- Fast Dictionary in F#
- Intro to F#
- Topological Sort