sohatach's blog

http://github.com/soha

Skinny Frameworkで作ったアプリをEclipseでインポートする。

やること

Skinny Frameworkを使用して作成したサンプルアプリをEclipseへインポート。

環境

Windows8.1(64bit),Java7(64bit)
環境変数JAVA_HOMEの設定やjavaコマンドへのPATHは通しておいた方がいいと思います。)

Skinny Frameworkとは?

Scalaフルスタックな Web アプリケーション開発フレームワークです。
2014/03/28 に1.0.0がリリースされたばかりとのこと。
キャッチコピーに「Scala on Rails」を掲げているとのことであり、
タイプセーフなRailsが実現できるのであれば、最も理想的なフレームワークなのではないかと個人的には思っています。
詳しくはこちらなど。
https://gist.github.com/seratch/7382298


やったこと

1. プロジェクトの作成

https://github.com/skinny-framework/skinny-framework/releases
より、skinny-blank-app.zipというファイルをダウンロードします。
今回最新バージョンは、1.0.9でした。こちらがプロジェクトの雛形となります。
zipファイルを任意のフォルダに展開します。
ここでは、C:\Scala\skinny\skinny-blank-appに展開しました。

2. サンプルの起動確認

プロジェクトを作成したフォルダをコマンドプロンプトで開きます。
(ここでは、C:\Scala\skinny\skinny-blank-app)
以下のコマンドを実行するとアプリが起動します。

skinny run

依存ライブラリのダウンロードなどを自動で行うようであり、
初回起動時は少し時間が掛かります。

>1. Waiting for source changes... (press enter to interrupt)
という表示が出ればアプリが起動しているようです。
デフォルトでローカルの8080ポートで起動しますので、
ブラウザで以下のURLにアクセスします。

http://localhost:8080

以下のような画面が出れば成功です。

f:id:sohatach:20140501004808p:plain


3. scaffoldによるCRUD機能生成
ここまでだと特に機能もなく、DBを使用することもないため、
scaffoldによるCRUD機能を生成します。

skinny g scaffold Books Book title:String author:String amount:Option[Int]

*** Skinny Generator Task ***

"src\main\scala\controller\ApplicationController.scala" skipped.
"src\main\scala\controller\BooksController.scala" created.
"src\main\scala\controller\Controllers.scala" modified.
"src\test\scala\controller\BooksControllerSpec.scala" created.
"src\test\scala\integrationtest\BooksController_IntegrationTestSpec.scala" created.
"src\test\resources\factories.conf" modified.
"src\main\scala\model\Book.scala" created.
"src\test\scala\model\BookSpec.scala" created.
"src\main\webapp\WEB-INF\views\books\_form.html.ssp" created.
"src\main\webapp\WEB-INF\views\books\new.html.ssp" created.
"src\main\webapp\WEB-INF\views\books\edit.html.ssp" created.
"src\main\webapp\WEB-INF\views\books\index.html.ssp" created.
"src\main\webapp\WEB-INF\views\books\show.html.ssp" created.
"src\main\resources\messages.conf" modified.
"src\main\resources\db\migration\V20140429222552__Create_books_table.sql" created.

[success] Total time: 1 s, completed 2014/04/29 22:25:52

最終的に上記のようなファイルが生成されます。

続いてテーブル作成のため、以下のコマンドを実行します。

skinny db:migrate

db\development.mv.dbというデータベースの実体ファイルが生成されました。

ここまでのscaffoldの流れは、Railsと同じですね。

改めてskinny runを実行し動作確認します。

http://localhost:8080/books
にアクセスすると以下のような画面が表示されると思います。
ここでは省略しますが、Newボタンを押下することで登録画面が表示され
Bookの登録・更新・削除ひととおりの機能が実装されています。

f:id:sohatach:20140501004819p:plain

4. Eclipseへのインポート

本題となります。
Skinny Frameworkのプロジェクトは、sbtでプロジェクトを管理しているようですので、
sbteclipseが使えます。
https://github.com/typesafehub/sbteclipse

まずは、project/plugins.sbtに以下の行を追加します。(末尾に追記すればよいです)

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")

その後以下のコマンドを実行し、Eclipseのプロジェクトファイルを生成します。

sbt

eclipse

これにてEclipseでインポートできるようになります。

2014/05/02 追記

コメントいただいています通り、

skinny eclipse

とすることで、自分でprojet/plugins.sbtを書き換えなくても
Eclipseのプロジェクトファイルが生成されました。
今後はこちらを使用するようにします。

@seratchさん、ありがとうございました。