こんにちは @hsbt です。引き続き原神をプレイしていますが Horizon Forbidden West の拡張 Burning Shores も発売してしまい 1日24時間では足りなくなっています。困った...。
さて、今回は 5/11-13 に長野県松本市 まつもと市民芸術館 で開催される RubyKaigi 2023 と ANDPAD の取り組みについてご紹介します。
フェローの hsbt が登壇します
私、@hsbt が How resolve Gem dependencies in your code?というタイトルで2日目の 5/12 9:40-10:10 の時間に大ホールにて発表します。
どのような発表を行うか、という予告編として RubyKaigi 2023 のオーガナイザーに提出した proposal の中から Details と Pitch を読むとだいたい伝わるのではないかと感じたので全文そのままで公開します。
Details
昨年は一旦お休みしていましたが、継続して進めている Gemification の活動は Ruby 3.1 でひと段落し、Ruby のバージョンに依存したライブラリ以外は全て gem として任意のタイミングでアップデートできるようになりました。
Default Gems や Bundled Gems については、多くの人がほとんど意識をせずに利用可能となり、Ruby をインストールした時点で最高の開発者体験を提供できる仕組みが整えられました。その一方で default gems から bundled gems にしたことで、Rails をはじめとするアプリケーションでは、Gemfile に bundled gems を明示的に記載する必要があり、今までやらなくてよかった作業を増やしてしまったというマイナスの面もあります。
本発表では、上記のようなメリットを紹介しながらも、以下のような残されたデメリットについて、どのような解決策を提供するのか、という話を実装を含めて時間のあるかぎり提案します。
- default gems から bundled gems に変更したときに Rubyist がやる必要があるアクションと、解決策としての RubyGems/Bundler のコード。
- C ext を default gems や bundled gems としてインストールした時に発生する不完全な状態の紹介と解決策(主に psych, digest, rbs, debug の話題)
- chruby のように GEM_HOME を共有するときに C ext な gem がなぜ問題を引き起こすかの解説と解決策の提案
- require_ruby_version を設定したことで少し古いバージョンの Ruby で gem install でインストールできなくなる体験の解決策の提案
また、Bundler に大幅に変わった依存解決の方法である PubGrub の紹介から RubyGems への展開を加えた上で、上記のような問題を解決しながらも、将来的に Ruby のライブラリ管理をどのようにしていくつもりかについて改めて紹介します。
Pitch
Gemfiation の計画の成果として、net-imap や net-smtp などに代表される bundled gems は新たなメンテナを迎えて Ruby の開発とは独立してメンテナンスが行えるようになりました。RubyKaigi ではこのような成果を紹介することで、メンテナンスが宙に浮いたままのライブラリへ新たなメンテナを募集し、Ruby の開発により多くの人を巻き込むきっかけを提供したいと思います。
また、アプリケーションのライブラリの依存性を解決するために欠かせない RubyGems と Bundler について、少しずつ進めているランタイムレベルの統合について、まずは PubGrub という依存性解決のライブラリをまずは共通にするという目標があります。この目標についても実際にどのようなコードによって共通化がなされるか、などコードオーガナイズの戦略についても聴衆に共有します。
実は上に書いてある内容の中で「require_ruby_version を設定したことで少し古いバージョンの Ruby で gem install でインストールできなくなる体験の解決策の提案」は Proposal を出した後にさて直すかと再現試行をしている時に発生しないことに気が付き、なんかおかしいな...?とコードを読み進めていくと、なんと Respect required_ruby_version
and required_rubygems_version
constraints when looking for gem install
candidates by deivid-rodriguez · Pull Request #4110 · rubygems/rubygems に解決されていました。
発表予定の内容が一つ減ってしまったので、最近 ANDPAD の社内で見かけた「bundle update --conservative rails を実行したときの挙動が期待通りにならない」という事例について、その原因や解決策について紹介する予定です。RubyGems や Bundler は皆さん毎日使っているソフトウェアの一つと思いますが、そんなソフトウェアの「ん?」というような挙動が何故起きるのか、どうすればよいのかについて理解を深めたい方は是非お越しください。
Platinum Sponsors としてスポンサーします
このパートは技術広報の鳩が書きます。
アンドパッドは昨年に続き、Platinum Sponsorとして協賛します!
私の他にも開発に携わるエンジニアが多数参加しますので、気軽に情報交換などしていただけると嬉しいです。
また、出展ブースではクイズ企画を用意しています。
題して、
「ほんとうにあったテックブログどれでしょうクイズ」!
ブースにクイズを出題するモニターを用意してますので、 表示される3つのタイトルからほんとうにあると思ったテックブログのタイトルを1つ選び、 QRコードを読み込んでページへアクセスしてみてください。
クイズに正解しSNSへ記事をシェアしていただくと、「ANDPADおみくじ」が引けます。 おみくじの結果によって、ノベルティがもらえます!
私もやってみましたが、運営メンバーが考えたフェイクタイトルは、なかなか巧妙です。
ぜひ挑戦しにきてください!
今回のノベルティは、以下の3種。
大吉!お祭り気分を盛り上げる「ANDPADフェスタオル」
キーボードをモチーフにしてエンジニアらしさを表現したマフラータオルです。
只今鋭意製作中につき、デザインは会場でお確かめください!
当たった際にはぜひタオルを広げて記念撮影していただきたいです!
中吉!ノベルティもお土産も入る「ANDPADデカエコバッグ」
中央にANDPADのロゴをあしらった大きいエコバッグです。
ブースでもらったノベルティを全部入れられるくらい大きいです。
大容量ながら小さく折りたためて、カラビナも付いているので持ち運びも便利です。
小吉!軍手をしながらタイピングできる「ANDPAD軍手V2」
昨年も好評だったANDPAD軍手がバージョンアップ!
今回はフィンガーレスタイプなので、繊細な作業やスマホの操作も妨げない優れものです。
「冬に指がかじかむのでフィンガーレス手袋をしながらタイピングしている」というエンジニアの声からノベルティ化にいたり、
ANDPADらしさを追求するために、みんな大好きな永遠のヒーロー色「赤」を採用しました!
どれも実用性と面白さを追求し、みんなで意見を出し合って考えた渾身のノベルティです。
ぜひ、アンドパッドブースへ遊びにいらしてください。
数には限りがありますので、お早めに!
会期前に Drinkup を開催します
ANDPAD は地域 Rubyist コミュニティの Asakusa.rb が開催する RubyKaigi 2023 に参加するために来日した海外ゲストを歓迎するイベント Asakusa.rb Welcome Drinkup にスポンサードします。
Asakusa.rb Welcome Drinkup for RubyKaigi 2023 - Asakusa.rb
会場は ANDPAD 秋葉原オフィス 9F の ANDPAD コミュニティです。まだ参加枠はあるので、RubyKaigi 2023 直前に海外ゲスト、ANDPAD や Asakusa.rb のメンバーと直接コミュニケーションを取りたいという方は上記の参加登録サイトから登録をし、ぜひお越しください。
おわりに
また、アンドパッドでは一緒に働く仲間を募集しています。
ご興味を持たれた方はカジュアル面談や情報交換のご連絡をお待ちしております。
RubyKaigiで話しかけていただくのも大歓迎です。