rhanda | 元銀行員Web系エンジニアの日記

実務未経験からWeb系受託開発企業に転職したひよっこエンジニアが覚えたことや日々の感情を残すブログ

福岡Rubyist会議03の参加レポート

概要

2/18に開催された福岡Rubyist会議03に出席しました。
その時の学んだメモや感想を簡単にまとめます。🏃‍♀️

感想

RubyKaigi2022に続いて2度目のカンファレンスオフライン参加でした。

事前にタイムスケジュールを見た時から「RubyKaigiよりも理解できる内容が多そう」と思っていたのですが、実際に親しみやすい内容が多くて、理解しながら聞けることも多かったと感じました。(RubyKaigiはなるほどわからんが多め)

hsbtさんのRubyのリリースにまつわる話では、とてもすごい方々が一つずつ問題に対処して進めているというのを聞いて「自分もシュッとやろうと思ったりせず目の前の問題をクリアできるように頑張りたいし新たなリリースが出たら感謝しよう」と思いましたし、hachiさんの「テストに不要なコードがある」話についても、最近大きめのテストを扱うタスクに取り組んだりしていたのもあって非常に共感しながら聞いていました。

またぽっけさんの外部コマンドの話も非常に勉強になりました(最近の業務でぽっけさんの記事を参考にすることがあって、説明がわかりやすすぎてなんて日本語がお上手なのだと感じたりもした)し、ぺんさんのTRICKは何回見ても凄いなあと見入ってしまいました。

あとは会場で八女茶が配布されたり、ランチやディナーでご当地のものを食べて福岡の良いところをたくさん感じることができたのもとても良かったなあと思いました。
RubyKaigi以外の地域コミュニティイベントも、また機会があれば参加したいです。

セッション

RubyistによるRubyistのためのカンタン動画制作 / yasulabさん

  • 動画制作は思いのほか簡単にできる
  • 動画にすることで、できること・やれることが増える
  • 機材などのこだわりについて「音は丁寧に画はほどほどに」
    • 視聴者は音のクオリティの方が影響大きそう
  • 配信は制作するよりもっと簡単!
    • StreamYardおすすめ(今回の配信もこれ)。月20hまで無料で、サファリから開いて簡単に使える
  • 編集では音量調整だいじ
  • 推しの箇所があれば文字起こし
    • vrewを使っている。 文字起こしソフトもごまんとある

感想

実際に動画を作っている方の肌感というか感想を聞くことができて、動画コンテンツを作ることのハードルがこれまでより下がったように感じた(結構難しそうに思っていた)。こういう道具を揃えれば良いなどの解像度が上がった。もし今後動画を作ることが検討されたときに、それを選ぶことのハードルが下がった

Ruby のリリースを爆速にするための方法 / hsbt(柴田博志)さん

  • バックポート: rubyリポジトリのmasterブランチのコミットをメンテナンスブランチ(ruby_3_2 etc.)へcherry-pickすること
  • パッケージ:masterブランチまたはメンテナンスブランチから作成された、tar.gzなど配布用のアーカイブファイル
  • パッケージング: パッケージを作る作業。リポジトリソースコードからbisonなどを利用してコードやスクリプトを生成する一連の作業
  • リリース担当、Rubyは全員野球体制。他言語によっては担当者みたいなのを置いている場合もあるそう
  • 2019年にパッケージが壊れていたことが判明した
    • znzさんがgithubactionsを使ってパッケージを使う仕組みを作ってactionsを動かすだけで良くなった。自動化
    • make-snapshotがリリース直前にいじられていたことから、パッケージに含むべきファイルが消えていることを発見
    • 直した後にまた同様の問題が。Makefileとmake-snapshotが変わっていた。
  • パッケージングは3年ぐらいに渡る作業
  • リリース直前に特定の環境でビルドできない問題、ubuntu22.04のbisonが新しくなっていた
    • 2年後の変化を予測してコードを書くのは厳しい、、(😱)
  • セキュリティリリースが特に大変。パッチをコミットできない
  • リリース作業が大変になる→仕事が大変だと延ばし延ばしに→間隔を開けるとリリース作業の失敗確率が上がるという地獄ループ
    • 「年1回、数ヶ月に1回しか実行しない作業の安定化」が課題
  • 結論がんばるしかない
    • 事象1つ1つの自動化を行なっている

感想

リリースされたらとにかく感謝したいと思いました。実際にリリースに関わっている人のお気持ちを聞けると面白いし、少し身近に感じられた

