Skip to content

Commit

Permalink
fix: address textlint warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
i10416 committed Sep 22, 2022
1 parent f5f0556 commit 2b1e100
Showing 1 changed file with 43 additions and 45 deletions.
88 changes: 43 additions & 45 deletions src/sbt-usage.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# sbt の基本的な使い方
# sbtの基本的な使い方

## About

sbt は Scala のコードで使われているデファクトのビルドツールです.
sbtはScalaのコードで使われているデファクトのビルドツールです。

sbt は以下のような機能を担います.
sbtは以下のような機能を担います。

- Scala のコンパイラの設定(バージョンやオプションなど)の管理・クロスビルド機能
- Scalaのコンパイラの設定(バージョンやオプションなどの管理・クロスビルド機能
- ライブラリをインストールしたりライブラリを公開したりするパッケージマネージャーとしての機能
- ビルドやテストの処理を定義・実行するための機能
- プラグインによるさまざまなタスクの自動化・簡略化の機能

以下では sbt の基本的な機能を紹介しますが、詳細は[公式ドキュメント](https://www.scala-sbt.org/1.x/docs/ja/Getting-Started.html)を参照してください.
以下ではsbtの基本的な機能を紹介しますが、詳細は[公式ドキュメント](https://www.scala-sbt.org/1.x/docs/ja/Getting-Started.html)を参照してください

## Scala のバージョン管理
## Scalaのバージョン管理

### 単一の Scala バージョンを管理する場合
### 単一のScalaバージョンを管理する場合

Scala のアプリケーションを書く場合、例えばウェブサーバーや CLI ツールを作る場合、特定の Scala のバージョンで書くのが一般的です.
Scalaのアプリケーションを書く場合、例えばウェブサーバーやCLIツールを作る場合、特定のScalaのバージョンで書くのが一般的です。

例えば現在のディレクトリにある Scala アプリケーションの Scala バージョンを `3.2.0` に指定するには
`build.sbt` に以下のように書きます.
例えば現在のディレクトリにあるScalaアプリケーションのScalaバージョンを`3.2.0`に指定するには
`build.sbt` に以下のように書きます


```scala
Expand All @@ -32,10 +32,9 @@ lazy val app = project.in(file("."))

### 複数の Scala バージョンを管理する場合

他の Scala アプリケーションやライブラリから利用するライブラリを書く際は、しばしば複数の Scala バージョン向けに
ライブラリをビルドします.
他のScalaアプリケーションやライブラリから利用するライブラリを書く際は、しばしば複数のScalaバージョン向けにライブラリをビルドします。

例えば、Scala 2.13.8 と Scala 3.2.0 向けにライブラリをビルドするには次のように書きます.
例えば、Scala 2.13.8とScala 3.2.0向けにライブラリをビルドするには次のように書きます。

```scala
lazy val lib = project.in(file("."))
Expand All @@ -45,15 +44,15 @@ lazy val lib = project.in(file("."))
)
```

sbt シェルから `++2.13.8 <sbt command>` とすることで Scala のバージョンを指定して sbt のコマンドを実行したり
`+<sbt command>` とすることで crossScalaVersions に指定したすべての Scala バージョンでコマンドを実行したりすることができます.
sbtシェルから `++2.13.8 <sbt command>` とすることでScalaのバージョンを指定してsbtのコマンドを実行したり
`+<sbt command>` とすることで`crossScalaVersions`に指定したすべてのScalaバージョンでコマンドを実行したりすることができます。


### コンパイラオプションの設定

sbt からは Java や Scala のオプションを設定できます.
sbtからはJavaやScalaのオプションを設定できます。

例えば `build.sbt` に以下のように設定することで Scala のコンパイラオプションを変更して deprecated な機能を使っている場合に警告を表示します.
例えば `build.sbt` に以下のように設定することでScalaのコンパイラオプションを変更してdeprecatedな機能を使っている場合に警告を表示します。

```scala
scalacOptions ++= Seq(
Expand All @@ -62,7 +61,7 @@ scalacOptions ++= Seq(
```


同様に Java のオプションを指定できます. 以下の例では比較的新しい Java で incubator モジュールを利用する設定を Java Options に渡しています.
同様にJavaのオプションを指定できます。以下の例では比較的新しいJavaでincubatorモジュールを利用する設定をJava Optionsに渡しています・
```scala
javaOptions ++= Seq(
"--add-modules=jdk.incubator.foreign",
Expand All @@ -73,11 +72,11 @@ javaOptions ++= Seq(

## パッケージの管理

### Scala ライブラリのインストール
### Scalaライブラリのインストール

現在のディレクトリにある Scala アプリケーションから Scala のライブラリを利用する場合`build.sbt` に以下のように書きます.
現在のディレクトリにあるScalaアプリケーションからScalaのライブラリを利用する場合`build.sbt` に以下のように書きます

`"パッケージのグループID" %% "アーティファクトID" % "バージョン"` という形式です.
`"パッケージのグループID" %% "アーティファクトID" % "バージョン"` という形式です

```scala
lazy val app = project.in(file("."))
Expand All @@ -89,18 +88,18 @@ lazy val app = project.in(file("."))
)
```

上の例では Scala 3 向けにビルドされた cats というライブラリのバージョン 2.8.0 を追加しています.
上の例ではScala 3向けにビルドされたcatsというライブラリのバージョン2.8.0を追加しています。

このように書けば `src/main/scala` 以下にある Scala ファイルから下のようにライブラリをインポートして利用できます.
このように書けば `src/main/scala` 以下にあるScalaファイルから下のようにライブラリをインポートして利用できます。

```scala
import cats.syntax.all._
```

### Java ライブラリを追加する
### Javaライブラリを追加する

Scala からは Java のライブラリを利用することができます. アプリケーションに Java ライブラリを追加する場合は以下のように書きます.
Scala のライブラリを追加する場合と違ってネームスペースとライブラリの間にある `%` が1つになっていることに注意してください.
ScalaからはJavaのライブラリを利用することができます。 アプリケーションにJavaライブラリを追加する場合は以下のように書きます。
Scalaのライブラリを追加する場合と違ってネームスペースとライブラリの間にある `%` が1つになっていることに注意してください

```scala
lazy val app = project.in(file("."))
Expand All @@ -114,22 +113,21 @@ lazy val app = project.in(file("."))

### JVM以外のプラットフォームからライブラリを利用する

Scala アプリケーションを JVM 向けだけでなく Scala.js や Scala Native 向けにもビルドする場合はライブラリも Scala.js や Scala Native
向けにビルドされたものを利用する必要があります.
ScalaアプリケーションをJVM向けだけでなくScala.jsやScala Native向けにもビルドする場合はライブラリもScala.jsやScala Native向けにビルドされたものを利用する必要があります。

以下の例は、現在のディレクトリにある Scala.js アプリケーションから Scala.js 向けにビルドされたライブラリを利用する例です.
以下の例は、現在のディレクトリにあるScala.jsアプリケーションからScala.js向けにビルドされたライブラリを利用する例です。

`libraryDependencies` に与えるライブラリの `%%``%%%` になっていることに注意しましょう.
このように書くことで Scala.js 向けにビルドする際は Scala.js 用のライブラリを Scala Native 向けにビルドする際は Scala Native 向けの
ライブラリを解決してくれます.
`libraryDependencies` に与えるライブラリの `%%``%%%` になっていることに注意しましょう
このように書くことでScala.js向けにビルドする際はScala.js用のライブラリをScala Native向けにビルドする際はScala Native向けの
ライブラリを解決してくれます

project/plugins.sbt にプラグインを追加します.
project/plugins.sbtにプラグインを追加します。

```scala
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.11.0")
```

build.sbt を次のように書きます.
build.sbtを次のように書きます。

```scala
lazy val app = project.in(file("."))
Expand All @@ -143,11 +141,11 @@ lazy val app = project.in(file("."))

### テスト時に利用するライブラリを指定する

アプリケーションやライブラリとしては利用しないがテストで利用するライブラリが必要な場合は次のように書きます.
ライブラリ名の後ろに `% Test` があることに注意してください.
このように指定したライブラリはテスト用のコード(一般的には`src/test/scala` 以下にある Scala コード)からしか利用できず
リリースされるアプリケーションやライブラリには含まれません. JavaScript の package.json に含まれる
`DevDependencies` のようなものと考えるとわかりやすいかもしれません.
アプリケーションやライブラリとしては利用しないがテストで利用するライブラリが必要な場合は次のように書きます
ライブラリ名の後ろに `% Test` があることに注意してください
このように指定したライブラリはテスト用のコード一般的には`src/test/scala` 以下にあるScalaコード)からしか利用できず
リリースされるアプリケーションやライブラリには含まれません。JavaScriptのpackage.jsonに含まれる
`DevDependencies` のようなものと考えるとわかりやすいかもしれません

```scala
lazy val app = project.in(file("."))
Expand All @@ -159,17 +157,17 @@ lazy val app = project.in(file("."))
)
```

## sbt プラグイン
## sbtプラグイン

sbt ではプラグインを利用してさまざまなタスクを自動化できます. project/plugins.sbt ファイルからプラグインを追加できます.
sbtではプラグインを利用してさまざまなタスクを自動化できます。project/plugins.sbtファイルからプラグインを追加できます。

試しに、Scala のコードフォーマッター scalafmt を sbt から利用するためのプラグインを project/plugins.sbt に追加してみましょう.
試しに、Scalaのコードフォーマッターscalafmtをsbtから利用するためのプラグインをproject/plugins.sbtに追加してみましょう。

```scala
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
```

これで ターミナル または sbt シェルから scalafmt, scalafmtSbt, scalafmtCheck, scalafmtAll などのコマンドが使えるようになります.
これでターミナルまたはsbtシェルから`scalafmt``scalafmtSbt``scalafmtCheck``scalafmtAll`などのコマンドが使えるようになります

```scala
sbt scalafmt
Expand All @@ -178,6 +176,6 @@ sbt scalafmt
他にも
- ライブラリのリリースを自動化する `sbt-ci-release`
- アプリケーションをさまざまな形式でパッケージングする `sbt-native-packager`
- Scala.js や Scala Native のクロスビルドを簡単にする `sbt-crossproject`
- Scala.jsやScala Nativeのクロスビルドを簡単にする `sbt-crossproject`

などさまざまなプラグインがあります.
などさまざまなプラグインがあります

0 comments on commit 2b1e100

Please sign in to comment.