RubyKaigi 2019 に Classi さんのスカラーシップで参加してきました!

はじめに

どうも、 さぃと(@saitoeku3)です。 今回は、Classi さんのサポートを受けて念願の RubyKaigi 2019 に参加することができました〜
普段は JavaScript がメインの僕ですが、大学ではいつも仲間たちと Ruby を書いているので、特別な思い入れがあります。

ということで、Ruby の最新事情を大学の仲間とシェアしたり、もっと身近の Rubyist を増やしたりしたいという気持ちで博多に行ってきました!!

f:id:sathoeku:20190421134430j:plain

株式会社 Classi について

まずは、Scholarship Sponsor としてサポートしてくださった Classi さんの紹介をさせてください。

Classi は、「子供の無限の可能性を解き放ち学びの形を進化させる」を理念に、先生・生徒向けのクラウド型学習支援サービスを提供するベンチャー企業です。 2014 年にベネッセとソフトバンクの共同出資で設立されました。

生徒向けには、一人ひとりに合わせた難易度の『Web テスト』や、授業外でも学べる学習動画の配信、先生向けには、個々の生徒のデータを一元管理できる『生徒カルテ』や、生徒・保護者宛にオンラインで連絡できる『校内グループ』などのサービスを、 全国の高校の約 4 割にあたる 2,100 校(約 5,000 校中)、生徒約 83 万人(約 330 万人中)以上に提供しています。

Classi ID ひとつで、英語学習やプログラミング教育、キャリア教育、といったサードパーティアプリが Classi のプラットフォームに参画していることも、 他の教育サービスにはない大きな特徴です。

また、2020 年の教育改革に向けて『新しい学びが広がる未来の教育プラットフォームを造る』という短期的なビジョンも定めました。このビジョンの実現を目指し、アダプティブラーニングをはじめとする、人工知能を活用した新たな学習手法の研究・開発をさらに加速していきます。

今後、益々変化していく教育現場は、加速していく IT 化をふまえ、更なる拡大が期待されている領域です。

(connpass の募集ページより抜粋)

Classi さんといえば、Angular Japan User Group の会長をされている lacolaco さん がアドバイザーをされているということで有名ですよね。社員の皆さんからは「laco さん」と呼ばれて愛されているようでした。 他にも Classi Angular Night というイベントを開催しているという背景があったので、僕の中では Angular の会社という印象が強かったです。

しかし、実際に社員の方々の話を聞いていると Ruby への熱い気持ちを感じ取ることができました。 エンジニアの方々は非常に素晴らしい方が多かったです。2 日目の夜に行われた食事会では、スカラーシップに選ばれた学生の話に熱心に耳を傾けてくださって、最高に楽しかったです 😊

企業ブースとノベルティ

会場に到着すると、最初にステッカー、くつした、T シャツ、パーカーがノベルティとして配布されました。

そして、会場内にはスポンサー企業によるブースがいくつもありました。 各企業がパンフレットやノベルティに個性を出していたので、眺めているだけでも楽しかったです。 (午後の休憩時間には、各ブースに飲み物やお菓子を調達しに行くなどしていました)

コーヒーとマシュマロ
猫廼舎さんのコーヒーと ConoHa マシュマロ

印象的だったセッション

ここからは少し真面目な話で、いくつか見たセッションの中でも個人的に惹かれたものをいくつか紹介します。

The Year of Concurrency - @yukihiro_matz

言わずもがな。Ruby のパパである Matz の keynote です。 これからの Ruby に向けた取り組みと最近注目されている「静的型解析」についての話が中心でした。

Ruby に導入する型定義は次のような形で実装されるようです。

  • Type Definition Syntax: rbi ファイルに固有のシンタックスで型定義をする
  • Type Profiler: 型定義なしで型を解析する
    • 型に矛盾があればエラー
    • 現在開発が進んでいる Static Type Checker(Sorbet, Steep)に対応する

Pattern matching - New feature in Ruby 2.7 - @k_tsj

