イベントレポート Ruby

RubyWorld Conference 2024 参加レポート

イベントレポート Ruby

こんにちは!GMOペパボでエンジニアをしている@yumuです。

2024年12月5日〜6日の2日間、島根県立産業交流会館「くにびきメッセ」にてRubyWorld Conference 2024が開催されました。今年で16回目の開催となる本カンファレンスは、プログラミング言語「Ruby」の国内最大のビジネスカンファレンスです。私は普段からRubyを用いた開発に携わっていますが、このカンファレンスへの参加は今回が初めてでした。

本記事では、印象に残ったセッションの内容や、スポンサーブースの様子についてお伝えします。

  1. 全体の印象
  2. 印象に残ったセッション紹介
    1. クリエイティブコーディングとRuby学習
    2. Rubyプログラミングスクールからの採用と育成
    3. スパイクアクセス対策としてのpitchfork導入
    4. 長年運用されているサービスの主要データ移行をサービス停止せず安全にリリースしました
  3. スポンサーブース探訪
  4. おわりに

全体の印象

RubyWorld Conferenceで印象的だったのは、技術的な話題だけでなく、ビジネスの視点からもRubyの可能性を探るセッションが多かったことです。RubyKaigiやKaigi on Railsでは技術の話が中心なのですが、今回はRubyを活用した事業展開、エンジニア採用、人材育成などのテーマも多く取り上げられていました。

セッションの内容は幅広く、技術面では大規模サービスの運用ノウハウやパフォーマンスチューニングの実例など、明日から使えそうな知見が多く共有されました。一方で、エンジニアの採用・育成の話や、島根の企業のRuby活用事例、プログラミング教育の取り組みなど、技術以外の話題も充実していました。

松江市での開催というのも面白いポイントでした。東京のカンファレンスとは一味違う、地方ならではのテック企業の展開や、地域でのRubyコミュニティの盛り上がりを知ることができて新鮮でした。会場の雰囲気もとても良くて、休憩時間やレセプションでは登壇者の方々や他の参加者と気軽に話ができました。

レセプションのお刺身

印象に残ったセッション紹介

クリエイティブコーディングとRuby学習

株式会社スマートバンクの小芝美由紀さんによるクリエイティブコーディングとRuby学習のセッションでは、実際にRubyWorld ConferenceのロゴをRubyとp5.jsで作成したデモを交えながら、プログラミング学習の新しいアプローチが紹介されました。

このセッションにおけるクリエイティブコーディングとは、コードでビジュアルアート作品を作ることを指します。この手法の面白いところは、プログラミングの基礎を視覚的に理解できる点です。例えば変数や繰り返し処理の結果が直接目に見える形で表示されるため、それらの概念を体験的に学べるとのことでした。さらに「楽しみながら学べる」「手軽に試せる」という特徴は、プログラミング初学者の意欲を高めるのに効果的だそうです。

また、実践の場として、ワークショップ形式での学習を提案されていました。ワークショップとは、従来の教師主導の学習とは異なり、参加者が主体となって学び合い、ファシリテーターがサポートする学習の形式です。これまでも複数の技術イベントでクリエイティブコーディングのワークショップを開催されていて、2025年1月に開催される東京Ruby会議の前夜祭でもワークショップを開催されるそうで、プログラミング入門の新しい形として注目されています。

クリエイティブコーディングは、プログラミングを仕事のスキルとしてだけでなく、創造的な趣味として楽しむ可能性を見せてくれました。普段はビジネスロジックを書くことが多いRubyですが、もっと自由に遊べる言語としての一面も感じられて新鮮でした。

Rubyプログラミングスクールからの採用と育成

株式会社永和システムマネジメントの伊藤浩一さんはRubyプログラミングスクールからの採用と育成について話してくださいました。

同社は社員の約3割がプログラミングスクール出身者で、元警察官だった人や獣医師、教師など、かなり多彩なバックグラウンドを持つメンバーが活躍しているそうです。ペパボでもプログラミングスクール出身のエンジニアが多く在籍しているので、とても親近感を覚えました。

採用においては、組織文化(コミュニティ)とのマッチングを重視しており、「信頼できる人が信頼できると言っている人は信頼できる」というシンプルな考え方を大切にしているそうです。つまり、コミュニティ内での信頼関係が重視されるということで、私も技術力だけでなく、コミュニティから信頼される人になっていきたいと感じました。

また、エンジニアの育成については、エンジニアの成長の主役はあくまでもエンジニア本人であるため、会社はその成長を支える環境づくりに注力しているとおっしゃっていました。例えば、日報や1on1を通じてその人に必要な技術を見極めサポートしたり、資格取得の支援で体系的な知識習得を後押ししたり。さらに、複数のメンバーと1on1の機会を設けたり、様々な社内勉強会を開催したりと、エンジニアの成長をしっかりと支える仕組みが用意されているのが印象的でした。

スパイクアクセス対策としてのpitchfork導入

STORES株式会社のシムサンヨンさんによる、スパイクアクセス対策としてのpitchfork導入のセッションも面白かったです。ECサイトでよくある「○時から販売開始!」というケースで、開始時刻に大量のアクセスが集中してレイテンシが悪化する問題にどう対処したのか、具体的な解決策を説明していただきました。

