Sansan Tech Blog

https://buildersbox.corp-sansan.com/

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

フィード

記事のアイキャッチ画像
Node.jsによるReverse Proxy実装をGoでリプレイスした話
はてなブックマークアイコン 2
Sansan Tech Blog
Node.jsによるReverse Proxy実装をGoでリプレイスした話 技術本部 Bill One Engineering Unit(以下、Bill One EU)の川原です。23卒としてSansan株式会社に入社し、インボイス管理サービス「Bill One」の開発をしています。今回はNode.jsによるReverse Proxy実装をGoでリプレイスした話をします。
4日前
記事のアイキャッチ画像
iOS/macOSオンデバイスで爆速で動作する音声認識モデルWhisperKit
はてなブックマークアイコン 9
Sansan Tech Blog
iOSエンジニアの堤です。先日3月28日に開催された弊社主催のLTイベントで、「WhisperKitがだいぶ良いので紹介する」というタイトルで発表しました。 スライドはこちら: www.docswell.com 本記事は、同発表をベースとしつつ、(LTでは時間が足りないので)発表ではカットした内容を盛り込んで記事として再構成したものになります。
5日前
記事のアイキャッチ画像
【Sansan Tech Talk】名刺アプリ「Eight」の技術的挑戦 〜EC2からの移行とモジュラーモノリス化への道〜
はてなブックマークアイコン 2
Sansan Tech Blog
こんにちは。Sansan Engineering Unitで副部長を務めている笹川 裕人です。新たにスタートする、この「Sansan Tech Talk」。Sansan技術本部のテックリードたちが取り組んでいる技術的な取り組みやチャレンジを対談形式で深掘りします。初回となる今回はEight Engineering Unitで部長を務める大熊 秀治にインタビューしました。
10日前
記事のアイキャッチ画像
BigQueryを使ってCrashlyticsのデータを分析する
はてなブックマークアイコン 2
Sansan Tech Blog
技術本部 Mobile Applicationグループ所属の大塚です。名刺アプリ「Eight」のAndroidアプリの開発と、営業DXサービス「Sansan」とEightの両プロダクトをまたぐプロダクト横断チームの一員として、モバイル領域の中長期的な技術的課題の解決や、PoCの開発を担当しています。今回は、昨年9月にリリースしたEightのタッチ名刺交換機能の品質調査でBigQueryを利用する機会があったため、弊社の事例を参考に分析方法を共有します。jp.corp-sansan.com
13日前
記事のアイキャッチ画像
MongoDBのoplogについて理解を深めた話
はてなブックマークアイコン 2
Sansan Tech Blog
こんにちは、Sansan Engineering Unit マスターデータグループの金子です。 私たちが開発しているシステムの中に、MongoDBを採用しているシステムがあります。私自身NoSQLを使用しているシステムの開発に携わるのは初めてなので、毎日いろいろな学びを得ています。 ある時、そのシステムで大量のデータをDBに書き込む処理を行うと、MongoDBのoplog関連のエラーが出てしまったことがありました。今回はその時の原因と対応について紹介し、MongoDBのoplogについて理解を深められた話をします。
14日前
記事のアイキャッチ画像
Sansan iOSアプリにおけるPrivacy Manifests対応の詳細と詰まったこと
Sansan Tech Blog
こんにちは、技術本部 Mobile Applicationグループで iOSアプリケーション開発しています。武田です。2月29日にAppleから発表がありました。それは5月1日からPrivacy Manifestsに対応していないアプリはアップデートができなくなる、という内容です。これに向け、営業DXサービス「Sansan」のiOSアプリでもPrivacy Manifestsに対応中です。本記事ではその対応の詳細と対応中に詰まったことをご紹介します。やることは大きく次の2つです。1. アプリでPrivacy Manifests対応をする 2. サードパーティSDKをPrivacy Manife…
20日前
記事のアイキャッチ画像
【R&D DevOps通信】Google Compute Engine + GPUで動作するMLサービスの基盤を刷新した話(技術選定編)
Sansan Tech Blog
技術本部 研究開発部 Architectグループの島です。見習い12年目です。 今回は、当社のデータ化技術の粋である「NineOCR」について、そのインフラ・デプロイの基盤を刷新したお話をします。NineOCRに関しては、以下の記事などをご参照ください。 buildersbox.corp-sansan.com ということで「NineOCR」をテーマに以下の2回に分けて記事にする予定です。今回は前編、技術選定の過程です。 前編: 技術選定の過程 後編: GCEにおけるサービスの基盤を変更 タイトルに「刷新」と華々しく書いていますが、プランが二転三転した末の着地だったりします。本記事である技術選定…
24日前
記事のアイキャッチ画像
Metalシェーダーで形状のアニメーション
Sansan Tech Blog
技術本部の堤です。弊社には「Geek Seek Workshop」という社内勉強会を支援する制度がありまして、かなり活発に利用されています。私もその制度を利用して、もう1名の同僚と「リアルタイムグラフィックスの数学 - GLSLではじめるシェーダプログラミング」という書籍を一緒に読み進めていました。 gihyo.jp 本書はリアルタイムグラフィックスの解説書です。基礎から積み上げていくので、勉強会を続けていくうちに、以前だったらおまじないのようにしか見えなかった次のようなシェーダーのコードが理解できるようになってきました。
25日前
記事のアイキャッチ画像
Jest のメモリまわりでハマった話
Sansan Tech Blog
こんにちは、Sansan Engineering Unit の渡邉です🦐私たちのチームではTypeScriptで開発しており、テストはJestを用いて書いています。ある日からテストが結構な頻度で落ちてしまうように(FLAKY *1に)なっていました...。 そこで、テストがFLAKYになっている原因を深掘り調査したところ、Jestのメモリまわりについて解像度が高まったので、備忘録代わりに残します。 *1:FLAKY: 安定していない、確率的に落ちてしまうテストのこと。参考: Google Testing Blog: Flaky Tests at Google and How We Mitiga…
1ヶ月前
記事のアイキャッチ画像
「エンジニア組織の成長を加速させる」Sansan技術本部 新VPoE 就任インタビュー
Sansan Tech Blog
こんにちは、Sansan Tech Blog編集部です。今回は2016年に入社し、関西開発拠点の立ち上げを経て新規事業のプロダクト開発責任者となり、4月1日にSansan株式会社のエンジニア組織全体のマネジメント責任者であるVPoE(Vice President of Engineerの略)に就任した大西に、就任の経緯や今後の展望についてインタビューしました。大西真央のキャリアパスなどの情報を集めたページはこちら sansan-engineering.notion.site
1ヶ月前
記事のアイキャッチ画像
チーム開発合宿 2024 in 徳島県神山町(技術編)
Sansan Tech Blog
こんにちは、研究開発部 Architectグループの辻田です。 この記事はチームメンバー合同で作成した記事です。 先日、神山ラボへ開発合宿に行ってきました。この記事では合宿中に取り組んだ内容について紹介します。合宿の目的や、全体の様子はチーム開発合宿 2024 in 徳島県神山町(レポート編)をご参照ください。 本記事は【R&D DevOps通信】という連載記事のひとつです。
1ヶ月前
記事のアイキャッチ画像
TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ
Sansan Tech Blog
Digitization部 Bill One Entry*1グループの秋山です。 はじめに Domain Modeling Made Functionalというスゴ本 補講:Make Illegal States Unrepresentable バックエンドの処理を抽象化する 手続き型プログラミングの典型例 課題1:制約のないエラーハンドリング 課題2:低い可読性 課題3:エラーハンドリングの低い網羅性 Railway Oriented Programming TypeScriptで型安全にエラーハンドリングする ステップ1:サブ関数の出力はResult型で表現する ステップ2:サブ関数にRe…
1ヶ月前
記事のアイキャッチ画像
チーム開発合宿 2024 in 徳島県神山町(レポート編)
Sansan Tech Blog
こんにちは、研究開発部 Architectグループの辻田です。 今年も神山ラボへ開発合宿に行ってきました!新メンバーも加わり、チームとしては2回目の開発合宿*1です。本記事では合宿レポートを紹介します。合宿で取り組んだ技術的な内容は別記事で出しますので乞うご期待です。 本記事は【R&D DevOps通信】という連載記事のひとつです。 *1:前回の合宿記事はこちらです。
1ヶ月前
記事のアイキャッチ画像
Firehoseを介したS3への中間データ保管と検索性強化
Sansan Tech Blog
はじめに こんにちは、研究開発部 Architectグループの辻田です。 SansanではユーザーフィードバックがSlackのフィードバックチャンネルに集まります。研究開発部ではこれらからモデルやアルゴリズムなどの改善をしています。 そのため、より多くのフィードバックに早く対応することが改善サイクルを回していく上で重要な活動となります。 本記事では、改善対象のデータ抽出を効率化するために、Amazon Data Firehoseを使用してS3に中間データをストリーミングし、Athenaを使ってデータ検索を実現する方法を紹介します。さらに、パーティショニングの適用によって検索性を向上させる手法も…
1ヶ月前
記事のアイキャッチ画像
Eightのデータ抽出基盤をサーバーレスで作る際に工夫したこと
Sansan Tech Blog
こんにちは、Eight Engineering Unitの井上です。 Eightのデータ抽出基盤である Data Management Platform(以下、DMP)の開発を担当しています。 はじめに Eightは330万人を超えるユーザーにご利用いただいており、お預かりしているデータ量も日々多くなっています。 データが多いことに加えて抽出条件もさまざまなため、データアクセスは基本的にフルスキャンとなり高い負荷がかかります。 負荷は高いのですが頻度は高くないこともあり、DMPではサーバーレスのGlueとAthenaを利用して低コストで安定した稼動となる構成を採用しました。 ざっくりとしたシス…
1ヶ月前
記事のアイキャッチ画像
terraform planの自動化に向けて直面した課題と解決策
Sansan Tech Blog
はじめに こんにちは! 技術本部 Bill One Engineering Unit(以下、Bill One EU)の笹島です。 IaC推進チーム(横串チームの1つ)として、CI環境でのTerraform Planの自動化に取り組んできました。 横串チームとは、Bill One EU内の各グループの垣根のない横断チームであり、Bill Oneで抱えている課題を解決するために有志で集まったメンバーによって構成されています。 IaC推進チームとは、文字通りインフラのコード化を推進するチームです。 本記事では、CI環境でセキュアなTerraform Plan自動実行を実現するにあたって直面した課題と…
1ヶ月前
記事のアイキャッチ画像
Salesforceの「取引の開始」関連項目がnullになるタイミングについての話
Sansan Tech Blog
はじめに 初めまして、技術本部 Sansan Engineering Unit Data Hubグループの菊池です。 約6年間Salesforce エンジニアとしてさまざまな経験を積み、2021年1月からSansan株式会社に入社しました。 現在は、営業DXサービス「Sansan」とSalesforce連携を実現する、Data Hub AppExchange Packageの開発/運用・保守をしています。 今回とある調査で初めて知った仕様があったので、本ブログで共有します。
1ヶ月前
記事のアイキャッチ画像
ChatGPTを使ってVisualforceでSLDSコンポーネントを使った開発を快適にする
Sansan Tech Blog
こんにちは、技術本部 Sansan Engineering Unit Data Hubグループの小林です。 今回は、SalesforceのVisualforce開発に当たって、Lightningの見た目で開発をしたいときに便利なSalesforce Lightning Design System(以降、SLDS)コンポーネントを使う際にChatGPTを使うと便利だよ!というお話をします。 そもそもSLDSコンポーネントをVisualforceで使う機会が少なくなってきていると思いますが、エンタープライズ向けの開発でまだまだユーザがClassic UIを使っている…なんてことも少なくないので、渋…
2ヶ月前
記事のアイキャッチ画像
Swift Macrosの作り方
Sansan Tech Blog
こんにちは!技術本部 Mobile ApplicationグループでiOSエンジニアをしている長﨑です。Sansanアプリでは自分たちで定義したSwift Macrosを開発に導入し始めています。Swift Macrosについての勉強会も社内で実施しており、せっかくなので勉強会のコンテンツを記事にしてみます。 この記事では、Swift Macrosを開発するに当たって必要となる基礎知識からマクロの実装方法、CocoaPodsを使ったプロジェクトへの組み込み方法について、解説していきます。
2ヶ月前
記事のアイキャッチ画像
30代からプログラミングを本格的に始めたエンジニアが生産性について思うこと
Sansan Tech Blog
最近キーボードで文字を打つのが面倒になってきている技術本部 Eight Engineering Unitの斉藤です。 キーボードは既に100年以上使われ続けているみたいですね。そろそろ新しい入力の方法ができてもよさそうです。 例えば、頭で考えていることが文字に起こせたら、AIに任せるよりももっと便利だと思います。前置きはさておき、Sansanではちょっと前にエンジニアの生産性と生産量の最大 化が話題になっていました。このブログをご覧の方ならご存知の方も多いのではないでしょうか。私はこれまで何度か転職をしていますが、どの職場でも例外なくこの話題が挙がりました。 チームとして、あるいは事業としてど…
2ヶ月前
記事のアイキャッチ画像
フロントエンドとバックエンドの一貫したバリデーションで開発プロセスに調和と効率化をもたらす
Sansan Tech Blog
技術本部 Digitization部の湯村です。 新規アプリケーション開発で採用したバリデーションロジックの管理方法を紹介します。
2ヶ月前
記事のアイキャッチ画像
テックリードによる社内キャリアイベントを開催しました
Sansan Tech Blog
こんにちは。技術本部 Digitization部 Bill One Entryグループでエンジニアをしている大森です。 普段の業務に加えてTech道場というイベントの運営に関わっており、本記事はそのイベントのレポートです。Tech道場とは、最新の技術や生産性を高める技術、そしてエンジニアの技術力に触れることを目的とした全社員向けの社内イベントです。*1 今回のTech道場では、主にエンジニアをターゲットとした企画として、テックリードによる社内キャリアイベントを開催しました。 *1:Tech 道場再始動しました!. Sansan Tech Blog. https://buildersbox.co…
2ヶ月前
記事のアイキャッチ画像
チームで Learning Session を始めてみた
Sansan Tech Blog
はじめに はじめまして。技術本部 Sansan Engineering Unit Data Hubグループの今村です。みなさんはインプットをどのようにアウトプットしているでしょうか?もちろん業務が1番のアウトプットの場であることは間違いありません。しかし、私たちのチームでは次のような問題意識がありました。 そうは言ってもまだまだアウトプットが足りない アウトプットの場が業務だけだと、学んだことが実際に使われなかった場合、偏りが生じる 学んだ知識がプロジェクトを担当したメンバーだけに閉じてしまってチーム全体に広がらない 以上の問題を解決するために、私たちは「Learning Session」とい…
2ヶ月前
記事のアイキャッチ画像
AndroidでBluetooth Low EnergyのL2CAP通信を行う方法と開発で得た知見
Sansan Tech Blog
技術本部 Mobile Applicationグループに所属する北村です。SansanとEightの両プロダクトをまたぐプロダクト横断チームの一員として、モバイル領域の中長期的な技術的課題の解決や、PoCの開発を担当しています。今回は昨年9月にリリースした、Eightのタッチ名刺交換機能をテーマに、そこで得た知見をこの記事で共有します。 jp.corp-sansan.com タッチ名刺交換とは、Eightのアプリを開いた状態で、同じくEightのアプリを開いた他のAndroid端末やiOS端末と自端末をタッチすることで、デジタル名刺が交換できる機能です。 その際にBluetooth Low E…
2ヶ月前
記事のアイキャッチ画像
Azure Functionsでの大量データ処理とグレースフルシャットダウン(後編)
Sansan Tech Blog
技術本部Sansan Engieering Unit Data Hubグループの藤原です。前回はAzure Functions好きにしか刺さらないとがった内容を書いてしまいました。反省しているので、今回は間口を広げて.NETの標準クラスライブラリ好きにも刺さる内容になっています。 前回、グレースフルシャットダウン対応のバグを修正したパッチを適用したが、実はうまくいっていなかった……というところまで書きました。今回はさらに深く入り込み、その問題も直した話になっています。一言でいうと、Event Hubトリガーを使っている場合、SDKのバージョンによってはメッセージが処理されないことがあります(M…
2ヶ月前
記事のアイキャッチ画像
Azure Functionsでの大量データ処理とグレースフルシャットダウン(前編)
Sansan Tech Blog
技術本部Sansan Engieering Unit Data Hubグループの藤原です。普段はプロダクトのアーキテクチャを改善したり、技術的な課題を解決したり、たまにOSSを書いたりコントリビュートしたりしています。 今年はSansan Data Hubの日々の開発や運用で突き当たっている課題をベースに、現在取り組んでいることや、これから取り組みたいことについて紹介していきたいと思います。今回は、Azure Functionsでの大量データ処理をするとき、グレースフルシャットダウン関連で遭遇した問題について、Azure Functionsの内部構造に触れつつ紹介します。一言でいうと、Even…
2ヶ月前
記事のアイキャッチ画像
生産性指標をFour Keysから変更した話
Sansan Tech Blog
技術本部 Mobile Applicationグループの山本です。名刺アプリEightの開発を行っています。今回はMobile ApplicationグループのEight開発チームの生産性指標をFour Keysからベロシティを含む別の値に変更した話をします。一般的にはベロシティは生産性指標にすべきではない、Four Keysは生産性指標として適切であるという評価だと思います。もちろんそれは理解した上でこの選択をしています。その理由について説明します。なお組織全体がこのように考えているわけではないということに御注意ください。例えば同じMobile ApplicationグループでもSansan…
2ヶ月前
記事のアイキャッチ画像
Active Support Instrumentation について
Sansan Tech Blog
技術本部 Sansan Engineering Unit Nayose グループでエンジニアをしている冨田です。業務では、Ruby on Rails(以降 Rails)を使って名寄せサービスを開発しています。 今回は、Rails などの Ruby コード内のイベント計測に使われる、Active Support Instrumentation について解説します。本 API を利用することで、アプリケーション内で発生するさまざまなイベントを計測し、パフォーマンス改善やデバッグなどの調査に役立てられます。直近 Nayose グループでは、問題調査のために、特定テーブルへの SQL とその呼び出し元…
2ヶ月前
記事のアイキャッチ画像
Sansan Androidチームのライブラリアップデートの取り組みについて
Sansan Tech Blog
こんにちは。 この記事は、技術本部 Mobile ApplicationグループでSansan(※プロダクトとしてのSansan)のAndroid開発を行っている、桑原、小林、鎌田、原田の共著でお届けします。 今回は、アプリで使用しているライブラリのアップデートについて、 Sansanではどのようなポリシーで行っているのか そのポリシーを守るためにしていること そこから見えてくる課題 そして今後について をお話します。
2ヶ月前
記事のアイキャッチ画像
Order Oneでのドメインイベント実装
Sansan Tech Blog
技術本部 Strategic Products Engineering Unit Order One Devグループで受注業務のDXから、事業を加速するプロダクトOrder Oneの開発をしている山邊です。 本題に入る前にお知らせです。2/27 (火) に「自由な発想でつながる、失敗談を語るLTパーティー」というイベントを開催します。 ぜひ、お気軽にご参加ください! sansan.connpass.com Order Oneにドメインイベント・非同期イベントの仕組みを導入したので、仕組みの紹介をしたいと思います。ドメインイベントの導入を検討している方の役に立てば幸いです。
2ヶ月前