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

seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

私の 2013 年

こういうのをブログに書いたことはないのですが、今年は結構活動した年だったので、自分の中で整理するためにまとめてみました。誰得ですが公開しますね ^ ^; なお、本業に関連するものについては書ける内容からピックアップして取り上げています*1

1 月

ScalikeJDBC Cookbook を発売

正月休みに Kindle Direct Publishing で本を出してみたいなぁと思い立ち、手探りで色々やってなんとか出版までやってみました。今でも時々売れています。買っていただいた皆様、ありがとうございます。

http://seratch.hatenablog.jp/entry/2013/01/03/192020

本の内容は GitHub にあるので間違いなど見つけたらお気軽に pull request ください。

https://github.com/scalikejdbc/scalikejdbc-cookbook

英語版も出そうと思っていたけど、scalikejdbc.org のドキュメントを充実させる方が先かなぁという感じになっています*2

Scala Conference in Japan 2013 の準備

2013 年に入ってから、いよいよ逆算してあれをやっておかないと間に合わない、というのが増えてきてバタバタしてきた頃です。この頃から私は割とかかりきりの状態になりました。平日はあまり進捗しないのが常だったので、定期ミーティングの頻度を増やして放置されているタスクがないか確認するようになりました。それ以外の時間も co-meeting 上の議論や諸々の事務作業をしていたことが多かった気がします。

JPA、QueryDsl との格闘

Spring Data JPA と QueryDsl が魅力的だったので*3、新規案件での実戦投入に向けて機能を作り込んでみました。ただ、既存 DB との連携が多くて障壁があったことと、やはりハマりポイントが多い JPA は私のやりたいことにフィットしないという判断で、最終的にはその実装をすべて捨てて別の実装に切り替えました。

QueryDsl は APT を使った好例という感じで Java であれば今でもなかなかよい選択肢なのではないかと思います。また QueryDsl を使った経験は後の ScalikeJDBC の DSL 実装のモチベーションに強い影響を与えました。なので、最初は名前だけはかぶらないようにしようということで Query Interface と書いていましたが、ユーザの方々も Query DSL と呼ぶので途中から開き直って QueryDSL と表記するようになりました。

2 月

Scala Conference in Japan 2013 の準備

相変わらず co-meeting に張り付いていた記憶があります。本業も忙しくなってしまって、結構大変だった記憶があります。

MOONGIFT さんが Gistub を取り上げてくれた

急にスターが増えたなぁと思ったら MOONGIFT さんが取り上げてくださっていました。これを機に Twitter 上などで見た限り、いくつかの会社さんで実際に導入いただいていました。今も使っていただいているとうれしいですが。

社内で立てられるGistサーバ「Gistub」

http://www.moongift.jp/2013/02/20130205/

これについてはブログにも書きました

http://seratch.hatenablog.jp/entry/2013/02/07/001757

ltsv4s を書いた

突如、日本の IT エンジニアの間で空前の LTSV ブームが発生し、実際私の周辺でも LTSV 化が進んだりしましたが

http://ltsv.org/

Scala 実装がまだなかったので「Scala ならそれ parser combinator でできるよ」ということで書きました。

http://seratch.hatenablog.jp/entry/2013/02/09/103917

虎ノ門 Scala 会

虎ノ門近辺で勤務する Scala 好きなエンジニアで飲み会をしました。日本酒が美味しかったですね。某社の方々がこぞって「sbt つらい」と言っていたのが印象に残っています。

3 月

Scala Conference in Japan 2013 本番

3/2 に東工大の大岡山キャンパスにて Scala Conference in Japan 2013 が開催されました。至らない点もあったかと思いますが、運営の一員として参加いただいた皆様に改めてお礼申し上げます。

Scala Conference in Japan 2013

http://scalaconf.jp/

プログラミング言語「Scala」の日本初カンファレンスが開催、盛況で立ち見のセッションも

http://itpro.nikkeibp.co.jp/article/NEWS/20130329/467341/

これほどの規模のカンファレンスの準備となると(特に直前は)あまりにも多くの時間をとられてしまうことと、できれば発表者としても参加したいという気持ちから、次回以降は私は中心メンバーからは外してくださいと言っていますが、今後も無理のない範囲では協力させていただくつもりです。どうやら次回の構想は水面下で進んでいるようですので、期待して待ちましょう。

とはいえ、実際のところ、参加者の方々が思っている以上に運営側は手薄です(どのカンファレンスもそうかとは思うのですが)。運営チームの人数はどうあれ、カンファレンスの準備や運営に心身のリソースをガッツリさける人というのはやはり一部に限られますし。

なので 2013 で運営をやっていなかった方で「手伝いたい」「自分で色々提案して実現したい」という気持ちをお持ちの方は、ぜひ @kmizu さんや @gakuzzzz さんにコンタクトしてみてください。きっとよい経験になりますし、やってよかったと後から思えるはずです。

