newmo 技術ブログ
https://tech.newmo.me/
技術で地域をカラフルに
フィード

テキストエディタで愛用しているカスタムショートカットたち
newmo 技術ブログ
こんにちは、newmo の 伊藤 です。 この記事では、筆者が特に工夫して設定しているテキストエディタのカスタムショートカットについて、周辺ツールの利用例を交えて紹介します。 記事で紹介する内容は、特定のテキストエディタには依存しないものとなっているので、アイディアや考え方はどのテキストエディタを使っている方にも参考にしていただけると思います。 目次 目次 はじめに ファイルの列挙 → 絞り込み → 開く ファイルの全文検索 → 絞り込み → 開く Language Server Protocol(LSP)関連 編集中のファイルが属しているディレクトリ内のシンボルの列挙 → 絞り込み → 開く…
5時間前

あなたが支払ったタクシー料金は、どうやって乗務員の給料になるのか
newmo 技術ブログ
newmoでソフトウェアエンジニアとして働いている @nozomuikuta です。この記事では、12月17日に投稿された「タクシーの給与計算のDX」の記事に関連して、あなたがタクシーの乗客として支払った料金が、タクシー乗務員に給料として支払われるまでの全体像を、特にnewmoグループである株式会社未来都を例に説明します。 tech.newmo.me 売上の発生 みなさんがタクシーに乗車する際、料金の支払い方には大きく分けて2つの方法があります。 ひとつは「現金支払い」で、その名のとおり、車内で現金により支払いをおこなう方法です。もうひとつは「未収」と呼ばれる現金支払い以外の方法であり、車載決…
2日前

Datadog DASH NYC 登壇と自動運転 Waymo 視察
1
newmo 技術ブログ
Datadog の国際イベント DASH NYC に CfP から挑戦して登壇した準備の流れと、当日の様子を時系列で振り返ります。あわせてサンフランシスコで商用運行中の自動運転タクシー Waymo に乗った体験も紹介します。
2日前

Android 16でBluetoothチャネルサウンディングを試す
newmo 技術ブログ
はじめに Bluetoothエンジニアのharadaです。 Android 16でBluetooth 6.0のチャネルサウンディングがサポートされましたね 🎉 チャネルサウンディングは、従来のRSSI (電波強度) を使った距離推定とは異なり、センチメートル級の精度で距離を測定できる 技術です。スマートロックやデジタルキーなど、「近づいたら解錠」といったユースケースで活用が期待されています 🔑 この記事では、実際にPixel 10とNordic nRF54L15 DKを使って動作確認した経験をもとに、Androidでのチャネルサウンディング実装方法を紹介します。 ちなみに、動かすまでにかなりハ…
4日前

2025年下半期 QAチームの取り組み:品質向上と効率化への挑戦
newmo 技術ブログ
2025年下半期 QAチームの取り組み:品質向上と効率化への挑戦 はじめまして、newmo QAチームのfujiemonです。 2025年下半期、私たちQAチームは品質保証プロセスの抜本的な改革に取り組みました。「限られたリソース(時間・人)で、品質を高めながら、いかに効率的にテストを実施するか」という課題に向き合い、4つの主要な施策を推進してきました。本記事では、その取り組みと成果についてご紹介します。 2025年下半期 QAチームの取り組み:品質向上と効率化への挑戦 1. QAのガイドラインを制定 ガイドラインの全体構成 全体方針 自動テストガイドライン 手動テストガイドライン フィールド…
5日前

