Scala Hack-a-thon #2 に行ってきました&LTで話してきました

昨日になりますが、@yuroyoroさん主催の2月20日に行われたScala Hack-a-thon #2 に行ってきました!
会場を提供していただいた日本オラクル様に感謝です!部屋までの誘導はちと考える必要がありましたが、椅子は座りやすいし、ドリンクサーバもあるし、最強のファシリティです!!!ありがとうございました!
今後も勉強会などに積極的に場所を提供していきたいとのことですので、場所に困ったことがあったら相談に乗ってくれると思います。

さて、発火村の内容はといいますと、午前中は yuroyoroさんがScala hack-a-thon #1の資料を使っての解説、午後もみんなで沈黙大会。。。じゃなくて各自黙々とscalaの(?)コーディングと相成りました。

んで、僕は何をしていたかというと、初めてのScalaの題材何にしよう?と思ったんですが、yuroyoroさんの資料とコップ本を片手にTermtterみたいなのをScalaでやってました。
具体的にはtwitterのタイムラインを取ってきて、XMLをパースして、libnotifyに投げる、っていうのを作ってました。LTの寸前にやっと動きましたのでもうちょっと整理したらまた公開します。
コレクションの操作が全く良くわからんので、沈黙を破りyuroyoroさんに色々と質問してしまいました。Scala難しい。。。習うより慣れろでいっぱい書くしかないですね。

ところで、libnotifyってのは、Macで言うところのgrawlみたいなものです。Windowsにも同じようなのはあると思うんですが良くわかりません。。。

$ sudo apt-get install libnotify-bin
でインストールしておくと、
$ notify-send "hello"
で notifyのダイアログが出せるんですが、これをScalaでやりたかったわけです。ついでに言うと、間に合えばこれを出しっぱなしにしてLTやりたかったんですが。。。残念。この試みはまた今度と言うことで。
夕方、途中から突然上がったブラインド越しに美しい夜景を見ながら、LTでちょっと喋ってきました。以下に資料を張っておきます。



本当は、この後GAEの本番にデプロイしてっていうデモをするつもりだったんですが、なんと自分のUbuntuがプロジェクターにつながらず(汗)。結局上の資料をPDFにしてyuroyoroさんのMacを借りてプレゼンしました。いやーホント焦りました。お陰で(?)プレゼンも緊張してしまいなに喋ってるか良くわからなかったかもしれません、ゴメンナサイ。。。

この後、19時からの懇親会では色々とディープな話を伺えて楽しかったです。yuroyoroさんをはじめ、参加者の皆様、ありがとうございましたー!

GoogleAppEngineで動くミニブログシステム書きました

tightbellというAppEngine for Javaで動くミニブログシステムを書きました。コードラボのサンプルとPlayFrameworkのチュートリアルを足してちょっとだけスパイスかけたようなシステムです。ソースを眺めたりローカルで動かしてみて、煮るなり焼くなりして楽しんでみてください。
以上、えーと、詳しくはwikiを参照のこと :)

。。。ではここに書く意味もないので、作った動機など。

その1:コードラボ御礼
楽しかったコードラボの成果物を形にしておかないといかんと思ったのがそもそもの動機です。が、割と1月の週末はまとまった時間がとれず、気づけば約1ヶ月経ってますのであまりインパクトが。。。まあ、いいんです。公開したことに意味があるのです。

その2:AppEngineお勉強 -> play & sienaお勉強
はじめは、AppEngineに特化したStruts的コントローラの薄いやつを書いてblogger.comのテンプレと同じものが使えればいいなーなどと思っていたんですが、DAOとか考えるとやっぱり何か既存のもので楽をしようと色々見ていたら play frameworkがなかなかおもしろそうなんで試してみたんです。もちろんこれから主流になるであろう slim3 でも良かったんですけどね。

さておき、playの一番の(?)売りはCRUDが自動で作れるんで楽してうまーというつもりだったんですが、GAEだとJPAじゃなくてSienaという別のAPIを使わなきゃいかんと判明し。。。
一瞬SienaCRUD書いてやろうかとも思ったんですが、それは手段と目的が入れ替わるバッドノウハウだろおいこらと思いとどまり、がりがり管理画面を自前で作る羽目になりました。
僕は何が嫌いって管理画面を手動で作るのがすごく嫌いなので(面倒なことは嫌いなのです)、この辺でモチベーションが下がります。。。。

まあ、数日いじっていてなんとかplayのvalidateとSienaのAPIにも慣れてきたので、それっぽく関連をつけたりしてBlogシステムになりました。


その他、フレームワークの感想などをつらつらと。

playのほうは、なんだか「JavaでRails」的に煽られていますが、そういう書き方はどうなんだろう。

staticメソッドでがりがり書いていくあたり正直「なんじゃこりゃ」な世界ですが、まあ書いたものがすぐブラウザで確認できるのは快適なことこの上ない。これとGAEのスキーマレスなDataStore + Sienaの素直なAPIが提供してくれる楽さ加減は、Webアプリ初期のDBも無くファイルにストアしながらCGIやらPHPやらを書いていた頃を懐かしく思い出しました。
ただ、本番サーバにアップしてみて初めてわかりましたが、これspinup時間が結構かかるかも。実行時にかなり動的にクラス生成するっぽいですからね。。。

さて、眠くなってきたのでひとまずこの辺で。


あ!最後にもうひとつ、tightbellという名前の思いつきを忘れる前にメモ。
思いつき1:ぐぐっても出てこない名前にしたかった
思いつき2:僕はアウトドア用品のモンベル(mont-bell)が大好き。だからベルを使いたい。
思いつき3:ダイビングベル(例えばこんなの)にはかわいい名前が必要だと思った。あんなに質実剛健なスタイル(たぶんこの辺からtightを連想)だけど水中ではとってもいい音がする。
思いつき4:アムロもブライト艦長もロンドベル隊を率いてたし。全然関係ないけど。


#この間モンベルのサイト不正アクセスされちゃって大変みたいだけど。。。僕のクレジットカード情報も流出したかな。



何かありましたらtwitter/ブログ/tightbellへのコメントなどなど、お待ちしております。

ああしまったー、コメント投稿されてもメールが飛んでこないよ。。。
というわけでまだまだ足りない機能はいっぱいありますが、誰かの参考になれば幸いです。