タケユー・ウェブ株式会社のフィード

https://zenn.dev/p/takeyuwebinc

Ruby on Rails によるWebサービス受託開発をしています。 中小規模のWebサービスの新規開発の他、他の個人開発者などから引き継いで保守運用を行ったりしています。 新規開発、お手伝いや顧問、レガシーなRailsプロジェクトの保守など、ニーズにあわせて対応できます。ご相

フィード

記事のアイキャッチ画像
ActiveJob::Continuable で Durable Agent を作る
タケユー・ウェブ株式会社のフィード
RubyLLMでは「エージェント」や「ツール」を提供しますが、それらをどのように繋げるかとワークフローの実装についてフレームワークを提供せず、アプリ実装者に委ねられています。https://x.com/takeyuweb/status/2050868032906621319https://zenn.dev/takeyuwebinc/articles/ea2be00723b53d#構成要素4-—-マルチエージェントワークフローこのようなAIエージェントによるワークフローをはじめとした長時間・多段階の実行では、ネットワークアクセス失敗やタイムアウト、プロセス終了による中断など、正常に完...
14日前
記事のアイキャッチ画像
RubyLLM × さくらのAI Engine — 「OpenAI 互換」でハマったこと
タケユー・ウェブ株式会社のフィード
さくらのAI Engine(以下 さくら)は OpenAI 互換 API を提供しており、base_url を差し替えるだけで OpenAI 用に書いたクライアントが動きます。RubyLLM から繋ぐぶんには、API キーと openai_api_base を さくら の値に差し替えるだけで chat.ask までは通ります。ただし「OpenAI 互換」が保証するのは「同じクライアントで叩ける」段階までで、振る舞いが OpenAI と同じわけではありません。本記事では さくら に切り替えたときに実際に詰まった 2 点 — with_schema が効かない点と、tools を使ったときの...
22日前
記事のアイキャッチ画像
Rails アプリにベクトル検索を組み込む: pgvector + neighbor + informers
タケユー・ウェブ株式会社のフィード
Rails アプリに文書の類似検索を組み込むとき、pgvector + neighbor + informers の組み合わせは Rails 標準構成の延長で導入できます。PostgreSQL の vector 拡張を有効にし、Gemfile に neighbor と informers を加え、has_neighbors を宣言すれば、nearest_neighbors で類似検索ができる状態になります。ベクトル検索によって「類似記事」を表示するデモ(GitHub)!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性につ...
25日前
記事のアイキャッチ画像
Rails + OTel + CloudWatch Metrics で実現するビジネスメトリクスの傾向監視
タケユー・ウェブ株式会社のフィード
本記事で実現するのは、Rails 8.1アプリケーションのビジネスメトリクスをOpenTelemetry Metrics SDKで記録し、CloudWatch MetricsのOTLPエンドポイントに送ってダッシュボードとアラームで傾向監視する構成です。Metrics SDKを活用すれば、Counter(累積カウント)とHistogram(分布)が定期送信され、3シグナルが揃って「アラーム検知(Metrics)→原因調査(Traces)→詳細確認(Logs)」という運用フローを組めます。ただしCloudWatch Metrics OTLPエンドポイントは2026年4月時点でPublic...
1ヶ月前
記事のアイキャッチ画像
Structured Event Reporter+ OTel + CloudWatch Logs で実現する構造化イベントログ
タケユー・ウェブ株式会社のフィード
Rails 8.1のStructured Event Reporter(Rails.event)で構造化イベントを発行し、OpenTelemetry Logs API経由でCloudWatch Logsに送信すると、CloudWatch Logs Insightsで属性ベースのフィルタリング・集計が可能になります。Rails.logger.info "Order created: #{order.id}"のようなテキストログでは正規表現やパースが必要だった検索が、イベント名app.order.createdや属性book_idを指定するだけで完了します。さらに、Log Recordには...
1ヶ月前
記事のアイキャッチ画像
Rails + OTel + AWS X-Ray で実現するリクエストの構造化トレース
タケユー・ウェブ株式会社のフィード
Rails 8.1アプリケーションにOpenTelemetry(OTel)の自動計装を導入すると、HTTPリクエストの処理がController、DBクエリ、View描画といったSpan単位で構造化され、AWS X-Rayのタイムラインでボトルネックを一目で特定できるようになります。テレメトリの中継にはADOT Collector(AWS提供のOTel Collector)を使い、SigV4(AWS APIリクエストの標準的な署名方式)認証付きでX-RayのOTLPエンドポイントに送信します。Docker Compose環境で再現可能な構成を、本記事で一通り構築します。!この記事の執...
2ヶ月前
記事のアイキャッチ画像
Web Push APIはなぜ外部サービスなしで通知を届けられるのか — 仕組みとRails実装
タケユー・ウェブ株式会社のフィード
Web Push APIはW3C/IETF標準のプロトコルであり、FCMやOneSignalといった外部サービスのアカウント登録やAPIキー取得なしに、サーバーからブラウザへプッシュ通知を送信できます。アプリサーバー、プッシュサービス、ブラウザの3者間で、VAPID認証による身元証明とペイロード暗号化によるエンドツーエンドの秘匿性が標準仕様として組み込まれています。Railsではweb-push gemを使えば、これらのRFC準拠の暗号処理を意識せずに実装できます。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については...
2ヶ月前
記事のアイキャッチ画像
RubyLLMで始めるLLM Agentプログラミング — 構成要素の理解から実装まで
タケユー・ウェブ株式会社のフィード
LLM Agentは「Agent定義」「Tool Calling」「構造化出力」「マルチエージェントワークフロー」の4つの構成要素に分解できます。Anthropic、OpenAI、Googleが公開しているエージェント設計ガイドでも、表現は異なるものの「LLM + ツール + オーケストレーション」という共通の構成に収束しています。RubyLLMを使えば、これら4つの構成要素をRails開発者が馴染みのあるパターン(クラスマクロ、ActiveRecord統合、Pure Rubyによるワークフロー構成)で実装できます。本記事では、技術記事自動作成ワークフローのデモアプリを題材に、各構成要素...
2ヶ月前
記事のアイキャッチ画像
Kamalは常にHEADをビルドする — リリースタグとpre-buildフックで本番デプロイを制御する
タケユー・ウェブ株式会社のフィード
Kamal v2はVERSION環境変数を指定しない場合、HEADのコミットSHAをDockerイメージのタグ名に使います。ではVERSIONにタグ名やコミットIDを指定すれば、そのコミットがビルド・デプロイされるのでしょうか?されません。VERSIONはイメージのタグ名を決めるだけであり、ビルド対象は常にHEADです。この仕様を理解していないと、意図しないコミットが本番に出る事故 につながります。対策として 「リリースタグ付きコミットからのみ本番ビルドを許可する」 運用ルールを採用し、Kamalのpre-buildフックでこのルールを機械的に強制する実装を紹介します。!この記事の執...
2ヶ月前
記事のアイキャッチ画像
Rails enum のカラム型、integer・string・PostgreSQL native enum をどう選ぶか
タケユー・ウェブ株式会社のフィード
Rails の ActiveRecord::Enum で、カラム型に integer・string・PostgreSQL native enum のどれを選ぶべきか。多くのケースでは string 型 + CHECK 制約が最適です。本記事では3つの選択肢のトレードオフを整理し、この判断に至る根拠をデータベースごとに示します。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景: なぜ enum のカラム型が...
3ヶ月前
記事のアイキャッチ画像
Dev ContainerでClaude Codeのプラグインマーケットプレイスのプラグインを読み込めなくなる問題を解決する
タケユー・ウェブ株式会社のフィード
Dev Container環境でホストのClaude Code設定をバインドマウントで共有すると、プラグインマーケットプレイスからインストールしたプラグインをコンテナ内で読み込めなくなります。バインドマウント先をホストと同じパスに変更し、CLAUDE_CONFIG_DIR環境変数を設定することで、ホスト・コンテナ双方向のパス解決を実現できます。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景Claude...
3ヶ月前
記事のアイキャッチ画像
RailsアプリにLLMオブザーバビリティを導入する — Langfuse + langfuse-rb gem
タケユー・ウェブ株式会社のフィード
RailsアプリケーションでLLMを活用する際、プロンプトのバージョン管理やLLM呼び出しの追跡が運用上の課題になります。この記事では、LLMオブザーバビリティプラットフォームLangfuseとlangfuse-rb gemを使い、Railsプロジェクトへのインストール方法と、プロンプト管理・トレーシングの基本を解説します。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景 — LLMアプリケーション開発の...
3ヶ月前
記事のアイキャッチ画像
Dockerのuserns-remapが有効な環境でボリュームマウントの書き込みに失敗する
タケユー・ウェブ株式会社のフィード
TL;DR現象: コンテナ内でrootなのにマウントしたボリュームに書き込めない原因: userns-remapによりコンテナ内のUID=0がホスト上では別のUID(例: 165536)にマッピングされている解決策: ホストディレクトリの所有者をマッピング後のUIDに変更する 問題ホストの/mnt/shared/storageをコンテナ内の/app/storageにマウントしたところ、書き込みがPermission deniedで失敗した。 ホスト側$ ls -al /mnt/shared/drwxr-xr-x 2 app-user app-user 1...
6ヶ月前
記事のアイキャッチ画像
Rails Engine で tailwindcss-rails を使う方法
タケユー・ウェブ株式会社のフィード
はじめにRails Engineを使ったモジュラーモノリス構成において、各Engine独立したTailwindCSSの管理方法について、tailwindcss-rails gemを用いた実装方法を詳しく解説します。https://railsguides.jp/engines.htmlhttps://github.com/rails/tailwindcss-rails 課題Rails Engineでtailwindcss-railsを使う際の主要な課題:ソースファイルパスの解決: 親アプリケーションのディレクトリから見た、TailwindCSSソースファイルのパスがE...
7ヶ月前
記事のアイキャッチ画像
Claude Code で作業プロファイル機能を実装して効率的にAI活用する
タケユー・ウェブ株式会社のフィード
はじめにAI エージェントを活用した開発では、適切なコンテキスト設定が作業効率を大きく左右します。Claude Code では、 CLAUDE.md にコンテキストとして必要な指示や説明を記載することで、プロジェクト固有の事情にも対応することができます。本記事では、私が開発プロジェクトに実装した作業プロファイルについて、設定方法からメリットまでを解説します。 作業プロファイルとは作業プロファイルは、作業の種類(開発・レビューなど)に応じて、Claude Code のコンテキストを動的に切り替える仕組みです。プロファイルごとに特化したプロンプトを用意しておくことで、特定のタス...
7ヶ月前
記事のアイキャッチ画像
Sentry Logsで実現するRailsアプリの構造化ロギング
タケユー・ウェブ株式会社のフィード
はじめにRailsアプリケーションの運用において、ログの管理は問題発生時のデバッグやサービス監視のために重要な構成要素です。しかし、従来のプレーンテキストログでは、特定の条件に合致するログを正確に抽出したり、ログを集計・分析したりすることが困難でした。この記事では、Sentry Logs と ActiveSupport::Notifications を組み合わせて、Railsアプリケーションに構造化ロギングを導入する方法を解説します。構造化ロギングにより属性ベースのログ検索・集計が可能になり、さらにSentry Logsを使うことで、エラー、トレース、ログを一つの画面で確認できる...
7ヶ月前
記事のアイキャッチ画像
Real World Kamal
タケユー・ウェブ株式会社のフィード
対象読者Kamal の仕組みを知りたいKamal のメリットを知りたいKamal の実際の運用方法を知りたい※デプロイツールって何?Dockerって?という初学者は対象としていません。※Kamalの基本的なインストール方法、導入方法については詳しく説明していません。 はじめにこの記事では、Kamal v2を実際に案件で使ってみてわかったことをもとに、実践的なKamalの使い方を紹介します。Kamalは、RenderやECS+Fargateなどの商用サービスと違い特定のプラットフォームに依存せず、昔ながらのCapistranoなどと比べてデプロイ先の環境構築が容易...
1年前
記事のアイキャッチ画像
カスタムバリデーションはカスタムバリデータクラスで書こう
タケユー・ウェブ株式会社のフィード
!カスタムバリデータを使うと、モデルクラスから本質的でないロジックを追い出し、コードやテストを見通し良く保つ ことができます。 この記事でわかることActiveModel::EachValidator の使い方テストの書き方 事の起こりある案件で wareki gem を使って入力された日付を和暦に変換して表示しています。ある日お客様が入力した日付に誤りがあり、和暦が存在しない年がデータベースに登録され、ページを表示する際にエラーが発生し、表示できなくなってしまいました。その際はデータを修正することで復旧しましたが、次回から同じ誤りが発生しないよう、バリデーシ...
2年前
記事のアイキャッチ画像
現実のRuby/Railsアップグレード
タケユー・ウェブ株式会社のフィード
!この記事は、Kaigi on Rails 2024 で発表した内容の原稿をもとに作成しました。 対象読者課題を感じているけどどのように対処すればよいかわからない中級者課題に気づいていない初級者あるあるを楽しめる上級者 はじめにRuby on Railsアプリケーションを最新の状態に保つことは、新機能の利用だけでなく、セキュリティやパフォーマンスの面でも重要です。定期的なアップグレードは、アプリケーションの堅牢性を確保し、最新のフレームワークの進歩を活用するために不可欠です。Railsアプリケーションのアップグレードは、決して簡単ではありません。計画、テスト、...
2年前
記事のアイキャッチ画像
Windowsユーザーがmacを使う必要があるときにしたキーボード設定
タケユー・ウェブ株式会社のフィード
私は普段の開発業務にWindows11(+WSL2)を使用していますが、今回必要があってmac(Sonoma)を使うことになりました。その際キーボードの違いにストレスを感じることが多かったのですが、いくつかの設定を行うことで、これを改善できました。 環境macOS Sonoma 14.4.1REALFORCE 日本語フルキーボード(Windows)KVMによりWindows機とディスプレイと入力機器を共有 設定 Karabinerのインストールhttps://karabiner-elements.pqrs.orgインストール・起動後、案内に従って『セキュリ...
2年前