ログのテイルベースサンプリングを OpenTelemetry Collector のカスタムプロセッサとして組み込む
newmo 技術ブログ
はじめに 背景 Datadog における Ingestion コストの課題 OpenTelemetry Collector によるテレメトリ転送 テイルベースサンプリング ヘッドベースサンプリングとの違い 懸念点 1. リソース消費 2. スケーリングの難しさ ログのテイルベースサンプリングとは? OpenTelemetry Collector のカスタムプロセッサ インターフェースの実装とビルド 実装を少しだけ見てみる 1. 受信とグルーピング (ConsumeTraces) 2. イベントループと時間管理 (iter / loop) 3. バッファリングと遅延データの処理 (process…
6日前

3つのプラットフォーム(iOS/Frontend/Android)での開発と振り返り
newmo 技術ブログ
はじめに 2025年は、iOS、Frontend、Androidの3つのプラットフォームで開発しました。本記事では、各プラットフォームでの開発を簡単に振り返り、プラットフォーム間の移動について、ゆるく考えたことをまとめました。 3つのプラットフォームでの開発 メイン領域はiOSですが、今年はFrontendやAndroidの開発にも参画させてもらいました。 と言っても、既存のプロジェクトやプロダクトの事情でスポット参戦する形です。スクラッチからの開発ではないので、整備された開発基盤やドキュメントなど、これまでに築かれてきた資産の恩恵を受けながらの開発です。 さて、3つのプラットフォームでの開発…
7日前

タクシーの給与計算のDX
newmo 技術ブログ
newmoでsoftware engineerとして働いているtazoeと言います。この記事では、最近(2025年12月現在)取り組んでいるタクシー会社のDXにおける給与計算のチームのドメインや背景などについてご紹介します。 給与計算のドメイン 私達のチームでは、給与計算のドメインを扱っています。タクシー会社は、乗務員さんが安心して、そしてできるだけ効率よく働ける環境を整えることで、会社全体の収益を高めていく、という特徴を持つ業態です。そのため、給与計算の関連ドメインの重要性は高く、ロジックも複雑になりがちです。以下では、そのように重要で複雑な一方でミスの許されないドメインに対して私達がどのよ…
7日前

Coding Agentと幾何学アルゴリズムを活用した地図上の滑らかなピン操作の実現
newmo 技術ブログ
本記事では、バックエンドから配信される複雑な「乗降車禁止エリア」を回避しつつ、ユーザーにストレスを感じさせない滑らかな操作感を実現するために行った幾何学アルゴリズムの選定と、Coding Agentを活用したTDD(テスト駆動開発)の実装アプローチについて紹介します。
10日前

腕で始めるフィジカルAI
newmo 技術ブログ
はじめに こんにちは、newmoの自動運転開発チームのigaryoです。 newmoでは、自動運転タクシーの運行に向けて、自社の車両によって収集したデータを元に自動運転モデルを学習・構築し、そのモデルで車両を動かすことに挑戦しています。そのためには、 高品質・大量・多様なデータを集めるためのデータ収集基盤 大規模なモデルを学習・推論するための計算機基盤 学習済みモデルを用いて現実世界の車両を安全に制御するための制御基盤 といった複数の要素が複雑に絡み合っており、それぞれに多くの難しさが存在します。 newmoではこれらの課題に対して、社内外のメンバーと密に連携をしつつ日々開発を進めています。 …
11日前

音声AI Agentの評価・テスト基盤を支えるUserSimulatorの実装
newmo 技術ブログ
newmoではタクシーの音声配車AIエージェントの「Maido」を開発しています。前回の記事では、LLM評価フレームワークのDeepEvalを用いたMaidoの会話評価基盤について紹介しました。 この記事では、その基盤を支えるもう一つの主役である「UserSimulator」の実装にフォーカスして、詳細を解説します。 なぜSimulatorが必要か MaidoのようなMulti-AgentなアーキテクチャのLLM Agentを開発・運用する上で、Agentの評価は不可欠です。 Simulatorが存在しない状態でAgentの評価を行う場合、初歩的な例ではAgentとユーザーのやり取りを「Age…
12日前

PayloadCMSを「管理画面基盤」として使う — 半年の学びと設計判断
newmo 技術ブログ
この記事は newmo Advent Calendar 2025 15日目の記事です。 はじめに newmoでは2025年6月から求人サービス「newジョブ」の開発を進めており、その中でHeadless CMSとしてPayloadCMSを採用しました。 本記事では、約半年の本番運用を通じて得た知見を共有します。 newジョブ サイト・トップ なぜHeadless CMSが必要だったか jinzaiチームは少人数で構成されており、以下のような複数の用途に対応する必要がありました。 求人情報の管理・配信 SEO対策のための構造化データ管理 運用チームによるコンテンツ編集 将来的な機能拡張への対応 …
13日前

プロダクトチーム全員でAIエージェント縛りの開発を一週間試しました
newmo 技術ブログ
newmoのプロダクトチームで、AIエージェント活用開発トライアル(AI Agent Development Trial = AADT)を実施しました。1週間、チーム全員でClaude CodeやDevinを使ってコードを書くという取り組みです。 この記事では、なぜこのトライアルを行ったのか、何が分かったのか、そして今後どうしていくのかを紹介します。 なぜAADTを実施したのか AIエージェントの進化が速い。毎月のように新しいツールや機能が出てきて、「これを使えば生産性が上がる」という話を聞かない日はありません。しかもそのほとんどが今年リリースされたと思うとめまいがしそうです。 でも、実際に使…
14日前

なぜ「時間」がわかれば「場所」がわかるのか〜時計・測位に関する人類の歴史〜
newmo 技術ブログ
はじめに newmoではタクシー配車アプリや自動運転に必要な測位技術など様々なサービスで位置情報を取り扱っています。今では当たり前のように使うGPSなどによる衛星測位技術ですが、人類の歴史的に見ると運用が始まったのはごく最近の話です。これまでにも人類は現在地および正確な時刻を知るために、挑戦を続けてきました。 この記事では、日時計の影から始まり、たった1分のズレが難破を意味した大航海時代の荒波を越え、冷戦下の熾烈な宇宙開発競争を駆け抜け、そして衛星技術へと至る、人類の探求の旅について解説したいと思います。 1. すべての始まり:人類はなぜ「正確な時間」を求め始めたのか? 人類の歴史は、常に「時…
15日前

生成AIの入出力品質は「フォーマット」で決まる ― 中間表現とテンプレートの組み合わせ
newmo 技術ブログ
生成AIにドキュメントからテストケースを生成してもらったり、仕様書からコードを生成してもらったりする機会が増えてきました。しかし、こんな経験はないでしょうか? 入力の理解が不十分 - AIが仕様を読み飛ばす、重要な制約を見落とす 出力フォーマットがバラバラ - 同じ入力でも毎回異なる構造で出力される これらの問題により、生成物の品質が安定せず、結局人間が大幅に手直しすることになります。 この記事では、これらの課題を解決するために試験導入中の「中間表現(IR)」と「出力テンプレート」を組み合わせたパターンを、テストケースの生成を例に紹介します。 課題:自然言語から直接生成する限界 PRD(製品要…
16日前

今 newmo で流行っている 3D プリンタを使った創作
newmo 技術ブログ
はじめに 今日は newmo のプロダクトエンジニアの間で最近流行している 3D プリンタを使った創作について紹介します。 newmo の東京オフィスには大きめの 3D プリンタがあり、社員が交代で印刷しています。 3D プリンタが実際に稼働している様子 オフィスに居る 3D プリンタ なぜ会社に 3D プリンタがあるのかというと、元々自動運転チームが使うためでした。 自動運転チームは発足当時、東京オフィスで検証を進めており、その中で必要な部品を作成するために設置したらしいです。 現在は別のオフィスで作業を行っており、3D プリンタだけが置いていかれたため、誰も使っていないものがオフィスの端に…
17日前

ergo - Goのエラーライブラリを自作して1年間利用してみた振り返り
newmo 技術ブログ
はじめに Goのエラー処理 Goのエラー処理に何かライブラリを利用していますか? この質問はGo 1.0のリリースから10年以上経つ今でも、日本のGoコミュニティでよくされる質問です。筆者(tenntenn)もよく他社の方からされます。 pkg/errorsやgolang.org/x/xerrorsがデファクトスタンダードだった頃と比べ、近年(2025年)はあまりデファクトスタンダードと呼べるライブラリが無いのが現状です。 また、言語仕様やerrorsパッケージについても徐々にアップデートされてきました。Go 1.13でエラーのラップやerrors.Is、errors.Asがリリースされ、pk…
18日前

LangfuseとDSPyを使った定量的なプロンプト評価と改善の仕組み
newmo 技術ブログ
(この記事は心のこもった手書きでお届けしております) @kuといいます。 10月に放送された「ガイアの夜明け」で紹介された、タクシーに乗りたいお客さまからの電話を受けて指定場所に迎車するLLMプロダクトmaido(Mobility AI Dispatch Operator)の開発に携わっています。 この記事ではmaidoで行っているLangfuseとDSPyを使ってプロンプトを定量的に改善していく仕組みをご紹介します。 Langfuseとは Langfuseは、LLMアプリケーションのobservabilityを確保するツールです。電話ごとのセッションや、トレース単位でLLM呼び出しの入出力、…
19日前

Design Tokenが変化することを前提にした型安全なCSS — newmoでPanda CSSを採用した理由
newmo 技術ブログ
© 2023-Present Segun Adebayo newmoでは、1行目のCSSを書く前に1つ目のDesign Tokenを定義しました。Design Tokenを起点にした開発を実現するため、CSSスタイリングフレームワークにはPanda CSSを採用しています。 しかし、創業期のスタートアップでは、デザインシステムは完成品ではなく日々変化していくものです。Design Tokenの命名が変わる、階層構造が見直される、色の値が調整される——こうした変更が頻繁に発生します。数百箇所に散らばったtokenを手動で置換すると、必ず修正漏れが発生します。そもそもDesign Tokenの使用…
20日前

仕様解読困難な状況を AI と共に解読した話
newmo 技術ブログ
はじめに newmoグループでは参画してくれたタクシー会社のDXを行っています。タクシー業界は老舗企業が多く、運用されているシステムに関する知見が社内に残っていないケースが珍しくありません。また、長年稼働してきたシステムは技術的にもレガシー化が進んでいます。開発当初は時代に合った優れたシステムだったとしても、年月が経てば保守・運用の負担は増していきます。こうした課題を解決するため、グループ全体で使用するシステムを内製で統一し、モダンな技術スタックへ移行するDXを進めています。 このエントリでは、給与計算システムの置き換えに取り組んだ事例を紹介します。今回、置き換え対象となった旧システムは、外部…
21日前

LLMの安定した出力のために - Prompt Linterの活用
newmo 技術ブログ
newmoでは様々なタクシー業務の内製化・効率化(DX)に取り組んでいます。 タクシーはアプリを利用して呼ぶこともできますが、電話による配車も昔からのお客さまや、事業者の方などから根強い人気があります。 私はるふ(@_ha1f)の所属するMaido(Mobility AI Dispatch Operator)チームでは、この電話による配車の業務効率化のため、一部でAIによる電話応答・配車システムを開発し、実際に運用しています。 取り組みについて詳しくはこちらをご参照ください。 note.com 本稿では、「Prompt Linter」と呼んでいるAI電話配車システムのプロンプト自体の品質管理に…
22日前

newmoでのAlloyDBの最適化の日々
newmo 技術ブログ
1. はじめに newmoではメインのデータベースとしてGoogle CloudのAlloyDBを利用しています。サービスの成長に伴い、GraphQLやgRPCを通じたリクエストが増加し、最近、本番環境のデプロイ時にCPU負荷が90%を超えるという問題に直面しました。 本番環境へのデプロイ時のアラート この記事では、AlloyDBのパフォーマンス最適化に取り組んだ記録をまとめています。「発見 → 改善 → 計測」のサイクルを繰り返しながら、Slow Queryの改善、N+1問題の解消、そしてRead Pool Instanceの導入まで、段階的に行った改善とその効果について詳しく解説します。 …
23日前

ルックバック ニューモ エンジニアリング 2025
newmo 技術ブログ
はじめに newmo Engineering として、はじめて Advent Calendar を実施する運びになりました。 いままでも一部のエンジニアは各々カンファレンスなどで発表しておりますが、普段発信しないメンバーも含めて newmo に所属のエンジニアがどのようなことを行っているのか、技術的にどういう分野を探索しているのかなど幅広く発信していければと思います。 このエントリでは newmo として、どのような活動を1年間行ってきたのかをエンジニアリング観点を含めて振り返ればと思います。 前半戦(2025.01〜2025.06) 大阪万博の開催とライドシェア事業へのチャレンジ 大阪・関西…
24日前

Google ADK × DeepEvalで構築する音声AI Agentの会話評価基盤
newmo 技術ブログ
newmoでは、GoogleのAgent Development Kit(ADK)を用いて音声配車AIエージェント「Maido」を開発しています。 これは従来オペレーターが電話で行っていた配車を、音声対話で自動化する取り組みです。Maidoについては以下のnoteで詳しく解説しているので、ぜひ併せてご覧ください。 note.com 本記事では、Maidoとユーザーの会話評価を自動化するために構築した「Conversational Evaluation」基盤の仕組みと運用について紹介します。 Agentのアーキテクチャ 評価の仕組みを説明する前に、Maidoのアーキテクチャを簡単に紹介します。 …
1ヶ月前

GitHub ActionsでESLintのShardingを実装して、CIの実行時間を51%削減しました
newmo 技術ブログ
newmoでは、pnpm workspaceで管理している複数のアプリケーションやライブラリに対してESLintを実行しています。 プロジェクトの成長とともにLint対象のファイル数が増加し、CI実行時間とメモリ使用量が増加していました。GitHub Actionsのmatrixオプションを使用した動的なShardingを実装し、これらの問題に対応しました。 newmoフロントエンドの開発原則 newmoのフロントエンド開発では、次の原則を重視しています。 1つ目は、「同じ目的を達成するための手段を統一する」という原則です。同じ目的に対する複数の手段が混在するよりも、統一した手段を使うことで学…
2ヶ月前

monorepoでのApollo Client v4移行 - pnpm named catalogとLLMによる段階的移行
newmo 技術ブログ
Apollo Client v4が2025年9月にリリースされました。エラーハンドリングの改善やバンドルサイズの削減など多くの改善が含まれていますが、破壊的変更も多く含まれています。特にmonorepo環境では、複数のアプリケーションや共有ライブラリが同じパッケージに依存しているため、一括で移行すると変更範囲が大きくなりすぎて問題の切り分けが困難になります。そのため、アプリケーション単位で段階的な移行が必要でした。 この記事では、newmoのmonorepoでApollo Client v3からv4へ移行した際に、pnpm catalogのnamed catalog機能とLLMを活用して、v3…
2ヶ月前

Go Conference 2025 でワークショップ「†開発を加速させる黒魔術講座†」を開催しました!
newmo 技術ブログ
先日開催された Go Conference 2025 にて、newmo のエンジニアから「†開発を加速させる黒魔術講座†」というワークショップを開催させていただきました。本記事では、現在も公開しているこのワークショップの内容について紹介します! †開発を加速させる黒魔術講座† このワークショップでは、日常的な開発ではなかなか触れる機会の少ない「†黒魔術†」的な Go のテクニックについて、実例を交えた解説と例題をベースとした学習の機会を提供することを目的として開催しました。 ワークショップの様子 当日はありがたいことに満員御礼で、参加者の方々もグループになってわいわい交流しながら課題に取り組ん…
2ヶ月前

renovatebotとpnpm catalogで実現する依存関係の自動アップデートとハンドブックによる安全な更新
newmo 技術ブログ
はじめに モノレポ環境での依存関係管理は、プロジェクトの規模が大きくなるほど複雑になります。 newmoでpnpm catalogを導入してOne Version Ruleを実装し、パッケージのバージョンを一元管理する仕組みを構築しました。詳細はmonorepo内でのパッケージのバージョンを1つだけに統一するOne Version Ruleをpnpm catalogで実装する - newmo 技術ブログを参照してください。 しかし、一元管理の実現だけでは依存関係の更新作業そのものは依然として手動であり、セキュリティアップデートの適用遅延やレビュー負荷の増大という課題が残っていました。 本記事で…
2ヶ月前

feature flag 入門と newmo の feature flag 基盤について
newmo 技術ブログ
こんにちは。Platform Team の tobi (@iam__tobi) です。 本記事では feature flag の基礎的事項の説明と、Platform Team で開発してきた newmo 独自の feature flag 基盤の設計思想と全貌について二段構成でご紹介します。 これから feature flag を導入しようと考えている方にとって参考になれば幸いです。 背景・概要 feature flag 入門 feature flag の概要 feature flag の構成要素 Toggle Point Toggle Router Toggle Context Toggle …
5ヶ月前