No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

読書管理アプリ(Librarian)のUI開発

Librarian開発記。
Web API系でGoogleやら楽天やらを探ってみたけど、書籍データベースの充実度からいうと、Amazonに一日の長がありそう。
(Googleカバレッジは悪くないのだけど、、、)
ただ、Amazonはリクエスト数の上限に達していないつもりでも503エラーでデータをとれない場合が頻発していたので、実用性に難ありかな?と思いきや、世の皆様はリトライで回避している模様。
Librarianでも再試行で試してみたところ、うまくいっているようなので、今回は目先を変えてUIネタを記事にしてみる。

さて、どのUIを採用しようか。

先代のLibrarian(仮に、2.0版とする)では、地元の図書館で借りている本を検索するのに、かなりちまちまとしたスクレーピングをしているので、できればそのロジックは活かしたい*1

ということで、開発言語の選択肢はrubyが第一候補*2
ちなみに、Librarian 1.0~2.0*3はruby1.8時代に作っていたものなので、UIには
VisualuRuby | SourceForge.netを使っていたが、活動が停止してしまっているようなので、心機一転してjruby+jrubyfxの組み合わせにする。
理由は以下のとおり。

  • Librarian2.0のrubyソースが使えそう。
  • 以前からのruby界隈のGUIフレームワークが先行きがよくわからない。Qt5? shoes4? どうもrails以降、ruby界隈ではデスクトップアプリケーション分野が翳ってきたのかなぁ。Qtに興味はあります。
  • JavaFXJava標準になったので、暫くは生き残りそう。
  • 以前にMWでJavaFXは触ったことがあるので、敷居が低い。
  • 新し物好き

開発環境の準備

Java8のインストール

今回はPCを変えた直後でもあるので、真新しいJDKを導入しておく。
今更書くまでもないけど、一応ここ(Java SE - Downloads | Oracle Technology Network | Oracle)から入手。
導入したバージョンはjava SE 8u25

C:\Users\kazyury>java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

jrubyのインストール

同じくjrubyも書くほどでもないけど、インストール。
導入元サイトは以下。

Home — JRuby.org
導入したversionは、jruby 1.7.16.1

C:\Users\kazyury>jruby -v
jruby 1.7.16.1 (1.9.3p392) 2014-10-28 4e93f31 on Java HotSpot(TM) 64-Bit Server
VM 1.8.0_25-b18 +jit [Windows 8.1-amd64]

今見てみると、1.7.18が出てる様子。

jrubyfxのインストール


jruby/jrubyfx · GitHub
本家はGitHubらしい。gemでインストールする。

jruby -S gem install jrubyfx

インストールした版は1.1.1

C:\Users\kazyury>jruby -S gem list jrubyfx

*** LOCAL GEMS ***

jrubyfx (1.1.1 java)[f:id:kazyury:20141231005241p:plain]
jrubyfx-fxmlloader (0.4 java)

scene builderのインストール

JavaFX自体はJavaに同梱されるようになったけど、Scene Builderは別途JavaFX Scene Builder 2.0 Downloadからダウンロード。
導入した版は2.0
f:id:kazyury:20141231005241p:plain


今日のところはここまで。

*1:APIで取れるならともかく、スクレーピングは作り直したくない...

*2:まぁ、Web API系の探索の時にもrubyでopen-uriとか使いまくっていたので、Javaに戻りたくないというのもある

*3:ちなみに、1.0はExcelに読書管理記録を書き出していたのを、2.0ではLibreOfficeに書き出すようにしていただけ。いずれもwin32ole。ここら辺は別記事で。