2023 年 9 月 16 日(土)に松江 Ruby 会議 10 が開催されました。
新型コロナウイルスの影響で前回から 5 年が経過してからの開催となりました。
合計 55 名の方にご参加いただきました。
最初の発表は tagomoris 氏より「Names, Modules, and Namespaces」というタイトルで、クラス・モジュールの Collisions(衝突)とその回避のためのプロポーザル実装の話でした。
Ruby の内部実装に踏み込む濃い内容の発表でしたが、軽妙なトークで会場は盛り上がりました。
また、tagomoris 氏から「実家が近くて育児を任せることができてとても参加しやすいイベント」というコメントもいただき、ほっこりする一場面もありました。
6 年開発を続けた Rails アプリをフォークして、別プロダクトとして新規開発した案件を踏まえた発表でした。
技術的負債は事業を続けてこられた結果なので、リスペクトを持って取り組む課題と言われたことが印象に残りました。
課題だった gem を削減したこと(Rails の標準的な gem に代替)。デザインパターンの改善など課題ごとに紹介がありました。
特にマイクロサービス化の結果として生じた課題について、会場から共感する反応が多くありました。
サービス提供中の改善は難しいため、サービスのリリース前がチャンスであると強調されていました。
また、システム改善 Day を設定する取り組みを行なっており、その中で不要なコードの削除が特に進んだとのことでした。
RubyKaigi 2022 で発表され、その後も改良が進められている ruby.wasm(WebAssembly)についての発表でした。
2023 年 7 月にリリースされた ruby.wasm 2.1 の改良点の紹介など、現在の ruby.wasm がどこまでできるようになっているか、というホットな内容でした。
サンプルコードを紹介しつつ、DOM 操作、Canvas 操作、オーディオ操作などのデモがあり、最終的には ruby.wasm 上で動作するゲームのデモがあり、観客からは拍手が起こっていました。
“Ruby っぽいけど Ruby じゃない”、自作プログラミング言語「Shiika」が紹介されました。
直感的に書ける言語がいいが、型は書きたい。そんな「静的型言語で書きやすさ志向」という既存言語にはあまりない領域を狙ったプログラミング言語でした。
インスタンスを作らない特別な型やクラスの上にメタクラスを用意するなど、もし Ruby が静的型付け言語だったらこんな感じだったかも?という興味深い視点を聞くことができました。
ブランチ名(例えば、master や main)を使った URI は、開発が進むと以前に参照したときとコードが変わる場合があり困ることについての考察でした。
この問題は参照先を permalink にすると避けられますが、例えば GitHub のブラウザの画面から permalink をコピーするのは手間なため、Ruby で permalink を作成するツール “dpu: determine permanent URI” を作ったそうです。
実際にエディタの拡張からツールで生成した URL を呼び出すデモがありました。
ツールもあるので、ソースコードを参照するのにブランチ名(master や main)を使った URI はやめようと呼び掛けられました。
ESP32 上で mruby を動かすための mruby-esp32 をご紹介いただき、そのペリフェラル API への取り組みについてお話しいただきました。
ペリフェラルとは周辺機器のことで、その周辺機器を扱うための API とのことでした。
現在は処理系ごとに仕様が違いますが、ペリフェラル API の共通の仕様を決める動きがあるとご紹介いただきました。
また、mruby-esp32 のペリフェラルクラスの作成についてお話しいただきました。
今回のデモ用に基板も製作されてきたとのことで、実際にデモで赤い LED を光らせた時は会場が盛り上がりました。
LT の最初の発表者として、まつもと ゆきひろ 氏に発表していただきました。
mruby におけるパッケージマネージャ、mrbgems の紹介でした。
すでに 300 を超える mgem が公開されているとのことでした。組み込み向け言語でパッケージマネージャがあるケースは少ないそうです。
全国と松江におけるプログラミング事情のご説明でした。
前半は全国のお話で、12 年前はフローチャートによるプログラミング教材だったものが、JavaScript と HTML で本格的な EC サイトを作る内容になってきたとのことです。
後半は松江のお話で、15 年前に中学生 Ruby 教室で Ruby Shoes を使っており、8 年前から中学校の授業でも Smalruby 1.0 で Ruby を使うようになり、現在は小中学校で Smalruby 3 を使うようになったとのことです。
松江では Ruby City MATSUE プロジェクトもあって、特に小中学生でも Ruby を学ぶ環境が整っていると印象的でした。
カニロボをプログラミングで動かして競う「Matz 葉がにロボコン」の紹介でした。
カニロボは、mruby/c が動作するマイコンを搭載しており、Smalruby でプログラミングして動かすとのことでした。
ロボコンが継続する教育の機会(一回の講座で終わらない)となっているそうです。
年内に安来で「Matz 葉がにロボコン」の地区大会が開催され、来年に松江で「Matz 葉がにロボコン」の開催を予定されているそうです。
GTK2、GTK3 に次ぐ GTK4 対応のグラフィックライブラリ「gtk4 gem」の紹介でした。
非常にシンプルなコードでプリミティブやフォーム(温度の入力・変換フォーム)を表示することができるサンプルが紹介されました。
古民家を購入して DX のテストフィールドとして使っているお話でした。
また、開発されたsensingplazaというアナログデータの収集や機器の状態変化、ロケーション情報を扱う Rails アプリケーションの紹介がありました。
人工透析装置と電子カルテの情報を相互にやりとりする通信装置の開発事例紹介でした。
通信装置にはラズパイを利用し、ラズパイの全てのタスクを Ruby アプリケーションで実現されているそうです。
また、Ruby アプリケーションは講演者の東 裕人 氏が開発している組込システムのためのアプリケーションフレームワーク「Alone」を採用されているそうです。
島根県立中央病院で、この通信装置(24 台)を約 2 年間安定して運用しているとのことでした。
会場に参加されていた他の方々が使用されている自作キーボードの写真も表示され、今回挑戦した動機についてお話しいただきました。
自作キーボードは今回が初めて作成されたとのことで、慣れない作業に戸惑いながらも完成させたとのことでした。
Ruby City MATSUE プロジェクトのバージョンアップ版である Ruby City MATSUE 2.0 をご紹介いただきました。
前身のプロジェクトから、人材育成・交流を進化させ、更に新規事業開発などを追加されたとのことです。
市役所でプロジェクトを担当できる確率は 1.99%とのことで、担当できることは「ラッキー!」
事業的テーマ、教育的テーマ、お祭り的テーマがあり、2.0 プロジェクトではバスケット B リーグの試合で冠スポンサーも行うとのことでした。
STORES に移籍されたフルタイム Ruby コミッタの遠藤 侑介 氏から、Ruby から TOML ファイルを読むための gem、perfect_toml の紹介でした。
既存のものと比べると、最新仕様に対応している、シンプルで速い実装になっているという特徴があるそうです。
LT の最後の発表者として、Ruby のイベントの協賛について井上 浩 氏にお話しいただきました。
過去に開催された Ruby のイベントの各企業の協賛数がグラフでスライドに表示され、どの企業がイベントの協賛に多く取り組まれているのかをご紹介いただきました。
見知った企業名が表示されるため、会場も興味深く聞いていました。
残念ながら諸事情で LT の発表者が 1 人参加できなかったので、ビンゴをしました。
ビンゴの景品をご提供いただき、ありがとうございました。
Ruby の安定版を保守されている Ruby コミッタのなかむら(う) 氏から、Ruby の互換性に関する発表でした。
Ruby v0.49 のようにユーザが少ない頃は、互換性のない変更も入れやすかったですが、ユーザが増えるとそうもいきません。
かといって Ruby 1.8 や Python 2 のように旧版を長く保守すると、コミュニティの分断にもつながります。
そのため、Ruby の各リリースは約 3 年をサポート期限としていること、また非互換が入る場合は最低 1 年は warning を出すことで機能追加と滑らかな移行の両立を目指しているとのことでした。
なかむら(う) 氏と、まつもと ゆきひろ 氏のざっくばらんな対談でした。
Ruby との関わりやお仕事といった普段の生活から始まり、Ruby コミュニティの話題で盛り上がりました。
Matsue.rb 代表。松江 Ruby 会議 10 実行委員長。
松江の Rubyist .ぷよぷよで娘たちにボコボコにされる.
Shiika の作者。最近の興味はスキューブとヨーヨー。
Ruby とサッカーをこよなく愛する松江市在住の Ruby プログラマ。
Ruby プログラマ。松江 Ruby 会議が久しぶりのイベント参加。
松江在住のエンジニア。最近、Matsue.rb に通っている。