以下の記事の日本語訳です
2022年最高のgems
Rubygems.orgの公式レポートでは、2021年に最もダウンロードされたgemsについて言及します。
これにより、ruby on railsの開発者が何を使っているのか、どのrails gemが最も便利なのかわかります。
Rubyの便利なGemsとその使い勝手
gemを以下のようにいくつかに分類しました。
- Activecord
- View Helper
- Authentication & Authorization
- Debugging
- Testing
- Admin View
- File Upload
- Deployment
- Code Quality
- Payment
など
Activecord
1. Activecord Import
ActiveRecord-importを使用すると、大量のレコードを簡単に挿入することができます。ActiveRecordの関連付けに従って動作しながら、必要最小限のSQLの挿入文を生成します。この機能を使えば、十分な知識を持つRoRの専任開発者を雇ったとしても、N+1インサートの問題に対処する必要はなります。ActiveRecordは10件のレコードをアップロードするのに最適な選択です。
このgemで数百のレコードをアップロードするのは大変な作業であることが分かるでしょう。しかし、外部データのインポートには有効です。ActiveRecord-importを使うと、変換時間が大幅に短縮されます。
GitHub: 50.8k Stars
2. Kaminari
約500万ダウンロードのKaminariは、最も人気のあるRails Gemsリストのトップです。このgemを使えば、何でもページネーションできます。ActiveRecordのインポートから、使いやすいスコープベースのAPIを使った簡単な配列まで、パジネーションを行うことができる。
GitHub: 8.2k Stars
3. Paranoia
レコードを論理削除するためのgemです。一度レコードを物理削除してしまうと、そのレコードを使用することは困難です。そこで、Paranoiaはモデルに対するスコープクエリでオブジェクトを隠蔽することで解決しています。しかし、厳密にレコードを削除するには、really_destroy gemを使用する必要があります。
GitHub: 2.7k Stars
4. PaperTrial
モデルの変更に伴い、undoやredoの操作にイライラすることはよくあります。PaperTrial gemは、変更ごとにすべてのバージョンに名前を付けることで、すべての変更を保持することを支援し、それゆえ、モデルでの作業が容易になります。
GitHub;: 6.3k Stars
5. Globalize
Globalize gemは、アプリケーションに外国語を追加すること、つまり、国際化に対応することを容易にします。Globalize gemは、Googleのi18n APIを利用しています。このgemは、非静的なデータベースコンテンツの翻訳を支援します。
GitHub: 2.1k Stars
6. AASM
Rubyクラスのためのステートマシンです。Ruby on Railsの開発者がrubyクラスに有限状態を追加できるようにするgemです。様々なORMのアダプタを提供する汎用的なライブラリです。
GitHub: 4.6k Stars
7. Pagy
Pagy は高性能なページネーションジェムです。その速さは、そのサイズ、独立性、シンプルさによるものです。このgemはあらゆる環境で動作し、あらゆるページングをサポートします。すべてのCSSフレームワークをサポートし、すべてのコレクションで動作します。
GitHub: 3.6k Stars
8. Cells
Cellsはtrailblazerなしで動作するスタンドアロンのRuby & Rails gemです。UIコンポーネントをビューモデルにカプセル化することができます。
GitHub: 3k Stars
View Helper
9. Draper
Draper を使うと、開発者はモデルの周りに簡単にデコレータを作ることができます。Draper GemをRuby on Railsアプリで使うと、ビューがとてもきれいになります。Draper を使えば、ヘルパーを書く必要はありません。開発者はモデルを使ってヘルパーを手続き的に呼び出す代わりに、デコレーターを簡単に定義することができます。また、オブジェクトの属性と拡張メソッドのリストが提供されます。
GitHub: 5.1k stars
10. Simple Form
Simple Form gemは、その名の通り、railsアプリケーションでフォームを効率的かつ明快なコードで使用できるようにするものです。このgemは、チェックリスト、ラジオボタン、ドロップダウンリストなどのフォーム要素を扱う際に、非常に柔軟な機能を提供します。
GitHub: 8k Stars
11. Meta Tags
SEOのベストプラクティスに忠実で、効率的なメタタグを作成することによって、SEOフレンドリーなアプリケーションを作成するのに役立つRuby on Rails gemです。
GitHub: 2.5k Stars
12. Slim
このテンプレートエンジンは、あなたのヘビーなコードをスリムなコード構造にします。Slim gemを使用することで、アプリケーションコードをシンプルに保つことができます。
GitHub: 5.1k Stars
13. Haml
HAMLはHTML Abstraction Markup Languageの略です。HTML/XMLドキュメントの構造とデザインを向上させるために使用されます。
GitHub: 3.7k Stars
Debugging
14. Pry
開発者は通常、コードを生成する際にライブラリ統合の問題やgemsのバインディングの難しさに直面します。その間に、彼らは多くのエラーに対処する必要があります。よって、十分な経験を持つ専用のRails開発者を雇うのが常に良いことです。これらの問題を排除し、エラーをデバッグするには、Pry gemは、理想的な選択肢であることが判明しました。このgemは、開発者がブレークポイントを設定し、ステップバイステップでコードのデバッグを実装することができます。Pryは、シンタックスハイライト、ランタイム呼び出し、コマンドシェルの統合、エキゾチックオブジェクトのサポート、柔軟で強力なコマンドシステムなどのユニークな機能のセットを持っています。
GitHub: 6.5k Stars
15. Better Errors
ユーザーがあまり魅力的でないエラーページに出くわしたとき、アプリケーションを放棄してしまうかもしれません。Better errors gemは、RoRの不器用で拒絶的なエラーページを、改善されたより良いエラーページに置き換えます。
GitHub: 6.8k Stars
16. Letter Opener
このgemを使うと、Railsアプリケーションが送信したメールのプレビューを、ブラウザの画面上で見ることができます。メールボックスのチェックや編集の手間を軽減してくれます。
GitHub: 3.4k Stars
Testing
17. RSpec Rails
RSpec Railsというgemは、ユニットテストケースを書くのが好きな開発者にとって完璧な選択です。このgemは、RailsプロジェクトのいずれかにRSpecフレームワークを統合することで、アプリケーション開発者を容易にする。ユーザーは必要なspecヘルパーと設定ファイルを生成するだけでよいです。このフレームワークはTDDとBDD環境で使用されます。簡単に言うと、Rspec Railsは説明的ですっきりした構文が特徴です。
GitHub: 4.8k Stars
18. Capybara
進行中のプロセスを短いフレーズで案内してユーザーを支援するためのテストを統合したgemです。開発者は主に権限付与のシナリオで使用します。RSpecと一緒に使われることが多いです。
GitHub: 9.6k Stars
19. Database Cleaner
このgemはテスト用データベースをクリーンアップします。クリーンアップのタイミングは、テストの起動前か、テストの実行前後で設定できます。Ruby 1.9以上のバージョンでサポートされています。
GitHub: 2.8k Stars
20. Shoulda_Matchers
Rspecと互換性のある検証/関連付けの一行テストを記述する素晴らしいgemです。RoRの開発者は、matchersを使って、アプリケーションの機能を素早くテストすることができます。
GitHub: 3.2k Stars
21. SimpleCov
このgemは、テストによってカバーしたコードの量(割合)と、まだカバーできていないコード量を示します。
GitHub: 4.4k Stars
22. Factory_bot
Factory botは、以前はFactory girlとして知られていたライブラリgemです。テストケース用のフェイクデータを提供します。テストケース用のフェイクデータを提供することで、毎回データを手入力する必要がなくなるので、テストが楽になります。
GitHub: 7.5k Stars
23. Faker
名前の通り、名前、住所、連絡先などのフェイクデータを生成するためのgemです。
GitHub: 10.1k Stars
Authentication & Authorization
24. CANCANCAN
CANCANCAN Gemは、複雑なアプリケーションを開発するのに適しています。ユーザーに多数のルールを持たせることができますが、開発者は一部のユーザーのアクセスを制限する必要があります。このGemは、ユーザーのアクセス制限の設定を簡単にし、すべてを一箇所で管理できるようにします。CANCANCANの「Authorizations definition library」モジュールにより、開発者はユーザーに対するルールを設定することができます。また、ヘルパーがアクセス前に権限を確認する必要があるため、ヘルパーが異なるオブジェクトに簡単にアクセスできるようになります。
GitHub: 5.1k Stars
25. DEVISE
ソーシャルネットワーク上でアプリケーションを作成したり、eコマースソリューションを構築したりする場合、通常、ソーシャルメディアのページにログインする必要があります。特定のアプリケーションのために、認証と認可を提供する必要があるのです。開発者の中には、この目的のために自分で開発を好む人もいれば、認証のためにこのgemsを好む人もいます。DEVISE gemは、最高のrails gems 2021の1つです。それは仕事を効果的かつ容易にします。
DEVISEには、Omniauthable, Database Authenticatable, Registrable, Confirmable, Trackable, Recoverable, Lockable, Timeoutable, Rememberable, FriendlyId, and Validatableの10種類のモジュールが含まれています。リソースURLは、各モジュールのプライマリーキー(データベースID)により簡単に識別することができます。しかし、開発者は最適化されていないウェブページのURLを扱う必要があるかもしれません。FriendlyIdは、このようなURLを、覚えやすく、ずっと親しみやすいWebページのURLへと簡単に変換します。FriendlyIdの最大の特徴は、Webアプリケーションのコードを変更する必要がないことであり、Rubyのgemとして有名です。
GitHub: 22.5k Stars
26. OmniAuth
OmniAuthはRuby on railsの認証gemで、Rackミドルウェアを使用した柔軟性の高いgemです。このgemは、FacebookやGoogleのようなソーシャルメディアのアカウントを介して認証を可能にします。このgemには、すぐに使える認証プロバイダがいくつか用意されているので、それを利用することができます。
GitHub: 7.5k Stars
27. Ruby-JWT
ユニークなrailsトークン認証gemは、RFC 7519 OAuth JSON Web Token(JWT)標準を実装したruby-JWTです。便利なrails jwt認証gemです。
GitHub: 3.3k Stars
28. Rolify
Rolifyは、リソースオブジェクトにサポートスコープを強制しないロール管理ライブラリであるrails gemです。
GitHub: 3k Stars
29. Pundit
Authorizationを提供する素晴らしいRails gemです。Rubyの基本的なクラスとオブジェクト指向のOOデザインを使うだけで、強力でスケーラブル、かつシンプルな認可を提供してくれるので、非常に使い勝手が良い。
GitHub: 7.6k Stars
Admin Panel
30. ACTIVE ADMIN
管理画面のインターフェイスを構築するためのフレームワークです。Active Adminは、ビジネスアプリケーションのパターンを抽象化し、開発者が少ない労力でエレガントで美しいインターフェイスを簡単に実装できるようにします。スコープ、ユーザー認証、グローバルナビゲーション、アクションアイテム、サイドバーセクション、インデックススタイル、フィルター、ダウンロード、APISなど、さまざまな機能を備えています。
GitHub: 9.2k Stars
31. Rails Admin
データを管理するためのRailsエンジンで、フレンドリーなユーザーインターフェイスを備えています。CSVへのデータエクスポート、カスタム検索、フィルタリング、カスタム認証、認可などの機能を利用することができます。rails admin gemをインストールすれば、すぐに使用できます。
GitHub: 7.6k Stars
32. Administrate
Administrate rails gemを使ってレスポンシブな管理画面を作成します。Active adminとrails adminの2つのgemを使いたくない場合、administrate rails gemが最適な選択肢になります。
GitHub: 5.4k Stars
Payments
33. Active Merchant
このRuby GemはShopifyによって保守・執筆されている。Active Merchantの主な目的は、異なる内部APIを使用して複数の支払いゲートウェイへのアクセスを提供する統一APIでユーザを容易にすることです。特にRuby on Railsウェブアプリケーションのために開発されたActive Merchantは、プラグインとして統合することも可能です。また、スタンドアローンのライブラリとして使用することも可能です。
GitHub: 4.4k Stars
34. Stripe Ruby Bindings
Stripe gemをインストールすると、Stripe.comとのやりとりができるようになります。このサイトは、すべての支払いをよりシンプルかつ簡単に処理するための素晴らしい機能を備えています。Stripe checkoutがモバイルユーザとデスクトップユーザの両方にパーソナライズされたカスタムビルドの支払いフローを提供する一方で、stripe.jsはクレジットカードの詳細を保存し、送信プロセスを通じてそれらを保護します。Stripeはandroid pay、apple pay、Amex Express checkoutをサポートしており、堅牢で強力なeCommerceサイトを構築できます。Stripeは最高のruby on rails eCommerce gemと考えることができます。
GitHub: 1.7k Stars
Code Quality
35. Robocop
Rubocopは基本的にRubyスタイルガイドに基づいたRubyの静的コード解析ツールです。Rubyのスタイルガイドに基づき、コードの違反箇所を自動修正し、強力で堅牢な書式設定機能を備えています。Rubocopは主要なRubyの実装とほとんど相性が良い。また、Rubocop にフォーマッタやカスタムコピーの機能を追加することは簡単であり、多くのオンラインサービスが Rubocop を使用しています
GitHub: 11.8k Stars
36. Robocop Rails
このgemは、railsのベストプラクティスとコーディング規約を強制するために、上記のrobocop gemを拡張したものです。チェックツールでrailsのコードスタイルを自動的にチェックします。
GitHub: 608 Stars
37. Ruby Style Guide
こちらはRoR開発者のコミュニティによる、コミュニティのための逸品で、rubyのコーディングスタイルのベストプラクティスを推奨しています。このガイドラインは、Ruby on Railsの専門家、プロフェッショナル、編集者の提案、フィードバック、推奨事項のコラボレーションです。
GitHub: 16k Stars
38. Overcommit
overcommit ruby on rails gemは、railsプロジェクトのGitフックを管理するものです。様々なフックをサポートしており、独自のフックを定義してリポジトリ間で使用することも可能です。
GitHub: 3.6k Stars
Security
39. Brakeman
Brakemanは、レールアプリケーションの最小の強制と脆弱性を識別し、発見するのに役立つ安定した、変更されていないセキュリティスキャナです。警告のリストを設定するだけで、不必要で重要でない通知の到着を制限で来ます。
GitHub: 6.4k Stars
40. Bundler
Bundlerは、どのマシンでも全く同じコードでRubyアプリケーションを適切に実行することを保証します。Bundlerは、特定のアプリケーションが依存するgemsのリストをダウンロードし、インストールすることができます。しかし、インストールする前に、Bundlerは各gemの最新バージョンの互換性をチェックし、同時に一緒にロードできるようにします。また、インストール後、新しいバージョンが利用可能になると、Bundlerはそれらのアップグレードを支援します。
GitHub: 4.9k Stars
41. Bundler Audit
Bundlerの上で動作するBundler auditは、アプリケーションの潜在的な脆弱性をチェックするのに役立ちます。Bundler auditのヘルプと支援により、膨大な時間を節約することができます。Bundler auditはgemfile.lockでrailアプリケーションを効果的にレビューしチェックするので、railアプリケーションのgemを一つ一つチェックする必要はありません。gemのバージョンを識別し、信頼性の低いgemの収集を停止します。
GitHub: 2.5k Stars
42. Secure Headers
Secure-headersは、レールアプリのレスポンスにセキュリティ関連のHTTPヘッダを実装することを気にするgemです。CSPなどのヘッダを適用できるようにすることで、クロスサイトスクリプティングやXFO、合体・混合コンテンツ攻撃を抑制し、クリックジャッキング攻撃の可能性があるコンテンツに当たらないようにすることができます。
GitHub: 3k Stars
File Upload
43. Carrierwave
ウェブアプリケーションを作るとき、開発者は画像や音声ドキュメント、動画など、いくつかの種類のファイルを投稿したりアップロードしたりできるようにします。しかし、特に画像に関しては、CarrierWave以外に便利な逸品はないでしょう。CarrierWaveは、画像処理とファイルアップロードの機能を持ち、画像のリサイズや角の調整を行うことができます。さらに、CarrierWaveはファイルを処理し、キャッシュするので、ユーザーは投稿されたテキストファイルを素早く解析したり、EXIFデータを抽出したりすることができるようになります。
CarrierWaveは、アップロードクラスが各データを保存し、あなたのコードをきれいに保ちます。
GitHub: 8.7k Stars
44. Minimagick
画像処理を管理・処理するもう一つのgemがMinimagickです。RMagickの小さな、あるいはミニサイズの代替品として機能します。CarrierWaveと同様、このgemはまさに逸品です。すべてのRAMリソースを節約し、回転、反転、ぼかし、サイズ変更、PNGのような有名なフォーマットへの変換など、混合された多様なタスクに対応することで効果的に機能します。このgemは、Rubyプロセスのメモリを削減し、ImageMagickのコマンドラインのすべてのオプションを利用するのに役立ちます。
GitHub: 2.7k Stars
Deployment
45. Puma
Pumaは、ウェブアプリケーションをホストし、デプロイできる有名なHTTPウェブサーバーです。デプロイはあらゆるソフトウェア開発サイクルにおいて重要な段階であるため、これらのウェブサーバーは鉄道アプリケーションの正確なデプロイを支援します。
GitHub: 7.1k Stars
46. Capistrano
通常の一般的なWebアプリケーションは、デプロイされる前にいくつかのステップを通過します。ファイルのコピー、データベースの転送や移行、アセットのコンパイルや配置など、さまざまな段階が含まれます。Webアプリケーションのデプロイを成功させるためには、自動化されたデポジットおよびデプロイツールが必要である。Capistranoは、多くの操作を管理・処理する自動デプロイツールで、サーバーに異なる役割のタグを付け、多様な段階を管理し、並列デプロイメントを実装します。
GitHub: 12.1k Stars
47. Chef
chefは非常に効果的なruby gemです。Capistranoと一緒に使うと、Chefは特定の場所にファイルを置いたり、パッケージをインストールしたりと、サーバーを処理し設定します。しかし、レールアプリケーションのデプロイでは、自動化およびカスタムビルドのための希少なリソースを所有しているため、Chefはまれにしか使われません。
GitHub: 6.9k Stars
APIs
48. Grape (used for API)
Grapeは基本的にRubygemsのためのRESTライクなAPIフレームワークです。これは、Rack上で動作するように、またはSinatraやRailsのようにすでに存在するWebアプリケーションを補完するために特別に作成および設計されています。RESTfulなAPIを効果的かつ容易に開発するための簡単なDSLを提供します。正規表現のサポートが組み込まれており、Grapeは多様なフォーマット、サブドメイン制限、バージョニング、コンテンツネゴシエーションなどの機能を備えています。
GitHub: 9.5k Stars
49. jsonapi-serializer
このgemはfast_jsonapiとしても知られており、Netflixのフォークである。Netflixのチームは、必要な初期サポートを提供しました。このgemは、複合文書に対するシリアライズの最適化されたバージョンを提供します。
GitHub: 1.1k Stars
Search
50. ElasticSearch
elasticseacrh gem は、Elasticsearch Ruby Client にアクセスするための Ruby に接続します。検索、セキュリティ、モニタリングの機能を提供します。
GitHub: 1.9k Stars
51. Ransack
Ransack gemはオブジェクトベースの検索を行うためのもので、これを使ってRailsアプリを検索することができます。また、AlgoliaやElasticSearchなどの高度な検索オプションも利用可能です。
GitHub: 5.2k Stars
その他
52. Bullet
Bulletは、クエリを減らすことによって、アプリケーションのパフォーマンスを向上させるために設計されています。アプリ開発の過程でクエリを監視しています。このRubyGemは、(N+1)回のクエリが必要なときにユーザーに通知します。また、カウンターキャッシュを使用する場合にも通知されます。
GitHub: 6.5k Stars
53. Webpacker
このgemは、JavaScriptと、コンポーネントベースのJavaScriptに関連するフォント、CSS、画像などのアセットを提供するために特別に設計されています。また、Webpackerはアプリケーションのすべてのアセットに使用することができます。全体として、Railアプリケーション開発のための素晴らしいソリューションを提供しています。このブログは、Ruby on Railsに興味がある方におすすめです。神話を打ち破り、事実を知り、なぜRoRがWebアプリケーション開発に理想的な選択であるかを理解しましょう。
GitHub: 5.3k Stars
54. Sidekiq
Sidkiqは、Rubyの処理に使われる標準的でクリーンかつ効率的なツールです。具体的にはスケジュールされたジョブのために、Sidekiqが使用されます。Redisライブラリは、このgemをサポートしており、ジョブ管理ストアとしてRedisを使用しています。Sidekiqは、マルチスレッド機能を備えているため、非常に多くの開発者に感銘を与えることに成功しています。これらの機能を所有し、Sidekiqを使用すると、顕著な速度で結果を出します。
このgemを使用する重要な利点は、適切にジョブを監視することを含む。ステータスの適切な処理と並行してジョブを実装する機会。SidekiqはRailsを必要としませんが、Railsと統合することでバックグラウンドの処理を明確にし、大幅に緩和します。
GitHub: 11.8k Stars
55. Figaro
FigaroはHerokuフレンドリーかつシンプルなRailsのベストgemsアプリの設定です。Railsを使って作成されたアプリケーションを安全に設定するためのYAMLとENVファイルです。このgemは、設定データとSCMを分離するために、十分に潜在的な規約を導入しています。YAMLファイルをパースして、その値をENVにロードします。
GitHub: 3.7k Stars
56. AHOY
JavaScriptやRubyなどのネイティブアプリでイベントや訪問を追跡するために使われる分析プラットフォームです。技術的には、Ahoyはgemではなく、Rubyのエンジンです。トラフィックの発生源、位置情報の発信地、クライアントのデバイス情報を含む訪問チケットを作成する役割を担っています。また、ウェブサイト訪問のUTMパラメータを知ることも可能です。Ahoyは、アプリケーション内のイベントや訪問を追跡することもできます。
GitHub: 3.6k Stars
57. Paperclip
ファイル添付で作業するのは簡単ではない。一般的に、大量の作業を伴います。開発者がタスクを適切かつ安全に実装するためには、あまりにも時間がかかる。Paperclipは、Railsアプリケーションの内部でプロセス全体を追跡するように設計されています。このgemが提供する付加的な利点には、画像のサムネイルへの変換があります。残念ながら、このgemfileは現在では非推奨となっています。
GitHub: 9.1k Stars
58. Delayed Job
Delayed Job gemは、バックグラウンドタスクの長時間実行アクションを処理することに関しては、2022年の開発のための最高のruby gemsです。Shopifyから直接抽出することができ、複数のタスクがジョブテーブルによって処理されます。Delayed Jobのユニークな機能としては、Image resizing、膨大な数のニュースレターの送信、スマートコレクションの更新、スパムチェック、HTTPダウンロード、バッチインポート、商品変更後のいくつかの更新などがあります。
GitHub: 4.7k Stars
最後に
この翻訳はDeepLの翻訳をベースに書きました。
誤字、翻訳ミス等がありましたがご指摘いただけますと幸いです。