RubyKaigi 2016に参加した
RubyKaigi 2016に初参加しました。
感想
5月ごろにチケットが購入可能になり、近場の京都(といっても三日間の交通費だけで5000円以上かかりました…)で開催されると知って、今がチャンスと思いチケットを超早割で購入しました。
仕事では、irbを計算機代わりに使うか、業務上は不要な、個人的な不安を解消するためのテストサーバーをsinatraで作ったりする程度しか、Rubyとの関わりはありません。
私事では、今の会社に入社するまではRubyの本をを読んだり短いコードを書いたりが多かったのですが、どうにも仕事と縁遠いものに時間を使うことに罪悪感があり、徐々に減っていました。
今は、担当業務になることが少なからずあるArduinoまわりでC/C++書くか、Pythonの勉強をすることが多いです。
ただ、Rubyが好きという気持ちは変わらず持っていたので、参加しました。
セッションの中で、「めんどくさい」のような、印象とか感性のようなところを聞けたのは助かりました。設計や実装のところでそのあたりの共通認識を得られることが普段あまりないため、セッションの中で出てくる話題にうなづいたり、笑った経験は心の支えになります。
今回は良い思い出にしておきたかったので、人と接することがないように心がけました。
ぼっちは人付き合いでいやなことがあると、逃げがちなので。
来年は懇親会にも出て、他の方とお話できればと思っています。
スピーカー、スタッフ、スポンサー、他の参加者の方々、ありがとうございました。
会場について
国立京都国際会館はすごく広く、庭園もあり、コンセントなどの設備も整っていて、申し分のない場所でした。ぼっちでも過ごしやすかったです。
ポケモンはアーボとかコラッタくらいしかいなかったようなのでタマゴを育てるくらいしかアプリを起動する理由はありませんでした。
英語について
英語のセッションもスライドがあるしフィーリングで聞き取れるのでは!?と思って参加したのですが、まったく無理でした…。
事前に興味のあるセッションを調べて、英語のものも座りはしたのですが、ほとんど他の方のツイートから内容を類推するという気の重い時間を過ごしました。途中から日本語のセッションが行われている場合はそのセッションを聞く方針に変えることに…。
英語の勉強しなければ、と思いました。
忘れ物について
iPhoneを置き忘れてしまったのですが、受付に届いていました。
届けてくれた方、ありがとうございました。
1日目のセッション
Ruby3 Typing
- Ruby3 Typing - RubyKaigi 2016
- "型は絶対書きたくない" "Ruby3は東京オリンピックまでに" Rubyの父Matzによる、「楽しいプログラミング体験を届けるために」 #rubykaigi 2016 Keynote - Togetterまとめ
『今、静的型が流行っているから型情報をRubyにつけよう』ということではなく、もっと未来を見据えて、そもそも『型とは何か』から考えていきたい。
他の言語では困らないけどRubyでは困ることが、Rubyの言語の実装だけで解決できるのが理想なのかなぁと思っています。それか、Rubyを使うだけで型の本質に触れられるとか。
記述を増やすこと自体を絶対にしない、という心持ちではないようなので、増える場合はその記述が「余分ではない」ことの説明が十分になされて、書くことを苦行に思わず、書くこと自体が楽しいといいと思います。
次の記事で、セッションの中ででてきたNominal Subtypingといった用語が解説されています。
セッションの後の質問で指摘されていたSoft Typingという用語の使い方がアカデミックな分野の定義と異なることについて、ツイートがまとめられています。
dRuby in the last century.
- dRuby in the last century. - RubyKaigi 2016
- dRuby2016 // Speaker Deck
- library drb (Ruby 2.3.0)
- 突然のライブハンズオン! 20世紀生まれの分散Ruby実装 dRuby #RubyKaigi #RubyKaigiA - Togetterまとめ
oso-matzとjushi-matzでおどろいたのだけど、Toggeterのまとめを読んでいると、すでに他の場で使ったことがある様子でした。また見れるかも。
Twitterも最初はdRubyでプロトタイプを作るなどしていたそうなので、Raspberry Piでいろいろ遊んでみようかと思います。
ErRuby: Ruby on Erlang/OTP
- ErRuby: Ruby on Erlang/OTP - RubyKaigi 2016
- ErRuby - Ruby on Erlang // Speaker Deck
- johnlinvc/erruby: ruby on erlang
- Ruby on Erlang!!! errubyの紹介 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
Togetterのまとめでは.
ではなく、.|
でメソッドを非同期に呼び出せることは印象が良かったようです。
Who reordered my code?!
- Who reordered my code?! - RubyKaigi 2016
- concurrent-rubyのコアコミッターが語る JRuby + Truffle 並列実行による高速化の試み #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
Togetterのまとめからは英語とスレッドの難しさがうかがえます。
Welcome to haconiwa - the (m)Ruby on Container
- Welcome to haconiwa - the (m)Ruby on Container - RubyKaigi 2016
- The introduction of mRuby on Container /mruby-on-container // Speaker Deck
- haconiwa/haconiwa: MRuby on Container / helper tools with DSL for your handmade linux containers, or container clusters
- DSLで記述できるmRuby製コンテナ haconiwa ! その開発動機とは #RubyKaigi #RubyKaigiB - Togetterまとめ
初めてデカ外人クイズに参加しました。たのしかったです。
セッションの内容は既存のコンテナシステムが複雑という前提で、haconiwaはLinuxの機能を直接制御しているからシンプルですよ、と認識しました。
セッションの最後の質問タイムでFreeBSDで動作するか聞かれたことに対して、実装すれば可能というような答えではなく、Linuxでしか動かない空気感が出てしまったので、まだ、haoniwaが動作する上で必要なOSの機能が何かまとめられている段階ではない様子でした。
A proposal of new concurrency model for Ruby 3
- A proposal of new concurrency model for Ruby 3 - RubyKaigi 2016
- Koichi Sasada: A proposal of new concurrency model for Ruby 3 (RubyKaigi2016)
- Rubyコアコミッター笹田耕一さん解説 Ruby3のための新しい並列実行モデル Guild #RubyKaigi #RubyKaigiA - Togetterまとめ
スレッドから逃げる人生なのでGuildのおかげで逃げ切れるかもしれません。
Play with GLSL on OpenFrameworks
- Play with GLSL on OpenFrameworks - RubyKaigi 2016
- Play GLSL on mruby with OpenFrameworks // Speaker Deck
- 【Unityちゃん】らくらくシェーダコーディング! mrubyで実装するGLSLジェネレータ #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
A Tale of Two String Representations
- A Tale of Two String Representations - RubyKaigi 2016
- A Tale of Two String Representations // Speaker Deck
- JRubyにおけるString実装高速化 Rope 紹介 #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
Ropeという用語を知りませんでした。
次のIBMの記事でJavaのStringクラスの実装とRopeの実装の比較が解説されています。セッションの内容は、RubyのStringの実装とJRuby上でのRopeの比較のようです。
Isomorphic web programming in Ruby
- Isomorphic web programming in Ruby - RubyKaigi 2016
- Writting web application in Ruby
- youchan/hyalite
- このライブコーディングがすごい! RubyでIsomorphic Webプログラミングを実現する Menilite 紹介 #RubyKaigi #RubyKaigiB - Togetterまとめ
セッション内ではとくに触れられていなかったのですが、スライドのWebページ自体がOpalとHyaliteで開発されているようです。
Gitのコミット単位で実装の解説を進められていて、大変わかりやすかったです。
Unifying Fixnum and Bignum into Integer
- Unifying Fixnum and Bignum into Integer - RubyKaigi 2016
- 2016-09-08-rubykaigi-unified-integer.pdf
- Rubyコミッターが語る Ruby2.4にてFixnumとBignumをIntergerに統合する話 #RubyKaigi #RubyKaigiA - Togetterまとめ
解説の中でじわじわと影響範囲が広がっていくのですが、アフターフォローもバッチリなセッション内容でした。
How to create multiprocess server on Windows with Ruby
- How to create multiprocess server on Windows with Ruby - RubyKaigi 2016
- How to create multiprocess server on windows with ruby - rubykaigi201…
- Windows環境にて如何にしてマルチプロセスサーバを実現するか fluentd・ServerEngine実装の紹介 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
Ups and Downs of Ruby Internationalization
- Ups and Downs of Ruby Internationalization - RubyKaigi 2016
- Ups and Downs of Ruby Internationalization - Ruby Kaigi 2016
- "Who has used swapcase?" Rubyにおける国際化機能のかなしみ #RubyKaigi #RubyKaigiA - Togetterまとめ
書籍の「APIデザインケーススタディ」で解説されているような形で、upcaseとdowncaseの適切な仕様を検討していく流れが体感できました。swapcaseのようにそもそも必要?みたいなくだりは英語が分からないなりに一緒に楽しめました。
Scalable job queue system built with Docker
- Scalable job queue system built with Docker - RubyKaigi 2016
- Scalable Job Queue System Built with Docker // Speaker Deck
- 【超満員】クックパッド導入事例 Dockerでスケールするジョブキューシステム【登壇者混乱】 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
Main Hallのセッション聞きながら、このセッションが盛り上がっているのはツイートからめちゃくちゃ伝わっていました。クックパッドさんは必要なものを自家製して、オープンソースに還元されているのが開発者ブログからもうかがえて、好印象です。
2日目のセッション
Fearlessly Refactoring Legacy Ruby
- Fearlessly Refactoring Legacy Ruby - RubyKaigi 2016
- Surgical Refactors // Speaker Deck
- testdouble/suture: 🏥 A Ruby gem that helps you refactor your legacy code
- レガシーなコードを恐れずリファクタリングするということ #RubyKaigi 2016 Keynote - Togetterまとめ
Sutureというgemを作った、そして、その使い方を下記のリポジトリのコードのリファクタリングを進めながら解説する内容でした。
上記リポジトリは、下記のリポジトリを元にRuby向けに作成されたリファクタリングの練習向けのサンプルコードのようです(英語が読めなかったので、ニュアンスが異なるかもしれません)。
How to create bindings 2016
- How to create bindings 2016 - RubyKaigi 2016
- How to create bindings 2016 - Kouhei Sutou - Rabbit Slide Show
- ライブデモで熱血指導! Rubyのバインディング開発者になろう 2016 #RubyKaigi #RubyKaigiA - Togetterまとめ
バインディングの方法が複数あることを知らなかったので、タメになりました。
セッションの内容はGI推だったのですが、Tensorflowが使用しているというSWIGを掘り下げたい気持ちになっています。
Writing A Gameboy Emulator in Ruby
- Writing A Gameboy Emulator in Ruby - RubyKaigi 2016
- Making A Gameboy Emulator in Ruby // Speaker Deck
- colby-swandale/waterfoul: Gameboy emulator written in Ruby-lang
- ゲームボーイエミュレータをRubyで書いてしまった人 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションは参加していません。
リポジトリを軽く眺めた感じだと、ピュアRubyっぽいので、エミュレータのコードリーディングするには敷居が低くて良さそうです。
Exploring Big Data with rubygems.org Download Data
- Exploring Big Data with rubygems.org Download Data - RubyKaigi 2016
- Kaigi - ruby_kaigi_2016.pdf
- 最も多くダウンロードされているgemはこれだ! "ビッグデータ" rubygems.org を探る #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
まだRails3のダウンロードが多いそうです。
How DSL works on Ruby
- How DSL works on Ruby - RubyKaigi 2016
- How DSL works on Ruby
- Rubyコミッターが語る いかにしてRuby上でDSLを動作させるか #RubyKaigi #RubyKaigiB - Togetterまとめ
最後のほうで、下記の書籍が紹介されていたようです。聞き逃していました。色々付属品があるようですが、電子書籍単体であれば25ドル程度でした。
Learn Programming Essence from Ruby patches
- Learn Programming Essence from Ruby patches - RubyKaigi 2016
- Learn Programming Essence from Ruby patches // Speaker Deck
- Rubyパッチからプログラミングのエッセンスを学ぶということ #RubyKaigi #RubyKaigiA - Togetterまとめ
内容には難しくて追いつけない感じでした。
A Nil Device, a Lonely Operator, & a Voyage to the Void Star
- A Nil Device, a Lonely Operator, & a Voyage to the Void Star - RubyKaigi 2016
- A Nil Device, A Lonely Operator, and a Voyage to the Void Star // Speaker Deck
- "Don't be a lonely operator!" nilの性質を探る旅 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
こども向けのRubyの本の著者の方でした。すでに「たのしいプログラミング PYTHONではじめよう!」として邦訳が出ているPython for Kidsと同じシリーズのようです。
Web Server Concurrency Architecture
- Web Server Concurrency Architecture - RubyKaigi 2016
- Web Server Concurrency: Slides
- 基礎から徹底解説! Webサーバにおける並行処理アーキテクチャ #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
Ruby Reference Manual 2016 Autumn
- Ruby Reference Manual 2016 Autumn - RubyKaigi 2016
- rabbit-slide-okkez-rubykaigi2016 - Kenji Okimoto - Rabbit Slide Show
- "刷新計画"から"貢献する手段"まで Rubyリファレンスマニュアル運営の現在 #RubyKaigi #RubyKaigiB - Togetterまとめ
地道に活動されていて、色々大変なのが伝わってきました。
Pwrake: Distributed Workflow Engine based on Rake
- Pwrake: Distributed Workflow Engine based on Rake - RubyKaigi 2016
- Pwrake: Distributed Workflow Engine based on Rake // Speaker Deck
- masa16/pwrake: Parallel Workflow extension for Rake, runs on multicores, clusters, clouds.
- 高性能並列実行を目指して Rakeベースのワークフローエンジン Pwrake 紹介 #RubyKaigi #RubyKaigiA - Togetterまとめ
内容はむずかしくてよくわからなかったのですが、Rakeの並列化のスタンダードがないことだけは把握できました。
Building maintainable command-line tools with mruby
- Building maintainable command-line tools with mruby - RubyKaigi 2016
- Building maintainable command-line tools with MRuby // Speaker Deck
- mrubyで作るワンバイナリなCLIプラットフォーム mruby-CLI 紹介 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
mruby-cli
というものを使用して開発すると、クロスプラットフォームなビルドをしやすいようです。
Data Analysis in RUby with daru
- Data Analysis in RUby with daru - RubyKaigi 2016
- Data Analysis in RUby with daru // Speaker Deck
- v0dro/daru: Data Analysis in RUby
- Rubyでデータ可視化("Data Analysis in RUby") DARU 紹介 #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションは参加していません。
データ解析で活用できる次のようなgemが紹介されたようです。
- domitry/nyaplot: interactive plots generator for Ruby
- dilcom/gnuplotrb: The repository has been moved to
- topfunky/gruff: Gruff graphing library for Ruby
- symengine/symengine.rb: Ruby wrappers for SymEngine
- gau27/spice_rub: [WIP]Ruby wrapper for the NASA-JPL CSPICE library via SciRuby
Modern Black Mages Fighting in the Real World
- Modern Black Mages Fighting in the Real World - RubyKaigi 2016
- Modern Black Mages Fighting in the Real World
- Fluentd v0.14 におけるプラグイン互換性対応 『現代の"リアル"黒魔術師』登場 #RubyKaigi #RubyKaigiB - Togetterまとめ
めちゃくちゃ早口なのにちゃんと聞き取れる、稀有な方でした。
聞いてる間、ここまでするならもう人間系で解決すべきではと思っていたのですが、ユーザーの特性からやむを得ず、という話がちゃんと最後に出て、納得できました。インフラだから仕方ないというツイートもちらほら見かけました。
この黒魔術が悪さするか、浄化されたときに改めてセッションしてほしい内容でした。
SciRuby Machine Learning Current Status and Future
- SciRuby Machine Learning Current Status and Future - RubyKaigi 2016
- SciRuby Machine Learning Current Status and Future // Speaker Deck
- SciPyインスパイアのSciRuby紹介 機械学習の今とこれから #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
SciPyまわりのことを知りたい状況だったので助かります。
JRuby 9000 Last Year, Today, and Tomorrow
- JRuby 9000 Last Year, Today, and Tomorrow - RubyKaigi 2016
- RedHatの中の人が語る JRuby 9000 のメジャーリリースからの1年、そして今後 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
3日目のセッション
Ruby Committers vs the World
- Ruby Committers vs the World - RubyKaigi 2016
- 今年の最優秀パッチは? Ruby3.0の互換性は? GitHubへの移行予定は? コミッターが答えるRubyの現在と未来 #rubykaigi #rubykaigiA - Togetterまとめ
Gitの移行など、手を挙げる人が必要という話が身にしみました。
Ruby3x3: How are we going to measure 3x?
- Ruby3x3: How are we going to measure 3x? - RubyKaigi 2016
- Ruby3x3: How are we going to measure 3x
- 計測作業時の注意点も IBMエンジニアが語るJRuby徹底ベンチマーク #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションは参加していません。
Web Clients for Ruby and What they should be in the future
- Web Clients for Ruby and What they should be in the future - RubyKaigi 2016
- Web Clients for Ruby and What they should be in the future
- lostisland/faraday: Simple, but flexible HTTP client library, with support for multiple backends.
- 状態管理できるRuby製HTTPクライアントライブラリ Faraday 紹介 #RubyKaigi #RubyKaigiB - Togetterまとめ
ちょうど、通信仕様が未確定な機器と通信するプログラムの設計を求められていて、漠然とミドルウェアを挟むつもりでいたので、Faradayの解説は具体例として助かりました。
High Tech Seat in mruby
- High Tech Seat in mruby - RubyKaigi 2016
- [JA] High Tech Seat in mruby / Yurie Yamane - YouTube
- Rubykaigi2016 High Tech Seat in mruby
- mrubyでウォシュレット制御? UMLモデリングからライブデモまで徹底解説 #RubyKaigi #RubyKaigiA - Togetterまとめ
急場でmrubyを使用したわけではなく、ベースとしてmrubyとTOPPERSが絡んだプロジェクトがあるようです。
Deletion Driven Development: Code to delete code!
- Deletion Driven Development: Code to delete code! - RubyKaigi 2016
- Deletion Driven Development: Code to delete code!
- パーサを駆使して未使用コードをガンガン削除! 削除駆動開発(DDD)徹底入門 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションは参加していません。
ツイートからS式で盛り上がっている気配は感じていました。
It's More Fun to Compute
- It's More Fun to Compute - RubyKaigi 2016
- [EN] It's More Fun to Compute / Julian Cheal - YouTube
- ソートの音を聴け! メインホールがライブ会場に Rubyでシンセサイザーデモ #RubyKaigi #RubyKaigiA - Togetterまとめ
次のようなツールが紹介されていました。
- arirusso/topaz: MIDI syncable tempo in Ruby
- arirusso/micromidi: A Ruby DSL for MIDI
- arirusso/unimidi: Realtime MIDI IO for Ruby
- Sonic Pi - The Live Coding Music Synth for Everyone
Recent Advances in HTTP and Controlling them using ruby
- Recent Advances in HTTP and Controlling them using ruby - RubyKaigi 2016
- Recent Advances in HTTP, controlling them using ruby
- H2O開発者奥一穂さんによる HTTP/2 の対応状況とRackでの利用解説 #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションは参加していません。
Optimizing Ruby
- Optimizing Ruby - RubyKaigi 2016
- Rubyはなぜ遅いのか Rubyフルコミッター卜部さんが語る 400倍速くなる最適化アプローチ #RubyKaigi #RubyKaigiA - Togetterまとめ
- Optimizing Ruby // Speaker Deck
- [JA] Optimizing Ruby / Urabe, Shyouhei - YouTube
むずかしかったです。
Ruby Concurrency compared
- Ruby Concurrency compared - RubyKaigi 2016
- Ruby Concurrency Compared // Speaker Deck
- Lady Gagaから学ぶConcurrencyとParallelism!? Node.js, JVM, Erlang vs Ruby In Concurrency #RubyKaigi #RubyKaigiB - Togetterまとめ
このセッションには参加していません。
Hijacking syscalls with (m)ruby
- Hijacking syscalls with (m)ruby - RubyKaigi 2016
- [EN] Hijacking syscalls with (m)ruby / Franck Verrot - YouTube
- (m)ruby でシステムコールをハイジャックする #RubyKaigi #RubyKaigiA - Togetterまとめ
このセッションには参加していません。
Game Development + Ruby = Happiness
- Game Development + Ruby = Happiness - RubyKaigi 2016
- Game Dev + Ruby = Happiness? by Amir Rajan
- iOS Game『A Dark Room』開発者が語る ゲーム開発 + Ruby でハッピーになろう? #RubyKaigi #RubyKaigiB - Togetterまとめ
謎のゲーム出てくるセッションでした。
Dive into CRuby
- Dive into CRuby - RubyKaigi 2016
- Dive into CRuby // Speaker Deck
- ついていけない聴衆続出 "CRubyにどう貢献するか" #RubyKaigi 2016 Keynote - Togetterまとめ
おいてけぼりでした。