TECH PLAY

株式会社ユーザベース

株式会社ユーザベース の技術ブログ

494

はじめに 企業レポートの生成を行うエージェントの作成を行う中で、レポート生成にかかる時間・費用・レポートの質の改善に取り組みました。 改善点を行う中で、Stateやプロンプトキャッシュ周りのAgent Platform(旧VertexAI)の仕様について深く知ることができたので記事にしています。 改善前の状況 企業レポートの作成を行うエージェントは以下のような流れで動いていました。 成果物はレスポンスに込め、次のエージェントにコンテキストとして渡し、エージェントは与えられたコンテキストとプロンプトを元に生成を行います。 レポートの質を高めるため、「執筆」→「レビュー」→「編集」を行うエージェン…
はじめに こんにちは。株式会社ユーザベースの石井です。 gemini-3-pro-image-preview の呼び出しに対して 429 Too Many Requests が返ってくる事象に遭遇しました。 問い合わせを通じてVertexAIのスループットの上限まわりの仕様の理解が深まったため記事にしております。 背景:Speeda AI Agent と「アカウントプランを作成する β版」機能 私たちが開発している 「Speeda AI Agent」のワークフローのひとつに「アカウントプランを作成する β版」という機能があります。これは、各種開示資料の要約や課題の情報をベースに、商材の提案資料…
自己株式数・発行済株式数・取引不在の現実に向き合った数ヶ月 こんにちは。株式会社ユーザベースの相川です。 この数ヶ月、自己株式数の取得・登録と、時価総額の算出ロジックに取り組んできました。 振り返ると、やっていたのは機能追加というより、市場データの複雑さを、壊れない業務ルールに翻訳する作業でした。 時価総額の式はシンプルです。 時価総額 = (発行済株式数 - 自己株式数) × 株価 ただし実務では、この3要素が同じ時間軸で揃っていることはほとんどありません。 この「式の単純さ」と「データの複雑さ」のギャップが、実装の本質的な難しさでした。 取引がない期間が、時価総額計算を難しくする 新興市場…
こんにちは。ユーザベースの細田と申します。 私は2025年にユーザベースに入社して以来、インサイドセールス(IS)としてエンタープライズ企業様をはじめとしたさまざまな企業様の深耕や開拓に従事しております。 この記事では、私がISとして取り組んでいる生成AIを活用した業務変革や、私がなぜこれほどまでに生成AIに情熱を注いでいるのか、その想いについてお話しできればと思います。 AIが単なる業務効率化に留まらず、いかにして顧客への価値提供のあり方や私たちの働き方、そして生き方を変革しうるのかをご紹介できれば幸いです。 なぜ今、インサイドセールスに生成AIが必要なのか? ISという仕事は一見シンプルに…
はじめに 株式会社ユーザベース スピーダ事業 竹澤です。 この記事の内容としては、本番稼働中のAPIを止めずに、APIが参照しているDBにNOT NULL制約のあるカラムを追加する1つの方法の紹介です。 私はさまざまなSPEEDAのマイクロサービスから財務値を取得できるような、コアな財務APIの開発に携わっていました。 当初の設計では変則決算を考慮していなかったのですが、開発を進めていくうちに変則決算も必要になりました。 アプリケーションの構成 まずは、ここでこの財務APIの構成を紹介します。 本記事で不要な部分に関しては、省略しています。 ユーザーがAPIを叩くと、アプリケーションは財務AP…
はじめに こんにちは。株式会社ユーザベース Speeda事業の佐藤、小原、阿波連、長岡です。 *1 2026/04/14にGAされた Salesforce Hosted MCP Servers について、スクラッチ環境への接続で一部ハマりどころがありました。 本記事では、接続方法、接続トラブルの原因とその具体的な回避策について、備忘録を兼ねて共有します。 はじめに 手順 遭遇したエラーとその回避策 MCPサーバーでできること おわりに 参考文献 手順 Cursorからスクラッチ組織のMCPサーバーに接続していきます。 スクラッチ組織の作成方法は割愛します。 公式ドキュメントの手順はこちらです。…
こんにちは。株式会社ユーザベースの相川と申します。 今回は分散システムにおいて、一見関係のない「DBエラー」が「ファイルディスクリプタの枯渇」を引き起こし、最終的にバッチ処理全体に波及したケースがあったので、その内容をお話しします。 本記事では、実際に発生した障害事例をベースに、Java/KotlinアプリケーションでHTTPクライアントを扱う際の注意点と、コネクション管理の重要性について解説します。 1. 発生した事象 マイクロサービス構成において、以下の連鎖的な障害が発生しました。 最背後のDBエラー: Service-C のDBで外部キー制約エラーが発生し、レスポンスが遅延・エラー化。 …
はじめに こんにちは。Speeda Product Teamの板倉です。 AIエージェントに「直近3年の売上推移を教えて」と聞いたとき、こんな回答が返ってきた経験はないでしょうか。 2022年の売上は120億円で、前年比+8%の成長でした。 2023年は135億円で前年比+12.5%、2024年は128億円で前年比-5.2%となっています。 2023年に大きく伸びた要因としては…(以下、長文が続く) 数字の羅列をテキストで読まされても、傾向はすぐには掴めません。これがテーブルやチャートで返ってきたら、一目で把握できるはずです。あるいは「条件を絞り込みたい」と思っても、テキストの往復で一つずつ指…
はじめに みなさんこんにちは、株式会社ユーザベース エキスパートプロダクト開発チームの佐藤一徹です。 私たちのチームでは、 Speedaのエキスパート事業を支えるプロダクト群を開発しており、そのうちの一つとして社員がエキスパートを管理するための社内ツールを運用しています。 本記事では、Next.jsのServer Actionにおけるversion skew問題に対して、 Kubernetes + Istioのルーティングで「クライアントと同じバージョンのサーバーにリクエストをルーティングする」仕組みを実装した話を共有します! 問題 最近、ビジネスサイドの方からこんな問い合わせがありました。 …
speakerdeck.com SOLID原則の中でも最もイメージしづらいとされるLSPですが、実は「オープン・クローズドの原則(拡張に対して開き、修正に対して閉じる)」を守る上で、オブジェクト指向において非常に重要な概念です。 1. LSPの核心は「振る舞いの契約」 LSPを一言で表すと「サブタイプ(子)はスーパータイプ(親)の振る舞いの約束を破ってはならない」という契約です。 静的型付け言語のコンパイラは「型」が合っているかは見てくれますが、「振る舞い」が守られているかまではチェックしてくれません。そのため、これはコンパイラではなく人間が意識して守るべき契約となります。 2. 陥りがちなア…
こんにちは。先日、プロジェクトのビルド基盤を最新の Java 25 (LTS) と Kotlin 2.3 へと一気に引き上げ、あわせて pom.xml の大掃除を行いました。 最新の言語機能を取り入れるだけでなく、マルチモジュール構成における「設定の重複」を排除したことで、保守性が格段に向上しました。その詳細を共有します。 1. なぜやったのか(背景) Java 25 という新たな LTS(長期サポート)版が登場したことを受け、プロジェクトのランタイムを最新化することを決断しました。 これまでの課題: 設定の散乱: 各モジュールの pom.xml に似たようなコンパイラ設定が重複し、変更が漏れ…
はじめに こんにちは、ユーザベース Sales System Engineering Teamの竹本(あだ名:たけたけ)です! 前回の記事 では、僕たちユーザベースのSalesforce構成をご紹介しました。 その中で、スクラッチOrgを用いたソース駆動開発へ転換を目指す…と締めくくりましたが、ようやく形になってきたので今回はそのストーリーをお伝えできればと考えています。 このブログを通して、よりよいSalesforce 開発体験を作る議論のきっかけになると嬉しい限りです。 なぜ組織駆動開発 > ソース駆動開発に移行したかったのか ① 変更セットでのデリバリー運用の限界を迎えたため ② Dev…
この記事は社内のLTで発表したものです。 フロントエンドにおけるドメインモデリングについてあまり記事がないため2つのパートにわけて解説をしました。 今回はフロントエンドとサーバーサイドのドメインの違いにフォーカスして解説しています。 参考文献 WEBフロントエンドにおけるソフトウェア設計の考察 - Speaker Deck 現場で役立つシステム設計の原則 | 技術評論社 エリック・エヴァンスのドメイン駆動設計(Eric Evans 今関 剛 和智 右桂 牧野 祐子 今関 剛)|翔泳社の本 🎓 学生の方へ | 1day インターンイベント開催! Speeda ソフトウェアエンジニア職 のインター…
この記事は社内LTで発表したものです。 AI時代においてこれまで銀の弾丸とされていたOOUIでないUIが多く現れています。 この中でどのようにソフトウェアとしての価値を生み出せばよいのかを解説します。 前回の発表でフロントエンドのドメインモデリングは「操作」と「表示」という話をしました。 この内容がなかなかイメージがしづらいという方にとってフロントエンドのドメインモデリングがより深く理解できるよう構成しました。 参考文献 オブジェクト指向UIデザイン | 技術評論社 モードレスデザイン 意味空間の創造 | 株式会社ビー・エヌ・エヌ 🎓 学生の方へ | 1day インターンイベント開催! Spe…
はじめに はじめまして。ユーザベースのOperation組織で業務効率化やAIカルチャーの浸透を推進している久保田です。 Operation領域では生成AIの影響力が急速に大きくなっています。異常検知や事務作業の自動化、問い合わせへの自動回答など効率化できる白地が大きく、効率化を検討する上では不可欠なツールの一つです。 その中で、生成AIとの付き合い方について気づいたことがあります。それは、『物事への向き合い方次第で、個人や企業が生み出す価値に大きな影響があるのではないか』ということです。 この記事では、専門のエンジニア集団ではない私たちが、より価値を生み出せるようなAIとの向き合い方をどのよ…
プレイヤーとして、イネーブルメントとして感じた「CSの課題」 まず簡単に自己紹介ができればと思います。ユーザベースの谷内(やち)と申します。 私は2020年にユーザベースに入社以来、インサイドセールスやフィールドセールスのプレイヤー、実務イネーブルメントを経て、現在はカスタマーサクセス(CS)本部のアカウントマネージャーとして大手企業の営業戦略支援や事業開発支援に従事しています。 www.uzabase.com 私たちの組織は今、大きな転換期にあります。 かつての事業部ごとの縦割り組織から、プロダクトを横断して一貫した顧客体験を提供する組織への統合を進めています。CSの役割も「特定のプロダクト…
はじめに こんにちは、株式会社ユーザベース スピーダ事業 Sales System Engineering Teamの村松(あだ名:MJ)です。 ユーザベースのSalesforceのアドミン/デベロッパーを担当しています。 今回は私たちのチームで用いているトリガーフレームワークについてご紹介します! Salesforce開発において、トリガーの管理は規模が大きくなるほど複雑になります。 オブジェクトごとにトリガーが増え、処理順序の制御やメンテナンスが困難になるというのは、 多くの開発チームが直面する課題かと思います。 私たちのチームでも、開発者ごとの設計でトリガー・トリガーフローが実装されてお…
こんにちは。ユーザベースでアナリストとしてレポート執筆をしている堀籠です。 アナリスト業務でも、生成AIはここ1~2年で欠かせないツールになってきています。企業や業界の下調査、フレームワークに沿った分析など、ハルシネーションには常に注意しながらもレポート執筆の様々な場面で使用しています。 その中で、最近は、ある変化に気づくようになりました。それは、AIの能力が上がるにつれて、人間の役割が変わってきているということです。 この記事では、業務でのAI活用と、趣味で行っているゲーム開発でのAI活用の両方を通じて、この1年で自分とAIの役割分担がどう変わったかを振り返ります。 業務におけるAI活用の壁…
はじめに こんにちは。ユーザベースのCorporate Engineering組織でソフトウェアエンジニアをしている岩本です。 前回の記事では、社内人事評価システム「winwin」の開発の裏側についてお伝えしましたが、今回の記事ではAIを使った評価フローについてお伝えできればと思います。(前回の記事をまだ読まれてない方は、ぜひこの機会に読んでみてください!) winwinのリリース後、使いやすいシステムができたことで多くの社員から好評をいただきました。しかし、「使いやすい」だけで終わらせるのはもったいない。そもそも評価システムを内製開発したことで、人事評価データを自社で確実に管理できるという前…
ソーシャル経済メディア「NewsPicks」のエンジニアの中村です。最近はデータ基盤の開発・運用や、プロダクト開発におけるAI利用のためのルール整備・ツール開発などに取り組んでいます。 NewsPicksではデータ基盤としてSnowflakeを運用しており1、Snowflakeのインフラ管理を行うためのツールとしてCDK for Terraform(CDKTF)を利用しています2。 本記事では、CDKTFを使ったSnowflakeインフラ管理の概要と、実際に運用して感じたメリット・デメリットについて紹介します。想定読者はSnowflakeの運用に携わる方のうち、TerraformもCDKTFも…