RubyKaigiのはなし / そらはさん

  • Ruby kaigi takeout、内製だった(外部サービスを使っているのではなかった)
    • オフライン会場がないのが面白みに欠けると感じた、何か面白いことを盛り込みたいという気持ちもあり
  • デプロイはHerokuで各種awsの各種サービスをモリモリ
  • AWS Chime SDKを使った事例になったという良い点があった
  • api/conference がほぼ全てのデータをJSONで返す
    • CDNにキャッシュさせてrailsにリクエストが来ないようにしていた
  • 管理画面を用意しなかった。rails consoleで良いか、使う人もエンジニアだし
  • 三重のRubyKaigiではLANケーブルを1.9km使った

感想

大規模なカンファレンスでリアルタイムに色々やるのはとても複雑で大変だということを少しだけ理解することができました。 いろんな調整必要だし問題も起こっていていろいろ対処しているのだろうなあと感じながら、次回参加してみたいと思いました。

mruby on IoT devices. / 岡嵜雄平さん

  • ポーティング
    • 基盤上で、別環境で動いたプログラムを動かす作業
    • 組み込みソフトウェアがどんな仕組みで動作するか前提知識をつけること

感想

組み込みソフトウェアの知識が無くあまり理解できることがありませんでした。🥲

Factorybot 改善ツール作成失敗と学び / hachiさん

  • 課題:テストが遅い
    • 100人ぐらい関わっている、全員が速度を意識して書いている保証はないし、遅いテストを書いてしまうことはある
    • 原因:対象処理が遅い・前提データの用意でN+1が発生・DBの読み書きが不要なテストでそれを行なっている・必要以上に何度もレコードに書き込む etc.
  • DBへ保存が必要なければ create -> build にする
  • 各コンテキストでcreate_listしているところ、そこで条件が違うテストではないので一度行えば良い(とても共感)
  • before_all を使うのどうでしょうかという提案
  • testProf gem、railsの遅いテストを診断できるgem
  • traitでまとめて作成されているがテストでは使用されていない不要なデータがあったり(とても共感)
  • レコード挿入後、一度もDBから呼び出していないコードを検知してお知らせしたり

感想

作られた後一度もDBから呼び出していないことを検知するなど、アプローチがわかりやすくとても良さそうと感じた。(実際には他にもいろいろな箇所で要不要の判断が難しく実用には至らなかった様子)
最近大きめのcontroller specをrequest specに移すタスクで「せっかくなら綺麗にしよう」と考えてやっていたときに、一度も呼び出されないletなど不要なコードがあるのをたくさん目にしたのでたくさん共感しながら聞いていました。

外部コマンド実行入門 / Pockeさん

  • ゴールはRubyで外部コマンドを実行する際に、適切なメソッドを適切に使えるようになる
    • 多くあるメソッドから、最適なメソッドを選べるようになる
    • 外部コマンド実行時䛾セキュリティリスクを知って、回避できるようになる
  • 外部コマンドとは?
    • ls, git, rubyなど
  • コマンドを実行する関数は、シェルを経由したりしなかったりする
    • system(“ls -l”) しない
    • system(“ls * “)する(globの*を使うため)
  • シェル経由でコマンドを実行しないよう意識する
    • コマンドラインインジェクション防止
    • 悪意あるユーザーはシェルの機能を使って意図しない動作を狙える
  • Rubyでは外部コマンドを実行するメソッドが、様々な用途に合わせて多く用意されている

感想

これまでコマンドでシェルを経由する・しないを意識していなかったので大変勉強になりました。 発表資料を読み返します。 https://pocke.hatenablog.com/entry/2023/02/19/004700

Rubyist Magazine Reboot / 西山和広さん

  • Rubyist Magazineが2年以上止まっているので、現状説明と将来どうなってほしいかの話
  • 創刊背景
    • ドキュメント不足、何か活動すると良いかも?という経緯
  • 人手不足によって発行が停滞(みよひでさんという方がやっている)
  • 編集・執筆なんでも手伝える方は  https://github.com/rubima/magazine.rubyist.net/issues

感想

コミュニティもそうですが、いろいろな活動があるのだなあと思って聞いていました。

メンテできないコードをメンテする技術 / ぺんさん

  • TRICK入賞コードをメンテ可能にした技術について
  • ルビー会議の水槽のやつ、アニメーションQuine

感想

発想が凄すぎました。「IRBでは扱えないかもしれない?ような使い方書き方をして、こういうこともできると発見できる点でRubyに貢献」というお話を聞いて「な、なるほど。。」となりました。 どこで一時停止してもそこからまた実行できるようになっているところが凄い〜と思いました。

おまけ

福岡のグルメ最高でした。