Sansan Tech Blog
https://buildersbox.corp-sansan.com/
Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信
フィード

10年以上運用されているSansan iOSアプリのすべてのSwiftコードをフォーマットした話
Sansan Tech Blog
はじめに こんにちは!2025年4月にSansanに中途入社し、技術本部 Sansan Engineering Unit Mobile Application GroupでiOSエンジニアとして開発に携わっているヤズジュ夢佐です。 今回は、Mobileチーム「技術負債返済」をテーマとしたTech Blogリレー企画の第六弾となります。 技術負債解消に向けた継続的運用の試み(2025-09-01) 10年もののSansan Mobileで負債・リスクに向き合う(2025-10-29) Android Edge-to-Edge対応 大規模アプリですべての画面を更新するための道のり (2025-11…
2時間前

モバイルエンジニアとして技術を広報するためにやったこと
Sansan Tech Blog
こんにちは! 技術本部 Sansan Engineering Unit Mobile Applicationグループの堀(@horitamon)です。 Sansanでモバイルアプリ(iOS/Android)の開発を主務としている私ですが、2025年は「Sansanのエンジニア組織を世に広める仕事」もしっかりとやっていました。 最初に前提の話をしておくと、Sansanには「技術広報」という役割の人や専任部署があるわけではありません。 そのため基本はエンジニアが軸になって動きつつ、企業ブランディングや人事などの他部署と目標やリソースを共有して、必要に応じていろんな人を巻き込みながらイベントやカンフ…
7時間前

TipKitで「初回だけ」新しいタブの存在に気づいてもらう
Sansan Tech Blog
こんにちは。技術本部Eight Engineering Unit Mobile ApplicationグループでiOSエンジニアをしている小清水(@_take_hito_)です。本記事では、Eight iOSアプリの連絡先画面に新設した「同僚」タブに対して、Apple標準のTipKitを使って「初回だけ」ツールチップを表示した背景と、実装中にハマったポイントを共有します。
1日前

MCPサーバー開発事例 - Sansan MCPサーバーのPoCから学ぶMCP実装入門
Sansan Tech Blog
はじめに こんにちは、コーポレートシステム部の坂尾です。コーポレートエンジニアとして社内システムやインフラに関連する設計・開発・運用を担当しています。 はじめに部門について簡単に紹介させていただきます。私が所属するのはコーポレートシステム部という部門で、いわゆる情報システム部門(情シス)です。部のミッションとして掲げているのが「EXをシンプルにする」というものです。EXとはEmployee Experience(従業員体験)のことです。 我々のチームでは生成AIの活用推進や組織的なナレッジの共有に取り組んでいます。今回の記事のテーマは、Sansan MCPサーバーを開発した話です。Sansan…
2日前

2026年1月技術イベント予定
Sansan Tech Blog
Sansan株式会社では、技術イベントや勉強会の主催・協賛・登壇を行っています。 各イベントの詳細については、以下のリンクからご確認ください。 ※開催状況により、すでに受付を終了している場合がございます。 ※掲載している内容は公開当時の情報です。最新情報は各イベントページをご確認ください。
2日前

Amazon Bedrock × Slack Botでインフラ問い合わせ対応を効率化した話
Sansan Tech Blog
この記事は Sansan Advent Calendar 2025 の24日目の記事です。 こんにちは。 技術本部 Sansan Engineering Unit Infrastructureグループの白井達也です。 ありがたいことにクリスマスイブ🦌🛷の担当を頂きました。予定がある方は後日ゆっくり、予定がない方は今夜のお供にどうぞ。🥂クリスマスツリー🎄ほど華やかではありませんが、実用的な内容🎁をお届けします!
2日前

Vol. 14 海外拠点混成チームで挑んだ、AI自動照合機能開発のふりかえり
Sansan Tech Blog
この記事は、Bill One開発Unitブログリレー2025の第14弾です。 こんにちは、Bill One開発エンジニアの西野(@takapiro_99)です。 2025年6月から10月までの約5カ月間、AI自動照合機能の(プロダクト組み込み部分の)開発プロジェクトリードを担当しました。 本記事では、このプロジェクトで直面した課題と、それに対して実際に試した工夫をふりかえります。海外拠点や外部チームを含む体制で開発を進めている方にとって、ひとつの事例として参考になれば幸いです! プロジェクト全体像 今回開発したのは、請求書と仕入れに関するデータを総額・明細単位で照合する「AI自動照合」機能です…
3日前

PythonのGILとはなんだったのか
Sansan Tech Blog
本記事はSansan Advent Calendar 2025、23日目の記事です。 こんにちは、技術本部研究開発部の川波です。 2025年10月にPython 3.14の正式版がリリースされ、GILなしのPythonである「Free-threaded Python」が正式サポートされることになりました。 年の瀬ということもあり、このGIL廃止の波を書き納めて1年を締め括ろうと思います。 GILとは 基本概念 GIL(Global Interpreter Lock)とは、複数のスレッドが同時にPythonコードを実行することを防ぐためのものです。 具体的には「1つのPythonプロセス内で、同…
3日前

Vol. 13 Advancing the Japan–Cebu Global Development Model at Bill One
Sansan Tech Blog
This article is the 13th of the Bill One Development Unit Blog Relay 2025! (A few days early, but) Merry Christmas 🎅 I'm Nobu, a software engineer at the Bill One Engineering Unit. The PO (Purchase Order) group I belong to is responsible for developing features that match invoices and purchase order…
4日前

Vol.13 Bill Oneで実践する日本×セブのグローバル開発体制強化
Sansan Tech Blog
この記事は、Bill One開発Unit ブログリレー2025の第13弾になります! (数日早いですが)メリークリスマス🎅 技術本部Bill One Engineering Unitでソフトウェアエンジニアをしている田坂です。 私が所属するPO (Purchase Order) グループは、請求書・発注書の照合を行う機能開発を担っております。合計4チームで構成されるグループですが、日本は1チームのみで、フィリピンのセブ島を拠点とするSGDC(Sansan Global Development Center)の3チームを中心とする組織です。 2025年10月末、数ヶ月以上の開発期間を経て「AI自…
4日前

「量子化済みLLM+LoRA」 vs 「量子化なしLLM+LoRA」、RPSとlatencyはどう変わるか?
Sansan Tech Blog
Sansan株式会社 技術本部 研究開発部の齋藤慎一朗です。 この記事は、Sansan Advent Calendar 2025 22日目の記事です。 結論 最初に、この記事の概要を図1にまとめます。 図1 本記事の概要 はじめに 最近、ファインチューニングしたLLMを使ってプロダクトを改善するお仕事をしています。ファインチューニングしたLLMを運用するフェーズでは、クラウド環境にGPUを用意し、LLMが推論できる環境を用意しています。環境について、基本的に次の2点が求められます。 LLMが提供する価値に対して運用費が高すぎないこと 高速に推論できること 1を満たすために、多くの場合はH200…
4日前

Claude Codeで挑むTerraform State分離
Sansan Tech Blog
この記事はSansan Advent Calendar 2025の21日目の記事です 🎄 STREET FIGHTER 6でGrand Masterになるべく日々練習しています。Sansan Engineering Unit Infrastructureグループの藤田です。 自分の所属しているチームでは主にTerraformを利用してクラウドインフラのリソースを管理しています。Claude Codeを活用して、肥大化したTerraformのStateファイル分割を試みました。 導入 背景と課題 設計 ディレクトリ構成、依存関係 ディレクトリに配置されるリソースの一覧 命名規則 実装方針 移行手…
5日前

EightからEC2インスタンスを撲滅した話
1
Sansan Tech Blog
最近ゴルフを始めて打ちっぱなしに通うようになり、野球部だった中学生ぶりに手の皮が剥けました、Eight Engineering Unit Product Dev Groupの平石です。今回はEightで行ったEC2インスタンス撲滅の取り組みについてお話しします。なお本記事は Sansan Advent Calendar 2025 20日目の記事です。
6日前

GitHub Enterprise移行プロジェクトの全記録 ーー 1000リポジトリの移行と、これから作る運用組織
Sansan Tech Blog
1. はじめに 技術本部 コーポレートシステム部 Corporate Architectureグループの吉山です。 最初に所属先のコーポレートシステム部門について簡単に紹介させてください。コーポレートシステム部は、情報システム部門(いわゆる情シス)にあたります。部のミッションとして「EXをシンプルにする」ということを掲げています。EXとはEmployee Experience(従業員体験)のことです。 今回は、当社で実施したGitHub TeamからGitHub Enterprise Cloud(EMU)への移行プロジェクトについてブログにまとめます。 2024年12月から始まった移行プロジェ…
7日前

技術トピックに縛られないLT会「Eight LT」を今年も開催しました
Sansan Tech Blog
※ 本記事はSansan Advent Calendar 2025の19日目の投稿です🎄 こんにちは。 名刺アプリ「Eight」でエンジニアをしている鳥山(@pvcresin)です。 中華料理のお店で小籠包を食べる時によく出てくる黒酢(鎮江香醋)に最近ハマっていて、自宅でも愛用しています。 酸味と香りのバランスが絶妙で、焼売や餃子、炒め物にもオススメです。見かけたらぜひ。 さて今回は毎年恒例の「Eight LT」について、会の設計と今年の様子を紹介します。
7日前

AIと一緒にOSSに貢献してみた話(Dataform編)
Sansan Tech Blog
こんにちは。Data Intelligence Engineering Unit Master Dataグループの上野です。 朝晩の冷え込みがいっそう厳しくなり、冬の訪れを感じる季節になりました。 皆さまいかがお過ごしでしょうか。 今回は、私が取り組んだ「Dataform」へのOSSコントリビュートについてご紹介します。 日々のデータ基盤開発の中で見つけた改善点を、AIツールを活用しながらコミュニティへ還元した取り組みです。 ぜひ最後まで読んでいただければ幸いです。 目次 目次 きっかけ 利用ツール 実装 実装①:AIによる初期実装の試み 実装②:生成コードを通じてコンパイル処理を理解する 実…
8日前

Kotlin × OpenTelemetry で実現する LLM observability - Contract One での実装と運用
Sansan Tech Blog
本記事はSansan Advent Calendar 2025、18日目の記事です。こんにちは。技術本部Contract One Engineering Unitの伊藤です。取引管理サービス「Contract One」の開発を担当しています。約1年前、前回の記事でLLM評価基盤のLangfuseについて紹介しました。当時は検証フェーズでしたが、現在は本番環境で運用しています。本記事では、Contract OneにおけるLLM observabilityの全体像と、Kotlin × OpenTelemetryでの実装について紹介します。 背景 Contract Oneは最近「AI契約データベース…
8日前

10年ものプロダクトの技術負債: Realmのスレッド安全性を担保する
Sansan Tech Blog
はじめに 2025年に新卒でSansanに入社し、技術本部 Sansan Engineering Unit Mobile Application GroupでiOSエンジニアとして開発に携わっている松山(@akidon0000)です。 今回は、Mobileチーム「技術負債返済」をテーマとしたTech Blogリレー企画の第五弾となります。 技術負債解消に向けた継続的運用の試み(2025-09-01) 10年もののSansan Mobileで負債・リスクに向き合う(2025-10-29) Android Edge-to-Edge対応 大規模アプリですべての画面を更新するための道のり (2025-…
9日前
OpenSearchのDynamic mapping仕様検証
Sansan Tech Blog
この記事はSansan Advent Calendar 2025の17日目の記事です。 こんにちは。 技術本部 Sansan Engineering Unit Infrastructureグループで プロダクトインフラエンジニアをしている渡邉です。 最近は息子と一緒にウルトラマンオメガにハマっています。 本当なら平成ウルトラマンの歴史を語りたいところですが、 ここはTech Blog……ということで、 今回はOpenSearchのDynamic mappingについて書きます。
9日前

Railsのdefaultsを用いた権限によるアクセス制御
Sansan Tech Blog
この記事は、Sansan Advent Calendar 2025、16日目の記事です。 はじめに こんにちは、技術本部Digitization部Entry Engineeringグループgeesチームでインターンをしている輿石です。 geesチームは、名刺データ化システムを開発しています。 本記事では、もともと権限によるアクセス制御が存在しなかった内部向けの名刺データ化管理システムに対して、Railsのdefaultsを用いて「エンドポイントごとに必要な権限を宣言的に管理する仕組み」を導入した話をまとめます。ルーティングのdefaultsに「必要な権限情報」を付与し、その情報をもとにアクセス…
10日前

Vol. 12 仕訳の入力体験向上のため、AG Gridを導入した話
Sansan Tech Blog
この記事は、Bill One開発Unit ブログリレー2025の第12弾になります。 こんにちは、技術本部 Bill One Engineering Unit の近藤です。2025年4月にSansan株式会社へ新卒入社し、現在は仕訳・費用按分機能の開発を担当しています。 入社と同時期に立ち上がった仕訳入力の刷新プロジェクトで、AG Gridというグリッドライブラリを導入しました。本記事では、AG Gridを導入した背景と選定基準、そして実装で直面した課題と解決策を紹介します。
11日前

Amazon EMR で Apache Iceberg v3 の Deletion Vectors を検証してみた。
Sansan Tech Blog
この記事はSansan Advent Calendar 2025 - Adventarの15日目の記事です🎄Sansan Engineering Unit Infrastructureグループの織田繁です。Amazon EMR 7.12 で Apache Iceberg v3 テーブルフォーマットがサポートされたので、AWS/Iceberg好きとして調べてみました。Apache Icebergで運用しており、削除/更新が多いワークロードを持つ方に興味を持って頂けますと幸いです。 aws.amazon.com 主な新機能としては以下が追加されました。 ■Deletion Vectors(削除ベク…
11日前

Vol. 11 マイクロサービス間通信から考える体験設計
Sansan Tech Blog
この記事は、Bill One開発Unitブログリレー2025の第11弾、およびSansan Advent Calendar 2025、13日目の記事です。 目次 目次 はじめに マイクロサービスとは モノリス マイクロサービス 体験設計の観点で見た「マイクロサービス間通信」 サービス間通信方式とUXへの影響 同期通信 ● ① 遅いサービス=遅い画面 ● ② 障害が連鎖する 非同期通信:操作感を滑らかにする一方で、一貫性の設計が必要 操作が“軽くなる” 障害を隔離しやすい 非同期先のエラーをどうフィードバックするかが難しい 整合性をどう成立させるかの設計が必須になる 依存との向き合い方 依存を“…
13日前

Sansan Data Intelligenceリリースに寄せて
Sansan Tech Blog
はじめに Sansan Data IntelligenceのProduct Owner(PO)を務めています猿田 貴之と申します。 本日12月12日、私たちは約4年ぶりとなる新規プロダクト Sansan Data Intelligenceをリリースいたしました。jp.sansan.com これは、Sansanが名刺管理サービスから、企業の意思決定を支えるビジネスインフラへと進化するための挑戦の一つになります。今回のリリースは構想から約半年という短期間で実現しましたが、その背景には10年以上にわたる名寄せ技術の蓄積と、既存のデータベースアーキテクチャをリビルドするSOC v2の開発がありました。…
14日前

Vol. 10 100超のページコンポーネントのレイアウトを再設計し、設定画面のスクロール体験を改善した話
Sansan Tech Blog
この記事は、Bill One開発Unitブログリレー2025の第10弾、および Sansan Advent Calendar 2025、12日目の記事です。 こんにちは、技術本部Bill One Engineering Unit の今村です。2025年4月に新卒でSansanに入社し、Bill Oneの開発に携わっています。 今回は、「設定画面のサイドバーでページを選択するたびに、サイドバーのスクロールが一番上に戻ってしまう問題」を、React RouterのLayout Routesという仕組みを導入することで解決した話を紹介します。 また、Bill One開発Unitブログリレー2025で…
14日前

システム x エンジン x インパクトでプロダクトと事業を強くする
Sansan Tech Blog
この記事は プロダクトマネージャー Advent Calendar 202512日目の記事です。プロダクトマネジメントに向き合っている方が、日々の意思決定を整理する際のヒントになれば幸いです。 Sansan株式会社Sansan事業部VPoPの川瀬です。最近は、AIエージェントやMCPサーバーに向き合う日々を過ごしています。国内外の流れが凄まじいですね。「未来」が日々更新されていて、楽しいです。一方で、機能廃止やパフォーマンス改善、四半期ごとのチームの注力領域の見直し、既存プロダクトの再編成といった土台整備にも力を入れて取り組んでいます。 これらは何かの事象に対する場当たり的な反応として取り組ん…
14日前

Goで2要素認証のリカバリーコードを実装するときに考えたこと
Sansan Tech Blog
この記事はSansan Advent Calendar 2025 - Adventarの11日目の記事です🎄 はじめに こんにちは。技術本部Platform Engineering Unitの都筑です。Bill OneやContract Oneで利用されている、認証基盤の開発・運用を担当しています。 今回はGoで書かれた認証基盤に、2要素認証のリカバリーコードを実装した際に検討したセキュリティ要件や実装方法について共有します。
15日前

コーポレートシステム部の週報作成を自動化した話ーSlackログの収集からNotionへのアウトプットまで
Sansan Tech Blog
1. はじめに 2. 背景・課題 2-1. 「今週なにやった?」が見えない問題 2-2. 手作り週報の限界 3. 作ったもの/取り組みの概要 3-1. 週報アプリでやりたいこと 3-2. 全体アーキテクチャ(図解) 4. 技術的なポイント 4-1. Slackエクスポート → DuckDBで“検索しやすいログ”に 補足:AthenaではなくDuckDBにした理由 4-2. SQSでユーザー単位にバラして処理 4-3. Bedrockに“週報ライター”をやってもらう 4-4. Notionへの書き込みと重複チェック 4-5. 運用コストについて 5. 得られた成果 5-1. 手作業の削減 5-2…
16日前

Vol. 09 段階的なEnglish Firstで言語の壁を乗り越える。日本人チームが英語部門に溶け込むためにやったこと
Sansan Tech Blog
はじめに この記事は、Bill One開発Unit ブログリレー2025の第9弾、および Sansan Advent Calendar 2025、10日目の記事です。 メリークリスマス🎄 技術本部Bill One Engineering Unit POグループの尾沼です。経理DXサービスのBill Oneを開発しています。 Bill Oneは、フィリピン、セブの開発拠点であるSansan Global Development Center(以降、SGDC)と、日本拠点が共同で開発しています。必然的に日本語と英語が入り乱れた環境となり、拠点間に言語の壁が生まれます。 私たちのチームでは、「段階的…
16日前

Vol. 08 Cloud Pub/Sub 基盤におけるアプリとインフラ間の不整合をデプロイ前に検知する
Sansan Tech Blog
この記事は、Bill One開発Unitブログリレー2025の第8弾、およびSansan Advent Calendar 20259日目の記事になります! こんにちは、技術本部 Bill One Engineering Unit の藪下(@yatsbashy)です。 私が前回投稿したブログリレーの記事では、Cloud Pub/Sub のデッドレターの設計と運用について紹介しました。Bill One では、請求書の到着や承認、支払依頼の作成といった業務上の出来事を「ドメインイベント」として表現し、それらを Cloud Pub/Sub を用いた非同期メッセージングで各マイクロサービスに伝播させてい…
17日前