Matz の keynote 中に「正規表現ではないパターンマッチング」と言う話があったのですが、僕はそのときピンと来ませんでした。 しかし、Twitter を眺めている限りでは注目されている方が非常に多かったので、話を聞くことにしました。 どうやら新しく追加されるパターンマッチングでは、「特定の配列やオブジェクトが期待している構造のときに foo する」という使い方をできるようです。 JSON などの複雑な構造を持つオブジェクトの操作するときに、真価を発揮しそうですね!

基本的なシンタックス

case チェックするもの
in パターン
  # マッチしたときの処理
else
  # マッチしなかったときの処理
end

簡単な使用例

case [0, 1, 2]
in [a, 1, 2]
  p a
else
  p 'no match'
end
case {a: 0, b: 1}
in a:, b:
  p a
end

ECMAScript の省略記法を彷彿させる美しい書き方もできるので、非常にすこです。 他にも多くの機能があって非常にパワフルな構文なので、興味がある方は Introduce pattern matching syntax を確認してみてください。

Ovto: Frontend web framework for Rubyists - @yhara

このセッションは、発表に使われるスライドがタイトルにある「Ovto」で作られていて衝撃を受けました!(http://rk2019.yhara.jp:8888/) しかも、ただのスライドではなくて聴衆を楽しませる工夫がいくつか用意されていたのも面白かったですw (トラブルで見れなかったものがあったのは残念…)

Ovto は以下の 2 つを Rubyist が楽しくかけるように組み合わせた Ruby 製の Web フロントエンドフレームワークです。

これだけだと、React のように大規模開発に耐えられるのか疑問が残りますが、State や Actions を切り分けるなどして柔軟に対応できるようでした。yhara さんは Rubyist が本当に楽しく書けるように API の設計を工夫されているので、興味がある方はぜひ触ってみてください!(僕も触ります)

State of Sorbet: A Type Checker for Ruby - @jez & @ptarjan

現在 Stripe で開発を勧めている Sorbet という静的型解析についての話でした。 Sorbet は Ruby に型定義の記述を追加することで、型の解析を可能にします。

簡単な使用例

# typed: true <- ココ

sig {params(x: Integer).returns(String)} # <- ココ
def bar(x)
  x.to_s
end

少し書き方に癖がありますよね。Matz は、これまでの Ruby のような書き心地が損なわれるからか、好んでいないようです。 ただし逆に言えば、この記述を追記するだけで静的型解析や IDE によるサポートを得られるというのは大きなメリットだと考えられます。 先日、公式ドキュメント が公開されたとのことなので、詳細はそちらで知ることができます。 OSS 化の準備も進んでいるので、要チェックですね。

Building a game for the Nintendo Switch using Ruby - @amirrajan

おそらく「参加した人にしかわからない空気感」を一番感じられたセッションです。
正直に話すと、最初は C コードばかりで個人的に辛い思いをしていました😅
しかし、最終的には mruby を使って Switch 上でライブコーディングをするというハチャメチャな内容で面白かったです!w

博多の食べ物

会場の外に大量の YATAI があったので色々食べました。

f:id:sathoeku:20190421133641j:plain
焼鳥丼

f:id:sathoeku:20190421133626j:plain
ふぐ天が乗ったうどん

f:id:sathoeku:20190421133617j:plain
五島うどん

f:id:sathoeku:20190421133938j:plain
焼きラーメン

f:id:sathoeku:20190421133950j:plain
ビーフストロガノフ

もちろん他でも食べてました。

f:id:sathoeku:20190421133605j:plain
Classi さんの方々と食べた明太モツ鍋

f:id:sathoeku:20190421134210j:plain
家系ラーメン

f:id:sathoeku:20190421134217j:plain
博多とんこつラーメン

(コイツ食べ物の写真しか撮ってないな?)

おわりに

今回の RubyKaigi のような大きなカンファレンスに参加するのは初めてでしたが、予想以上に楽しかったです。 様々な参加者の方をお話しましたが、Ruby のことが大好きで、面白いことや楽しいことに挑戦している人ばかりでした。 そんな素晴らしい方々と関わる機会をくださった Classi さんや運営の皆さん、その他関係者の方々に感謝でいっぱいです! 来年は長野県松本市で開催されるとのことなので、次回も絶対参加します…!