キーワードで振り返るRubyKaigi 2019@博多(#3)サーバーレス、スレッド、データサイエンス、Apple IIほか

こんにちは、hachi8833です。RubyKaigi 2019サイトにスライドや動画が続々掲載され始めていますね。前回はスライドを記事に貼っていましたが、今回からは控えめにします。


rubykaigi.orgより

そういえば、早くも来年のRubyKaigi 2020@松本のディレクトリができていますね。

誤りや追加情報などがありましたら@hachi8833までお知らせください。

「サーバーレス」


AWS Lambdaの中の人でRuby runtime for AWS Lambdaの作者である@alexwwoodさんのセッションでは、LambdaでのRuby実行の実演が中心でした。DynamoDBをActive Recordっぽく扱えるgemを紹介したり、イヌ写真をレーティングするデモアプリを動かしてみせたりしました。


AWSエンジニアである@tonguerooさんは例のRuby on Jetsの作者です。morimorihogeさんが「productionに乗せられるものを作れそう」とJetsに期待を寄せていました。

「データサイエンス」

4年前のRubyKaigi 2016@京都で@mrknさんのセッションを聞いたときは、Rubyにおけるデータサイエンス向けライブラリやツールはかなりお寒い状態だったと記憶しています。

参考: データサイエンスにおけるRubyの現在の位置づけと可能性 | しまねソフト研究開発センター

しかしその後@mrknさんをはじめ多くの方々がRed Data Toolsというプロジェクトを立ち上げて精力的に活動し、red-chainerフレームワークやpycall、Apache Arrowをはじめとして、今回のRubyKaigi 2019ではデータサイエンス/深層学習方面の発表が増えていて、4年前からは想像できないぐらいRubyのデータサイエンス方面が充実しつつあると感じられました。

参考: Red Data Tools - Rubyでデータ処理!


@sonotsさんと@hatappiさんのセッションはRed Chainerの速度をCumo(GPU向け数値計算ライブラリ)で改善したり、ONNXで他のフレームワークのモデルを利用する話でした。


「Programming Machine Learning」の著者でもある@nuscoさんのセッションは、深層学習の原理を解説するとともに、既存のライブラリをあまり使わずにRubyで深層学習をやってみるという企画でした。


Day1の@youchanさんのセッションは見られませんでしたが、幸いDay2夜のコード懇親会のNLP(自然言語処理)のテーブルで、@youchanさんのご指導のもとで私もNLPのいろはである「MeCabでの日本語品詞分解」を初めてやってみる機会を得られました🙏。コード懇親会では他にもさまざまなお題ごとにテーブルに分かれてもくもく楽しくコーディングしていました。

参考: MeCab: Yet Another Part-of-Speech and Morphological Analyzer

「ライブラリ」

CSVセッションを見たkazzさんによれば「リファクタリングがキレイな雰囲気で好感❤️」だったそうです。

「スレッド」「並列」

初日のキーノートの中で、「Rubyのスレッドについては、当時マルチコアの未来を予測できず、導入を後悔している」「GUILDやAutofiber(名前は変わるかも)が定着したらスレッドが使われなくなるようにできるのではないか」とMatzが話していたのが印象的でした。

Apple II

年のせいか個人的に最も胸アツのセッションでした😂。太古のApple II(正確にはApple IIc)で無理やりRubyを動かすという企画です。

6502 CPUはクロック1MHz(!)、メモリ容量もファミコンと大差ないときているので、そのままではCRubyはもちろん、ライブラリをすべて取っ払ったmrubyすら動かず、それ以前にgccが動きません😇。さらにApple IIのキャラクタモード(文字がROMに焼き込まれている)には英小文字がないという難攻不落ぶり。

そこで「nRuby」と称して全部6502アセンブラでRubyを書き下ろしたそうです。生成できるオブジェクトの上限は256個までと決める代わりに、Rubyの基本的な挙動は可能な限り再現するという手加減なしの追い込みに魂が震えました❤️。発表時点では惜しくも完全に動かすところまではいかなかったのですが、それでもアセンブラでテスティングフレームワークまで作ったのだそうです。Apple IIを直接プロジェクターにつないでやってるので、矢印を無理やりインポーズするなど工夫をこらしていました。

TK-80で遊んでいた私には、画面に映った6502アセンブラリストが懐かしすぎてうるっときてしまいました😭。カンペ見なくてもLDY、STA、BNEとかの意味を思い出せるっ!ゼロページアドレッシングモード!NMI!、IRQ!

参考: 6502 Instruction Set

1ドル=240円のあの時代、Apple IIはあまりにも高価でした(FDDとプリンタのフルセットで80万ぐらいだった覚えがあります💸)。

関連記事

キーワードで振り返るRubyKaigi 2019@博多(#1)

キーワードで振り返るRubyKaigi 2019@博多(#2)Rails、JIT、コントリビューション

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ

BPSアドベントカレンダー