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、JSF、Flex
• HTML5, CSS3, SASS, LESS, JavaScript, CoffeeScript
• ActionScript, JavaEE, AIR Mobile
• データベースツール
• UML デザイナ
• PHP, Python, Ruby, JRuby, SQL
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フォルダ以下にあるソースについて同じように実行できる。