RubyKaigi 2016に参加した

RubyKaigi 2016に初参加しました。

感想

5月ごろにチケットが購入可能になり、近場の京都(といっても三日間の交通費だけで5000円以上かかりました…)で開催されると知って、今がチャンスと思いチケットを超早割で購入しました。

仕事では、irbを計算機代わりに使うか、業務上は不要な、個人的な不安を解消するためのテストサーバーをsinatraで作ったりする程度しか、Rubyとの関わりはありません。
私事では、今の会社に入社するまではRubyの本をを読んだり短いコードを書いたりが多かったのですが、どうにも仕事と縁遠いものに時間を使うことに罪悪感があり、徐々に減っていました。
今は、担当業務になることが少なからずあるArduinoまわりでC/C++書くか、Pythonの勉強をすることが多いです。 ただ、Rubyが好きという気持ちは変わらず持っていたので、参加しました。

セッションの中で、「めんどくさい」のような、印象とか感性のようなところを聞けたのは助かりました。設計や実装のところでそのあたりの共通認識を得られることが普段あまりないため、セッションの中で出てくる話題にうなづいたり、笑った経験は心の支えになります。

今回は良い思い出にしておきたかったので、人と接することがないように心がけました。
ぼっちは人付き合いでいやなことがあると、逃げがちなので。
来年は懇親会にも出て、他の方とお話できればと思っています。

スピーカー、スタッフ、スポンサー、他の参加者の方々、ありがとうございました。

会場について

国立京都国際会館はすごく広く、庭園もあり、コンセントなどの設備も整っていて、申し分のない場所でした。ぼっちでも過ごしやすかったです。

ポケモンはアーボとかコラッタくらいしかいなかったようなのでタマゴを育てるくらいしかアプリを起動する理由はありませんでした。

英語について

英語のセッションもスライドがあるしフィーリングで聞き取れるのでは!?と思って参加したのですが、まったく無理でした…。
事前に興味のあるセッションを調べて、英語のものも座りはしたのですが、ほとんど他の方のツイートから内容を類推するという気の重い時間を過ごしました。途中から日本語のセッションが行われている場合はそのセッションを聞く方針に変えることに…。
英語の勉強しなければ、と思いました。

忘れ物について

iPhoneを置き忘れてしまったのですが、受付に届いていました。
届けてくれた方、ありがとうございました。

1日目のセッション

Ruby3 Typing

『今、静的型が流行っているから型情報をRubyにつけよう』ということではなく、もっと未来を見据えて、そもそも『型とは何か』から考えていきたい。

他の言語では困らないけどRubyでは困ることが、Rubyの言語の実装だけで解決できるのが理想なのかなぁと思っています。それか、Rubyを使うだけで型の本質に触れられるとか。
記述を増やすこと自体を絶対にしない、という心持ちではないようなので、増える場合はその記述が「余分ではない」ことの説明が十分になされて、書くことを苦行に思わず、書くこと自体が楽しいといいと思います。

次の記事で、セッションの中ででてきたNominal Subtypingといった用語が解説されています。

セッションの後の質問で指摘されていたSoft Typingという用語の使い方がアカデミックな分野の定義と異なることについて、ツイートがまとめられています。

dRuby in the last century.

oso-matzとjushi-matzでおどろいたのだけど、Toggeterのまとめを読んでいると、すでに他の場で使ったことがある様子でした。また見れるかも。

Twitterも最初はdRubyでプロトタイプを作るなどしていたそうなので、Raspberry Piでいろいろ遊んでみようかと思います。

ErRuby: Ruby on Erlang/OTP

このセッションには参加していません。

Togetterのまとめでは.ではなく、.|でメソッドを非同期に呼び出せることは印象が良かったようです。

Who reordered my code?!

このセッションには参加していません。

Togetterのまとめからは英語とスレッドの難しさがうかがえます。

Welcome to haconiwa - the (m)Ruby on Container

初めてデカ外人クイズに参加しました。たのしかったです。

セッションの内容は既存のコンテナシステムが複雑という前提で、haconiwaはLinuxの機能を直接制御しているからシンプルですよ、と認識しました。

セッションの最後の質問タイムでFreeBSDで動作するか聞かれたことに対して、実装すれば可能というような答えではなく、Linuxでしか動かない空気感が出てしまったので、まだ、haoniwaが動作する上で必要なOSの機能が何かまとめられている段階ではない様子でした。

A proposal of new concurrency model for Ruby 3

スレッドから逃げる人生なのでGuildのおかげで逃げ切れるかもしれません。

Play with GLSL on OpenFrameworks

このセッションには参加していません。

A Tale of Two String Representations

このセッションには参加していません。

Ropeという用語を知りませんでした。
次のIBMの記事でJavaのStringクラスの実装とRopeの実装の比較が解説されています。セッションの内容は、RubyのStringの実装とJRuby上でのRopeの比較のようです。

Isomorphic web programming in Ruby

セッション内ではとくに触れられていなかったのですが、スライドのWebページ自体がOpalとHyaliteで開発されているようです。

