Scala 勉強会 in 本郷で色々発表してきました

88 回、89 回、90 回と発表してきました。

基本的に勉強会というのは、時間の割にはそんなに勉強にならないので、どうせなら発表すべきだと思ってるのですが、結構疲れちゃうし、難しいですね。発表内容も半分は仕事内容に関係してるので、発表のための特別勉強したとかもないし、うーん…?まあいいか。


88 回では Play 2.0 の Action と BodyParser について学ぼう ということで発表しました。フレームワークというのは基本的には便利なものなのですが、自分がフレームワークの作法に従って書いているものが結局なんなのか、それを知らずにいるのって気持ち悪いよね…?という気持ちがあって、それをちょっと形にした、というような感じです。Play 2.0 を知らない人にもある程度わかって貰えるようにしたつもりだったのですが、どうかなあ…そんなわけで内容はとても軽いです。


89 回では「sbt + android-plugin を利用して、アンドロイドのテストプロジェクトをうまくビルドするには」について発表というか話しましたが、ちょっと話が難しすぎでしたねスイマセン…Android 開発したことない人は完全に置いてけぼり、どころか、なんなら開発したことある人も置いてけぼりだったと思います。反省。でも頑張った成果だから、伝えたかったんですよ…!
スライドなどはなくて、github にあがっている成果物を見ながらの発表でした。"Step-by-step how to build android test projects is written by scala" とあるように、リポジトリ内のコミットそれぞれが、資料というか解説みたいになってます。逆にいうと、これ見れば完全な sbt の設定が書けるかというと、まあそうでもないかもしれません。
面倒なので書かなかった、かつ話したくなかったのですが、何故テストケースのクラスのロードだけがうまくいかないのかという id:tototoshi さんからの鋭い突込みがありまして…それは、同じクラスローダーを使ってはいるんだけれど、ロードの方法が違う(最早よく覚えてないけれど Class#forName とか使ってたはず)ことがどうやら原因らしいんですね。いや違っててもクラスローダー同じなんだから、一部のクラスだけロードできないのはおかしいだろうという主張は尤もなのですが、とはいえそれは実装次第だろうということもあって、深追いはしてません。なんせ vmjvm でなく dalvikvm で、ライブラリの中身も別物ですからね。何よりそこを調べても問題解決には影響しないというのが大きいというか。仕事としてやっていたので。
あとこれは 86 回で資料もなしに少し話した気がするのですが、アンドロイドのライブラリプロジェクトのテストプロジェクトについてもやはり結構面倒で(通常のテストプロジェクトに比べたらましだけど)、いい加減きちんとまとめられるといいなと思いつつ、何もできていなくて人間力の低さの証明みたいに…嗚呼ッ。まあぼちぼち…ぼちぼち…(こういうのは絶対やらない)。
しかしどれも結局 android-plugin が最新の sdk のビルドプロセスに追いつけてないのが原因なので、プラグインのほうで頑張ってちゃんと欲しいですね正直。でもやる気ないっぽいんだよなあ。あーあ。


90 回では第一回社内 Scala 勉強会(一部抜粋)という、使いまわしかと思ったら実は本邦初公開みたいなのを発表しました。
Scala の型制約を主題にしつつ、Scala で何ができるようになるのかみたいなのと、それらが何を意味するのか、という二点を伝えたかったんですが、質問とかあんまりなかったし、伝わったのかなあ、うーん…という感じだったのですが、割りと褒めてくださる人も多くて、それで一念発起して今これを書いているというような感じです。
内容に関しては、資料がそこそこそれだけで完結するようになってるので、まあ気になる人は見てください…
あとどうでもいいことですが、社内勉強会が中止になって、いつやるかもわからない状態なので、評判良かったのは実際かなり救われました。


疲れた。


追記:誤解を招くと良くないので補足。View Bounds についでですが、この制約では Nominal Subtyping で許容されるような型も許容されます。単一継承のオブジェクトシステムでのアップキャストは安全であり、暗黙に行われるため、だと思ってください。仕様的にそんな雰囲気だったはず…
なので、下のような型制約を書く必要はないです。

def f[T <: U <% U](...) = ...