ScalikeJDBC 1.5.0 リリース

Type Dynamic 呼び出しを macro でチェックしてコンパイルエラーにする機能が追加されました。公開されていたコードを参考にさせていただいたり stackoverflow で回答いただいたりして @pab_tech さんのおかげでこぎつけたリリースでした。

http://seratch.hatenablog.jp/entry/2013/03/28/210928

elasticsearch 導入

本業で elasticsearch を導入しました。一つ一つのデータ件数はさほど多くないのですが、今まで Solr を個別に立てていたのを一カ所に集約できればということで、実際、いくつかのサービスが elasticsearch の利用を開始することになりました。この辺のことはここに書いておきましたので、興味があればご覧ください。

http://seratch.hatenablog.jp/entry/2013/09/03/234712

4 月

年度始めということもあり、結構仕事が忙しかったようです。GitHub での活動は細々やってはいましたが。

5 月

「RubyKaigi 2013」で LT

LT をさせていただきました。rspec-kickstarter という RSpec ソースコードのひながたを自動生成してくれる gem について話しましたが、今改めて録画を観てみるとかなり固いですね・・w

http://rubykaigi.org/2013/lightning_talks#seratch

これは元々の話し方の問題もあるんですが、実は入念に keynote のカンペを準備していたのが当日の環境で使えなかった*4ので、かなり余裕がなかったのが大きいです。。あと、英語プレゼンだったので事前に練習をしている中で厳しさを感じてだいぶ内容を削ったのですが、今見るとちょっと削りすぎた気がします。今客観的に観るとかなりアッサリした発表になってしまっているなぁと思います。

GitHub が提供してくれた懇親会では @sonots さんや多くの方とお話しして、初めての RubyKaigi でしたが、楽しむことができました。

自分でいうのもなんですが rspec-kickstarter は結構便利で、私は普段の開発でかなり必須ツールというくらいに使っています。よかったら試してみてください。

https://github.com/seratch/rspec-kickstarter

「Atlassianユーザーグループ」で発表

コードレビューツールとして Crucible を使っているのですが、それについてプレゼンさせていただきました。後にここで知り合った方の会社との交流会なども行いました。またそういう機会がつくれればいいですね。

http://www.zusaar.com/event/735003

http://seratch.hatenablog.jp/entry/2013/05/26/115810

ScalikeJDBC 1.6.0 リリース

QueryDSL が追加されました。これで現在の機能がすべて出そろった感じですね。もっと前から提供していた気がしていましたが、半年前でしたか。

http://seratch.hatenablog.jp/entry/2013/05/12/001057

社内の Tech Talk 開始

私が時々 #m3dev というハッシュタグでつぶやいているときがありますが、社内で M3 Tech Talk という社内 LT 大会のようなものをこの頃から始めました。隔週で今年は 16 回開催、エンジニア約 40 名の体制で毎回 3 つの発表がそろっていたのでなかなか成功したといえると思います。来年もできるだけ続けていきたいですね。

公開可能なものは資料を公開しているのでこちらからご覧ください。

http://m3dev.github.io/

「カンファレンスカンファレンス」に参加

scalaconfjp の運営側ということで参加しました。他の方々と色々とカンファレンスについて情報交換・・もしましたが、割と普通に雑談していた気も。登壇いただいた皆様のお話は普段あまり語られないことが多かったので、参考になりましたね。

http://connpass.com/event/2253/

6 月

「Play もくもく会」に参加

@kara_d さんがやっている Play もくもく会に参加して、ちょっとした発表と ScalikeJDBC を宣伝してきました。ScalikeJDBC を使っている方にも実際にお会いできたし、よい機会でした。来年も機会があれば参加したいと思っています。

http://playframeworkja.doorkeeper.jp/events/4219/

息子が 2 歳になりました

順調に育っています。

7 月

Typesafe Activator テンプレートをつくった

Typesafe 社が Activator というのを提供していて 3rd party が簡単にテンプレートを登録できるようになっているのですが、あまり作っている人がいなかったので試しにやってみました。

http://seratch.hatenablog.jp/entry/2013/07/02/005454

それから半年経って、テンプレートも若干増えてはいますが、いまいちエコシステムが確立されないというか Typesafe 以外の人が面白がってる感じが足りない気がしますね。つくること自体は簡単なので、興味のある方はやってみるとよいのではないでしょうか。

「JetBrains Night #jbnight」に参加

これは一参加者として参加しました。JetBrains CEO 来日に合わせて GREE さんで開催されました。あの新製品っていつ頃公開なのかな。

http://www.zusaar.com/event/844003

「第1回 かわいいKotlin勉強会 懇親会 #jkug」に参加

