Awesome Scala Native
Scala Nativeを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
チュートリアルと例
- 最小限のScala Nativeプロジェクト向けGiter8テンプレート - 最小限のScala Nativeプロジェクト向け公式Giter8テンプレート。
- Hands on Scala Native - Ncursesを使った帯域幅モニター実装のチュートリアル。
- Starter for Scala Native - カスタムCライブラリへリンクするScala Nativeプロジェクト。
- Building C code using sbt-jni - sbt-jniを使い、Scala NativeプロジェクトでCコードをコンパイルする例。
- Example project with external dependencies - 外部依存関係を使ってHTMLを生成し、テストスイートを実行するサンプルプロジェクト。
- Starter for Gtk+ Projects - Scala Native GUIプロジェクト向けGiter8テンプレート。Gtk+を使用。
- Modern systems programming with scala native 書籍。
- Write a simple CLI application in Scala Native
ビルドツール
- sbt - Scalaの標準ビルドツール。
- Mill - Bazelに着想を得て、単純さを追求するビルドツール。
- Bloop - 高速な開発ワークフロー向けのScalaビルドサーバー兼コマンドラインツール。
- Seed - Bloopベースのビルドツール。Cargoに着想を得て、ユーザー体験とクロスプラットフォームビルドに注力。
関数型プログラミング
- Shapeless - ジェネリックプログラミング用ライブラリ。
- Squants - 量、単位、次元解析のためのDSL。
- scalaz - データ構造向けの型クラスとインスタンス。
- nobox - ボックス化を伴わない不変プリミティブ配列ラッパー。
- PPrint - 値と型を見やすく出力。
- SourceCode - Cの
__LINE__に似たメタデータを提供するimplicit。 - reactify - Scala向け関数型リアクティブプログラミングフレームワーク。
- chimney - 定型コード不要のデータ変換。
- Quicklens - 深くネストしたcase classのフィールドを変更。
- Cats - Scalaにおける関数型プログラミングの抽象化。
ユニットテスト
- µTest - ユニットテスト用ライブラリ。
- minitest - 軽量テストライブラリ。
- scalaprops - プロパティベーステスト用ライブラリ。
- scalaprops-shapeless - 任意のADTインスタンスを生成。
- scalaprops-cross-example - クロスプラットフォームの例。
- ScalaCheck - Scala向けプロパティベーステスト。
- ScalaTest - テストライブラリ。
- specs2 - Scala向けソフトウェア仕様。
- Makeshift - ユニットテスト用ライブラリ。
- MUnit - 対応方法が明確なエラーと拡張可能なAPIを備えたScalaテストライブラリ。
バインディング
- cmark - CommonMarkパーサーライブラリcmarkのバインディング。
- libuv - 非同期I/Oライブラリlibuvのバインディング。
- SDL2 and OpenGL - グラフィックスフレームワークSDL2とOpenGLのバインディング。
- Cocoa - macOSグラフィックスフレームワークCocoaのバインディング。
- GNU Scientific Library - GNU Scientific Library(GSL)のバインディング。
- BLAS - 線形代数ライブラリBLASのバインディング。
- Gtk+ - グラフィックスツールキットGTK+のバインディング。
- libsoup - HTTPクライアント/サーバーライブラリlibsoupのバインディング。
- libui - libuiベースのGUIフレームワーク。
- GStreamer - マルチメディアフレームワークGStreamerのバインディング。
- Qt - Qtのバインディング。
- ncurses - GNU Ncurses Libraryのバインディング。
- readline - GNU Readline Libraryのバインディング。
- libsndfile - サンプル音声処理用CライブラリLibsndfileのバインディング。
- libpng - PNG読み書き用C参照ライブラリlibpngのバインディング。
- libcairo - 2DグラフィックスCライブラリCairoのバインディング。
- cairo-xlib - Cairo 2DグラフィックスのXLib Surfacesバインディング。XLibのバインディングも含む。
- libyaml - LibYAML Cライブラリのバインディング。YAMLを解析する。
- iup - グラフィカルユーザーインターフェース構築用マルチプラットフォームツールキットIUPのバインディング。
ファイル形式とパーサー
- msgpack4z - バイナリシリアライズ形式MessagePackの実装。
- FastParse - パーサーを定義・実行するライブラリ。
- scalatags - HTML/XMLの構築とレンダリング。
- Pine - HTML/XMLの解析、操作、レンダリング。
- scala-json - JSONパーサー。
- uPickle - Scala向けのシンプル、高速、依存関係なしのJSON・バイナリ(MessagePack)シリアライズライブラリ。
- toml-scala - コーデック導出を備えたTOMLパーサー。
- argonaut - 純粋関数型JSONパーサーおよびライブラリ。
- ScalaPB - Scala向けProtocol Bufferコンパイラー。
- scalapb-argonaut - ArgonautベースのScalaPB向けJSON/Protocol Buffer変換器。
- sconfig - HOCONパーサー。
- squiggly - LiquidとHugoテンプレートに着想を得た、Scala向けクロスプラットフォーム・テンプレート言語。
データベース
- scala-native-jdbc - データベースアクセス層JDBCのScala Native移植版。
- SQLite4S - JavaライブラリSqlite4javaの移植版。SQLiteネイティブライブラリのバインディングを含む。
- libpq4s - 非同期PostgreSQL CライブラリlibpqのScalaラッパー。
- skunk - ScalaとPostgres向けデータアクセスライブラリ。
Web開発
並行処理
- scala-native-loop - Scala Native向けイベントループおよび非同期指向I/O。
- castor - Scala向け軽量・型付きActorライブラリ。
ロギング
- scribe - 高速でシンプルなロギングライブラリ。
- slogging - マクロベースでTypesafe-loggingおよびSLF4J互換のロギングライブラリ。
コンソール
- fansi - ANSIカラー文字列を作成するライブラリ。
- scopt - コマンドライン引数パーサー。
- scala-optparse-applicative - HaskellのCLI引数解析ライブラリoptparse-applicativeの移植版。
- scallop - シンプルなScala CLI解析ライブラリ。
- mainargs - Scalaでコマンドライン引数を解析する小型・依存関係なしのライブラリ。
- decline - Scala向けの合成可能なコマンドラインパーサー。
ロボティクス
- Potassium - ロボットソフトウェアを記述するフレームワーク。
- WPILib - FIRST Robotics WPILibライブラリの再実装。
プログラム
- sglgears - GLのgears.cの移植版。
- k8s-cli - Kubernetesリソースを生成するCLIツール。Akka、Play Framework、Lagomベースのアプリケーションに対応。
- Coursier - Coursierの
bootstrapコマンドでネイティブランチャーを生成。 - fractals - 基本的なアニメーションに対応する自己相似フラクタル生成器。
インフラストラクチャ
- Seed Docker image - Seedによるクロスプラットフォームビルド向けDockerイメージ。
- scala-native-sbt-docker - Scala Nativeとsbt向けDockerイメージ。
ライセンス
本作品はCreative Commons Attribution 4.0 International Licenceの下でライセンスされています。