#17 Scalaで学ぶモジュールとパッケージの基本
Scalaのパッケージは、JVM言語らしくJavaと同じ考え方を引き継いでいます。この記事では、Scalaにおけるパッケージの基本と、外部ライブラリの導入方法をあわせて解説します。
パッケージの宣言
package com.example.utils
object Greeter {
def greet(name: String): Unit = {
println(s"こんにちは、$name さん")
}
}
他のパッケージから使う
import com.example.utils.Greeter
Greeter.greet("太郎")
パッケージ内のすべての定義をまとめて読み込みたい場合は、`import com.example.utils._`のようにアンダースコアを使います。
objectという独自の仕組み
Scalaのコード例に出てきた`object`は、インスタンスを1つだけ持つ特別な仕組みです。Javaの`static`メソッドに近い役割を、より整理された形で実現しています。同じ名前の`class`と`object`を同じファイルに定義すると、その`object`は「コンパニオンオブジェクト」と呼ばれ、`class`のプライベートなメンバーにアクセスできる特別な関係になります。
外部ライブラリを使う(sbt)
Scalaプロジェクトでは、`sbt`というビルドツールを使って外部ライブラリを管理するのが一般的です。`build.sbt`に依存関係を追記します。
libraryDependencies += "com.typesafe.play" %% "play-json" % "2.10.0"
`%%`はScalaのバージョンに応じたライブラリを自動選択する記法で、`%`だけだとバージョンを明示的に指定する必要があります。
Scalaならではの注意点
ScalaはJavaと同じパッケージの仕組みを使えるため、Java向けの慣習(ドメイン名を逆にした命名など)がそのまま通用します。一方で`object`のような、Scala特有の書き方も合わせて理解しておく必要があります。またScalaはJavaのライブラリ資産(Maven Centralに公開されているもの)もそのまま利用できるため、`sbt`の依存関係にはScala専用ライブラリとJava製ライブラリが混在することも珍しくありません。
まとめ
Scalaのパッケージ管理はJavaと共通していますが、`object`というScala独自の仕組みも組み合わせて使われます。外部ライブラリは`sbt`の`build.sbt`で管理し、`%%`と`%`の違いにも注意しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