2012TweetこれはScalaを使った開発環境を素早く整え、実際の開発の雰囲気を感じてもらうための文章です。makeなどのコマンドインターネット接続(ここから15分です)Scalaプロジェクトの作成Scalaプロジェクトの必要最低限のひな形をGitHub上にscala-minとして作成してあります。以下のようにダウンロードしながら展開します。GitHubはオープンソースでのコード開発を支援するサービスです。Scala自身の開発もここで行われています。Tool)を使って開発するのが標準になっています。testとすると、まずScala関連のライブラリのダウンロードが始まります。以下にダウンロードされたライブラリを使用するので動作が速くなります。メモリの少ないマシンを利用してエラーが出る場合は、以下のように-memオプションでメモリ使用量を制限できます。MBのメモリを使用するダウンロードが終了すると、Scalaコードのコンパイルが始まり、テストコードが実行されます。コンパイルされたファイルの置き場(削除しても構わない)Scalaのコードを編集するScalaプログラムの入口はmain関数で、以下のように定義されます。}}コマンドラインの引数がargsに渡され、mainのコードが実行されます。mainの中身を書き換えてみましょう。テストコードを作成し、実行する自分で作ったプログラムの動作を確認するために、それを動かすテストコードを作成します。英語による表記でどのようなテストを実行しているかわかるように書き下せるスタイルになっています。このテストコードではScalaTestライブラリを使っています。テストを実行をサイクルとして行います。この支援をする機能がsbtに備わっています。以下のようにテストコードを実行します。"~test"このコマンドはテストコードが実行された後も終了せず、ソースコードの変更があるたびに、コンパイル、テストの実行を行ってくれます。Scalaでの開発時間の短縮に重宝します。タグ付けしたテストのみを実行tagを付けることで特定のテストのみを繰り返し実行できるようになります。interrupt)特定のクラスにあるテストをすべて実行タグ指定せずに以下の用に入力すると、HelloTestクラスの中にあるすべてのテストが繰り返し実行されます。wildcard(*)が使えます。*HelloTest"ログを表示するプログラムを開発するときに、変数の内容やどの部分のコードが実行されているかなどの情報をログとして表示できると便利です。IDEでブレークポイントなどを設定しなくてもコードのデバッグがしやすくなります。HelloTest.scalaのテストコード中にログを表示する例があります。順にログレベルを分けることで、例えば以下のようにログレベルを設定し、debug以上のログのみを表示することができます。-Dloglevel=debugデフォルトではinfo以上のログが表示される設定になっています。traitが使われています。interpolationを参考に。compile)が行われます。そのためコードの性能は実行順や繰り返し回数などに大きく影響されます。コードの性能を評価する際には、常に実行時間の平均をとり、hot/cold-runかどうかを意識する必要があります。coreを使った処理の性能を比較してみましょう。blockで挟まれたコードブロックを繰り返して実行しています。single-coreで配列の各要素を倍にする。multi-coreを使って配列の各要素を倍にする。並列化の指示はparを挟むだけ。coreのコードが速いが、スレッドを立ち上げるオーバーヘッドがあるので、個々の実行で見ると必ずしも並列化した方が速いとは限らない(実行時間のmaxの値を参照)。traitが使われています。Scalaコードのパッケージを作成する十分にコードをテストできたら本番環境で実行するためのプログラムパッケージを作成します。packこのコマンド一つでtarget/packフォルダ内にそのまま配布できる形のパッケージができあがります。World!!備考このようなパッケージの作成を手軽にするために、今回sbt用のプラグインsbt-packを開発しました。以下helloコマンドがインストールされます。World!!プログラムの名前を変更したい場合は、project/Build.scala内のpackMain設定を変更してください。pluginをインストールして使うのがお薦めです。gen-ideaとすると、IntelliJ用のプロジェクトファイルが作成されます。プロジェクトを開くにはFile->Openで、今回作成したmyprojectフォルダを選択します。Cookbookには、Scalaの開発でつまづきやすい点についてのヒントがあります。Scalaを学ぶのにおすすめの資料をまとめてあります。