© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
1
はじめてのRUBY KAIGI
~ CRUBYだけがRUBYじゃない~
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
2
自己紹介
chisso@Qiita
LIFULL HOME’S事業本部
分譲マンション事業部UXユニット開発グループ
2014年に株式会社LIFULL入社し、社歴=エンジニア歴。
サービス開発に合わせて技術はなんでも手を出します。
Ruby (on Rails) , Golang, Javascript, PHPあたりを書きます。
エンジニアとしてカンファレンスへの参加は今回が初めて。
対外的なイベントでの発表も今回が初めて。
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
3
RubyKaigi 2018
2018/5/31 〜 2018/6/2
@宮城県仙台市 仙台国際センター
http://rubykaigi.org/2018/venue
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
4
RubyKaigi 2018
• 3会場で同時進行
• 日本語/英語の公演がほぼ1:1
• これを3日間
http://rubykaigi.org/2018/schedule
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
5
RubyKaigi 2018
days.first (左)
https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS-63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC-
w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR
days.second (右)
https://photos.google.com/share/AF1QipM2rfjEQeloDMI6qaibgo_MxyHw5ufoWcfQ1RVPcoOIrEOeahmiHBuveObhI5jFtg?key=aUstaEJyV3BuclFvZD
FZd2JkVXBxbm5kVHRlV0lB
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
6
スポンサーブース
days.first (左上)
https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS-63TV-
USXUZkKFpmQV-cMVIR4mUN95g5dNC-
w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR
days.third (左下・右)
https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKvMZ
gKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2F
pVF9VcmN3
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
7
スポンサーブース
days.first (左上)
https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS-
63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC-
w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR
days.third (左下・右)
https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUX
FKvMZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ?key=SEtfOFg2b3IwZEtoNFl
ydjlxdnpUX2FpVF9VcmN3
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
8
Keynote by Matz
名は体を表す
プログラミングは実体がなく概念
名前をつけないといけない
振る舞いに対する名前
クラス、メソッド、変数などの概念
なにをしているかよりなにがしたいか
yeild_self -> then (feature 14594)
https://github.com/ruby/ruby/commit/d53ee008911b5c3b22cff1566a9ef7e7d4cbe183
プロジェクトに対する名前
コミュニティの旗印、求心力
Rubyという名前をつけなければ何も起きなかった
https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8g
ZfORg8CS-63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC-
w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
9
Keynote by Matz
• 時は金なり
• 開発時間
いかに早くするか
• 実行時間
パフォーマンス
1.8以前はインタプリタの影響でおそかった。2.6からはJIT compiler
並列実行
GVLが制約になってきた -> Ruby 3x3
• 塞翁が馬
• いいこともあれば悪いこともある
1995 ~ 2004 Rubyってなに?
2005 ~ 2012 Railsが公開されて、使われるようになりもてはやされる
2013 ~ 2018 安定期、Rubyは死んだ
• 一喜一憂せずに価値を提供し続ける
互換性は重要。Ruby 3で1.9の悲劇を繰り返したくない。
移行が進まず、コミュニティが停滞・分断する。
両方のバージョンをメンテしなくてはいけなくなる。
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
10
Keynote by Matz
Q: Ruby 3には型宣言が入るのか?
A: Rubyのコードの中に型宣言がはいることはない
(Matzの意思)
確かに、静的な型解析があったほうが嬉しいこと
は多い。
遠い将来、静的な型チェックは行われるが
書く必要がない世界が来るんじゃないか。
型アノテーションが古くなる未来が来ると思ってる
https://twitter.com/yukihiro_matz/status/1002821853772050433
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
11
コード懇親会 By Speeさん
• 好きなテーマを選んでチーム形成
• チームごとに開発
Rubyは楽しくプログラミングできることを大事にしているプログラミング言語です。みなさん
も、いつもRubyで楽しくプログラミングしているはずです。だったら、いつものようにコード
を書きながら懇親すると楽しそうじゃないですか!
http://tech.speee.jp/entry/2018/06/02/154701
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
12
Ovto / Opal – Rubyでフロントエンド
NaCl (ネットワーク応用通信研究所)の原さん(@yhara)と同卓した縁でOvtoのハンズオン
Rubyで書けるシンプルなクライアントサイドWebフレームワークを作った
https://qiita.com/yhara/items/07eeb2c165e35964db76
特徴
Rubyで書ける
Redux風のAPI (Virtual DOM+シングルステート)
実装が短い(lib/以下の合計が721行)
バックグラウンドにあるのは、
OpalによるRuby -> Javascriptへのコンパイル
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
13
Truffle Ruby
Parallel and Thread-Safe Ruby at High-Speed
with TruffleRuby
3日目のkeynote
Truffle Rubyとは?
-> JRubyのfork。JVM上で動く。
Truffle Rubyを使うことで
1. Rubyは高速化可能
2. 安全に複数コアで並列処理が可能
https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKv
MZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ/photo/AF1QipNe1qoxPF7J7sAY-
QcOwxSk4ZFB3Metr_S2Woes?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2FpVF9Vc
mN3
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
14
Truffle Ruby
Rubyは高速化可能
• インライン化と定数の畳込みを行うことで劇的に高速化する
• マイクロベンチマークではCRubyに比較し32倍以上高速
• MJITでは、Rubyに対する知識が不足して、インライン化してよいのかどうかなど判断
できない
安全に複数コアで並列処理が可能(WIP)
• CRuby, JRubyの並行処理には課題がある
• Mutex#synchronize忘れたり
• Collection(ArrayやHash, Object)をオーバーヘッドなしにthread-safeにする
• 複数スレッドからアクセスされる場合のみ同期オブジェクトにする
https://speakerdeck.com/eregon/parallel-and-thread-safe-ruby-at-high-speed-with-truffleruby
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
15
mruby
How happy they became with H2O/mruby, and the future of HTTP Design pattern for embedding mruby into middleware
mrubyとは
省メモリ版のRuby実装。組み込みやすい。
RubyGemsに似たmrbgemsがあり、ビルド時に設定してコンパイル。
https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKvMZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ/phot
o/AF1QipNe1qoxPF7J7sAY-QcOwxSk4ZFB3Metr_S2Woes?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2FpVF9VcmN3
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
16
mruby
How happy they became with H2O/mruby
https://www.slideshare.net/ichitonagata/how-happy-they-became-with-h2omruby-and-the-
future-of-http
• nginxのconfファイルって
• リーダブルじゃない
• 変数などを使ってリクエストごとに処理を分けたりしにくい
• H2Oにmrubyを組み込む
• Rubyのコードとして動的処理を実装
• デバッグしやすい!
© LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
17
まとめ
• はじめてのRubyKaigi
• 会場はきれい。ランチもコーヒーも出て至れり尽くせり。
• スポンサーブースでいろいろもらえて楽しい
• Rubyの未来をみんなで考える場
• コミュニティのために「集まる」
• 普段利用しているだけだと知れないことに触れられる
• コアすぎてわからない辛さはあるが、自分の位置を知れてよかった
• CRuby以外のアプローチ
• Truffle Rubyの可能性
• mrubyでかゆいところに手が届きそう