特に興味深かったのは、問題の原因分析でした。unicornのワーカープロセスの挙動を調べてみると、リクエストが一部のワーカーに偏っていることが判明。これはunicornの仕様によるもので、処理を終えたワーカーが待ち列の先頭に入るため、同じワーカーが続けて仕事を受け取る仕組みになっていたとのことです。そのため、スパイクアクセスに備えて多くのワーカーを用意していたにもかかわらず、実際には一部のワーカーしか「温まって」おらず、アクセス集中時に十分な処理能力を発揮できるようになるまで時間がかかっていたということでした。

対策として採用したのが、Shopify製のunicornフォークである「pitchfork」です。pitchforkの特徴的な機能の一つが「refork」で、一定数のリクエストを処理した「暖まった」ワーカーをテンプレートとして、全ワーカーを再生成する機能です。これにより、全てのワーカーを効率的な状態に保てるようになったそうです。

導入の結果、2023年と2024年の同規模の販売時のパフォーマンスを比較すると、レイテンシの改善が見られたそうです。特にRubyの処理時間が大きく改善されており、低コストで導入できる効果的な対策として注目を集めていました。ただし、コネクションの継承やバックグラウンドで動くスレッドの扱いなど、fork safetyの確認は必要とのことです。

長年運用されているサービスの主要データ移行をサービス停止せず安全にリリースしました

STORES株式会社の山下隼人さんによる長年運用されているサービスの主要データ移行をサービス停止せず安全にリリースしましたのセッションでは、5,000万件を超える注文データのデータ構造を移行するプロジェクトについて紹介されました。

注文データは日々データ量が増え続け、頻繁な書き込みと読み込みが発生し、過去データも継続的に参照される重要なものです。長年の運用で積み重なった改修により、当初は最適だったデータ構造が現状に適さなくなってきていました。このセッションでは、24時間稼働のサービスを止めることなく、どのように新しいデータ構造へと移行したのかが紹介されました。

移行は次のような手順で進められました。まず新しいデータ構造に対して二重書き込みを行い、その後書き込み先を変更するというアプローチを取りました。具体的には、最初は古いデータ構造で注文データを作成し新しい構造に変換する形から始め、次のステップで新しいデータ構造での作成→古い構造への変換という流れに切り替えました。

特に興味深かったのは、以下の2つのポイントです。

  • カナリアリリースをロードバランサーではなくアプリケーションレベルで実装。これにより、注文の一連の処理を一貫してカナリアかベースラインのどちらかで処理できるようにした
  • テストコードのカバレッジが不足する中、「動いているコード」を正として新旧で生成されたデータを比較することで品質を担保

実際の移行では、パフォーマンス低下や想定外のエッジケースなどいくつかの問題に直面したものの、これらの工夫により大きな問題なく移行を完了できたそうです。長期運用サービスではどこでも直面しうる「データ構造の移行」という課題に対する、実践的なアプローチが示されたセッションでした。

スポンサーブース探訪

スポンサーブースには、東京で開催される技術カンファレンスでは見かけることの少ない地元松江の企業が多くスポンサーとして参加しており、地域におけるRubyコミュニティの広がりを実感できました。

スポンサーブースで特に面白かったのは、株式会社ネットワーク応⽤通信研究所さんが展示していたファミコンゲームのデモです。スポンサーセッションのファミコン meets Rubyで紹介されていたゲームを実際にプレイできるというもので、私も挑戦してみました。通常のRubyよりもメモリ使用量を大幅に抑えたmruby/cを使うことで、ファミコンゲームのプログラミングが可能になるという点が印象に残りました。

一般社団法人Rubyビジネス推進協議会さんの、IoTの展示も印象的でした。SenStick4という超小型センサーボードにmruby/cを搭載したキットを使ったデモで、加速度、温度、湿度、気圧、照度など8種類のセンサーからデータを収集し、Bluetooth経由で通信。そのデータに応じてブラウザ上の部屋のカーテンが開いたり扇風機が動いたりするデモは、とても面白かったです。普段はWebアプリケーション開発でしかRubyを触っていない私にとって、Rubyの活用の幅広さを実感できる良い機会でした。

スポンサーブースの様子

おわりに

RubyWorld Conference 2024に参加して、技術的な学びはもちろん、Rubyコミュニティの活気を直接感じられてとても良かったです。まつもとさんが語ってくれたRubyの未来像や、明日から使えそうな技術的なノウハウの数々は、自分の開発者としての視野を大きく広げてくれました。

特に印象的だったのは、Rubyの活用の幅広さです。Webアプリケーション開発はもちろん、ファミコンのゲーム開発や小型IoTデバイスのプログラミングなど、普段の仕事ではなかなか目にすることのない使い方を知ることができて、新鮮な驚きがありました。

松江でRubyが確実に根付いているのを目の当たりにできたのも面白かったです。地元企業が積極的に参加し、次々と新しい取り組みにチャレンジしている様子を見て、Rubyの持つ可能性の大きさを改めて感じました。

次は自分も登壇者として参加したいなと思っています。今回のカンファレンスでたくさんの刺激と学びをもらったので、これを日々の開発に活かしながら、来年は自分の経験も皆さんと共有できたらいいなと思います!