2025-3月の振り返り

こんにちは、おでんたかしです
3月の振り返りを行なっていきます。

やったこと

  • Sidekiqを使った非同期処理の実装
  • annotaterb: Incorrect annotation of fixture files when different models share the same table name in different databases
  • 引越し
  • ソフトウェアアーキテクチャの基礎を読み始めた(前書き)

所感

Sidekiqを使った非同期処理の実装

今回の学びとして大きかったのは、Sidekiqを直接使う場合と、ActiveJob経由でSidekiqを使う場合の2パターンがあるということです。前者では、Sidekiqのバルクキューイングなどの機能をフル活用できますが、引数としてRubyオブジェクトをそのまま渡すことができず、事前にデータの整形が必要になります。 一方でActiveJob経由の場合、Sidekiqの高度な機能は使いづらくなるものの、引数の扱いが柔軟で、Rubyオブジェクトもある程度そのまま渡せるという利点があります。それぞれに一長一短があるため、用途によって使い分けたり、併用するという選択肢もあり、必ずしもどちらか一方に決める必要はないと感じました。

annotaterb: Incorrect annotation of fixture files when different models share the same table name in different databases

また、annotaterb に対してマルチDB環境に対応するためのパッチも提出しました。

このPRでは、primary DBとsecondary DBに同名のテーブルが存在する場合に、annotaterbが誤って関連ファイルを取得し、意図しないファイルにannotateを実行してしまうという問題に対応しています。 解決策として、従来はテーブル名から対象のファイルを推測していましたが、primary DBに接続していないモデルの場合は、モデル名から推測するようにしました。 実装にあたっては、Railsのconnection_specification_nameというメソッドを使用しましたが、これはRails 6以前とそれ以降で挙動が異なる点に注意が必要でした。ただ、Rails 6以前はすでにEOLを迎えて時間も経っていることから、今回の対応ではサポートしないとしいう判断をしました。

また、初めて使ったarubaというCLIのテストを支援してくれるgemのキャッチアップにも時間を使いましたが、とても便利で、今後じっくり中身を読んでみたいと思えるほど興味深いものでした。

このPRを通して、マルチDB環境の構築や、それに対応したテストの書き方など多くの知見を得ることができ、とても充実した経験になりました。 マルチDB対応タスクはもう1件残っているので、次はそちらに取り組む予定です。今から楽しみです!

引越し

引越しをしました。今回の引越しは2回目ということもあり特段詰まるということはありませんでした。
一点あるとしたらカーテンはデフォルトでついていないということを完全に忘れており、少しの間オープンな家に住む羽目になったことくらいです。

基本的には不自由ない生活を送れていますが、来月から隣で工事が始まるらしく震えて眠る必要がありそうです…

来月やりたいこと

  • 入社
    • 焦らず、自分のやりたいことも並行して行う
  • ソフトウェアアーキテクチャの基礎を読み進める