RubyonRails

RailsでLLM活用!AIエージェント開発手順と実装ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

AIエージェントとは?Railsでの活用シーン

AI エージェントは、大規模言語モデル(LLM)をバックエンドに持ち、自然言語で指示や問い合わせを受け取って自律的に処理するコンポーネントです。Rails の MVC と組み合わせることで ビジネスロジックAI ロジック を明確に分離でき、保守性の高いコードベースが実現します。本セクションでは、代表的な業務シーンと導入メリットを解説します。

HRMS における具体的な活用例

HR システム(Human Resource Management System)では、評価コメントやヘルプデスクの問い合わせが大量に発生します。AI エージェントを組み込むことで次のような効果が期待できます。

  • 自動要約・分析:従業員が入力した自由記述テキストを LLM に送信し、要約や感情スコアを取得。
  • 検索性向上:要約結果やタグ付け情報をデータベースに保存することで、管理者はダッシュボードから瞬時に必要な情報へアクセス可能。
  • 業務負荷軽減:手作業で行っていたレビュー工程が削減され、ヒューマンエラーも低減します。

※要約処理のコストは利用する LLM の料金表とトークン使用量に依存します。実際の見積もりは各ベンダーの公式プライシングページをご参照ください(例:OpenAI、Anthropic、Google Cloud)。

業務プロセス全般への適用ポイント

AI エージェントは HR 以外でもさまざまな業務に活用できます。以下は典型的なユースケースです。

  • ナレッジベース検索:社内ドキュメントや過去のサポートチケットを LLM に問い合わせ、関連情報を即座に返す。
  • 文書自動分類:経費精算書類の OCR テキストを LLM が解析し、勘定科目や承認フローへ自動振り分け。
  • レポート生成:毎朝の営業サマリーやプロジェクトステータスを LLM に要約させ、Slack などの通知チャネルに配信。

Rails のバックグラウンドジョブ(例:Sidekiq)と組み合わせることで、時間がかかる LLM 呼び出しも非同期化でき、ユーザー体験を阻害しません。


RubyLLM の導入と設定

ruby_llmコミュニティがメンテナンスしている gem で、OpenAI、Anthropic、Google Gemini など複数のプロバイダーに対する統一インターフェースを提供します。公式リポジトリや API リファレンスは以下です。

gem のインストール手順

まず Gemfile に追加し、Bundler でインストールします。Rails 標準の依存関係と競合しにくい設計です。

次に初期化ファイルでプロバイダー情報と API キーを設定します。config/initializers/ruby_llm.rb に以下を書き込みます。

ポイント:環境変数は .env(開発・テスト)や Rails.application.credentials(本番)で安全に管理します。公式ガイドは https://guides.rubyonrails.org/security.html#custom-credentials を参照してください。

対応 LLM と選定指針

利用するモデルはプロジェクトの コスト感度、応答速度、データ保護要件 に合わせて選びます。下表は主要 3 社の特性をまとめたものです(公式情報へのリンク付き)。

項目 OpenAI (GPT) Anthropic (Claude) Google Gemini
生成品質 多様な文体・コード補完が得意
https://platform.openai.com/docs/models/gpt-4
安全性と指示遵守に重点
https://docs.anthropic.com/claude/reference
大規模データに基づく高速応答
https://cloud.google.com/vertex-ai/docs/generative-ai
料金体系 トークン単価が明示(例:$0.002 / 1k トークン) 同様のトークン課金だが、プロンプト単価は若干低め 無料枠あり、使用量に応じて従量課金
レートリミット プランにより変動(例:60 rpm) 標準で 30 rpm Google Cloud の API 制限に依存
データ保持・暗号化 オプトインでデータ保存可、暗号化は標準 デフォルトで永続保存なし、暗号化済み IAM と Cloud KMS による細粒度制御

選定のヒント
- 機密情報を扱う場合は Anthropic のデータ保持ポリシー が有利です。
- コード生成や多言語対応が重要なら OpenAI が最適です。
- 既に Google Cloud を利用している組織は Gemini に統合しやすいでしょう。

環境変数・シークレット管理のベストプラクティス

機密情報の漏洩リスクを最小化するため、以下の手順で設定します。

  1. dotenv-rails(開発/テスト)と Rails Encrypted Credentials(本番)を併用。
  2. .env ファイルは必ず .gitignore に追加し、リポジトリにコミットしない。
  3. CI/CD では GitHub Actions の secrets 機能で環境変数を注入する。

GitHub Actions の設定例(後述の CI パイプライン参照):


Service Object と非同期ジョブで外部 API を呼び出す

Service Object の実装例

