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

@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

Scalaでツール作った -いつだって僕たちは、星を追いかけてきた-

f:id:numanuma08:20140106005820p:plain

Scalaでコマンドラインツールを作るで紹介した方法を使って、ツールを作りました。

某エロ画像が沢山あるサイトから、画像をダウンロードするツール

僕たちはいつだって、星を追いかけてきた。届かない星に手を伸ばし、つかみとる夢を見てきた。

numa08/halley

Halley、つまりハレー彗星、そんな思いを託してこのツールを作りました。

今のところ、Mavenリポジトリに登録はしていないので

git clone git@github.com:numa08/halley.git
cd halley
sbt publish-local
cs numa08/halley

と、インストール手順は面倒です。(そのうちなんとかします)

DSLの可能性

以前vambooというRubyのツールを実装した際、RubyのDSLで設定ファイルを作りました。

DSLを利用することで、自前でパースを作る必要がなくなり、コストの削減、品質の上昇を得ることができます。

今回、この機能を実現するためtwitter/utiの中のutil-mavenを利用しました。

ちなみに、なぜかTwitterMavenリポジトリで公開されているものはバージョンが古く、Scala2.10では動きませんでした。

new urls {
    add("ダウンロードしたいページのURL")
    add("複数記入することもできる")
    // //から始まる行はコメントだ
}

こんな内容のHalleyfileを作り、halleyを実行することで、勝手にダウロードされます。

便利ですね。

まあ、当然利用は自己責任でお願いします。

scalaの可能性

ファイルIOの部分は若干面倒でしたが、それ以外は特に気にすること無く実装できました。

コレクション系のAPIが強力であるため、HTMLのパースとかそのを簡単に書けますね。

ただ、パース対象のHTMLが崩れていたため、実行時例外で死にました。そのため、jsoupを使ってます。

Javaのライブラリが使える点もScalaの強い点ですね、やっぱり。

今年もScalaやっていきますね。