読者です 読者をやめる 読者になる 読者になる

IntelliJ IDEAでScalaFXベースのGUIアプリケーション書く環境を整える

UIエンジニア力アップの為にいろんな環境のGUI構成を覚えてる。

新しめのJavaFX っていうGUIライブラリに興味があったんだけど宗教上の理由からJavaを書きたくないので、ScalaFX っていうscalaっぽく書けるバインディングを使ってはじめることにした。

https://code.google.com/p/scalafx/

環境はWindows 8+IntelliJ IDEA Ultimate の12使ってるけどOS XでもCommunity Editionでもいっしょだと思う。

エディションの違いは以下のスライドが詳しい。

IntelliJ IDEA Community Edition は以下の機能がない
• Spring、Play、Grails、Web Services、JSFFlex
HTML5, CSS3, SASS, LESS, JavaScript, CoffeeScript
ActionScript, JavaEE, AIR Mobile
• データベースツール
UML デザイナ
PHP, Python, Ruby, JRuby, SQL

IntelliJ IDEA製品群、ライセンス形態について #jbugj

Androidアプリ開発やる人やウェブアプリケーションのフロントエンドあんま書かない人にとってはCommunity Editionでもやっていけそうな感じ。

俺はいろんなプログラミング言語書くから逆に割安になるのでUltimateのライセンス買ってる。

やってみよう

JVM系の開発もIDEも全然なれてなくて手探りでやってるんだけど、いろいろ試してるうちに同じような境遇の人(あんまりいないんだろうけど、逆に検索でここに来る可能性が高い)にすすめるんならこんな感じかなというのができたので以下にのべる。

以下をセットアップし、環境変数PATH通してコマンドプロントから使えるようにする。

sbt

Windows向けはMSI for Windowsっていうインストーラー形式が配布されてる。インストール先は選べる。

giter8

cs -> giter8 を使えるようにする

giter8なくてもような元となるプロジェクトのテンプレートさえあればサンプルコードでもなんでもいいんだけど、長期的に考えてgiter8 使えるようにしておくと便利なので入れる。

https://github.com/n8han/conscript

"Download the conscript runnable jar. " のリンクからJARをダウンロードしてコマンドラインで実行

java -jar conscript-0.4.1.jar

csコマンド使えるよう設定したら

cs n8han/giter8

これでg8コマンド使えるようになる

IDEAなしでビルドしてアプリケーション実行まで

IDEAからプロジェクト作成せずに、g8コマンドでプロジェクト生成する。

以下でHelloWorldデモ単体のテンプレートが公開されているのでそれを使わせてもらった

https://github.com/jugchennai/scalafx.g8

g8 jugchennai/scalafx.g8

対話的にプロジェクト設定をする。


sbt run

と打ってしばらくすうると依存ライブラリの取得などを済ませ、ビルドしてアプリケーションが立ち上がる

ここまでくればテキストエディタとsbtだけでも開発すすめられちゃうんだけど、GUIアプリケーションの開発環境にはデバッガサポートが必須だと思っているのでIDEAから実行できるようにしていく

IDEAからデバッグ起動してステップ実行まで

sbt-ideaを使う

https://github.com/mpeltonen/sbt-idea

インストールは別に入らなくてsbtの設定に記述しておけば自動でセットアップしてくれる

// ホームディレクトリの .sbt\plugins\build.sbt っていうファイルに記述。なければディレクトリごと作成してね。バージョンはドキュメントのにあわせる。
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.4.0")
sbt gen-idea

でIDEA向けプロジェクト構成を自動でセットアップしてくれる。

C:\Users\k\tmp\scalafxsample>sbt gen-idea
[info] Loading global plugins from C:\Users\k\.sbt\plugins
[info] Loading project definition from C:\Users\k\tmp\scalafxsample\project
[info] Set current project to ScalaFXSample (in build file:/C:/Users/k/tmp/scalafx
[info] Creating IDEA module for project 'ScalaFXSample' ...
[info] Resolving org.scala-lang#scala-library;2.9.3 ...
  [info] Resolving org.scalafx#scalafx_2.9.3;1.0.0-M2 ...
  [info] Resolving org.scalatest#scalatest_2.9.3;1.9.1 ...
[info] Excluding folder target
[info] Created C:\Users\k\tmp\scalafxsample/.idea/IdeaProject.iml
[info] Created C:\Users\k\tmp\scalafxsample\.idea
[info] Excluding folder C:\Users\k\tmp\scalafxsample\target
[info] Created C:\Users\k\tmp\scalafxsample\.idea_modules/ScalaFXSample.iml
[info] Created C:\Users\k\tmp\scalafxsample\.idea_modules/ScalaFXSample-build.iml

"Open Project" から開けるようになる

実行設定がないので [Run] -> Edit Configurations... -> "Application"を選択して自分でつくる

メインクラスはJavaじゃないので自動認識しないので、さっきコマンドラインで設定した名前を直接指定しちゃう

'use classpath of modules' も設定する

ほいたら実行

なんかエラーアラート出てるけど続行はできる(これ出なくする方法わかる人おしえてください)

起動できました

ブレークポイント貼って確認。こんどはDebug実行。虫のアイコンのやつ。

無事ブレークしました。値チェックや式評価、ステップ実行などをして確認してください。

おつかれさまでした

おまけ: ScalaFXリポジトリにあるデモも実行できる

hg clone https://code.google.com/p/scalafx/
cd scalafx
sbt gem-idea

scalafx-demosフォルダ以下にあるソースについて同じように実行できる。