Rails アプリでは コントローラ にロジックを詰め込まず、app/services 配下に単一責務のクラスとして切り出すことがベストプラクティスです(公式ガイド https://guides.rubyonrails.org/active_record_validations.html#service-objects 参照)。

コントローラは 入力の受け取りとジョブ起動 のみを担当します。

ActiveJob / Sidekiq でのバックグラウンド処理

LLM 呼び出しは数秒以上かかることがあるため、Sidekiq と Rails の抽象層 ActiveJob を利用して非同期化します(公式ドキュメント https://guides.rubyonrails.org/active_job_basics.html、Sidekiq ガイド https://github.com/mperham/sidekiq/wiki/Active-Job)。

ポイント
- retry_on により一時的な API エラーは自動リトライ。
- ジョブ完了後にステータスを更新することで、フロントエンド側で進捗表示が可能です。


テスト戦略:RSpec とモック/スタブ

LLM クライアントのモック化例

外部 API への実ネットワーク呼び出しはテスト速度と安定性を阻害します。WebMockRSpec Mocks を組み合わせてクライアントをスタブ化しましょう(公式ガイド https://github.com/bblimke/webmockhttps://relishapp.com/rspec/rspec-mocks/docs)。

エンドツーエンドなリクエストスペック

コントローラ層の動作とジョブキューイングを検証する例です。

テストカバレッジの指針
- Service Object の正常系・例外系を網羅。
- ActiveJob のリトライロジックも perform_now で直接呼び出し、ステータス遷移を確認。
- コントローラは request spec に留め、ルーティングやパラメータバリデーションのチェックを行う。


アーキテクチャ・CI/CD・運用ベストプラクティス

DDD / Modular Monolith のディレクトリ構成例

Rails 単一リポジトリでも ドメイン境界 を意識したフォルダ分割が可能です。以下は「要約機能」を中心に据えた例で、公式ガイド https://guides.rubyonrails.org/engines.html の概念を流用しています。

メリット
- ビジネスロジックは domain に集約され、インフラ変更(例:Anthropic → Gemini)時は infrastructure/llm_clients のみ差し替えれば済む。
- テスト対象が明確になるため、ユニットテストと統合テストの境界がはっきりします。

GitHub Actions による CI パイプライン

CI では 依存解決 → 静的解析 → RSpec 実行 → カバレッジアップロード の流れを自動化します(公式リファレンス https://docs.github.com/en/actions)。

ポイント
- secrets に格納した API キーはテストコード内で使用しない(モック化する)。
- RuboCop と SimpleCov でコード品質とテスト網羅率を可視化。

本番運用でのトークン管理・レートリミット対策

LLM の課金は トークン単位、レートリミットはプロバイダーごとに異なるため、以下の施策で安定稼働を確保します。

  1. 使用量モニタリング
  2. Prometheusruby_llm_requests_totalruby_llm_tokens_used をエクスポートし、Grafana で可視化。
  3. レートリミット制御
  4. Sidekiq の sidekiq-throttler プラグインで分単位の上限を設定(例:Anthropic は 30 rpm)。
  5. キャッシュ戦略
  6. 同一テキストの要約結果は Redis に保存し、再利用率が高いパターンでは API 呼び出しを省く。

エラーハンドリングと監視

LLM 呼び出し失敗は業務フローに直結するため、統一エラークラス と外部モニタリングツールの併用が必須です。

  • ロギングlograge(JSON ログ)を導入し、検索しやすい構造化ログに。
  • 監視は Sentry のアラートポリシーで「RateLimitExceeded が 5 分間に 3 回以上」なら Slack に通知。公式ドキュメント https://docs.sentry.io/platforms/ruby/ を参照してください。

まとめ

  1. AI エージェントは Rails の MVC と相性が良く、HRMS やナレッジベースなどの自動化に最適
  2. ruby_llm(コミュニティ製 gem)を用いれば、OpenAI・Anthropic・Gemini への統一インターフェースで呼び出しが可能。公式リファレンスへのリンクを添えて安全に導入しましょう。
  3. Service Object + ActiveJob/Sidekiq による非同期設計は、LLM の遅延やレートリミットに強く、テスト容易性も向上します。
  4. RSpec と WebMock で外部依存を排除した高速テストスイートを構築し、CI に組み込むことで品質を継続的に保証できます。
  5. DDD / Modular Monolith のディレクトリ設計GitHub Actions を活用すれば、コードベースの可読性とデプロイ自動化が実現します。
  6. 本番運用では トークン使用量モニタリング、レート制御、キャッシュ、そして Sentry でのエラーハンドリング を組み合わせてコスト最適化と安定稼働を両立させます。

これらのベストプラクティスに沿って実装すれば、Rails 開発者は 安全・高速・拡張性の高い AI エージェント を自信を持ってプロダクトへ組み込むことができます。ぜひサンプルリポジトリでコードを確認し、ハンズオンで体感してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-RubyonRails