Kuchitama Tech Note

はてな記法がいつまでたっても覚えられないので、はてなダイアリーからマークダウンが使えるこっちに引っ越してきました。

Clojureエンジニア交流会に参加してきました

AAAで喋った翌日に大阪でClojureエンジニアの交流会に参加してきました。

大阪でClojure勉強会

経緯

にゃんぱすーでバズった(?)nyampass@tnoborioさんが開催してくださった会です。 (バズの経緯はこちら)

一応、「はじめてのClojure」出版記念という名目で北は北海道から南は九州まで全国ツアーをしているそうです。 (が、著者割引の書籍は前日の名古屋で完売したため買えず。残念…)

はじめてのClojure (I・O BOOKS)

はじめてのClojure (I・O BOOKS)

Twitterとかで tnoborioさんが全国行脚みたいなの構想してるのは、ちょっとだけ補足してたのですが、超個人的な事情から6月〜つい先日までめっちゃ忙しくて、それ以上のキャッチアップも何もできていなかったのですが、ある日 @ykomatsu0 さんにDM頂いてこの会の存在を知りました。 そして、超忙しいのにドストライクに用事がなく、奇跡的に参加することが出来ました。

この日のツイートは #jusoclj のタグをつけています。

やったこと

今回の基本的な流れとしては、

  • 会の趣旨説明 by @tnoborio さん
  • 軽く自己紹介 by 参加者全員
  • LightTableハンズオン
  • もくもく会
  • LT
  • 懇親会

って感じでした。

自己紹介タイム

みんなで軽く自己紹介をしました。 この時に @tnoda_ さんは資料用意してのLT気味に自己紹介をしてくれました。

2012年末にmitori_cljなるものを主催されてたそうで、 これはいいイベントで参加したかったなぁと思いました。 こんなイベントが開催されていることに全く気づけなくで残念でした… (これに参加されてる方、Kyoto.cljとかClojureお菓子会でつながってたはずなのに、なんでアンテナ引っかからなかったんだろ…)

自由にパクっていいとのことなので、いつか参加 or 主催 したいです。

LightTable

@tnoborioさんにLightTableの使い方をハンズオン形式で教えてもらいました。 触ってみた感想としては、使いやすいとかわかりやすい以前に、 なんか面白い って思わせてくれるIDEでした。 いろいろいじってみて、vimキーバインドにしたりゴニョゴニョしましたが、やっぱり初めて触るのでスグには手に馴染みませんでしたが、Pluginや設定次第かな〜という気がします。 今回のもくもく会では、とりあえず手に馴染んだvimを使ったほうが作業がはかどるので、早々に使うのを止めましたが、もうちょっと時間があるときにゆっくり触りたいと思います。

もくもく会

実は1年ほど前に2つほどClojure製のサービスをherokuで運用していたのですが、全くメンテしていなかったので、そのメンテを行っていました。 ちなみに、そのうちの一つははてなブログRSSをカテゴリでフィルタするサービスで、この記事のサイドバーに出しているRSSリンクはそのサービスを利用しています。 やってることは、通常のRSSを取得して、指定したカテゴリに一致する記事の要素だけをフィルタリングしているという超簡単なことなのですが、あまり効率とか考えずに実装していました。 なので、パフォーマンスチューニングをちょっとやろうかなぁと思って、昔書いた実装を思い出しつつ、チューニングできそうなポイントを探していました。 で、ポイントの一つとして取得した結果をしばらくキャッシュしてサーバ間通信を減らそうと思って、こんなキャッシュライブラリを見つけました。

clojure/core.cache

のんびりドキュメント読んでたら、時間がなくなっちゃってちゃんと組み込みできませんでしたが、だいたいの感触はつかめたので、適当に時間のあるときに組み込もうと思います。 もし、他にいいキャッシュライブラリ知ってる方がいらっしゃればご紹介ください。

LTタイム

Clojureでのゲームプログラミングの話

nekoie(@rnkv)さんにはClojureAndroidなどのスマートフォン向けゲームプログラミングについて教えてもらいました。 libGDXというゲームフレームワークでもClojure開発をされてたそうで、デモも見せてもらったんですが、今日の発表はUnityでした。

う〜ん、Clojure幅広い… 資料はこちらで公開されています。

ProjectEuler の結果チューニング

cuzic0さんは、もくもく会中にProjectEulerのProblem 10を説いていたそうで、ご自身の回答とGitHubなんかに公開されてる他の人の回答の実行速度比較を出されていました。 で、どうにもパフォーマンスが出ないという問題を、みんなで寄ってたかって(と言いつつほぼ@tnodaさんの功績)チューニングしてました。 結果、@tnodaさんのこの記事がめっちゃ効きました。

Java の配列を利用してメモリと時間の壁を突破する.

私は基本的にWebプログラマーでよっぽどのことがないと、実行速度のチューニングをする機会はない(あってもSQLのチューニングやキャッシュ化ぐらい)ので、いい勉強になりました。

懇親会

nyampassのこととか、Tokyo.cljのこととか、なごやこわいのこととか色々話しました。 あと、Scalaのことも話しましたね。 話してるうちにちゃんとSICP読まないとなーって気分になってしまいました。 ちょっと、頑張っちゃおうかなぁ。 でも、その前にはじめてのClojureを読まねば。

感想

自分のリアルな生活圏の中にClojure使ってる人がいないし、最近仕事もプライベートもScalaRubyばっかり書いてて1年ぐらいClojureを使ってなかったんですが、やっぱりClojureも楽しいですね。 それに、つかってるユーザが根強いです。 多くはなくても、こだわりをもって使ってる人が多いので、話をしてて非常に楽しかったです。 Kyoto.cljを開催して以来、ちらほらと断続的に第2回の開催を呼びかけられるんですが、 本当に需要があるのかつかめきれずずっと放置になってました。 でも、今回の勉強会に参加してやっぱりたまにはClojureユーザが集まる機会が必要だと感じました。 今は、ScalaMatsuriを控えていて、しばらくはScala漬の予定ですが、一息ついたらまた本格的にClojure活動を再開しようと思いました。