-
Ruby on RailsアプリケーションにAppSignalでモニタリングを導入する方法【動画解説】
AppSignalでは、モニタリングをできるだけ簡単に導入できるよう日々努力しています。今回お届けするのは、「説明する」だけでなく、その簡単さを実際に見せてくれるコンテンツです。このたび、Leigh Hallday氏と協力して、セットアップ手順について知っておくべきすべてを網羅した動画を作成しました。今後も同様の動画をYouTubeチャンネルで公開していく予定です。将来の動画の通知を受け取りたい方は、ぜひチャンネル登録をお願いします。やり方はご存じのとおり 😉動画の内容この動画では、LeighがRailsアプリケーションへのAppSignalの統合がどれほど簡単かを実演します。インストールと
-
Ruby on Rails向けの新マジックダッシュボード:ActionMailerのメール送信を可視化
アプリケーションの監視は、使い始めたばかりの頃には難しい作業になりがちです。どのメトリクスが最も重要なのか、そしてそれらをどう組み合わせれば意味のあるグラフになるのかを理解する必要があります。私たちは(冬休み中であっても⛄️)ユーザーの皆様の作業をよりスムーズにするという精神のもと、Rubyインテグレーションに、ActionMailerで送信されるメールの量を表示するマジックダッシュボードを追加しました。マジックダッシュボードとはセットアップの過程で、AppSignalのエージェントはアプリケーションのインフラをスキャンします。使用しているツールを特定すると、アプリの一部を自動的に計測し、最も
-
AppSignalが振り返る2020年の人気Rubyブログ記事トップ5
2020年は、誰もが早く終わりを迎えてほしいと願った一年だったのではないでしょうか。オランダ名物のストループワッフルでも片手に、こうした一年の中であっても、貴重な時間を割いて知識を共有してくれた方々のことを思い返してみましょう。 今回の記事では、読者の皆さんから特に大きな反響をいただいたRuby関連の人気記事トップ5をご紹介します。お気に入りの音楽をBGMに流しながら、さっそく見ていきましょう。 2020年の人気Rubyブログ記事トップ5 💎 Ruby on Railsでのサービスオブジェクトの活用 アプリケーションには多くの機能が必要ですが、そのロジックが必ずしもコントローラーやモデルに属
-
マイクロサービスの監視:名前空間(Namespace)でデータを構造化する方法
マイクロサービスアーキテクチャとは?マイクロサービスアーキテクチャとは、複数の小さなプログラムを組み合わせてアプリケーションを構築するソフトウェア設計パターンです。これらの小さなプログラムは「マイクロサービス」と呼ばれ、共通の目標に向かって互いに連携しながら動作します。チームによっては、1つの巨大なアプリケーションを開発するよりも、複数の小さなアプリケーションを書くほうが、時間も労力も大幅に抑えられます。マイクロサービス指向のプロジェクトは、小さなアプリケーションの集合体で構成されます。それぞれが独自の役割を担い、独立したプロセスとして実行され、標準化されたインターフェースを通じて他のサービス
-
Ruby on Railsアプリケーションでモジュールとミックスインを使いこなす方法
モジュールとミックスインは、Rubyを魅力的な言語にしている代表的な機能です。これらを活用すれば、アプリケーションのどこからでも再利用できるコードを手軽に共有できるようになり、機能や関心事ごとにコードをグループ化することで、可読性と保守性の向上にも大きく貢献します。 この記事では、モジュールとミックスインの背後にある概念を解説し、モジュールの作成方法や他のクラスへの組み込み方、そしてRuby on Railsアプリケーションでこれらを活用するメリットについて学んでいきます。 モジュールとは モジュールは、Rubyの最も優れた機能の一つです。主な利点として、次の2つが挙げられます。 名前の衝突
-
RBS徹底解説:Ruby 3で導入された新しい型定義言語の使い方とTypeProfとの連携
待ち望まれていたRuby 3.0.0がついにリリースされました。以前のバージョン比で約3倍の高速化や、実験的な並行・並列処理機能など、数多くの改善とともに、Rubyチームは動的型付けのための新しい構文言語「RBS」を導入しました。RBSは、Sorbetのような静的型検査ツールがコミュニティで成功を収めたことを受けて、チームが何年もかけて議論してきたものです。SorbetはStripeが支援する強力な型チェッカーで、アノテーションやRBIファイルの定義によってコードを検査します。RBIファイルは、静的な要素と動的な要素(定数、継承関係、メタプログラミングコードなど)をつなぐインターフェースとして
-
Ruby on Railsのビューで押さえるべきパターンとアンチパターン
Ruby on Railsのパターンとアンチパターンシリーズ第3回へようこそ。これまでの記事では、一般的なパターン・アンチパターンやRailsモデルに関連するものを取り上げてきました。今回は、Railsのビュー(View)に関連するパターンとアンチパターンについて詳しく見ていきます。 Railsのビューは、時に完璧かつ高速に動作することもあれば、さまざまな問題を抱えることもあります。ビューの扱い方への自信を高めたい方や、このトピックについてさらに学びたい方にとって、本記事はきっと役立つはずです。それでは早速始めましょう。 ビュー層の特徴 ご存じの通り、Railsフレームワークは「設定より
-
Ruby on RailsアプリケーションでWebpackerを使用する—詳細解説
インターネット黎明期には、Webサイトはずっとシンプルで、インタラクティブ性も高くありませんでした。テクノロジー、デバイス、プログラミング言語の進化に伴い、Webサイトはより複雑になり、画像やCSSスタイルシートといったアセットを含む複数のファイルで構成されるようになりました。 Webサイトのインタラクティブ性が高まるほど、より多くのJavaScriptコードが必要になります。こうしたコードを使用するには、すべてのHTMLコードファイルをscriptタグで読み込む必要があります。しかしこのアプローチはエラーを招きやすく、すべてのファイルを正しい順序で読み込むことを覚えておかなければならず、順
-
AppSignal for Ruby Gem 3.0を発表!主な新機能と変更点を徹底解説
このたび、Ruby向けAPMツール「AppSignal」のメジャーバージョンアップとなるRuby gem 3.0をリリースしました。🎉本バージョンでは、アプリやgemの計測(インストゥルメンテーション)方式を見直し、他の計測用gemとの互換性を大幅に向上させました。また、Ruby 1.9のサポート終了に加え、非推奨となっていたクラス、モジュール、メソッド、計測機能も削除されています。詳細はアップグレードガイドをご覧ください。本記事では、新しいgemがあなたのアプリにもたらす変更点について詳しく解説します。それでは見ていきましょう!Ruby 1.9のサポートを終了Ruby 1.9は2015年2
-
Rubyアプリの監視を最も簡単に実現する方法:自動インストルメンテーション
アプリケーションのパフォーマンスを適切に監視できる体制を整えるのは、決して簡単な作業ではありません。通常であれば、まず「何を監視すべきか」を把握し、次にコードへインストルメンテーションを組み込み、最後に送信されてきた大量のデータを読み解くという手順を踏む必要があります。しかし、必要な準備が整っており、RubyをネイティブにサポートするAPMを活用すれば、このステップはかつてないほど簡単になります。本記事では、その具体的な方法をご紹介します。自動インストルメンテーション ― 手間ゼロのAPMセットアップコードのどの部分がパフォーマンス問題の原因になっているのかを突き止めるには、コードにインストル
-
Ruby on Railsコントローラーのパターンとアンチパターン徹底解説
Ruby on Railsのパターンとアンチパターンシリーズ、第4回へようこそ。これまでの記事では、パターンとアンチパターンの概要、そしてRailsのモデルとビューに関する内容を取り上げてきました。今回はMVC(Model-View-Controller)デザインパターンの最後の要素である「コントローラー」に焦点を当て、Railsコントローラーに関連するパターンとアンチパターンを詳しく見ていきましょう。最前線に立つコントローラーRuby on RailsはWebフレームワークであるため、HTTPリクエストはその生命線とも言える存在です。さまざまなクライアントがリクエストを通じてRailsバック
-
Rubyコードのリンティング徹底解説 ― RuboCopとStandardRBの使い分け
リンティング(Linting)とは、コードを静的に解析し、潜在的な問題を発見するプロセスのことです。「何が問題なのか」の定義は、プログラミング言語によって異なるだけでなく、同じ言語内でもプロジェクトごとに変わることがあります。これらの問題は、大きく以下のカテゴリに分類できます。プログラム的な問題(Programmatic)セキュリティ上の問題(Security)スタイル上の問題(Stylistic)パフォーマンス上の問題(Performance)それでは、それぞれの具体例を見ていきましょう。スタイル上の問題コードのスタイルに「唯一の正解」は存在せず、読み手の好みの問題です。ただし、重要なのは一
-
Sidekiqで重複ジョブを防ぐ3つの方法 ― 自作実装からsidekiq-unique-jobsまで
Rubyでコードを書いているなら、バックグラウンド処理にはSidekiqを使っている方が多いのではないでしょうか。ActiveJobなど他の仕組みから移行してきた方にも役立つヒントが含まれているので、ぜひ最後まで読んでみてください。バックグラウンドジョブの活用シーンはさまざまです。数値計算を行うケースもあれば、ユーザーへのウェルカムメール送信、データ同期のスケジューリングなどもあります。どのような用途であれ、いずれ「重複するジョブを避けたい」という要件にぶつかることがあります。ここでいう重複ジョブとは、まったく同じ処理を行う2つ以上のジョブのことです。もう少し詳しく見ていきましょう。なぜジョブ
-
Railsアプリのパフォーマンス・ストレス・負荷テスト徹底解説【JMeterとruby-prof活用】
テストは、保守が悪夢にならず、新機能の追加や既存機能の改善を継続的に行える、健全なRailsアプリケーションに欠かせない要素です。しかし残念なことに、多くのアプリケーションにとって、本番環境で初めて高負荷や大量のトラフィックにさらされるというのが実情です。こうしたテストにはコストがかかるため、後回しにされがちなのは理解できます。幸い、Railsはユニットテスト、エンドツーエンドテスト、統合テストだけでなく、パフォーマンスや負荷に関するテストもしっかりサポートしています。この記事ではそれらをすべて取り上げ、アプリケーションのパフォーマンスレベルを効率的にテストするためのツールの使い方を実践的な例
-
データベースパフォーマンスの監視と最適化:実践ガイド
アプリケーションアーキテクチャを全体として捉え、各部分がどのように連携しているかを理解することは非常に重要です。特定の側面だけを見るのではなく、まず「オブザーバビリティ(可観測性)」を整え、その上で「監視(モニタリング)」を行うのが基本の流れです。この記事では、アーキテクチャの中でも特に重要なデータベースに焦点を当て、パフォーマンスの監視と最適化の方法を解説します。ここで紹介する原則の多くは、スタックやデータベースの種類(PostgreSQL、MongoDBなど)に関わらず応用できます。なぜデータベースのパフォーマンス監視が必要なのか?あるクエリが極端に遅く、アプリケーションがその結果を待つた
-
Ruby on Rails開発でよくある問題と対策ポイント
はじめに Ruby on Railsの「パターンとアンチパターン」シリーズも、いよいよ最終回です。これまで多くのトピックについて調査・執筆を重ねてきました。この記事では、長年にわたりRailsアプリケーションを構築・リリースする中で遭遇してきた、最も一般的な問題をまとめてご紹介します。 ここで取り上げる考え方は、コードのほぼすべての場面に当てはまるものです。Model-View-Controller(MVC)パターンに限定されない、汎用的な原則としてお読みください。RailsのMVCに関連するパターンやアンチパターンに興味がある方は、モデル、ビュー、コントローラに関する各記事もぜひご覧ください
-
Rubyのパターンマッチング入門:case/in構文でコードを読みやすくする
Rubyにおけるパターンマッチングについて、その仕組みとコードの可読性向上への活用方法を簡単に見ていきましょう。数年前の私のように、これを正規表現(Regex)のパターンマッチングと混同している方もいるかもしれません。「pattern matching」だけでGoogle検索すると、正規表現に近い定義の記事が上位に出てくることさえあります。正式には、パターンマッチングとは、あるデータ(文字列、トークンの列、タプルなど何でも)を別のデータと照合して検証するプロセスのことです。プログラミングにおいては、言語の能力に応じて、以下のようなことが可能になります。期待されるデータ型とのマッチング期待される
-
Rubyアプリのメモリ肥大を防ぐ方法 ― 断片化とスロー解放への対策
Rubyアプリケーションにおけるメモリ肥大(メモリブロート)は、開発者の間で頻繁に議論されるテーマです。本記事では、Rubyのメモリ管理がどのように問題を引き起こすのかを解説し、本番環境でアプリがメモリを大量消費してしまうのを防ぐための具体的な対策を紹介します。まずは、「メモリ肥大」とは何を意味するのかを正しく理解することから始めましょう。それでは、詳しく見ていきます!Rubyにおけるメモリ肥大とは?メモリ肥大とは、アプリケーションのメモリ使用量が明確な理由もなく急激に増加する現象のことです。この増加は緩やかな場合もありますが、多くの場合は継続的に進行します。一定期間にわたる複数回の実行によっ
-
Rails REST APIで実現するオプティミスティックロック(楽観的ロック)の基本と実装
次のようなシナリオを想像してみてください。賃貸物件管理システムで、従業員Aが物件Xの連絡先情報を編集し始め、電話番号をいくつか追加します。ほぼ同じタイミングで、従業員Bがまさにその物件Xの連絡先情報に誤字を見つけ、修正のための更新を行います。数分後、従業員Aが新しい電話番号を含む連絡先情報で物件Xを更新すると……なんと、誤字を修正したあの更新が消えてしまいました!これは明らかに好ましい状況ではありません。しかも、これはごく単純な例にすぎません。もし同様の競合が金融システムで発生したらどうなるでしょうか。想像するだけで恐ろしいですね。このようなシナリオを将来にわたって回避することはできるのでしょ
-
【実践解説】Rubyのガベージコレクションをチューニングしてパフォーマンスを改善する方法
本記事が、2017年にNate Berkopec氏によって執筆された「Understanding Ruby GC through GC.stat」という記事に基づいていることが判明しました。記事の一部に剽窃が含まれており、原著者からご指摘いただくまで私たちはその事実を認識していませんでした。公開前にはすべての記事を剽窃チェックツールにかけていますが、今回は残念ながら検出できませんでした。この不測の過誤につきまして、Nate氏ならびに読者の皆様に深くお詫び申し上げます。 Rubyアプリケーションのパフォーマンスを完全にコントロールするためには、ガベージコレクション(GC)がどのように動作するのか