【Ltech#0】RubyKaigi2018報告会

  • 1.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 1 はじめてのRUBY KAIGI ~ CRUBYだけがRUBYじゃない~
  • 2.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 2 自己紹介 chisso@Qiita LIFULL HOME’S事業本部 分譲マンション事業部UXユニット開発グループ 2014年に株式会社LIFULL入社し、社歴=エンジニア歴。 サービス開発に合わせて技術はなんでも手を出します。 Ruby (on Rails) , Golang, Javascript, PHPあたりを書きます。 エンジニアとしてカンファレンスへの参加は今回が初めて。 対外的なイベントでの発表も今回が初めて。
  • 3.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 3 RubyKaigi 2018 2018/5/31 〜 2018/6/2 @宮城県仙台市 仙台国際センター http://rubykaigi.org/2018/venue
  • 4.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 4 RubyKaigi 2018 • 3会場で同時進行 • 日本語/英語の公演がほぼ1:1 • これを3日間 http://rubykaigi.org/2018/schedule
  • 5.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 5 RubyKaigi 2018 days.first (左) https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS-63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC- w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR days.second (右) https://photos.google.com/share/AF1QipM2rfjEQeloDMI6qaibgo_MxyHw5ufoWcfQ1RVPcoOIrEOeahmiHBuveObhI5jFtg?key=aUstaEJyV3BuclFvZD FZd2JkVXBxbm5kVHRlV0lB
  • 6.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 6 スポンサーブース days.first (左上) https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS-63TV- USXUZkKFpmQV-cMVIR4mUN95g5dNC- w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR days.third (左下・右) https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKvMZ gKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2F pVF9VcmN3
  • 7.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 7 スポンサーブース days.first (左上) https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8gZfORg8CS- 63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC- w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR days.third (左下・右) https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUX FKvMZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ?key=SEtfOFg2b3IwZEtoNFl ydjlxdnpUX2FpVF9VcmN3
  • 8.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 8 Keynote by Matz 名は体を表す プログラミングは実体がなく概念 名前をつけないといけない 振る舞いに対する名前 クラス、メソッド、変数などの概念 なにをしているかよりなにがしたいか yeild_self -> then (feature 14594) https://github.com/ruby/ruby/commit/d53ee008911b5c3b22cff1566a9ef7e7d4cbe183 プロジェクトに対する名前 コミュニティの旗印、求心力 Rubyという名前をつけなければ何も起きなかった https://photos.google.com/share/AF1QipONYGO6fp08hZKobTa8g ZfORg8CS-63TV-USXUZkKFpmQV-cMVIR4mUN95g5dNC- w?key=aG5GLVZQZHRfdXRyU29tZUpNTkc0NnhBUzNfX2xR
  • 9.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 9 Keynote by Matz • 時は金なり • 開発時間 いかに早くするか • 実行時間 パフォーマンス 1.8以前はインタプリタの影響でおそかった。2.6からはJIT compiler 並列実行 GVLが制約になってきた -> Ruby 3x3 • 塞翁が馬 • いいこともあれば悪いこともある 1995 ~ 2004 Rubyってなに? 2005 ~ 2012 Railsが公開されて、使われるようになりもてはやされる 2013 ~ 2018 安定期、Rubyは死んだ • 一喜一憂せずに価値を提供し続ける 互換性は重要。Ruby 3で1.9の悲劇を繰り返したくない。 移行が進まず、コミュニティが停滞・分断する。 両方のバージョンをメンテしなくてはいけなくなる。
  • 10.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 10 Keynote by Matz Q: Ruby 3には型宣言が入るのか? A: Rubyのコードの中に型宣言がはいることはない (Matzの意思) 確かに、静的な型解析があったほうが嬉しいこと は多い。 遠い将来、静的な型チェックは行われるが 書く必要がない世界が来るんじゃないか。 型アノテーションが古くなる未来が来ると思ってる https://twitter.com/yukihiro_matz/status/1002821853772050433
  • 11.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 11 コード懇親会 By Speeさん • 好きなテーマを選んでチーム形成 • チームごとに開発 Rubyは楽しくプログラミングできることを大事にしているプログラミング言語です。みなさん も、いつもRubyで楽しくプログラミングしているはずです。だったら、いつものようにコード を書きながら懇親すると楽しそうじゃないですか! http://tech.speee.jp/entry/2018/06/02/154701
  • 12.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 12 Ovto / Opal – Rubyでフロントエンド NaCl (ネットワーク応用通信研究所)の原さん(@yhara)と同卓した縁でOvtoのハンズオン Rubyで書けるシンプルなクライアントサイドWebフレームワークを作った https://qiita.com/yhara/items/07eeb2c165e35964db76 特徴 Rubyで書ける Redux風のAPI (Virtual DOM+シングルステート) 実装が短い(lib/以下の合計が721行) バックグラウンドにあるのは、 OpalによるRuby -> Javascriptへのコンパイル
  • 13.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 13 Truffle Ruby Parallel and Thread-Safe Ruby at High-Speed with TruffleRuby 3日目のkeynote Truffle Rubyとは? -> JRubyのfork。JVM上で動く。 Truffle Rubyを使うことで 1. Rubyは高速化可能 2. 安全に複数コアで並列処理が可能 https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKv MZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ/photo/AF1QipNe1qoxPF7J7sAY- QcOwxSk4ZFB3Metr_S2Woes?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2FpVF9Vc mN3
  • 14.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 14 Truffle Ruby Rubyは高速化可能 • インライン化と定数の畳込みを行うことで劇的に高速化する • マイクロベンチマークではCRubyに比較し32倍以上高速 • MJITでは、Rubyに対する知識が不足して、インライン化してよいのかどうかなど判断 できない 安全に複数コアで並列処理が可能(WIP) • CRuby, JRubyの並行処理には課題がある • Mutex#synchronize忘れたり • Collection(ArrayやHash, Object)をオーバーヘッドなしにthread-safeにする • 複数スレッドからアクセスされる場合のみ同期オブジェクトにする https://speakerdeck.com/eregon/parallel-and-thread-safe-ruby-at-high-speed-with-truffleruby
  • 15.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 15 mruby How happy they became with H2O/mruby, and the future of HTTP Design pattern for embedding mruby into middleware mrubyとは 省メモリ版のRuby実装。組み込みやすい。 RubyGemsに似たmrbgemsがあり、ビルド時に設定してコンパイル。 https://photos.google.com/share/AF1QipP5DE4XOmGpYG9fcCC5omz6rDUXFKvMZgKTj7DhyvA6kbKZzkSSEMWsxOKwkK57dQ/phot o/AF1QipNe1qoxPF7J7sAY-QcOwxSk4ZFB3Metr_S2Woes?key=SEtfOFg2b3IwZEtoNFlydjlxdnpUX2FpVF9VcmN3
  • 16.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 16 mruby How happy they became with H2O/mruby https://www.slideshare.net/ichitonagata/how-happy-they-became-with-h2omruby-and-the- future-of-http • nginxのconfファイルって • リーダブルじゃない • 変数などを使ってリクエストごとに処理を分けたりしにくい • H2Oにmrubyを組み込む • Rubyのコードとして動的処理を実装 • デバッグしやすい!
  • 17.
    © LIFULL Co.,Ltd.本書の無断転載、複製を固く禁じます。 17 まとめ • はじめてのRubyKaigi • 会場はきれい。ランチもコーヒーも出て至れり尽くせり。 • スポンサーブースでいろいろもらえて楽しい • Rubyの未来をみんなで考える場 • コミュニティのために「集まる」 • 普段利用しているだけだと知れないことに触れられる • コアすぎてわからない辛さはあるが、自分の位置を知れてよかった • CRuby以外のアプローチ • Truffle Rubyの可能性 • mrubyでかゆいところに手が届きそう