DRECOMのエンジニア中島です

普段はクライアントサイドでC++を書いているのですが

弊社のサーバーサイドで広く使われているRubyの理解を深めるため、

RubyKaigiに初参加いたしました。

この記事では、二日目で印象に残ったセッションをいくつか紹介いたします。

keynote

オブジェクト指向の継承について言語の歴史から、

Rubymoduleシステムがどういう流れを汲んでいるのか、その代表的な使い方の紹介

といった内容でした。

テクニカルな内容はもちろんのこと、最も印象に残ったのは、

プログラミング言語は機械が解釈するだけのものだけではなく

人間がどういうふうに考えているか、心理的な側面も非常に強い

という言葉です。Matzさんがあくまで処理速度が早いといった機械的な面だけではなく、

いかに人間的に書けるか という点を重視していることが伝わりました。

セッションの締めくくりのRubyコミュニティのRubyへの貢献、感謝の言葉も印象深かったです。

技術コミュニティへの参加、貢献の大切さを学びました

What visually impaired programmers are thinking about Ruby?

視覚障がいのある方がRubyをコーディングする時の周辺環境の紹介とその技術についてのセッションでした。

VoiceOver, TalkBack, Orca, Narrator, JAWS, NVDA, など音声読み上げ、

点字ディスプレイなどを用いてどのようにコードを読んでいるか というデモも行われました

恥ずかしながら、ソフトウェアのこの領域で利用されている技術を知らず

普段このようなAccessibilityに気を向けたことがあまりなかったので

非常に勉強になったとともに、今後エンジニアとしてやっていくにおいて、必ず頭に入れておくべきだと感じました

例えば、

HTMLに適切なタグづけすると、キーボード+音声ナビゲーションでの要素単位ジャンプが素早く行える

OS標準のGUIを使わないと、音声読み上げで認識しづらい、操作しづらい

という知見も勉強になりました。

普段自分が使っているデバイスのUIにいかに考えが囚われていたかという認識ができました。

Ruby, Opal and WebAssembly

Opalを用いた、DXOpal(https://github.com/yhara/dxopal)という

ブラウザ上で動くRubyゲームライブラリの実装の紹介と、内部実装の話でした。

RubyKaigi前にはaltJSの選択肢として知らなかったので、非常に興味深かったです。

Opal自体をJSにトランスパイルし、ajaxrbファイルを取得するため、

トランスパイル作業とローカルサーバーを立てる作業がいらず、リアルタイムで実装が確認できるところが、尖っていて面白かったです

ブラウザゲームを製作する一つの手段として、今後Opal周辺もチェックしたいと感じました

全体を通して

普段仕事でのRubyとの関わりは、Ruby on Railsのコードを読むことが中心でしたが

それだけでは見えてこないRuby周辺の動きや、Rubyを取り巻くその他の言語

Cはもちろんのこと、OpalでのJavaScript代替としての利用、

Rustを用いたnative extension実装を可能にする Helix(https://github.com/tildeio/helix)、

他にも言語問わず、全ソフトウェアで考えるべきなAccessibilityの話など、

メインでRubyを書いていなくとも、エンジニアとしての成長のヒントがたくさん転がっていて

非常にためになるカンファレンスだと感じました