taroleo さんが作ってるライブラリの話

思ったより色々やっててすごかった。 このblog http://d.hatena.ne.jp/xuwei/20120816/1345125451 書いたことにより?話始まったりなどした。 続きを読む
0
Kenji Yoshida @xuwei_k

.@taroleo さんのtweetきっかけで思いついて ScalaSignatureについて書いた http://t.co/580VBxcW "ScalaSignature を直接使うべきか否か"

2012-08-16 23:07:49
Taro L. Saito @taroleo

@xuwei_k もちろん2.10が出るまでのつなぎです。というか既に自分で必要な情報を取り出せる様にライブラリにしているので、、、、解説記事を書くべきかどうかを悩んでました

2012-08-16 23:28:49
Taro L. Saito @taroleo

@xuwei_k 実際にここでClass[_]の情報与えたら、constructorやらmethodやらの型情報を[A]の中身まで含めて取得するコードを作っています。https://t.co/FFSdzeBf

2012-08-17 10:13:37
Taro L. Saito @taroleo

@xuwei_k 2.10が出て、ScalaSigが適切に扱えるようなら、内部的にそっちに切り替えるだけなので

2012-08-17 10:16:48
Taro L. Saito @taroleo

@xuwei_k 例えば、extendするだけでhashCode, equals関数を自動生成してくれるEq traitを作りました。@chiba_sh先生の javassistを使ってバイトコードを生成しているので高速です。https://t.co/ShPH8swl

2012-08-17 10:20:02
Taro L. Saito @taroleo

ScalaSigでメソッドの型情報を取得して、command line の情報をメソッドの引数に変換してメソッドを呼び出したり、RPCしたり、いろいろ応用があって楽しいです。

2012-08-17 10:24:31
Taro L. Saito @taroleo

def hello(s:Option[String]) など、javaのreflectionだけだと、Option[Object]とだけしかわからないので、以前はどの型に変換すればよいかわかりませんでした

2012-08-17 10:26:12
Kenji Yoshida @xuwei_k

@taroleo なるほど、結構本格的に色々やってますね。そこまでやるのって、それほど聞いたことない(MongoDBのORマッパーのSalatなんかは似たようなエグいことやってましたが)ので、もっと英語で情報発信したほうが、フィードバック得られていいかもですね

2012-08-17 10:30:12
Kenji Yoshida @xuwei_k

@taroleo 2.10で使うことも見越しているなら、2.10.0-M6の次はRCと言っていたし、そろそろbugfixだけで機能追加やインタフェース変更はしないはずなので、余裕があれば2.10.0finalが出る前から、RC使って2.10.0対応を試してみるとか?

2012-08-17 10:32:23
Taro L. Saito @taroleo

@xuwei_k branch切って2.10のmilestoneで試しておくと移行がスムーズですね。なるほど。

2012-08-17 10:33:48
Taro L. Saito @taroleo

@xuwei_k リリースするのにtypesafeに移行したり、gpgで署名できるようにしたり、と四苦八苦してましたw https://t.co/g6zTQSo1

2012-08-17 10:43:36
Kenji Yoshida @xuwei_k

https://t.co/TXwMcAEm https://t.co/i9mtchBh scala-reflectのモジュールの、ScalaSig読み込み関連のコードこのあたりかな。読んでみるか。

2012-08-17 10:47:15
Kenji Yoshida @xuwei_k

てか、もし仮に、2.9と2.10でScalaSigのformatに変更がなければ、2.10のリフレクションAPI使って、2.9でコンパイルされたクラスファイルの ScalaSig を pickle してゴニョゴニョできるのかな

2012-08-17 10:49:59
Kenji Yoshida @xuwei_k

@taroleo ちょっと思ったのは、2.10のリフレクションAPIあえて使わずに、2.10でもscalapのjarに依存して、2.9のサポートずっと続けつつ2.10でも同じようなインタフェースで利用可能なライブラリにするという選択肢もありですかね。

2012-08-17 10:56:03
Kenji Yoshida @xuwei_k

@taroleo 2.10だけ内部でリフレクションAPIつかうと、2.9のサポートが面倒になるし。 まぁそもそも、2.9でそういったライブラリの需要があるのか(あったとしてもいつまでつづくか?)どうかなど、色々判断必要ですが

2012-08-17 10:57:56
Taro L. Saito @taroleo

@xuwei_k 2.10で今のままの仕様で動くならあえて新しいAPIを使う必要がないので、その方が楽ですね。試してみないとわかりませんが

2012-08-17 11:29:28
Taro L. Saito @taroleo

typesafeじゃない。sonatypeだ。何かを混同してた

2012-08-17 11:34:57
Kenji Yoshida @xuwei_k

@taroleo scalapのScalaSig関連のファイルの履歴みると、大きな変更した様子ない(=つまり2.9と2.10でフォーマット変更ない)ので、個人的な予想ではそのまま動くと思います https://t.co/LgyuzaHS https://t.co/AdtVo7Aj

2012-08-17 11:37:13
Taro L. Saito @taroleo

@xuwei_k jenkinsにテストさせると良さそうですね。sbtはけっこうメモリ食うので、まずはビルドサーバーを移動しないと。。。 

2012-08-17 11:41:03
Kenji Yoshida @xuwei_k

@taroleo jenkins用意できる余裕があるならもちろんそれでいいと思いますけど、 travis-ci 手軽にできてオススメです。 http://t.co/li474XMz http://t.co/zHqgGDuJ ちょくちょく不安定だったりデメリットもありますが

2012-08-17 11:43:58
Taro L. Saito @taroleo

@xuwei_k ありがとうございます。とりあえずマシンはあるのでこの際まじめに並列ビルド環境を整えます。

2012-08-17 11:46:37
Taro L. Saito @taroleo

Scalaを便利に使うための機能が満載です。Xerial library: https://t.co/g6zTQSo1

2012-08-17 11:53:38
Taro L. Saito @taroleo

sonatypeに3.0-SNAPSHOTをdeploy。moduleを統合したunidocを置く適切な場所があると良いのだけれど。

2012-08-17 12:07:43
Taro L. Saito @taroleo

@xuwei_k pull requestありがとうございます。

2012-08-17 12:15:12