railsdm 2018 esa LT大会(\( ⁰⊖⁰)/) に飛び入ってきた #railsdm
沖縄 RubyKaigi 02 で Ruby の速いコードについて話してきました #okrk02
3/9 の 14:30 頃沖縄に着き、 3/11 の 19:15 の便で帰ってきました。沖縄、大変よかった。
話したこと
Ruby で速いコードを書く時に考えることを中心に、ベンチマーカーである benchmark_driver が良いという紹介と、ベンチマーク結果を元に、何故実行速度に差がでるのか、その追い方について話してきました。
benchmark_driver の好きな部分は大きくは 2 つあって、以下のものです。その他にも benchmark-ips と比較して改善ポイントがあるので、気になる方は README や k0kubun さんの記事 を見てみると良いと思います。
- 複数の指定した処理系の比較結果を得ることができる (
x.rbenv '2.4.3', '2.5.0'
のように) - 結果の出力形式を指定することができる(:markdown, :memory とか)
舞台裏的なはなし
難しかったのは、どこに焦点を合わせた内容にするかというところで、発表内容を考える時に悩みました。安定したベンチマークを取るための実行環境の話なども用意していたのですが、そこはバッサリと削りました。 また、一つ一つの Ruby の実装を詳細に追っていくよりも、よくある (と思っている) 数パターンの見方を説明した方が、そこから興味のある方は潜っていけるだろう。と、実はそういう選択をしていました。
今回、発表資料に自分で撮った首里城の写真を入れたいなという、謎のこだわりがあったのですが、スライド2枚目の首里城の画像は実際には発表後の 3/11 に行って撮ったものです。ちょうど人が映らない一瞬の隙を突いて撮れた会心の一枚です。 では発表時点ではどうしていたかというと、hsbt さんの日記に良い写真があることを知っていたので、一時的にお借りしたのでした。という裏話があったりします。
これ良いのでは。人が入らない状態で撮れた。 pic.twitter.com/KHAIma4W69
— 秒速さん@技術書典4 き-27 (@284km) 2018年3月11日
お疲れ様でした。ありがとうございました。
沖縄 Ruby 会議 02 が開催されたことで、これまで会ったことのなかった Rubyist と色々な話をすることができました。特に、そんなことできるの...!!?? みたいな驚きのあるコードが次から次へと出てくる okinawarb の方々を知ることが出来たのは衝撃でした。
明日なにが一番楽しみかというと、インターネットでしか会ったことない方に会えるのが一番楽しみかなあ。
— 秒速さん@技術書典4 き-27 (@284km) 2018年3月9日
運営に携わった方々をはじめ、みなさんありがとうございました。沖縄 Ruby 会議 03 にはまた参加したいですね。
技術書典4に申し込んだ
こんにちは。暫くぶりです。思いつきで書く気になりました。
一昨日、明日締め切りだと気付いて考え始め、サークル名がなかなか決まらなくて、昨日やっと技術書典4 に申し込んだ。時系列の難しい文章になった。
動機は、技術書典で技術書を出してみたいというのが先にあって、今回まずそれをやってみようと思ったことがひとつ。 もうひとつあって、いくつか調べて知りたいことがあるのだけれど、どれもいまいち進んでいない。そこで、技術書典に申し込めばきっとそれをやることになるだろう。と、良い具合に進むことを期待してというのがあります。イベント駆動です。
内容は現在 4 パターンで迷っていて、申込み時点では以下の内容にした。
Ruby でプログラミングしていると、同様の結果を得ることのできる複数の書き方が頭に浮かぶことがあります。そこで、より速い Ruby のコードを書くためのイディオムを、ベンチマーク、速さの理由である実装の解説を添えて紹介します。
その他、最近やっていることなどから書けそうかなあと考えているネタは以下のようなものがある。まだ全然、どうなるか分からない。
そもそもまだ何も決まっていない。当落も未確定なので、もし当選したらまた続きを考えたい。
Rails / OSS パッチ会 11月 に参加してきた
参加したきっかけは、koic さんがお気軽にどうぞ。と書いてくれていたことだった。その言葉通り、お気軽に参加させて頂いたという感じです。とても尊い活動がオープンになったと思っていて、感謝しかない。このような会を開いてくれている永和さん(koic さん)ありがたし。
当日のことを書こうと思う。
まずは会の最初に、今日やる予定を発言した。
- 最近仕事でも使っててよくコード読んでいる graphql-ruby にパッチを送ること
- pundit で、jruby 1.7 を CI 対象から外そうというぷるりくを送っていたりしたが、jruby について対して知らないという背景があり、jruby に関しても精力的に活動してくれている(以下リンクなど) koic さんに最近の状況を聞こうという目的もあった。そして実際にそれは相談することができた。具体的には以下の辺りのことを見て聞こうと思っていたのです。そして良い助言を頂けたのでありがたかった。
- jruby の話を koic さんに聞いてから、jruby のテストコードを確認していたところ、test_util.rb に typo を見つけた。しかし、その typo しているメソッド自体がどうやらどこからも参照されていないようだ。そういうわけで、テストさえパスすればこのメソッドは削除してしまっても構わないだろう。というパッチを送ろうと試みた。
作業中には、松田さんとヤギヌマさんが終始、Rails にまつわる興味深い話を展開しており、なんて僕得なんだろうと思って作業しつつ聴いていて、大変楽しかったのでした。
その後は懇親会へ。大変良い話が出来たり、joker さんも加わってくれたりして、とても楽しい時間が過ごせた。
この様な素晴らしい会を open にして、実施してくれた永和さん、koic さんに本当に感謝である。
表参道.rb #28 ~gem~ にいってきた & しゃべってきた
前回、brainfck の ruby 実装をやってみた。というネタをやったわけですが、今回は gem というテーマでして、そこで前回書いたコードをもう少し汎用化し、brainfck 亜種言語 generator を作って、その発表をしてきたのでした。
https://284km.github.io/slides/20171109_omotesandorb28/slides/#/ https://github.com/284km/gen_brain
今回の omotesandorb の圧倒的な特徴としては、LT 枠が 7/7 (全部埋まっている...!!!) ということでしょう。これは尊い。
会の後は、懇親会で Rails 談義をして大変盛り上がりました。とても楽しい時間が過ごせました。grooves さん、神速さん、どうもありがとうございました。
Shinjuku.rb #54 言語のしくみ にいってきた & しゃべってきた
"いってきた & しゃべってきた" というのはモリスさんのブログの表現を今回パクってみたわけだが、別にどうでもよいだろう。
今回の shinjuku.rb では、言語のしくみというテーマなのだから、snjk 言語を作って、それを発表できたら良かったのだがどうにも間に合わず、2年前に書いた nira というコードについての解説を主とした発表をしたのであった。
bison & flex を使って書いてみたものである。2年前、きっと暇だったんだろうな。などと感慨深く思いながら、発表のためにコードを読み返したりなどしたものである。
itkr さんが主に今回の発表テーマを決めてくれて、東京 rubyist meeetup の場で、treby さんが何気なく話を降ってくれたので、なるほど、じゃあ発表します。という感じに発表機会が生まれたのです。そういった偶然は行動する彼らのお陰で生まれているのです。尊い。ありがとうございます。m(_ _)m
久しぶりに夢を見たのでその話。ちょっとこわい。
登壇したんだけど、全然話せない夢を見て、怖い夢で眼が覚めた...。なんか自分で書いたらしきスライドはあるものの、何もストーリーが見えないし、まったく話す内容が無くて、アドリブで何か話そうにも、全然予備知識が無いような状態で無理で、とにかく恐ろしい夢だった。
まだ時間20分くらいあるし、何でこんなに準備してないんだ...。って壇上で焦っても何も出てこないの本当に怖かったので、ちゃんと準備しようなって思えた。