1. tanaken on Rails
  2. #012: Two new official gems
2024-03-24 12:06

#012: Two new official gems

00:01
はい、こんにちは。第12回のtanaken on Railsを始めます。今週のThis Week in Rails、お知らせが1件と、DHHさんの公式Xアカウントから紹介されたお話が2件。
最後にプルリクエスト1件を紹介したいと思います。
まず1つ目、お知らせです。
Rails Guide Get a Faceliftというタイトルのページですね。
こちらは、Rails Guideのデザインが大幅に変わりますよというお知らせです。
新しいデザインは、https://edgeguides.rubyonrails.orgに反映されています。
ということで、新しいデザインはこちらで見れますよと。
あと先日お伝えした、アクティブレコードベーシックスのページが変わりましたよ、みたいな話もエッジの方には反映されているので、そちらも新しい構成になっていたりするので、ご覧くださいという感じですね。
これに新しいデザインに関する不具合の指摘や要望の提案は、GitHubのRailsリポジトリのディスカッションズにてお願いしますということでした。
これ現在はRuby on Railsフォーラムというページと、ページがすでにありまして、そっちは前から2020年ぐらいからかな、ずっと運用されている改善だったり改善の指摘だったり、要望の提案をやるようなフォーラムがあるんですけど、
そちらとの並行運用してGitHubディスカッションズを試していっているという話ですね。
なので、もしかしたら今後、将来的にはGitHubディスカッションズの方に移行していくっていう心づもりがあるのかもなぁと思ったりはしています。
というところで、このRailsガイドの新しいデザインへのご要望、ご指摘はGitHubディスカッションズの方からお願いしますということでございました。
続いて、DHSGさんの公式Xアカウントから2件、新しいGEMについての紹介です。
1つ目がSolidQというやつと、2つ目がMission Control Jobsというものですね。
まず1つ目のSolidQについて、これはActiveJobのキューイングライブラリーの1つです。
03:06
Railsガイドのアクティブジョブの基礎、ジョブを実行するという日本語版のページ、こちらにも記載があるとおりなんですけれども、
ジョブの登録と実行にはキューイングを行うバックエンドを用意する必要があると。
このキューイングのバックエンドの機能を提供してくれるのがキューイングライブラリーですね。
このSolidQというものもキューイングライブラリーいくつかある中の1つということで、
新しくRailsの公式のGEMとして紹介されたと。
キューイングライブラリーって有名なもので言うと、
SidekickだったりRescueだったりDelayedJobsというものが有名なところではあるかなと思います。
僕もお仕事ではSidekickとDelayedJobsは使ったことがあるって感じですね。
Rescueは使ったことないかな、多分。
SidekickとRescueは、データストアはレディスです。
キーバリューストアと呼ばれるものですよね、のレディスですね。
DelayedJobsに関してはデータストアをいくつかの中から選べますっていうふうに
DelayedJobsのGitHubのウィキページには書いてありますと。
データストアって表現を英語ではしてるんですけど、
具体的に選べるものの候補を見ると、
アクティブレコードとかデータマッパーとかそういうのが選択肢に出てきてるんで、
データストアというよりかは、データストアにつなぐためのデータマッパー、
マッピングするもの、マッピングライブラリをいくつかの中から選べますよという意味合いですね。
なので、DelayedJobsのデータのつなぎ込みのライブラリとしてアクティブレコードを使えるよとか、
データマッパーというライブラリが使えるよとか、
これ文語IDってもんだっけ、文語IDも使えるよとか、そういうのが書いてありますよって感じですね。
ここまでがQueuingLibraryのよく使われるもの、
SideKick、ResQueue、DelayedJobsの説明だったんですけど、
今回紹介されたSolidQはどんな特徴があるのかというと、
SolidQはアクティブレコードの利用が前提となっています。
なので、アクティブレコードのつなぎ先のデータベース、SQLデータベースが使えるっていうことですね。
SolidQが対応しているデータベースは、現時点ではMySQL、PostgreSQL、SQLiteのいずれかだということです。
06:05
なので、SolidQの前提としてアクティブレコードの使用があり、
アクティブレコードのつなぎ先がMySQLかPostgreかSQLiteのどれかのときに使えますよっていう感じですね。
アクティブレコードって他にも使えるのかな?
僕はあんまり詳しくないけど、アクティブレコード自体には。
SQLデータベース、アクティブレコード、使えるもの他にもあるかもしれないけど、
SolidQを使うときにはMySQLかPostgreかSQLiteでという話ですね。
でもって、MySQL 8K以上、またはPostgre 9.5以上を使う場合は、パフォーマンスが高いというのが見込めるそうです。
なぜかというと、それらのバージョンの場合はForUpdateSkipLockedという句が使えると。
そういう機能がデータベース側で使えるということで、
これを使うことでジョブのポーリング時のブロックだったり、ロックの待機を回避するっていう実装がこのSolidQではされているので、
このMySQL 8K以上、Postgre 9.5K以上だとパフォーマンスが高くなるよということが書かれていましたと。
DHHさんからは、このSolidQがレールズのデフォルトのキューイングライブラになることを期待しているというふうにポストしておりましたね。
続いて紹介されていた2個目のジェム、Mission Control Jobsについて。
これはアクティブジョブのキューイングバックエンドの管理画面を提供するライブラリーです。
管理画面って何ができるかというと、待機中のジョブが今どれぐらいあるのかとかを閲覧できたり、
失敗したジョブを再起動したり、いらないジョブを破棄したり、そういったことができるっていう管理画面になっています。
現在対応しているキューイングライブラリーは、先ほど有名なものとして紹介したResQと、
あとは今回新しいキューイングライブラリーとして紹介したSolidQ、この2つだけを対応しているということですね。
例えば僕が使ったことのあるSidekiqとかは、Sidekiqの内部にWebUIも同梱されているので、
Webの管理画面というのもそのSidekiqのジェムの中に含まれているんですよね。
なので、SidekiqとかはこのMission Control Jobsでは対応していないということなのかなと思っています。
そんな感じでございました。
2つの新しいジェムが紹介されていて。
Redis周りの話だと最近ニュースもありまして、
09:05
Redisが将来的に無料提供ではなくなるOSSではなくなるという表現であっているのかな。
グラウドサービス、AWSとかGoogleクラウドとかがRedisに対してお金を払わなきゃいけなくなるみたいな、
確かそんな感じが将来ありそう。
結果的にそれはAWSとかGoogleクラウドを使うユーザーにも価格が転嫁されてくるんじゃないかというような話もあったりするので、
Redisから離れるみたいな動きにももしかしたらこのRedisに引っ張られない、
SidekiqとかRedisが必要なんで、そこから離れるみたいな選択肢もなったりするのかなというのを考えて呼んでおりました。
最後、プレリクエストの紹介です。
タイトルがEliminate Remaining Uses of Lease Underscore Connection Inside Active Recordというタイトルです。
こちらはアクティブレコードに関する変更です。
リースコネクションというメソッドをwithConnectionメソッドを使って書き換えるという対応をしています。
リースコネクションメソッドというのは前々回、第10回で紹介しているので詳しくはそちらを聞いてみてくださいという感じなんですが、
もともとコネクションというメソッドがあったのをリースコネクションというメソッドにリネームしているという形でお伝えしたかと思います。
コネクションをリースしているんだからリースコネクションだよねというメソッド名にしていると。
withConnectionというメソッドについては第7回で紹介しているのでそちらを聞いてくださいという感じですが、
このwithConnectionメソッドでブロックを渡してブロック内部がコネクションを張られている状態になるみたいな、そんな話だったと思うので
withConnectionを使ってよりシンプルな実装に変わっているという感じかなと差分を見た限りそんな感じ。
リースコネクションを使わなくて済む部分はwithConnectionを使っていこうぜというような変更に見えました。
そんなところでございます。
過去に紹介したメソッドとかが出てくるとちょっと嬉しいですね。
そんなところで今回の田中オレリスは終わりにしたいと思います。
12:03
ではまた来週バイバイ
12:06

コメント

スクロール