Sansan Tech Blog

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

Metalシェーダーで形状のアニメーション

技術本部の堤です。弊社には「Geek Seek Workshop」という社内勉強会を支援する制度がありまして、かなり活発に利用されています。私もその制度を利用して、もう1名の同僚と「リアルタイムグラフィックスの数学 - GLSLではじめるシェーダプログラミング」という書籍を一緒に読み進めていました。

gihyo.jp

本書はリアルタイムグラフィックスの解説書です。基礎から積み上げていくので、勉強会を続けていくうちに、以前だったらおまじないのようにしか見えなかった次のようなシェーダーのコードが理解できるようになってきました。

続きを読む

Jest のメモリまわりでハマった話

こんにちは、Sansan Engineering Unit の渡邉です🦐

私たちのチームではTypeScriptで開発しており、テストはJestを用いて書いています。ある日からテストが結構な頻度で落ちてしまうように(FLAKY *1に)なっていました...。
そこで、テストがFLAKYになっている原因を深掘り調査したところ、Jestのメモリまわりについて解像度が高まったので、備忘録代わりに残します。

*1:FLAKY: 安定していない、確率的に落ちてしまうテストのこと。参考: Google Testing Blog: Flaky Tests at Google and How We Mitigate Them

続きを読む

「エンジニア組織の成長を加速させる」Sansan技術本部 新VPoE 就任インタビュー

こんにちは、Sansan Tech Blog編集部です。今回は2016年に入社し、関西開発拠点の立ち上げを経て新規事業のプロダクト開発責任者となり、4月1日にSansan株式会社のエンジニア組織全体のマネジメント責任者であるVPoE(Vice President of Engineerの略)に就任した大西に、就任の経緯や今後の展望についてインタビューしました。

大西真央のキャリアパスなどの情報を集めたページはこちら
sansan-engineering.notion.site

続きを読む

チーム開発合宿 2024 in 徳島県神山町(技術編)

こんにちは、研究開発部 Architectグループの辻田です。 この記事はチームメンバー合同で作成した記事です。

先日、神山ラボへ開発合宿に行ってきました。この記事では合宿中に取り組んだ内容について紹介します。合宿の目的や、全体の様子はチーム開発合宿 2024 in 徳島県神山町(レポート編)をご参照ください。

本記事は【R&D DevOps通信】という連載記事のひとつです。

続きを読む

TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ

Digitization部 Bill One Entry*1グループの秋山です。

  • はじめに
  • Domain Modeling Made Functionalというスゴ本
    • 補講:Make Illegal States Unrepresentable
  • バックエンドの処理を抽象化する
  • 手続き型プログラミングの典型例
    • 課題1:制約のないエラーハンドリング
    • 課題2:低い可読性
    • 課題3:エラーハンドリングの低い網羅性
  • Railway Oriented Programming
  • TypeScriptで型安全にエラーハンドリングする
    • ステップ1:サブ関数の出力はResult型で表現する
    • ステップ2:サブ関数にResult型を入力できるようにする
    • ステップ3:サブ関数を連結する
    • ステップ4:網羅的にエラーハンドリングする
  • おわりに
  • 付録
    • TypeScriptの全文サンプル

はじめに

エラーハンドリングは重要な処理にも関わらず、静的型付け言語の恩恵を十分に活かしきれていない領域です。特にTypeScriptを用いた開発では、その発展途上な言語仕様も手伝い、型安全なエラーハンドリングはそもそも実現が難しいという実情がありました。

しかし昨今の周辺ライブラリの発展により、型安全なエラーハンドリングを実際の開発現場で実現できるようになってきました。

この記事ではScott Wlaschinの2018年の書籍『Domain Modeling Made Functional(以後、「DMMF本」)』で提唱されているRailway Oriented Programmingと呼ばれるパラダイムを借り、TypeScriptを用いた開発でどのように型安全なエラーハンドリングを担保できるかを検討していきます。

*1:クラウド請求書受領サービス「Bill One」が提供するデータ化機能。

続きを読む

チーム開発合宿 2024 in 徳島県神山町(レポート編)

こんにちは、研究開発部 Architectグループの辻田です。

今年も神山ラボへ開発合宿に行ってきました!新メンバーも加わり、チームとしては2回目の開発合宿*1です。本記事では合宿レポートを紹介します。合宿で取り組んだ技術的な内容は別記事で出しますので乞うご期待です。

本記事は【R&D DevOps通信】という連載記事のひとつです。

*1:前回の合宿記事はこちらです。

続きを読む

Firehoseを介したS3への中間データ保管と検索性強化

はじめに

こんにちは、研究開発部 Architectグループの辻田です。

SansanではユーザーフィードバックがSlackのフィードバックチャンネルに集まります。研究開発部ではこれらからモデルやアルゴリズムなどの改善をしています。

そのため、より多くのフィードバックに早く対応することが改善サイクルを回していく上で重要な活動となります。

本記事では、改善対象のデータ抽出を効率化するために、Amazon Data Firehoseを使用してS3に中間データをストリーミングし、Athenaを使ってデータ検索を実現する方法を紹介します。さらに、パーティショニングの適用によって検索性を向上させる手法も紹介します。

この記事は、【R&D DevOps通信】の連載記事のひとつです。

続きを読む

© Sansan, Inc.