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