ドリコムさんで。これも参加者として。スーツ率の高さに驚きました*5。 あと、この手の勉強会にしては女性が多かったのも印象的でした。Kotlin コミュニティはなかなか興味深いですね。

http://www.zusaar.com/event/934003

「Heroku Meetup #9 Summer & Beer !!」に参加

Heroku は趣味で使っているくらいですが、これも参加者として。この月は勉強会にたくさん参加してますね。 シャノンさんのエンジニアの方々と特に色々話させていただいた記憶があります。この場でまた虎ノ門 Scala 会をやろうという話になりました。

http://herokujp.doorkeeper.jp/events/4687

8 月

AWScala 盛り上がる

Java の AWS SDK を Scala から使うのは結構つらいよね、特に REPL から使うとか無理ゲー」という感があったので API を理解するのもかねて Java SDK のラッパーを作り始めました。

https://github.com/seratch/AWScala

@OE_uia さんも面白がってくれて EC2 の実装を提供してくれました。

「第1回 ElasticSearch勉強会」に参加

参加者として。@cbirchall が発表していました。懇親会では @johtani さんやロンウィットの方々とお話しできてよかったです。

http://atnd.org/event/E0018616/0

「PlayFramework関西ビギナーズ 第2回 #play_kb」にエアー参加

大阪で Play の初心者向け勉強会が開催されているのを Twitter 上で観測したので、ブログ記事を書いて参加しました。

http://seratch.hatenablog.jp/entry/2013/08/03/151251

虎ノ門 Scala 会(飲み会)開催

第二回を開催しました。某 G 社の方々も参加されましたし、虎ノ門の枠にとらわれない感じになりました。Scala じゃない人もいたような気がします。

9 月

歌舞伎座.tech #1」で LT

歌舞伎座.tech で LT しました。ScalikeJDBC-Async の紹介と Skinny Framework のお披露目でした。歌舞伎座タワーはよい場所ですね。D 社の皆様も ScalikeJDBC や Skinny をお試しいただければ幸いです。

http://connpass.com/event/3278/

http://seratch.hatenablog.jp/entry/2013/09/25/215834

IAM 認証フェデレーション proxy をつくった

これは本業の方ですが「AWS のマネージメントコンソールへのアクセス管理が面倒で困っちゃうな」という感じになっていたので IAM の認証フェデレーションを利用した proxy をつくりました*6。これで IAM ユーザをたくさんつくったりする必要がなくなったので非常によかったです。認証時に各ユーザが AWS アカウントごとに用意したカスタムポリシーを有効化できるように作り込んだ点がポイントだったかなと思います*7

もう少し汎用化できれば OSS にしてもいいかなと思ったりはしていますが、同じようなことやってる人がいたら情報交換してみたいですね。

「Async Hack-a-thon」に会場提供&参加

@gakuzzzz さんが主催してくれたハッカソンに会場係兼参加者として。

最初は ScalikeJDBC-Async を使ってベンチマークとってドヤ顔するつもりでしたが DB 接続部分以外がボトルネックになって、想定した結果が得られなかったので、途中で方針転換して ScalikeJDBC のクエリ実行結果を取得できるフックポイントを実装して Fluentd 経由で送る、みたいなデモをした気がします。一応、非同期・・かな、と。

http://www.zusaar.com/event/991003

scct を fork した

Scala のカバレッジ計測ツールとしては現時点では最もクオリティの高い scct ですが、作者は完全にメンテナンスしないモードに入っていて、issue も PR も放置されている状態が続いていました。

私にとっては scct は以下のような問題があって

  • scct を使っているライブラリは意図せずに scct に compile スコープで依存してしまう*8
  • sonatype/maven central で配布されていない
  • バージョンがずっと 0.2-SNAPSHOT のまま

issue 登録してみたけど、案の定全くリアクションもなく、今後本家で対応される気配が感じられなかったので、自分で使う用のために fork して上記の点を修正したものです。

https://github.com/seratch/scct

https://github.com/seratch/sbt-scct

すると後継を目指して scct という orgnization を作ってる人がいて、どうせなら一緒にやろうみたいなことになったけど結局あまり貢献はできず(私は他のことに時間を使いたかった)、ただ一応私がやっていた sonatype への publish 設定だけは流用されたようで、そのうちあっちを使えればいいなぁと思っていたら、最近見たら、なんだかよくわからない状態に・・。

うまくいくといいですけどね。

10 月

Skinny Framework 0.9.x リリース開始

Skinny Framework は来年 3 月までに 1.0 を出すと宣言していますが、それを強く意識するために 0.9.x というバージョニングポリシーに変えました。0.9.x はまだプレビュー版なところがあるので、細かくリリースしています。また設計ミスなどによる改善点が見つかれば細かい API や挙動が変更になることが多々あります。

