morimorihogeです。RubyWorld Conferenceのプログラムが発表されましたね!RWCがあるともう年末を感じます。
少し間が空いてしまいましたが、銀座Rails#38の開催レポートになります。
銀座Railsについて
銀座Railsは3年以上継続して毎月開催されているRuby/Rails勉強会・発表コミュニティです。
技術的な内容にこだわらず、コミュニティ活動やRails開発者が興味を持つような開発一般の周辺トピックを扱っています。
過去の開催についてはConnpassのサイトをご覧ください。
銀座Rails開催レポート バックナンバー
銀座Rails#38 レポート
RailsのCIが同時に複数モジュールで落ちたときの対応方法の紹介
Yasuo Honda(@yahonda)さんの発表。
Rails本体のCIのテストが失敗した際の解決に向けた対応方法について、具体的な事例を順番に解説して頂きました。
RailsのCIについての背景から始まり、CIが落ちた際の原因に対する仮説を立て、問題を切り分け、立てた仮説が本当に問題の原因だったのかを調べて検証していくという流れが時系列で追われており、こうした流れはいわゆる障害対応全般に通じる進め方として使えるなあと感じました。
順調に解決するのかと思って第一部を聞いていたら、第二部で突然PostgreSQLが原因という話が出てきて当初の仮説が覆されるというこれまた障害対応あるあるの流れでした。実際現実でも最初に立てた仮説の中に原因がない場合もあり、そうした場合には速やかに次の仮説に向かうというのも大事ですよね。
最後の第三部ではPostgreSQL側の修正内容についてさらに深堀していき、Railsに関連する部分だけでなくPostgreSQL側になぜそのような変更が入ったのかという経緯まで調査され、問題の根本原因まで深堀していくというのはエンジニアとして見習いたいなと思いました。
「XXXの仕様が変わったので修正が必要」で終わらず「XXXにはこういった経緯があり、こういった意図で仕様が変わった(ので我々も対応する必要がある)」というところまで追いかけることで、修正対応に対する根拠・必要性・妥当性が過不足なく共有されるので、より良いフィードバックができる、という良い事例だなあと感じました。
AST を使って ActiveRecord の where の条件式をブロックで記述しよう
osyoさんの発表。
RailsのActiveRecordではwhere句に不等号を指定するには where("? <= age", 20)
といったプレースホルダ書式を使うのが一般的(Arelで書くこともできるが、SQLライクではなくなる)なのですが、これをよりSQLライクに where{ 20 <= :age }
書けるようにするためのDSL書式をASTを使って対応していくぞ、という内容です。
個人的には複雑なSQLを書くことも多いので、なるべく生SQLに近いものの方が結果の予想がしやすくて好きなのですが、こういったDSLを使ったRubyらしい書き方というのも見ていてぐっと来ますね。
当日は実際にライブコーディングでコードをくみ上げていく様子を見せてもらいましたが、やはりライブコーディングの少しずつコードが出来上がっていく感は見ていてわくわくしますね。
人のエディタでの作業を見ると知らない機能が使われてたりして発見も多くて興味深い発表でした。
osyoさん(@pink_bangbi)より当日の発表動画もYoutube公開されました!ライブコーディングの様子が観られますのでぜひこちらもご覧下さい。
先月の銀座Rails の動画アップロードしたぞい #ginzarails / 【銀座Rails#38】AST を使って ActiveRecord の where の条件式をブロックで記述しよう - YouTube - https://t.co/Ea2TigCuDh
— バンビちゃん@実際不確実性なねこ (@pink_bangbi) November 18, 2021
スポンサーセッション: 株式会社DeNA
スポンサーであるDeNAさまの発表。
Pococha事業部システム部の石田様より「急成長するPocochaが抱える技術的課題」という題で発表頂きました。
DeNAさまの提供するPocochaというライブ配信サービスはRailsで作られているとのことで、コロナ禍も後押ししてか既に290万DLを達成し、引き続き拡張を続けているようです。
急成長するサービスに対して、サーバー負荷対策なども含めたアーキテクチャ検討、技術選択のできるエンジニアを求めているとのことですので、高トラフィックなシステム開発に興味のある方などはぜひ検討してみてはいかがでしょうか。
その他、DeNAさまの技術イベントや技術記事などは継続的にTwitter: @DeNAxTechで発信されておりますので、興味のある方はぜひフォローしてみてください。
スポンサーセッション: リンクアンドモチベーション株式会社
スポンサーであるリンクアンドモチベーションさまの発表。
直近開催された進化するエンジニアキャリアパスの在り方【クラスメソッド×リンクアンドモチベーション】の発表やパネルディスカッションのQ&Aの中から、実際にエンジニアから上がってきたキャリアパスに関する相談などを紹介されていました。
リンクアンドモチベーション様ではカジュアルなキャリア相談会も実施されているとのことですので、興味のある方は相談してみてはいかがでしょうか。
TechRacho翻訳記事の裏舞台
hachi8833さんの発表。
弊社のTechRachoの編集・執筆担当者で、TechRacho上でも多数の技術翻訳記事を執筆しているhachi8833がその裏で行っている執筆作業について語ってくれました。
翻訳の許可取りの話から翻訳の難しい文学や文化的背景を理解の前提とする文章、自動翻訳との付き合い方など、技術翻訳を行うのにぶつかった問題などについて様々な具体例を上げてくれました。
最後に色々な映画や聖書などをもじった文章の紹介などをしてくれましたが、これはどうやって翻訳するのが正しいのか、相当難しいなと思わせる内容でした。
なお、本人によると本件については12月予定のTechRachoアドベントカレンダーで記事にしてくれるそうですので、そちらご期待下さい。
なんで新しい debug.gem が必要なの?
ゲストスピーカー 笹田耕一さんの発表。
※後日笹田さんのホームページにて発表スライド、及び動画が公開されておりますので、当日の発表を観たい方はぜひご参照下さい。
12月にリリースを控えたRuby 3.1の標準デバッガであるdebug.gemについて、Rubyのデバッガについての解説から始まりdebug.gemのパフォーマンス、これまでのデバッガにはなかった機能の紹介などを詳しく解説頂きました。
デモはデバッガを初めて使う人にも優しい基本的な説明から入り、徐々にVS Code連携や独自機能の紹介を流れるように見せていただけました。
実行中のプログラムに対して Ctrl-C
で強制停止させつつデバッガを開いて、途中経過を確認・再開してみたり
VS CodeによるリッチなGUIによる利用であったり、
Chrome DevToolsでデバッガを動かしてみたり、
Rubyプロセスが例外で死んだときに例外で死んだ状態のフレームでデバッガを開き、死んだ時点でのバックトレースやローカル変数を参照してみたり、
プログラムをステップ実行で巻き戻していったり(!?)
とにかく「なにこれすごい」としか言いようのない発表でした。デバッガを触ったことのない人でも丁寧に解説されているので、ぜひ観ていなかった人はアーカイブ動画を見て頂けると良いと思います。
僕は個人的にも既に業務開発でdebug.gemを使っていますが、とにかく「手触りが良くて使いやすい」というのが第一印象です。
デバッガは普段からいつも触るものというよりは、何か問題が起こったときにはじめて利用を考えることが多いです。そのため、細かい操作方法を忘れていたり、helpが欲しかったりすることが多々あるのですが、debug.gemはそもそもプロンプトに候補が出てくれたりヘルプも親切だったりと至れり尽くせりなのがとても助かります。
Ruby 2.7等最新でないRubyでもdebug.gemは動作しますので、もしまだ未チャレンジの人は、ぜひ一度は触って体験することをお勧めいたします。
まとめと次回予告
というわけで、またも遅くなりましたが銀座Rails#38の開催報告でした。
次回銀座Rails#39は本記事を投稿している今週金曜の2021/11/19 19:00より開催します。まだ未登録な方はぜひご登録下さい。
ゲストスピーカーには伊藤 浩一(@koic)さんをお呼びし「動いた!」の先へ踏み出す、システムのメンテナビリティ向上の基礎技術という題で発表頂きます。
銀座Railsは毎月開催を続けてかれこれ3年以上経つのですが、銀座Railsが始まった当時まだ新人だったRailsエンジニアも今では十分活躍しているものと思います。そんな入門レベルを抜け出したエンジニアにとって、次はどのようなレベルアップを目指していくべきなのかといった内容について、僕からぜひお話してほしいと依頼させていただきました。
どこもかしこもエンジニアが足りないと言われる昨今、エンジニアが成長していくパスを整備したり、成長のノウハウを共有することはとても有意義なことだと思いますので、ぜひご興味のある方はご参加下さい。
その他銀座Railsに関する公式情報はTwitter: @GinzaRailsにて発信しておりますので、お気軽にフォローいただければと思います。
11/19(金)は銀座Rails#39です。招待公演 @koic さんの発表詳細を更新しました。銀座Railsが始まって3年を経過し、当時新人だったエンジニアも活躍されているであろう中、入門レベルから踏み出したシステムメンテナビリティについてご講演頂きます。ぜひ参加登録を!https://t.co/Gg4L5Scuok
— 銀座Rails (@GinzaRails) November 13, 2021