Kansai RubyKaigi 06に参加してきた

参加してきた!

7月11日 (土)にKansai RubyKaigi 06がエムオーテックス新大阪ビルで開催されました。場所はビルの名前の通り新大阪駅近くで、非常に便利の良い場所です。 セッションは映画館みたいな大会議室で行われました。参加者は200名以上で大変な盛り上がりでした! f:id:tech-kazuhisa:20150711095345j:plain

以下、気になったセッションのメモです。

Rubyにみるプログラミングスタイルの進化(まつもとゆきひろさん)

早口のMatzのセッションにしては珍しく、スライド上でうさぎがカメを追いかけてる状態が長かったです。I/Oを読んでる17歳の時の写真から始まり、ポケコン、紙のノート上でのプログラミング、SONY NEWSワークステーションでのRuby開発の話とMatz自身の人生を垣間見ることができました。 印象的だったのがGitの利便性についてMatzの口から説明があったこと。これって珍しいですよね。 あとは、静的型付けの話。型があるのが嫌なわけではなく、いちいち書くのがめんどくさいとのこと。この辺りの話は「オープンソースの代弁者」としてセミナーでスーツ組に対して話をする白Matzとは異なり、いきいきしていました(笑)。 今でもRubyMineなどのIDEではかなりいい感じにコード補完がされるので、さらにPCの処理能力が進化し、言語側から型情報のサポートを受けることができれば、さらに楽ちんなプログラミングができる世界がやってくるのでは、と感じることができたセッションでした。

Readable RSpec(株式会社spice life)

LT枠でのお話でした。RSpecの書き方についてのあれやこれや。 let(:user)をどこで定義するのかは確かに難しいですね。私はスコープが狭くなることになるべくこだわりたいので、同じ定義を2箇所で書いてしまうこともあります。DRYに書けるのがRSpecの利点と思いますが、見通しが悪くなるくらいならDRYは捨てます!

Railsガイドを支える技術(@yasulabさん)

railsguides.jp

Railsガイドを和訳したときのノウハウについて。Gitのコミットログをスキャンして変更点を探し出すという手法が素晴らしかった。私自身、この手のガイドは1箇所でも情報が古ければ全体的に古く感じてしまうこともあり、情報の鮮度へのこだわりをひしひしと感じました。

スモウルビー1.0:小学3年生から始めるRubyプログラミング(@takaokoujiさん)

Scratchベースのプログラミングツール「スモウルビー」でプログラミング少年団という活動を行っているお話。素のScratchはブロックを組み合わせるだけで、その後のアップグレードパスが用意されていないけど、スモウルビーを動かすためにはRuby + Railsが必須なので、より複雑なプログラミングを行う環境が自然にできあがるとのことでした。 我々も同じことが言えて勉強会で意識が高まったけど、家や会社で試そうとすると環境構築でつまずいてしまうパターンが多いので、この取組はとても理にかなっていると思います。スモウルビーはScratchをRubyのコードに変換することもできたと思うので、そのあたりデモンストレーションで見たかった気もします。

RSpec、Minitest、使うならどっち?(伊藤 淳一さん)

偉い人がRSpecを使いたがらない風潮は私も以前から感じていました。今回の発表では機能やスピードをわかりやすく比較してRSpecに優位性があることが証明されました(って理解でOKよね?)。とはいえ、Githubでプルリク出したりForkしたソフトウェアの修正時にMinitestの知識が必要になってくることもあるので、基本的なことは抑えておこうと思いました。 余談ですがMinitestがランダムな順序でテストを実行するがデフォルト動作なのは良いことですね!「手元で動かしてOKで、CIでコケる」というテスト組み合わせ問題の単純な解決方法になりそうです。

API server/client development using JSON Schema(@izumin5210さん)

単なるテキストファイルであるJSONに制約を付けてバリデーションを行うことができる仕組みを「JSON Schema」と言うそうです。今回はじめて知りました。私自身、仕事でAPIを作ることが多いので調べてみようと思います。 発表の中で「RailsではStrong parameterがあるのに JSON Schema必要?」みたいな話があったのですが、JSON Schemaの一番の利点はクライアント・サーバー両方のテストが容易に書けることだそうです。 具体的なコードが少なく話しの後半はちょっとついて行けてなかったのであとで調べてみます。

キーワードパラメータを支える技術(笹田 耕一さん)

Ruby2.1から2.2に変わったタイミングでキーワード引数が大幅にスピードアップしたそうです。今回の発表ではどのような取り組みで高速化したのかをわかりやすく説明されていました。 通常Rubyの高速化の話はC言語で語られることが多く、私にはチンプンカンプンなのですが今回はRubyで作られた擬似コードによる説明で非常に分かりやすかったです。

def f3
  3
end

def foo(k1: 1, k2: eval(“k3”)), k3: f3())
  p k1, k2, k3
end

foo

この場合、一見 1, 3, 3 と表示さそうですが、Rubyのコードは左から実行されるのが大原則なので、 1, nil, 3 と表示されるべきなのだそうです。めったに書かれないこのコードを実現するために複雑な処理が入っているとのこと。 懇親会の居酒屋でもノートPCを開いてこの点を丁寧に説明して下さり、より理解が深まりました。ビール片手にRubyコミッターから言語の仕様の話を聞かせてもらえるという貴重な体験ができました。

まとめ

大阪や東京で開催されるRubyイベントに何度か顔を出すうちに、親しくお話させてもらえる方も増えてきました。こういったイベントでの話はブログやSNSでは得られない生の声を聞くことができるので楽しいですね。 最後になりましたがスタッフの皆さんお疲れ様でした。楽しい時間をありがとう! 来年はOkayamaRubyKaigiを開催しようかな?