開発のoieioiです。
RubyKaigiの前日に「うちの会社から誰もRubyKaigi行かなくていいの!?」って話が持ち上がり、行くことになりました。だいぶ日が経っちゃいましたがそのレポートです。自身の復習も兼ねての、登壇者の方のスライド・ブログ記事・gitリポジトリなどのリンク集と感想になっています。小並感。
1日目
Keynote by まつもとゆきひろ
- ことわざと、それに関するプログラミングいい話。
- 名は体を表す
- プログラミングにおいてネーミングは超大事。
- ネーミングには二種類あり、振る舞いに対しての名付けと、プロジェクトに対しての名付けだ。
yield_self
は悪い。- 「Ruby」は良い名前をつけたと思うが、今ならこの名前はつけない。なぜならググラビリティが低いから。
- Go とか Swift はググラビリティ低いけど、バックに大きな資本があると悪い名前はあんまり問題にならない。
- 名は体を表す
- Q: 型に関して今後のrubyはどうなるか?
- Rubyに型宣言が入ることは決してない。
- 静的な型があるかどうかでは、あったほうが便利なケースが多い。
- しかし、人間が十分賢ければ型は判断できる。同様にコンピュータが賢くなれば人間と同様に型の判断ができるようになるだろう。
- プログラミング言語の今後としては、静的な型チェックはコンパイラがすべてやってくれる可能性は高いと思う。
- なので、型アノテーションがある言語は古くなるだろう。Ruby はダックタイピング+強力な型推論がある言語になってほしい。
bancor: Token economy made with Ruby
- スライド
- ブログ
- kurotaky/bancor
- bancor という仮想通貨に関するプロトコルのRubyによるシミュレータの実装
Hijacking Ruby Syntax in Ruby
- スライド
- ブログ
- Ruby の Refinements, Tracepoint をつかって構文を拡張したりしよう!という話
- 登場したgem
- joker1007/finalist
- Ruby で final をする
- joker1007/abstracter
- Ruby で abstract をする
- joker1007/overrider
- Ruby で override をする
- tagomoris/with_resources
- Ruby で Javaの try-with-resource をする
- tagomoris/deferral
- Ruby で Golang の defer をする
- joker1007/finalist
- 感想
- こんなことできるのか!って感動した。
All About RuboCop
RubyGems 3 & 4
- スライド
- RubyKaigi 2018 Day 1 – HsbtDiary
- RubyGemsのメンテナンスはとても大変。
- rubygems/rubygems-mirror
- deprecated なメソッドいつ切るか?を判別するために、すべてのgemをgrepする
- akr/all-ruby
- 入手可能なすべてのrubyでコードを実行する
- 感想
- いつもお世話になっておりますという気持ちにふたたびなった
A parser based syntax highlighter
- スライド
- RubyKaigi 2018 Proposal: A parser based syntax highlighter – pockestrap
- テキストエディタのシンタックスハイライターは、言語のパーサーを正規表現で再実装していて、不正確なことがある。
- パースは言語にやらせて、エディタはそいつをつかうだけの形にしたい. バックとフロントを分離したい
- バック: pocke/iro
- Ripper をベースにしたパーサ。言語自体のパーサとほぼ同じなので、正確なシンタックスハイライトができる。
- フロント(for vim) pocke/iro.vim
- バック: pocke/iro
- 感想
- 魅力的なコンセプトだと思った
LT大会. 発表順に
リンクはスライド
- From String#undump to String#unescape
- Create libcsv based ruby/csv compatible CSV library
- Rib – Yet another interactive Ruby shell
- Improve JSON performance
- Improve Red Chainer and Numo::NArray performance
- Using Tamashii Connect Real World with Chatbot
- Find out potential dead codes from diff
- Test asynchronous functions with RSpec
- To refine or not to refine
- 5-Minute Recipe of Todo-app
- Symbolic Execution of Ruby Programs
- Schrödinger’s branch
2日目
My Way with Ruby
- スライド
- RubyKaigi 2018 – My way with Ruby #rubykaigi – 株式会社クリアコード ブログ
- Rubyでどんなことを可能にしてきたか?
- 1つやりたいことがあるたびに、周辺にたくさんのライブラリを作っていった。
- たとえば、Web Feed が取得したい -> RSS/Atomパーサ, REXML
- たとえば、プレゼンがしたい -> Rabbit -> Ruby/GTK(GUIツールキット) -> Ruby/GI -> …
- etc
- 感想
- 自分が使いたいものを作り、その過程で多くのツールが生まれていくのはプログラマらしくてかっこいい。
- Rabbit 使ってる登壇者が多く、使ってみようと思った。 rabbit-shocker/rabbit
Controlling Droids™ with mruby & Go
- スライド
- Ruby で IoT
- hybridgroup/artoo
Improve Ruby coding stye rules and Lint
- スライド
- ブログ
- RuboCopでRubyコードをレビューさせよう。
- LintとStyleの違い
- Style
- いろんなスタイルがある。
- いろんなスタイルがあるので、RuboCopでもオプションがいろいろある。
- Lint
- 潜在的にバグを生むような書き方は Lint.
- なので、RuboCopではオプションがあんまりない。
- Style
extend your own programming language
Firmware programming with mruby/c
- スライド
- RubyKaigi 2018でmruby/cについて講演があります – しまねソフト研究開発センター
- マイクロコントローラPSoC 5LP Prototyping Kitと mruby/c とをつかった酒蔵管理システムの開発秘話
- RubyだとCに比べて書き直しやすくて開発しやすい。
- hasumikin/rubykaigi2018_demo.cydsn
- mruby/c + マイコンデモ
- 部屋の二酸化炭素濃度をモニタリングする
RNode with code positions
- スライド
- Code Location, その処理がコードのどこに書かれているかを突き止める話。
– 行情報だけでなく、列情報もとりたい。- ブランチカバレッジ、コードカバレッジを算出するために必要になってきた。
- Rubyのコードはどう実行されるか
ruby --dump=p -e '1+2'
ruby --dump=y -e '1+2'
ruby --dump=i -e '1+2'
- くわしくは: Rubyソースコード完全解説
Type Profiler: An analysis to guess type signatures
- スライド
- 『型システム入門 −プログラミング言語と型の理論』
- Ruby の型に関するツールはいろいろある
- soutaro/steep
- plum-umd/rdl
- egonSchiele/contracts.ruby
- dry-rb/dry-types
- RubyTypeInference by JetBrains
- Ruby でつくる型付き Ruby
Ruby Committers vs the World
- Ruby コアコミッターが普段どんな会議をしているのか見せる会
- Google ドキュメントを見ながら話していた
- 感想
- わいわいしてた。
- コアコミッタはRailsをあんまり使わないらしい。
3日目
Parallel and Thread-Safe Ruby at High-Speed with TruffleRuby
- スライド
- TruffleRuby
- TruffleRuby = Oracle製の高速Ruby実装
- つい先日 ruby-buildでインストール可能に
Ruby code from the stratosphere – SIAF, Sonic Pi, Petal
- スライド
- Rubyで音楽を演奏する話。
- 感想
- 別の意味の Live Coding で感動した
- アンビエントっぽくてかっこよかった。
The Method JIT Compiler for Ruby 2.6
- スライド
- Ruby 2.6にJITコンパイラをマージしました – k0kubun’s blog
- Rubyの目玉新機能JITコンパイラ開発秘話
- 「C language is dead」
Build your own tools
How to get the dark power from ISeq
- スライド
- 『Rubyのしくみ』
- RubyVM::InstructionSequenceで黒魔術
- InstructionSequence は RubyコードとRubyVMのインタフェースになる
Three Ruby performance projects
- Rubyのパフォーマンス向上の話。
- float が遅かったので早くした
- RTL(レジスタ転送レベル)
- MJIT
- 感想
- 低レイヤーの話全然わからなかった…
TRICK 2018 (FINAL)
- スライド
- tric/trick2018
- Rubyで変なコードを書く選手権。
まとめ
- こんなプログラマーたちが日々 Ruby をつかいやすくしてくれてるんだな〜と思った
- 感謝の気持ちでいっぱいになった
- 半分はC言語の話だった
- 低レイヤーな話はレベルが高すぎてほぼ理解できず。
- 型, Ripper, S式, JIT, RuboCop の話が多かった
- 言語のカンファレンスだと言語構造に迫ったここら辺の話が多くなるのか
- とりあえず『メタプログラミングRuby』を読み始めた
綺麗なバッヂをいただきました