株式会社ユーザベースのブログ - TECH PLAY

TECH PLAY

株式会社ユーザベース

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

525

はじめに こんにちは、Speeda Product Teamの横山です。 Speeda AI Agentでは、多数のAgentがA2Aプロトコルを用いて連携しています。 各Agentは基本的にマークダウン形式のテキストで出力を返します。Agentや人間が読む場合はこれでも良いのですが、プログラムで扱う際は構造化された出力が欲しいです。 今回まさにそういう用途があったので、A2A x ADKでクライアントからのリクエストに応じて出力形式を分ける方法をご紹介します。 環境: google-adk 2.8.0 / Python 3.13 A2Aの仕様 A2Aでは出力形式を表明する仕様が用意されていま…
🎀 はじめに 現代のソフトウェア開発において、Claude CodeやCodexといった最先端のAIツールの導入は、エンジニアの生産性を劇的に向上させています。 私たちが開発スピードの向上を追い求める本質的な理由は、 一刻も早くリリースしてフィードバック(FB)サイクルを回し、ユーザーへの仮説検証を高速化するため と考えています。 AIツールは、アイデアを動く形にして検証サイクルに乗せるまでのリードタイムを極限まで短縮し、開発全体のFBループを大きく加速させてくれました。 しかし、この高速な開発サイクルを回し続ける中で、ある致命的なボトルネックが浮き彫りになってきました。 ドキュメント(仕様書…
はじめに こんにちは。ソーシャル経済メディア「NewsPicks」のPlatform Engineeringチームのカトマサです。 以前、新卒エンジニアとしての成長記録を書いてから約1年半、動画配信や記事編成システム周りを中心に開発を続けてきました。 今回は、広告動画制作部門の「クライアント向けレポート作成」という手作業の自動化をきっかけに、事業部の方が直接データ分析やダッシュボード作成ができる基盤まで整えた、という一石二鳥なプロジェクトの話をします。 はじめに NewsPicksのPlatform Engineeringチームとは? レポート作成自動化プロジェクトについて 解決したい課題 完…
皆さんこんにちは。 株式会社ユーザベース スピーダ事業Business Process Management(以下BPMと称する)チームのLeeと申します。 チームのR&Rとしては、UBグループ全体の受注以降の販売プロセスの企画・設計を通して販売/契約管理の安定運用の実現とガバナンスの担保しております。普段のSFDCとの接続は「業務としてSFDCをどう使うか」を考える側の人間で、開発経験はありません。 そんな私が、今年1月から横のチームにあるSales System Engineeringチームに兼務という形で入ることになりました。最初は正直、ワクワクもたくさんありましたが、コードも書けない自…
はじめに こんにちは!株式会社ユーザベース スピーダ事業でソフトウェアエンジニアをしている阿波連、内山、撰、知念です。 私達は現在、データの取り込み業務を行っており、様々なファイルの読み込み、Speedaに取り込んでいます。 その中で、ファイルの改行コードがCRLFのものがあり、そのテストを書くために、CRLFのファイルをgit管理するときに躓いた話をブログで執筆することにしました。 問題 $ git add -A warning: in the working copy of 'path/to/crlf_include.csv', CRLF will be replaced by LF th…
XPをやっているチームに入って2ヶ月が経ちました。Product Teamで、私はここで初めてXPを経験し、多くのギャップを感じました。 今まで自分が「良い仕事の仕方」だと信じていたものが、このチームではだいたい逆だったからです。 分からないことは、調べる前に聞く 一番ギャップが大きかったのがこれでした。 私はこれまで、分からないことがあったらまず自分で調べる人でした。調べて、自分なりの案を持って、それから相談していました。人の時間を奪わないためのマナーだと思っていました。 ペアプロだとそれができません。隣に人がいて、同じ画面を見ていて、手が止まった時点で調べるより先に喋ることになります。 わ…
はじめに こんにちは! 株式会社ユーザベース スピーダ事業・プロダクトチームのドメイン特化モデルチームの飯田です。 今四半期、Gemini 2.5 Flashを使っていたエージェントの生成モデルをGemma 4に置き換え、プロダクションに導入しました。本記事では、その判断材料を作るために行った、評価観点の設計、LLM-as-a-Judgeの構築、人手評価による検証について述べます。 取り組みは、評価対象を定める、評価方法を定める、その評価方法を検証する、という3フェーズに整理できます。なお、今回の評価は検索を含むエージェント全体ではなく、主に検索後の回答生成を対象とします。したがって、本記事の…
プロダクトチームの小林です。 弊社では、エンジニアの技術力向上および自主的な挑戦を推奨する取り組みとして「ひとりプロジェクト」を実施しています。これは、通常行っているペアプログラミング環境から一度離れ、1ヶ月程度で企画・設計・実装・リリースまでを1人のエンジニアが遂行する制度です。 今回は、この取り組みの中で社内ツールを開発した際、AIコーディングアシスタントが生成したSQLを過信した結果、意図しない大規模なデータ更新を発生させてしまった失敗事例と、そこから得た「AIとの付き合い方」、および再発防止策としてのシステム的なガードレール構築についてご紹介します。 発生したインシデントの概要 今回の…
プロダクトチームでは週1回程度にメンバー同士でコーチングを行っています。 コーチを担当するとやったことのないコーチングに難しさを感じることがあります。 「どうやって気づきを与える質問をしたらよいかわからない」 「何を話していいのかわからない」 「悩みがないから何を話せばいいのか迷う」 「相手に気を使わせてしまっている」 コーチングにはいくつか流派がありますが、 その中でも私が実践しているカウンセリング手法を利用したコーチングについて紹介します。 このコーチング手法の特徴は、 コーチが何もしなくても勝手にコーチングが終わる このような不思議な体験が得られることです。 またコーチングのデモをみてい…
はじめに はじめまして、スピーダ事業Product Teamの清水です。 私たちのチームではKubernetesを利用してアプリケーションの運用をしております。 今回はKubernetesのあまり知られていない設定により詰まる経験をしたので、供養のため記事にしたいと思います。 今回の経緯 私たちのチームではLLM(Agent)を利用して各企業の経営課題を各種公開資料から抽出し、課題一覧として取得するということを行なっています。 こちらの処理では、企業の実態を反映した高品質な課題を抽出するため、LLM(Agent)によるレビューを何度も繰り返して最終的な出力を行います。 そのためレスポンスが返っ…
課題:短命なデータのために共有ストアを運用する手間 株式会社ユーザベースでSpeedaのソフトウェアエンジニアをしている塚田です。 今回は新しい画面の開発でOIDCでログイン機能を実装したときの学びについて書きます。 我々のアプリは複数台のレプリカ構成になっています。 この場合、各レプリカがバラバラに状態を持つとログイン状態が一致しないので、 インメモリでセッションを持つ選択肢はありません(レプリカ間で不整合になります)。 各レプリカで共有できるストアが要る、というのが従来の発想です。実際これまでもセッションは共有の KVS に持たせてきましたし、その運用が特別つらかったわけでもありません。 …
はじめに こんにちは。スピーダ事業Product Teamの中嶋です。 以前の記事で1週間ごとにチームのふりかえりをしていると書きました。 tech.uzabase.com ふりかえりのファシリテーターは、基本的にはチームの外から呼んできます。 今回、私は別のチームから依頼された側でしたが、状況から考えると「ふりかえりよりも先に、チームビルディングをやったほうが良いのでは?」と思い、実際にチームビルディングのファシリをしたので、そのときの話を書こうと思います。 はじめに いつもどおりのふりかえりファシリ依頼 チーム始動直後という、いつもと違うタイミング チームビルディングで何をやるか 『チーム…
リーダシップ研修としてキリマンジャロに登ってきました。 その中でユーザベースで行われている シェアドリーダーシップという取り組みの本質を肌身で体感したのでまとめます。 その前にシェアドリーダーシップ制度について解説します。 私たちのチームにはマネージャーやリーダーといったポジションがありません。「全員がリーダー」という考えの基、技術のことだけでなく、組織運営に関しても全員で意見を出し合い、採用やチーム予算の議論にもみんなが参加します。エンジニアの自主性や成長を重んじた組織づくりを行っています。 Product Teamには「ペアプログラミング」「テスト駆動開発」「レンタル移籍」「チームシャッフ…
こんにちは。株式会社Uzabaseの FO/EIチーム です。 Uzabaseでは一部サービスでContentfulを使用しているのですが、今回あるコンテントタイプを 数値型から文字列型に変更する必要が出てきました。対象エントリは約80万件です。 Contentfulのマイグレーション、特に大量データのマイグレーションはあまり情報がなく、ニッチかもしれませんが、同じ課題に直面している方の参考になればと思い、今回の移行で直面した課題と解決策を共有します。 出来るだけそのままをお伝えしたほうが良いかと思うので、上手く行かなかったものも含めお話いたします。 マイグレーション概要 マイグレーションの内…
はじめに こんにちは。スピーダ事業Product Teamの中嶋です。 今年のはじめから先月まで、大阪拠点の開発チームでお仕事をしていました。約半年ぶりに東京拠点での開発に戻り、どんなことがやれるのか少し楽しみにしている自分がいます。 さて、私たちProduct Teamでは、どこのチームでも1週間に1回ふりかえりを行っています。基本的には1週間というタイムボックスをふりかえり、その中で見つけた課題について深掘りし、アクションを立てて終わります*1。 ふりかえりのテーマはその都度その場で見つけて深掘りしていくのですが、大阪拠点の開発チームで、あえて「アジャイルのプラクティス」にテーマを絞ったふ…
はじめまして、2026年5月からUzabaseで働いております。清水と申します。 自分のジョインしたチームでは、関数型言語であるClojureを使って開発しています。関数型言語での開発をきっかけに、関数型プログラミングの良さについて興味を持ったので、今回社内発表をしました。 関数型デザイン【委託】 - 達人出版会 なっとく!関数型プログラミング【PDF版】 | SEshop| 翔泳社の本・電子書籍通販サイト https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design 🎓 学生の方へ | 1day イン…
はじめに こんにちは、株式会社ユーザベース スピーダ事業 Sales System Engineering Teamの村松(あだ名:MJ)です。 ユーザベースのSalesforceのアドミン/デベロッパーを担当しています。 SalesforceではApexを本番環境にデプロイするときはテストクラスが必須です…が、Apexのテストクラス書きづらくないですか? オブジェクトの依存関係を考慮してテストデータをインサートしないといけないですし、トリガがあったらそれはもう純粋なユニットテストではなくなってしまいます。 本記事では、テストデータと DML を モック化してレガシーな Apex テストを作り…
はじめに 私たちはスピーダ事業のプロダクトチームで企業の検索システムを開発しているチームです。このシステムは単純な企業名などでのキーワード検索にとどまらず、企業の特色といった文章そのものを検索できることを目指しており、基盤には Elasticsearch を採用しています。 こうした「意味で探す」検索を支えているのがベクトル検索です。しかし、すべてのベクトルとの距離をまじめに計算する全探索は、実用的な規模になると現実的ではありません。そこで必要になるのが、賢く候補を絞って高速に近いものを探す ANN(近似最近傍探索) であり、代表的なアルゴリズムとして HNSW と IVF があります。 本記…
こんにちは。ソーシャル経済メディア「NewsPicks」のPlatform Engineeringチームの崔(ちぇ)です。 昨今、エンジニアのやるほとんどの仕事は「それはClaudeに」というものばかりになった気がします。調査に限らず実装やPR作成、なんならChrome拡張を使えば動作確認までさっとできちゃいます。GithubのCopilotレビューなんかも、かなりいいことに気づいてくれるので日々頼りにしています。 障害調査はどうでしょう? AWS CloudWatch や New Relic といったo11y(observability)ツールのメトリクスを読んで、仮説を立てて、複数リポジト…
こんにちは。株式会社ユーザベース スピーダ事業の酒井です。 2年前、こんな概要のブログ記事を下書き保存して、公開を忘れて寝かせ続けていました。(1年前思い出して、バージョン更新した記事を修正して再度寝かせていた) サーバを整理していたところ、その中からCentOS 6が掘り出されたため、Cloud Storage(GCS)へファイルをアップロードして終了させました。 その際Google Cloud CLIを使うために新しめのPythonを用意する必要があり、出来るだけ手間を掛けずゴニョゴニョしようという記事になります。 当時、GeminiやPerplexityなどのAIツールで調査を行ってもう…