タケユー・ウェブ株式会社のフィード
https://zenn.dev/p/takeyuwebinc
タケユー・ウェブ株式会社(2016年設立・さいたま市)の技術発信です。Ruby on Rails 専門の一人会社で、設計から運用まで担当します。Ruby Association 会員。
フィード

MCPサーバーはなぜ事前登録なしでログインできるのか
1
タケユー・ウェブ株式会社のフィード
はじめにこんにちは、竹内です。最近、AIエージェントにMCPサーバーを追加するとき、昔のように「クライアントを事前に登録してクライアントIDとシークレットを取得して…」といった面倒なしに使えるものもあって便利ですよね。でもどうやって認可するんでしょう?気になりませんか?僕は気になったので、調べた内容を記事にすることにしました。対象は2026-07-28版のMCP仕様(Authorization)です。先に答えを書いておくと、こういう仕組みでした。クライアントは自分の情報をHTTPSで公開し、そのURLをclient_idとして名乗る。認可サーバーはそのURLを取りに行って...
4日前

RubyLLM 2.0 の新機能10選
タケユー・ウェブ株式会社のフィード
はじめにこんにちは、竹内です。先日、RubyLLM 2.0 がリリースされました。https://rubyllm.com/whats-new-in-2-0/この記事では、作者である @paolino がリリースについてのポストで触れていた10個の新機能について実際に試してみて、僕が理解したことをサンプルコードを交えてご紹介します。Ruby/RailsアプリにLLM機能を追加したいと考えている方は、ぜひRubyLLMを試してみてください!https://x.com/paolino/status/2100908836475281669?s=20 RubyLLM について...
1ヶ月前

OmarchyがLGTMなLinuxだった5つのポイント
タケユー・ウェブ株式会社のフィード
こんにちは、竹内です。最近盛り上がりを見せるLinuxディストリビューションOmarchy、皆さんはもう触られましたか?僕にとってOmarchyはDHHの個人プロジェクトという認識で手を出していなかったのですが、最近Omacom Foundationが設立されたことで、フェーズが変わったと思い試してみることにしました。その結果、めっちゃいい!! と思えたので、そう感じたポイントを5つに絞ってお伝えします。https://omarchy.jp/ Looks Good To Me だった 5つのポイント前提として僕は、OSやワークスペースのカスタマイズや設定は極力変更せずデフォ...
1ヶ月前

Thinking(思考)をざっくり理解する
タケユー・ウェブ株式会社のフィード
こんにちは、竹内です。先日、Fable 5.1がリリースされましたね。新機能に目を通すと Thinking(思考) という単語がたくさんあります。「なんか賢くなったんやな!」と流してしまいそうですが、そもそもここで言う Thinking とはなんのことで、何をしているのか、ざっくりとでも理解しておくともっとうまく使えそうです。ということで調べたことを書いておきます。 Claude Fable 5.1の新機能を見るhttps://platform.claude.com/docs/ja/models/fable-5-1/whats-new-fable-5-1を読むと、こんなこと...
2ヶ月前

Windows仮想デスクトップで番号で特定のデスクトップへ移動するショートカットを設定する
タケユー・ウェブ株式会社のフィード
Windowsの仮想デスクトップ、特定のデスクトップへ一発で移動するショートカットは存在せず、目的のデスクトップまで次へ( Win+→ )と前へ( Win+← )を連打する必要があります。Win+1 で1番目、 Win+2 で2番目に移動したいですよね。以下のフリーソフトウェアを組み合わせることでできました。VirtualDesktopAccessor.dll.ahkとおなじフォルダに置くAutoHotKey後述のスクリプト( GoToDesktop.ahk )で F13でデスクトップ1、F14でデスクトップ2へGoToDesktop.ahk へのショートカ...
5ヶ月前

ActiveJob::Continuable で Durable Agent を作る
タケユー・ウェブ株式会社のフィード
RubyLLMでは「エージェント」や「ツール」を提供しますが、それらをどのように繋げるかとワークフローの実装についてフレームワークを提供せず、アプリ実装者に委ねられています。https://x.com/takeyuweb/status/2050868032906621319https://zenn.dev/takeyuwebinc/articles/ea2be00723b53d#構成要素4-—-マルチエージェントワークフローこのようなAIエージェントによるワークフローをはじめとした長時間・多段階の実行では、ネットワークアクセス失敗やタイムアウト、プロセス終了による中断など、正常に完...
5ヶ月前

RubyLLM × さくらのAI Engine — 「OpenAI 互換」でハマったこと
タケユー・ウェブ株式会社のフィード
さくらのAI Engine(以下 さくら)は OpenAI 互換 API を提供しており、base_url を差し替えるだけで OpenAI 用に書いたクライアントが動きます。RubyLLM から繋ぐぶんには、API キーと openai_api_base を さくら の値に差し替えるだけで chat.ask までは通ります。ただし「OpenAI 互換」が保証するのは「同じクライアントで叩ける」段階までで、振る舞いが OpenAI と同じわけではありません。本記事では さくら に切り替えたときに実際に詰まった 2 点 — with_schema が効かない点と、tools を使ったときの...
5ヶ月前