「怖くないScala勉強会」で発表

「めんどくさくない Scala」というタイトルで Scala での開発全般について私の考えを述べたのと ScalikeJDBC、Skinny Framework の紹介をしました。結構力を入れて準備したプレゼンでした。

http://seratch.hatenablog.jp/entry/2013/10/20/085453

DTS さんではこのような一般公開の勉強会は初めての試みとのことでしたし、当日のキャンセルも結構多くて @garbagetown さんはじめとする運営の皆様はなかなか大変だったかと思いますが、勉強会の内容は充実していたと思います。懇親会では初めて @takezoen さんとお話ししたり、よい機会でした。

http://connpass.com/event/3420/

「2013年秋 Web開発最前線テックトーク」に参加

参加者として。じげんさんが主催。会社のすぐ近くだったので参加しやすかったです。@naoya_ito さんのプレゼンが非常に参考になりました。

http://atnd.org/events/44191

JS 無双な日だったので @takezoen さんの Scala アピールが劣勢で大変そうでしたね。Slick のテーブル定義のコードを見て「やってみたい」と思ってもらえるかというとちょっと厳しいかなというのは感じました。

11 月

Skinny Framework 日本語導入資料

を gist で公開しました。元々は自分用に実装すべき要件を日本語で整理していたものだったのですが、これが日本での普及のきっかけになればということで。

https://gist.github.com/seratch/7382298#file-getting_started_ja-md

「怖いScala」で LT

GREE さんにて。「Skinny Framework 進捗どうですか?」というタイトルで Skinny Framework の紹介をしました。この日の発表でもそうでしたが @j5ik2o さんが「ScalikeJDBC は DDD の DB アクセス部分に使いやすい」と発信してくださっていて、とてもありがたいですね。

http://connpass.com/event/4112/

ScalikeJDBC 1.7.0 リリース、ウェブサイト公開、Twitter アカウント

ScalikeJDBC の organization を com.github.seratch から org.scalikejdbc に変更しました。

また Middleman を使って http://scalikejdbc.org/ をつくりました。内容は GitHub の wiki にあった情報を集約しました。ドキュメントは Scala のライブラリにしては充実している方ですが、もう少し親切な記述を増やしたいとは思っています。

https://github.com/scalikejdbc/scalikejdbc.github.io

またリリースなどをお知らせするために Twitter アカウントをつくりました。ぜひフォローしてくださいね。

https://twitter.com/scalikejdbc

Skinny Framework ウェブサイト公開、Twitter アカウント

こちらも ScalikeJDBC のやり方をそのまま流用しただけですが、ウェブサイトを公開しました。

http://skinny-framework.org/

https://github.com/skinny-framework/skinny-framework.github.io

こちらもリリースなどをお知らせするために Twitter アカウントをつくりました。試しに Scala に関心のありそうなユーザの方々をフォローして認知していただくという PR 活動をしてみました。あまりやりすぎるとよくないとは思いますが、ある程度認知はしていただけたのかなという感触でした。

https://twitter.com/skinnyframework

AWScala 0.1.0 リリース

AWScala はいったん一段落した感があったので、区切りとして 0.1.0 としてリリースしました。

12 月

アドベントカレンダー

に便乗して結構ブログ記事を書きました。何だか忙しくなってしまって Scala 版の方、途中でやってる余裕なくなったので穴を埋めるのあきらめました。ちょっと残念でした。Scala コミュニティはまだそんなに大きくないので、アドベントカレンダーは Scala と Play で分けずに Scala の一つくらいがちょうどよさそうですね。

http://www.adventar.org/calendars/104

http://www.adventar.org/calendars/114

まとめ

今年は主に Scala コミュニティでいろいろとやらせていただきました。本業では JSON API の設計・実装・運用を結構な数やったのと複数の Rails アプリを開発・運用したのが主な内容でした。Rails 3 -> 4 のアップグレードとか結構たくさんやった気がします。あと AWS でもいくつかトライした年でした。

いつもそうなのですが、来年の目標は特に立てていなくて、そのときの流れに合わせてその都度納得のいく行動ができればいいかなと思っています。直近では Skinny の 1.0.0 にたどり着けるよう引き続きやっていきます。

それでは、よいお年を。

*1:という、仕事もしてたんですよアピール

*2:ドキュメントはもし手伝ってくれる方がいると非常にうれしいです...

*3:O'Reilly本も買って読んだり

*4:ゆっくり確認する時間があれば設定を変更できたのでしょうけど...

*5:エンタープライズ受け?

*6:Rails アプリで Ruby の AWS SDK を使って実装しました

*7:たとえば development 環境ではほぼ何でもできる状態で使いたいんだけど、本番は最低限のオペレーションだけにしておきたいとか

*8:https://github.com/mtkopone/scct/issues/54