Gitのコミット単位で実装の解説を進められていて、大変わかりやすかったです。

Unifying Fixnum and Bignum into Integer

解説の中でじわじわと影響範囲が広がっていくのですが、アフターフォローもバッチリなセッション内容でした。

How to create multiprocess server on Windows with Ruby

このセッションには参加していません。

Ups and Downs of Ruby Internationalization

書籍の「APIデザインケーススタディ」で解説されているような形で、upcaseとdowncaseの適切な仕様を検討していく流れが体感できました。swapcaseのようにそもそも必要?みたいなくだりは英語が分からないなりに一緒に楽しめました。

Scalable job queue system built with Docker

このセッションには参加していません。

Main Hallのセッション聞きながら、このセッションが盛り上がっているのはツイートからめちゃくちゃ伝わっていました。クックパッドさんは必要なものを自家製して、オープンソースに還元されているのが開発者ブログからもうかがえて、好印象です。

2日目のセッション

Fearlessly Refactoring Legacy Ruby

Sutureというgemを作った、そして、その使い方を下記のリポジトリのコードのリファクタリングを進めながら解説する内容でした。

上記リポジトリは、下記のリポジトリを元にRuby向けに作成されたリファクタリングの練習向けのサンプルコードのようです(英語が読めなかったので、ニュアンスが異なるかもしれません)。

How to create bindings 2016

バインディングの方法が複数あることを知らなかったので、タメになりました。

セッションの内容はGI推だったのですが、Tensorflowが使用しているというSWIGを掘り下げたい気持ちになっています。

Writing A Gameboy Emulator in Ruby

このセッションは参加していません。

リポジトリを軽く眺めた感じだと、ピュアRubyっぽいので、エミュレータのコードリーディングするには敷居が低くて良さそうです。

Exploring Big Data with rubygems.org Download Data

このセッションには参加していません。

まだRails3のダウンロードが多いそうです。

How DSL works on Ruby

最後のほうで、下記の書籍が紹介されていたようです。聞き逃していました。色々付属品があるようですが、電子書籍単体であれば25ドル程度でした。

Learn Programming Essence from Ruby patches

内容には難しくて追いつけない感じでした。

A Nil Device, a Lonely Operator, & a Voyage to the Void Star

このセッションには参加していません。

こども向けのRubyの本の著者の方でした。すでに「たのしいプログラミング PYTHONではじめよう!」として邦訳が出ているPython for Kidsと同じシリーズのようです。

Web Server Concurrency Architecture

このセッションには参加していません。

Ruby Reference Manual 2016 Autumn

地道に活動されていて、色々大変なのが伝わってきました。

Pwrake: Distributed Workflow Engine based on Rake

内容はむずかしくてよくわからなかったのですが、Rakeの並列化のスタンダードがないことだけは把握できました。

Building maintainable command-line tools with mruby

このセッションには参加していません。

mruby-cliというものを使用して開発すると、クロスプラットフォームなビルドをしやすいようです。

Data Analysis in RUby with daru

このセッションは参加していません。

データ解析で活用できる次のようなgemが紹介されたようです。

Modern Black Mages Fighting in the Real World

めちゃくちゃ早口なのにちゃんと聞き取れる、稀有な方でした。

聞いてる間、ここまでするならもう人間系で解決すべきではと思っていたのですが、ユーザーの特性からやむを得ず、という話がちゃんと最後に出て、納得できました。インフラだから仕方ないというツイートもちらほら見かけました。

この黒魔術が悪さするか、浄化されたときに改めてセッションしてほしい内容でした。

SciRuby Machine Learning Current Status and Future

このセッションには参加していません。

SciPyまわりのことを知りたい状況だったので助かります。

JRuby 9000 Last Year, Today, and Tomorrow

このセッションには参加していません。

3日目のセッション

Ruby Committers vs the World

Gitの移行など、手を挙げる人が必要という話が身にしみました。

Ruby3x3: How are we going to measure 3x?

このセッションは参加していません。

Web Clients for Ruby and What they should be in the future

ちょうど、通信仕様が未確定な機器と通信するプログラムの設計を求められていて、漠然とミドルウェアを挟むつもりでいたので、Faradayの解説は具体例として助かりました。

High Tech Seat in mruby

急場でmrubyを使用したわけではなく、ベースとしてmrubyとTOPPERSが絡んだプロジェクトがあるようです。

Deletion Driven Development: Code to delete code!

このセッションは参加していません。

ツイートからS式で盛り上がっている気配は感じていました。

It's More Fun to Compute

次のようなツールが紹介されていました。

Recent Advances in HTTP and Controlling them using ruby

このセッションは参加していません。

Optimizing Ruby

むずかしかったです。

Ruby Concurrency compared

このセッションには参加していません。

Hijacking syscalls with (m)ruby

このセッションには参加していません。

Game Development + Ruby = Happiness

謎のゲーム出てくるセッションでした。

Dive into CRuby

おいてけぼりでした。