去年同じような記事を書いたので、今年版も書こう。
こうして振り返ってみると、仕事で使っているScalaライブラリに関するものが多いな。

ScalikeJDBC

#443, #444, #445, #463
会社での話なので詳細は割愛するけど、時間がかかるバッチの遅い箇所がDBインサートだと思い込んでいたら
実はその前のSQL組み立てにかかる時間が支配的だったので、高速化を試みた対応をした。
(ちなみにこの箇所に時間がかかっている事を特定したのも、
 それがScalikeJDBCのコードのどこに該当するかを特定したのも僕ではなくそれぞれ別の人。)
見ての通り、最初の修正で色々考慮が足りず何度もPR出すという雑な結果になってしまった…。
お騒がせしました…。
#450
これも会社のプロダクトで、Statement.setQueryTimeout相当の事をしたいけど
ScalikeJDBCで簡単に実現できなそう?みたいな会話がきっかけだったように記憶している。
ScalikeJDBCに関しては少しは意味のあるコントリビュートができたのかな、と思っている。

Skinny Framework

#303, #304
一方こちらはそんなに意味のあるものというわけではないけど、会社のプロダクトでSkinny ORMを使っている箇所があり
コードをつらつらと読んでいてちょっとしたリファクタリング系を。
次はもうちょっと実のあるコントリビュートをしたいものです。

specs2

#443, #447
これらも大して意味のあるものではないけど…サクッとマージしてもらえて意外だった。
(会社のプロダクトでは比較的新しいものはScalaTest, 以前からあるものはspecs2でテストを書いている)
次はもうちょっと実のあるコントリビュートをしたいものです。

Shade

#23, #24, #27
MemcachedのScalaライブラリ。(JavaライブラリのSpyMemcachedのラッパー)
会社のプロダクトで使おうとしていたけど、暫く更新が途絶えていたようなのでSpyMemcachedを直接使うかどうか迷っていたところ、
突如やる気を出したようで、活発になったのならばと色々PR投げてみた。
けっこう雑な修正も多かったと反省しているが、丁寧に対応してもらえてありがたかった。
次はもうちょっと実のあるコントリビュートを(略
#26
こちらはrejectされたもの。
overrideについては…そっかー、なるほど、という感じ。
(参考:Scalaで抽象メソッドをoverrideする際にoverride修飾子を付けるべきかどうかの是非)

FS2(Functional Streams for Scala)

#507, #509, #518
正直どれもあまり意味のあるPRではないけど、細々としてものを。
元々はScalaz 7.2.0対応をしてもらいたくて、
それに対するPRを出したりもしてみたけどそちらは上手く進んではいない…。
次はもうちょっと実のある(略
#503
こちらはrejectされたもの。
これが本命だったのだけど、実現には至らずScalazに依存しないfs2リリースという運びになりそうかな…?
#510
こちらもreject。
shadeでのPRもそうだけど、僕はどうもJava脳(というか、悪い意味でScala書くときもJavaの悪習を持ち込みがち?)なのかもしれない。

MyFleetGirls

#314, #315
艦隊これくしょんやった事なくてドメイン知識に乏しいんだけどちょっとしたPRを。
まぁREADMEの修正はまだしもsbt downLibの挙動改善は少しは意味のあるコントリビュートだったのではないだろうか。

番外編(PRじゃないけど印象に残っているもの)

akayagi #5
自作のRedmineプラグインのRedmine3系対応依頼。
以前同プラグインのトルコ語対応のPRをくれたりと、どうもガチで使ってくれているらしい…!
作った本人は秀作のつもりで放置していたけど、一年発起してRedmine3系対応を行った。
実際にはRails4系対応、といったほうがいいかな。
久しぶりに徒手空拳でRuby on Railsを書いた…が喜んでもらえたようで良かった。
yrmcds #50
Memcached互換のAPIを持つyrmcdsというKVSについて、Memcachedと同じコマンドでキーの一覧が取得できないようだったので
issueを立ててみたところ、応じてもらえた
言ってみるもんだなぁ…。
非常に助かりました、ありがとうございます!
総じて、もうちょっと実のあるコントリビュートをしたいものです。

今年もたくさんコード読み書きした。
来年も良い年でありますように。

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .