倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

sbt × IntelliJ IDEA (× git) スタートアップ

なんか今更ですが、IntelliJ IDEA で sbt プロジェクトを扱う方法を見ていきます。 まぁ、JetBrain さんが提供する Scala プラグインをインストールすれば万事 OK なんですが、プラグインのインストールとかたまにしかやらないので忘れた時用のメモとして書いときます。 ちなみに ScalaTest をイジろうと思って sbt と IntelliJ IDEA を触ってるんだけど、この Scala プラグインは ScalaTest の実行などもサポートしてます。

内容

IntelliJ IDEA に Scala プラグインをインストールする

まずは IntelliJ IDEA で Scala を扱えるようにするプラグインのインストール。 正直これができれば、プロジェクトの新規作成などは通常の操作とほとんど同じ。 プラグインのインストールも別に難しくありません。

手順は以下のようにします。 以下ではプロジェクトを全て閉じた「Welcome」ページから始めてますが、プロジェクトを開いている状態から

[メニューバー] → [File] → [Settings...]

から「Settings」ダイアログを開いて、左側の項目から「Plugins」を選択すれば、2つ目の「Plugins」ダイアログと同様の画面がでます。


f:id:waman:20150526212324p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526212332p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526212347p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526212355p:plain
「OK」ボタンを押すと再起動を求めるダイアログが表示されるので「Restart」で再起動する

Scala 以外にもいろいろなプラグインがありますな。 「Install JetBrains plugins...」ボタン横の「Browse repositories...」をクリックすると Scala 関連の他のプラグインも含めてさらにたくさんのプラグインが出てきます。 機能に不満があったらこのあたりのプラグインを試してみるとよいかと。

IntelliJ IDEA のエンコーディングの設定

OS によっては OS 独自の文字エンコーディングが設定されていてコード中で日本語を使うと面倒なことになるので、もし設定されてなかったら文字エンコーディングを UTF-8 に設定しておく方が無難。

f:id:waman:20150526213642p:plain
「Welcome」ページではなく、プロジェクトが開いている状態では

[メニューバー] → [File] → [Other Settings] → [DefaultSettings...]

で以下の「Default Settings」ダイアログが開きます。
f:id:waman:20110105151547p:plain

f:id:waman:20150526213647p:plain


プロジェクトを開いている状態で現在のプロジェクトだけ文字エンコーディングを変えたい場合は

[メニューバー] → [File] → [Settings...]

で「Default Settings」ダイアログに似た「Settings」ダイアログが開くので、同様の設定をします。

また、個別のファイルごとに文字エンコーディングを設定したい場合はファイルを開いた状態で右下の文字エンコーディング表示をクリックして文字エンコーディングを選択します*1

IntelliJ IDEA で sbt プロジェクトを新規作成する

IntelliJ IDEA から新規に sbt プロジェクトを作成する方法は、通常のプロジェクト新規作成とほとんど同じ。 途中でプロジェクトの型として「SBT」を選択するだけ。

f:id:waman:20150526213723p:plain
プロジェクトが既に開いている状態では

[メニューバー] → [File] → [New] → [Project...]

から。
f:id:waman:20110105151547p:plain

f:id:waman:20150526213732p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526213741p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526213751p:plain


プロジェクト作成後、sbt でビルドを行うので少々時間がかかります。

既存の sbt プロジェクトを IntelliJ IDEA にインポートする

次は既存の sbt プロジェクトを IntelliJ IDEA にインポートする方法。 build.sbt ファイルの詳細はここでは不必要だけど、テンプレートとして載せておきます:

name := "sbt-test"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"

//***** Compile Options *****
javacOptions ++= Seq(
  "-source", "1.8",
  "-target", "1.8",
  "-encoding", "UTF-8"
)

scalacOptions ++= Seq(
  "-deprecation",
  "-encoding", "UTF-8"
)

fork := true

コンパイラに文字エンコーディングの指定をしてますが、IntelliJ IDEA プロジェクトの文字エンコーディングとしてこれらを読み取ってくれたりはしません(コンパイル・オプションとしてはきちんと設定されてますが*2)。


f:id:waman:20150526213831p:plain
プロジェクトが開いている状態では

[メニューバー] → [Open...]

から。
f:id:waman:20110105151547p:plain

f:id:waman:20150526213840p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526213901p:plain
プロジェクトが開いている状態から始めるとこの画面は表示されません。
f:id:waman:20110105151547p:plain

f:id:waman:20150526213912p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150526213927p:plain

git で管理する設定ファイル

sbt プロジェクトでは「target」ディレクトリ下のファイルは git 管理する必要はありません。 また、IntelliJ IDEA プロジェクトでは(ディレクトリ・ベースの設定ファイルで).idea ディレクトリ下にある workspace.xml は git 管理の必要ありません。 したがって、.gitignore は以下のようにしておけばいいんでしょう:

target/
.idea/workspace.xml

IntelliJ IDEA で sbt プロジェクトを扱う方法は大体こんな感じ。 プラグインのインストールも大して難しくはないけど、いっそのこと Groovy みたくデフォルトで入れておいてくれてもいいんじゃないかなぁ。 結構ファイルサイズが大きくなったりするのかな?

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

  • 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
  • 出版社/メーカー: インプレスジャパン
  • 発売日: 2011/09/27
  • メディア: 単行本(ソフトカバー)
  • 購入: 12人 クリック: 235回
  • この商品を含むブログ (46件) を見る

*1:Package Explorer (IntelliJ IDEA でもそういうのか知りませんが、左に表示されているファイル・ツリー)で対象のファイルを右クリックして、ポップアップメニューから文字エンコーディングを設定できるものもあります。

*2:IDEA 上でファイルを新規作成したときに、この sbt の設定のエンコーディングは使ってくれないということ。 まぁ、コンパイル・オプションとして設定しているので当然ですが。 sbt でプロジェクト自体の文字エンコーディングを設定できたりするのかな?