こんにちは、hachi8833です。RubyKaigi 2019@博多にBPS株式会社から私を含む4名が参加し、BPS株式会社もSilver Sponsorとして参加いたしました。お会いした多くの皆さまお疲れさまでした。そして運営・スタッフ・スポンサー各社の皆さま、関係者の皆さま、ありがとうございました!🙇
お疲れさまでした!! #rubykaigi pic.twitter.com/KaDQQi3b4S
— ハングリィ・ライク・カネゴン (@hachi8833) April 20, 2019
パーティなどでの伝聞レベルですが、今回は延べ約1300人が参加したそうです。福岡国際会議場の3F大ホールは1000人を収容でき、初日朝のキーノートスピーチでは立ち見が出たほどなので、少なくとも1000人超えは間違いないと思います。
RubyKaigiについてまともに書こうとするときりがありませんし、スライドや動画はいずれ公式サイトに順次アップされます。そこで何回かに分けて、キーワードを中心にRubyKaigi 2019をざっくり横断的に振り返り、続報も盛り込んでみたいと思います。そのため、同じセッションを複数回取り上げる可能性があります。
誤りや追加情報などがありましたら@hachi8833までお知らせください。
⚓「Subversion」と「Cgit」
3日目の同セッション(大喜利)で、「CRubyソースコードのリポジトリをSubversionからCgitに移行します」と発表されました。
- サイト: cgit - ArchWiki
そしてRubyKaigi終了後、正式な移行が行われたという記事がk0kubunさんのブログ↓に掲載されました。その他にもC90からC99への移行など、重要なことがたくさん書かれていてRubyist必読だと思います。
参考: C90って何ですか?
参考: C99 - Wikipedia
CRubyのソースコードは今後以下でアクセスできます。
- GitHubリポジトリ: ruby/ruby: The Ruby Programming Language [mirror]
- 公式: ruby.git - The Ruby Programming Language -- git.ruby-lang.org
記念に、早速自分のGitHubリポジトリにforkしてgit clone
してみました。
Gitへの移行後、コアコミッターの多くがGitでのコミットに手こずっているようです。
ruby が git 化した関係でコミッタたちがアホみたいに時間を消費しているのですが、本当にこの労力をペイするだけのメリットはあるんですかね……。
— Yusuke Endoh (@mametter) April 22, 2019
git.ruby-lang.orgでタグが消えるというハプニングもあったようです(現在は回復)。
⚓「静的解析」と「.rbi」
- Day1セッション: The Year of Concurrency - RubyKaigi 2019(Matzキーノート)
- Day1セッション: Ruby 3 Progress Report - RubyKaigi 2019(@mametterほか)
- Day3セッション: The challenges behind Ruby type checking - RubyKaigi 2019(@soutaro)(見に行けず😇)
- Day2セッション: State of Sorbet: A Type Checker for Ruby - RubyKaigi 2019(@jez、@ptarjan)
- Day1セッション: A Type-level Ruby Interpreter for Testing and Understanding - RubyKaigi 2019(@mametter)(見に行けず😇)
初日のMatzキーノートとRuby 3 Progress Reportで、以前から一部で熱望されていた静的解析(実行前の静的型チェック実行せずに型を含むプログラムの正当性チェックを行う)をRuby 3で導入する試みが進められていることが発表されました。
ポイントは、Rubyコードのファイルそのものではなく、比較的伝統的な.rbiという拡張子を持つ型定義ファイルを別途用意して、そこに型に関する情報を記載するというものです。Rubyの構文を変えずに静的型チェックを行いたいということだと理解しました。
型チェックは「Level-1」「Level-2」に分けられており、Level-2チェックでは@soutaroさんのSteep gemや、今回話題になったSorbetや、RDLが使えるようになるそうです。Steepはstructual type、SorbetはnominalかつDSLを用いるなど、それぞれアプローチは異なっているようです。
また、YARDの型情報をrbiに変換する構想にも触れていました。
Level-1型チェックについては上記@mametterさんのDay1セッションで、Level-2型チェックについては上記のSteepやSorbetのセッションでそれぞれ解説されています。
- リポジトリ: soutaro/steep: Gradual Typing for Ruby
- サイト: Sorbet · A static type checker for Ruby
- リポジトリ: plum-umd/rdl: Types, type checking, and contracts for Ruby
SorbetはC++で書かれていて高速を謳っており、私がセッションで見たデモでもエディタのコードジャンプリストがすごい勢いで更新されていました。この夏オープンソース化されるそうです。
Announcements made at the conference:
- types are worked on in a collaboration with the Ruby core team;
- types will be part of Ruby 3 stdlib source!
- https://t.co/zCFtnzZEQt - website is out!
- try IDE-like experience at https://t.co/uF06whah7N https://t.co/ojUaj5kzo7— Dmitry Petrashko (@darkdimius) April 19, 2019
Sorbetの可愛さ❤️ #rubykaigi pic.twitter.com/nCL1L46kK4
— ハングリィ・ライク・カネゴン (@hachi8833) April 19, 2019
ついでに、Sorbet(ソルベ)という名前はフランス語っぽいなと思っていたら、やはりフランス語で「シャーベット」という意味だと会場で教えてもらいました🍨。
Sorbet is a frozen dessert made with fruit juice, sugar, and water.
他にも以下で.rbiに多少言及されていました。
- Day1セッション: Compiling Ruby to idiomatic code in static languages - RubyKaigi 2019(@alehander42)
⚓「numbered parameters」
- Day1セッション: Ruby 3 Progress Report - RubyKaigi 2019(@mametterほか)
- Day3セッション: Ruby Committers vs the World - RubyKaigi 2019
これまで週刊Railsウォッチでも何度か取り上げたnumbered parametersの話題が「Ruby 3 Progress Report」と大喜利で取り上げられていました。
[1, 2, 3].map { @1 + 3 } # @1がnumbered parameter
=> [4, 5, 6]
- ウォッチ20190401: Ruby 2.7の新構文: numbered parameter
- ウォッチ20190408: numbered parametersを考え直したい
- 関連記事: Ruby 2.7 — Numbered Parameters – Brandon Weaver – Medium
numbered parametersを導入することについてはほぼ決まりそうな塩梅に見えましたが、やはりその表記法についてさまざまな対案や意見が出されました。現時点では@1
のような記法で、内部的に|i,|
という記法と同等になるというお話でした。今後の動向に注目したいと思います。
その後Twitterでもいくつかやり取りを見かけました。it
だとRSpecと当たりそう...。
それか、別途@&を用意して基本的にそっちを使うとか #rubykaigi
— Yuki Yugui Sonoda (@yugui) April 22, 2019
壇上でも言ったけど、 `it` に僕も一票。
— Akira Matsuda (@a_matsuda) April 22, 2019
そうですね。@0か@&か、少なくともsplatしないやつが必要です
— Yuki Yugui Sonoda (@yugui) April 22, 2019
⚓おまけ: 会場でのメモ
これまではセッションのメモをMarkdownファイルに書いて社内Slackに貼り付けて社内で共有していましたが、今年はセッションをGoogleドキュメント(G-Suite)にメモして当日BPSメンバーで共有しました。1日1ファイルずつ、計3ファイルです。情報がSlackに流れて行かずに済みますし、G-Suiteのドライブで検索もでき、後から写メも貼り付けられてとても便利です😋。
それから、記憶の新しいうちに写真をGoogleフォトで分類整理して、キャプションをどんどん付けていきました。これも後で検索できるのがうれしい点です。なお、この「焼きラーメン」はGoogleマップ情報を信じれば「KENZO Cafe」というお店のようです🍜。
GoogleフォトのアルバムもDay1〜Day3のスライド、コーディング懇親会、スナップショットなどに分類し、少なくとも自分にとって有用な情報になるようにしてみました。何ということのない当たり前の写真整理です😅。こちらもBPSで使っているG-SuiteのGoogleフォトです。
おたより発掘
記憶の補強になる。大変ありがたい👏
https://t.co/xv603vej8V— Masafumi Koba (@ybiquitous) April 25, 2019