Rails アプリにベクトル検索を組み込む: pgvector + neighbor + informers
タケユー・ウェブ株式会社のフィード
Rails アプリに文書の類似検索を組み込むとき、pgvector + neighbor + informers の組み合わせは Rails 標準構成の延長で導入できます。PostgreSQL の vector 拡張を有効にし、Gemfile に neighbor と informers を加え、has_neighbors を宣言すれば、nearest_neighbors で類似検索ができる状態になります。ベクトル検索によって「類似記事」を表示するデモ(GitHub)!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性につ...
6ヶ月前

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...
6ヶ月前

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には...
6ヶ月前

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環境で再現可能な構成を、本記事で一通り構築します。!この記事の執...
6ヶ月前

Web Push APIはなぜ外部サービスなしで通知を届けられるのか — 仕組みとRails実装
タケユー・ウェブ株式会社のフィード
Web Push APIはW3C/IETF標準のプロトコルであり、FCMやOneSignalといった外部サービスのアカウント登録やAPIキー取得なしに、サーバーからブラウザへプッシュ通知を送信できます。アプリサーバー、プッシュサービス、ブラウザの3者間で、VAPID認証による身元証明とペイロード暗号化によるエンドツーエンドの秘匿性が標準仕様として組み込まれています。Railsではweb-push gemを使えば、これらのRFC準拠の暗号処理を意識せずに実装できます。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については...
7ヶ月前

RubyLLMで始めるLLM Agentプログラミング — 構成要素の理解から実装まで
タケユー・ウェブ株式会社のフィード
LLM Agentは「Agent定義」「Tool Calling」「構造化出力」「マルチエージェントワークフロー」の4つの構成要素に分解できます。Anthropic、OpenAI、Googleが公開しているエージェント設計ガイドでも、表現は異なるものの「LLM + ツール + オーケストレーション」という共通の構成に収束しています。RubyLLMを使えば、これら4つの構成要素をRails開発者が馴染みのあるパターン(クラスマクロ、ActiveRecord統合、Pure Rubyによるワークフロー構成)で実装できます。本記事では、技術記事自動作成ワークフローのデモアプリを題材に、各構成要素...
7ヶ月前

Kamalで本番デプロイをリリースタグ運用する方法
タケユー・ウェブ株式会社のフィード
Kamal v2はVERSION環境変数を指定しない場合、HEADのコミットSHAをDockerイメージのタグ名に使います。ではVERSIONにタグ名やコミットIDを指定すれば、そのコミットがビルド・デプロイされるのでしょうか?されません。VERSIONはイメージのタグ名を決めるだけであり、ビルド対象は常にHEADです。この仕様を理解していないと、意図しないコミットが本番に出る事故 につながります。対策として 「リリースタグ付きコミットからのみ本番ビルドを許可する」 運用ルールを採用し、Kamalのpre-buildフックでこのルールを機械的に強制する実装を紹介します。!この記事の執...
7ヶ月前

Rails enum のカラム型、integer・string・PostgreSQL native enum をどう選ぶか
タケユー・ウェブ株式会社のフィード
Rails の ActiveRecord::Enum で、カラム型に integer・string・PostgreSQL native enum のどれを選ぶべきか。多くのケースでは string 型 + CHECK 制約が最適です。本記事では3つの選択肢のトレードオフを整理し、この判断に至る根拠をデータベースごとに示します。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景: なぜ enum のカラム型が...
7ヶ月前

Dev ContainerでClaude Codeのプラグインマーケットプレイスのプラグインを読み込めなくなる問題を解決する
タケユー・ウェブ株式会社のフィード
Dev Container環境でホストのClaude Code設定をバインドマウントで共有すると、プラグインマーケットプレイスからインストールしたプラグインをコンテナ内で読み込めなくなります。バインドマウント先をホストと同じパスに変更し、CLAUDE_CONFIG_DIR環境変数を設定することで、ホスト・コンテナ双方向のパス解決を実現できます。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景Claude...
8ヶ月前

RailsアプリにLLMオブザーバビリティを導入する — Langfuse + langfuse-rb gem
タケユー・ウェブ株式会社のフィード
RailsアプリケーションでLLMを活用する際、プロンプトのバージョン管理やLLM呼び出しの追跡が運用上の課題になります。この記事では、LLMオブザーバビリティプラットフォームLangfuseとlangfuse-rb gemを使い、Railsプロジェクトへのインストール方法と、プロンプト管理・トレーシングの基本を解説します。!この記事の執筆にあたり、AIによる支援(レビュー、文章の整形、ファクトチェック)を受けています。内容の正確性については可能な限り筆者が確認していますが、もしも誤りを見つけた場合はコメントでお知らせ頂けると嬉しいです。 背景 — LLMアプリケーション開発の...
8ヶ月前

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...
10ヶ月前

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...
1年前

Claude Code で作業プロファイル機能を実装して効率的にAI活用する
タケユー・ウェブ株式会社のフィード
はじめにAI エージェントを活用した開発では、適切なコンテキスト設定が作業効率を大きく左右します。Claude Code では、 CLAUDE.md にコンテキストとして必要な指示や説明を記載することで、プロジェクト固有の事情にも対応することができます。本記事では、私が開発プロジェクトに実装した作業プロファイルについて、設定方法からメリットまでを解説します。 作業プロファイルとは作業プロファイルは、作業の種類(開発・レビューなど)に応じて、Claude Code のコンテキストを動的に切り替える仕組みです。プロファイルごとに特化したプロンプトを用意しておくことで、特定のタス...
1年前