ガイドと概要

Language

標準ライブラリ

Scala 標準ライブラリをカバーするガイドと概要

このページは Scala 2.13 へ移行するコレクションユーザーにとっての主な変更を説明し、Scala 2.11、2.12、2.13 向けにクロスビルドする方法をお見せする。

By Julien Richard-Foy

このページは Scala 2.13 で導入されたコレクションフレームワークのアーキテクチャーを説明する。コレクション API というよりはフレームワークの内部の動きがもっと分かるだろう。

By Martin Odersky, Lex Spoon and Julien Richard-Foy

このドキュメントでは、コレクションフレームワークがどのようにして数行のコードであなた自身が独自コレクションを定義でき、しかもフレームワークの圧倒的な量の機能を再利用できる助けをしているかを学べるだろう。

By Julien Richard-Foy

このガイドでは、どのようなコレクション型にも適用できて元のコレクション型を返すことができる操作の書き方、さらに組み立てるコレクション型によってパラメータ化された操作の書き方もお見せする。

言語

Scala 言語の機能をカバーするガイドと概要

Scala 3 との互換性と移行について知っておくべきことすべて

new in Scala 3
By Nicolas Stucki

Scala 3 のマクロの書き方に関係する全ての機能をカバーする詳しいチュートリアル

By Mark Harrah

値クラスは Scala で実行時のオブジェクトアロケーションを避ける新しい仕組みだ。これは新しい AnyVal サブクラスを定義することで達成できる。

new in Scala 3
By Alvin Alexander

Scala のエンドユーザー向けの TASTy のフォーマットの概要

文字列補間は、ユーザーが加工文字列リテラル(processed string literal)に変数参照を直接埋め込めるようにしてくれる。以下例。

val name = "James"
println(s"Hello, $name")  // Hello, James
上記例では、リテラル s"Hello, $name" は加工文字列リテラルだ。これはコンパイラーがこのリテラルに追加の仕事をしていることを意味する。加工文字列リテラルは " に先行するいくつかの文字で示される。文字列補間は SIP-11 で導入され、そこには実装の全詳細が含まれる。

By Josh Suereth

Scala 2.10 は暗黙クラス(implicit class)と呼ばれる新しい機能を導入した。暗黙クラスは implicit キーワードでマークされたクラスだ。このキーワードはそのクラスがスコープ内にあるとき、そのプライマリコンストラクターが暗黙変換に利用可能にする。

ライブラリの作成

Scala エコシステム向けのオープンソースライブラリの貢献方法のガイド

By Julien Richard-Foy

ライブラリ作者がライブラリを公開したりドキュメントしたりするのにセットアップすべき全ツールをリストにする。

並列並行プログラミング

並列並行プログラミングのための Scala のライブラリをカバーする完全ガイド

By Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, and Vojin Jovanovic

Futures は多くの処理を並列で、効率的かつノンブロッキングに実行する考え方を提供する。Future はまだ存在しない値のプレースホルダーオブジェクトだ。一般に Future の値は並行で供給され、その後で使うことができる。このようなやり方で並行タスクを組み立てると、高速、ノンブロッキングで並列なコードにつなげるのに役立つ。

互換性

何が何と動くか動かないか

どの Scala バージョンがどの JDK バージョンで動くか

Scala の2つのバージョンがバイナリ互換であるとき、一方の Scala バージョンでプロジェクトをコンパイルし、実行時にもう一方の Scala バージョンにリンクするのは安全だ。安全な実行時リンクとは、同じバージョンの Scala でコンパイルや実行するときでは起こり得ないだろう複雑なシナリオでプログラムを実行しても、JVM が LinkageError(かそのサブクラス)を発生させないということ(のみ!)を意味する。具体的には、バイナリ互換である限り、コンパイル時とは異なる Scala バージョンの外部依存関係を実行時クラスパスに持つことができるということだ。言い換えると、異なるバイナリ互換バージョンでの分離コンパイルは、すべて Scala の同じバージョンでコンパイルも実行もすることと同様、問題ない。

多種多様なライブラリは生産性の高いソフトウェアエコシステムにとって重要だ。Scala ライブラリを開発・頒布するのはたやすいが、良いライブラリ作者はコードを書いて公開する以上のことをする。このガイドではライブラリのバイナリ互換という重要なトピックをカバーする。

ツール

Scala REPL や Scaladoc 生成のようなコアの Scala ツールの参考資料

Scala REPL は Scala の式を評価するツール(scala)だ。

scala コマンドはソーススクリプトをテンプレートでラップし、コンパイルし、できあがったプログラムを実行することで実行する。

コンパイラー

Scala コンパイラーをカバーするガイドと概要。コンパイラプラグイン、リフレクション、マクロのようなメタプログラミング。

experimental
By Heather Miller, Eugene Burmako, and Philipp Haller

Scala の実行時/コンパイル時のリフレクションフレームワーク。

Contents
By Lex Spoon and Seth Tisue

コンパイラープラグインは Scala コンパイラーのカスタマイズと拡張を可能にする。このチュートリアルはプラグインの仕組みを説明し、かんたんなプラグインの作成をウォークスルーする。

By Community

scalac がどのようにコードをコンパイルするかの様々な設定。

レガシー

最近の Scala バージョン(2.12以上)には関係なくなった機能をカバーするガイド。

By Martin Odersky and Lex Spoon

これらのページは Scala コレクションフレームワークのアーキテクチャを詳細に説明する。コレクション API というよりはフレームワークの内部の動きがもっとよく分かるだろう。また、コレクションフレームワークがどのようにして数行のコードであなた自身が独自コレクションを定義でき、しかもフレームワークの圧倒的な量の機能を再利用できる助けをしているかを学べるだろう。