RubyKaigi 2019に関する脳内ダンプ

<img src="https://hinastory.github.io/cats-cats-cats/gallery/thumbnails/ruby-kaigi-2019-logo.png" alt="RubyKaigi 2019 in 福岡">

これは福岡で行われたRubyKaigi 2019に関する個人的な脳内ダンプ・・・つまりポエムです。
自分のメモをベースに心の声や脳内(誤)変換も含めてそのまま形にしたものです。
ネタをネタと見抜けて優しくスルーできる寛容な人だけが読んでください(笑)[^1]。

(このポエムは[自分のブログ](https://hinastory.github.io/cats-cats-cats/2019/04/23/ruby-kaigi-2019/)の一部抜粋です。)

[^1]: ポエムの内容は登壇者の発言も自分の感想もごちゃまぜです。また、登壇者の発言と思しきものも自分の印象で若干誤変換が入っている可能性があります。従って実際のセッション参加者なら多少の意味があるかもしれない内容ですが、それ以外の人は鵜呑みにしないでください。RubyKaigiのセッションはいずれ[YouTube](https://www.youtube.com/channel/UCBSg5zH-VFJ42BGQFk4VH2A)に上がると思われるので、それを見たあとでなら楽しめるかもしれません(笑)。

<details><summary>この扉を開く者一切の批判を捨てよ。これは塵芥の戯言であり、読む価値などない。</summary><div>

- Matz Keynote
  - テスト嫌いなんだ by Matz
      - DRYじゃないでしょ by Matz
- [Ruby 3 Progress Report](https://docs.google.com/presentation/d/1z_5JT0-MJySGn6UGrtdafK1oj9kGSO5sGlTtEQJz0JU/edit#slide=id.p)
  - RubyコアチームからのRuby3に向けての進捗報告
  - 実質Matzの話の続きで少し詳細化した内容
- [How To Use OpenApi3 For Api Developer](https://speakerdeck.com/ota42y/how-to-use-openapi3-for-api-developer-rubykaigi-2019) `@ota42y`
  - OpenApi 3の話
  - 分かる人にはSwaggerがそのままOpenAPIに名前を変えたといったほうが分かりやすいかもしれない
  - 個人的にはRESTよりもGraphQLのほうがスマートだと思っているが・・・
- [Pragmatic Monadic Programming in Ruby](https://speakerdeck.com/joker1007/pragmatic-monadic-programming-in-ruby) `@joker1007`
  - モナドをRubyに実装した話
  - RubyのASTを ~~悪用~~ 活用した素晴らしい例
  - Scalaを ~~パクった~~ インスパイアした素晴らしい例
  - 個人的にはこういうのを待ってた :thumbsup:
  - リポジトリは [こちら](https://github.com/joker1007/monar)。後で遊ぶよ。
- Fibers Are the Right Solution `@ioquatix`
  - Call back hell！
  - Async/Await Hell！
  - So Fibers are right！
  - Auto Fiberに期待しておこう
- [All bugfixes are incompatibilities (Keynote)](https://www.slideshare.net/nagachika/all-bugfixes-are-incompatibilities) `@nagachika`
  - リリースブランチのメンテナの6年間の苦労話
  - 「人間は1年に1歳年をとる脆弱性がある」というパワーワードが飛び出る
  - 美しいパッチだと取り込みたくなる
      - 必要のないパッチを入れるのはやめておけ。バグるかもしれない・・・
  - parse.yは魔境
  - Syntax Errorは辛い・・・ 回避不能
      - 括弧つけろよ、と思わなくもない
  - Be Practical
  - コミットログを読もう
  - コンフリクトは2割ぐらい
  - 発生バージョンが細かく書いてあったり、具体的に困っているプロダクトがあると取り込みやすい
- [Six Years of Ruby Performance History: But How to Measure...?](https://www.dropbox.com/s/jfe4yjezpcr2171/RubyKaigiSlides.key?dl=0) `@codefolio`
  - RRB(Ryby Rails Bench)によるとRailsはRuby 2.6は2.0と比較して172%速くなった
  - RRBは実アプリケーションに合わせたマクロなベンチでどの部分が遅いかは教えてくれない
  - そこでRSB(Ryby Simple Bench)の出番
- intimate Chat with Matz and mruby developers about mruby `@Hir0_IC`
  - 今日4/19はmrubyお誕生日・・・です
  - mrubyはメモリ消費を抑えるのを頑張っている
  - MatzにGCを作って欲しければ、退屈な会議に参加させればよい
  - 捻挫したからセパレートキーボードにした by Matz
  - 回答者よりも先に質問者が回答を述べる。誘導尋問とかそういうレベルではない
- [Building a game for the Nintendo Switch using Ruby](http://slides.com/amirrajan/game-dev-ruby-happiness-part-2#/) `@amirrajan`
  - Nintendo SwitchでRubyを動かしやがった・・・
  - こ、こいつ動くぞ！
- [RubyData Workshop](https://docs.google.com/presentation/d/1wYBqdlv-rBqCcjqaT4pbqYnpA9cDlTr2iKpGAQ-Mz-I/edit#slide=id.p) [資料その2](https://speakerdeck.com/shiro615/rubydata-workshop-rubykaigi2019) `@mrkn`, `@284km`, `@kozo2`, `@ktou`, `@znz`
  - Red Data Toolsの話
  - 無理しすぎんなよ
  - rubydownは面白そう
  - お菓子とフルーツのデプロイが完了した
- [What is Domain Specific Language?](http://www.a-k-r.org/pub/2019-04-19-akr-DSL-rubykaigi2019.pdf) `@tanaka_akr`
  - Syntax + Semantics = Language
  - この二つの違いをちゃんと知りたい方はコンピュータサイエンスを学びましょう(笑)
  - Smalltalkの2項演算子には優先順位がない。ま、まじか！
  - 良いことには限界があるが悪いことには限界がない
      - 名言頂きました
- Lightning Talk Sessions
  - [How does TruffleRuby work](https://speakerdeck.com/kishida/how-does-truffleruby-work) `@kis`
      - Javaの話をします。Javaを書こう！
      - Graal VMとGraalは違う
      - 第3二村射影がTruffleになるという話。コンパイラジェネレータのお話。
  - [How to Make Bad Source](https://speakerdeck.com/oda/how-to-make-bad-source) `@jimlock`
      - ブラックジャックを糞コードにした話と仕様を都合よく変える話(ぉぃ
      - ワレ、[TRICK2018](https://github.com/tric/trick2018)ノ、フッカツヲ、ノゾム
      - 奴らクレイジーだな
  - [Dive into middleware with mruby](https://speakerdeck.com/yui_knk/dive-into-middleware-with-mruby) `@spikeolaf`
      - 人生を生きているとRDBMSを作りたくなる・・・まじか！
  - [From ㍻ to U+32FF](https://speakerdeck.com/mitsuboshi/from-heisei-to-u-plus-32ff) `@Y_MITSUBOSHI`
      - まぁ令和ネタはあるだろうと思ってた
  - [Invitation to the dark side of Ruby](https://www.slideshare.net/tagomoris/invitation-to-the-dark-side-of-ruby) `@tagomoris`
      - Rubyには決してマクロは入れない　by Ma●ｚ
      - :point_right: [Maccro](https://github.com/tagomoris/maccro)作りました。てへぺろ。
  - Applying mruby to World-first Small SAR Satellite `@ShunsukeOnishi`
      - mrubyのコードを衛生に送る
      - ラーメン屋の行列を見てから行きたいじゃないっすか？
  - [The TracePoint bumb!](https://speakerdeck.com/koic/the-tracepoint-bumb) `@koic`
      - TracePointを使ったテロの話
      - 頭沸いてるんじゃねーか by ko1
      - 悪とかそういうレベルじゃねえなこれは by usa
      - バグ・オブ・ザ・イヤー by nobu
      - wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww やめろ、こんなん草しか生えんわ！
  - [Make Ruby Differentiable](https://www.slideshare.net/nagachika/make-ruby-differentiable) `@nagachika`
      - Rubyでも自動微分したい！的な何か
- Ruby Committers vs the World
  - curryはお手本を見せるために作った。使うべきではない。
  - 新機能をガシガシ増やしたい人 ノシ by 多数の観衆
      - 投票は信じないよ by Matz
      - わざわざ福岡に来るのはアグレッシブな人なの。真に受けて実行したあとに責任取らされるのは僕なの！ by Matz
  - 公開開発者会議([議事録](https://hackmd.io/RHss7paPR26rV7HaYK4FNA))
      - HackMDは便利。OSS版は[CodiMD](https://github.com/hackmdio/codimd)で自分はこちらをよく使う。
  - Haskellの`$`やElixirの`|>`相当の演算子がRubyにも欲しい
      - :point_right: が演算子の候補になったときは大爆笑。草はやすわ
  - むしろ右代入が欲しい
  - こうしてゆるくてほとんど決まらないのが平常運転
  - もう少しでRubyコアの開発をsubversionからcgitに移行するよ →　[したよ!](https://k0kubun.hatenablog.com/entry/ruby-core-2019)
- [Cleaning up a huge ruby application](https://speakerdeck.com/riseshia/cleaning-up-a-huge-ruby-application) `@riseshia`
  - 立ち見が出るほどの超人気セッション
  - Cookpad社で使われているcookpad_allというリポジトリはコード量が50万行以上あり
  - 未使用コードを削りたい
  - KitchenCleanerを開発
      - 1年間更新の無いコード、未実行のコードを自動で見つけ出す
      - GitHubにIssueを立ててgit logからランダムで人を選んでアサイン。まじか！
  - IseqLogger
      - 使われていない命令を洗い出す。要コンパイル
  - Ruby 2.6から入った“oneshot coverage”は一回でも実行されたかどうかを計測。これは便利そう。
- [The challenges behind Ruby type checking](https://speakerdeck.com/soutaro/the-challenges-behind-ruby-type-checking) `@soutaro`
  - Rubyの型チェッカーの [Steep](https://github.com/soutaro/steep)の話
  - FontAwesomeでRubyを検索するとアヒルがでてくる。分かっているじゃないか（ニヤリ）
  - アヒルはスケールするよ
  - [Rubyのシグネチャ定義言語](https://github.com/soutaro/ruby-signature)
      - 後付の型定義言語なのでかなり柔軟に表現できる。TypeScriptの影が見えた・・・
  - `open`の型定義がとんでもないことになってる・・・闇が深い・・・
- [The future of the Bundled Bundler with RubyGems](https://www.slideshare.net/hsbt/the-future-of-bundled-bundler) `@hsbt`
  - RubyGemsの多要素認証を設定してください。:pray:
  - Rubyを使うのにbundlerをまず入れなきゃ、みたいなのは体験が良くないのでやめたい
- Reducing ActiveRecord memory consumption using Apache Arrow `@mrkn`
  - [Apache Arrow](https://arrow.apache.org/)を使ってActiveRecordのメモリ削減できるかという話
  - 先日の発表は間違っていました
  - 列指向。Pandasと言われて納得した。データフレームね。
- [Red Chainer and Cumo: Practical Deep Learning in Ruby](https://speakerdeck.com/sonots/red-chainer-and-cumo-practical-deep-learning-in-ruby-at-rubykaigi-2019) `@sonots` `@hatappi`
  - 現在のPythonのDNNスタックに対応するものがだいたいRubyにも出揃った
      - Chainer-> RedChainer, TensorFlow -> TensorFlow.rb, MXNet -> MXNet.rb, NumPy ->Numo::NArray, CuPy ->  Cumo
  - ONNXを使った連携。ProtocolBuffer使う。
  - numoをcumoにしたら奇跡的に動いた！
  - Ruby3で3倍速くするという話をしてますけど、Cumoを使うと75倍速い（ドヤ）
- [Optimization Techniques Used by the Benchmark Winners (Keynote)](http://code.jeremyevans.net/presentations/rubykaigi2019/) `@jeremyevans0`
  - SequalやRodaといったベンチマークで高性能を叩き出すフレームワーク作者の最適化術
  - 執念は見習いたい
  - Rubyが速くなれば万事解決(ぉぃ
</div></details>

もう少しまともなRubyKaigi 2019ネタが読みたい方は[こちら](https://hinastory.github.io/cats-cats-cats/2019/04/23/ruby-kaigi-2019/)をどうぞ。