根無し草日記

好きな事についての雑記帳

sbtについて学ぶ

以前scala世界のナベアツを実装した。これは、scalaの基本を学ぶためにスクリプトと呼べる位の小規模なプログラムで、scalaコマンドを使い、特にファイルやライブラリの依存とかは気にせずに実行した。しかし、プログラミングの規模が大きくなると、sbtのようなビルドツールは欠かせない。しかしながら、sbtが何をやっているか理解せず使うと謎のエラーに苦労することは目に見えている。と、いうことで実際にsbtを使う前に基本的な所を学んで行こうと思う。

ビルドとは?

sbtとは、ビルドツールである。ではそもそもビルドとは、作成したプログラムを使える状態にする事である。似たような言葉に"コンパイル"がある。これは意味としてはプログラムで書いた命令を機械語に翻訳する事だが、実はコンパイルだけでは作成したプログラムは使える状態にならない。つまり "ビルド = コンパイル + α" である。ちなみに世界のナベアツのようなプログラムは、このプラス・アルファがなく、コンパイルだけで使える。

では、そのプラス・アルファとは何か?簡単に言うと必要な命令を整理する事である。

規模が大きなプログラムになると、プログラムのソースコードは分割され、様々なファイルに散らばっている。また、様々なライブラリも活用している。プログラムの中で使うクラスが別のファイルにあり、その中でも別のファイルのクラスを参照している事はザラにある。そんなとき、どこのファイルやライブラリを参照するか?等を色々自動で考えて上手い事処理してくれるのがビルドツールである。

具体的な作業は?

アプリを開発するときのフローはプロジェクトの立ち上げ、コーディング、テスト、ビルドの順だと思うので、それぞれのフローでの具体的な作業や注意事項を見て行く。

プロジェクトを立ち上げるとき

先程のsbtコマンドでフォルダを作っても良いし、下記のサイトにあるようにhello worldのプロジェクトをロードしても良い。

sbt Reference Manual — Hello, World

コーディング

sbtのフォルダ構成に従う必要があるが、特別な作業は必要無く、普通にコーディングして行けばよい。

テスト

テストのフォルダにあるコードにテストの内容を記述して実行する。

ビルド

sbt compileで、ビルドが出来る。出来上がった実行可能なファイルはtargetの下に置かれる。

 

まとめ

今回はsbtの機能を確認した。実際に使う前なので間違って理解している事や理解が不足している事もあるかも知れないが、あとは実際に使いながら少しずつマスターして行こうと思う。実際に使いながら便利な使い方を発見したら何処かで更新して行こうと思う。