Sansan Builders Box

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

開発

AWSを活用した大規模データのバックアップ

はじめに こんにちは。プロダクト開発部でインフラエンジニアをしている佐野です。 コロナの影響でここ数ヵ月、家に籠ってリモートワークで作業を行っていますが、椅子とモニターを新調して、やっと快適な作業環境が整ってきた今日この頃です。さて、今回の…

startActivityForResultがDeprecatedになった対応方法

こんにちは!Sansan事業部 プロダクト開発部のふるしんです。 私は大阪のオフィスでSansanプロダクトのAndroidアプリの開発に従事しています。 play.google.com 2020/04/29にActivityのVersion 1.2.0-alpha04が公開され、 startActivityForResult()とonActiv…

マルチモジュールへの第一歩

SansanでAndroidアプリケーションエンジニアをしている山口 です。Sansan Androidではマルチモジュールへの移行を徐々に進めています。今回はappモジュールからどうマルチモジュールに移行しているかについて書きたいと思います。 マルチモジュールにする意…

JavaMailでHTMLメールとTEXTメールを同時送信する方法と注意

新規事業開発室 新卒1年目の山邊です。 Sansan の新規事業で2020年5月11日にリリースされた「あらゆる請求書をオンラインで受け取る。」ことの出来るサービスBill Oneを開発しています。 その過程でメールを送信する際にHTML形式とTEXT形式をまとめて一つの…

ECSのDAEMONをDRAININGで直ぐに停止しないようにした

DSOCインフラチームの藤田です。コロナの影響で大好きなバスケットボールができずに悶々とした日々を送っていましたが、最近Netflixで配信されたマイケル・ジョーダンのドキュメンタリーを視聴して、更に悶々としています。マイケル・ジョーダンについて名前…

プロジェクトの成否を決める非機能要件を定義するには

こんにちは、Sansanプロダクト開発部 プロダクトグループの清水です。 直近で非機能要件の定義について頭を悩ませられる事もあったので、改めて非機能要件の定義について記事にしてみました。 非機能要件とは? ビジネス目的を果たす事に成功するソフトウェア…

B2BマルチテナントSaaSの認証にAuth0を使うときに知っておきたかったこと

こんにちは、新規事業開発室の加藤です。私たちのチームでは新規事業のプロダクトとしてB2BのマルチテナントSaaSを開発しており、その認証にAuth0を使っています。今回Auth0を初めて使用する中で試行錯誤することが多かったので、最初から知っておきたかった…

Eight、Sign in with Apple対応したよ!

はじめに こんにちは! Eight事業部でiOSアプリエンジニアをしている福尾です。 コロナウイルス大変ですね... 弊社も原則在宅勤務になっており、日々リモートでの業務をしております。*1 幸い、僕が所属するアプリチームには普段からリモートの方が数人いる…

Eightの品質を保ち続ける「Rails × RSpec × AWS」なローカル & CI環境

Eight事業部プロダクト部 Platform Group / Engineering Manager の 藤井洋太郎(yotaro) です。 さて、私が属するPlatform Groupは「アーキテクチャ刷新」「データ基盤整備」「セキュリティ」「環境整備」など多方面での開発・改善を行っています。 本記事で…

composed_of を使って Rails で値オブジェクトを扱う

DSOC サービス開発部でエンジニアをしている石畑です。普段は Rails で名寄せサービスを作っています。 今回は Rails で値オブジェクトを扱うのに ActiveRecord の composed_of が便利なので、紹介します。 値オブジェクト 値オブジェクトは DDD でも紹介さ…

AndroidのWorkManagerでDIする

こんにちは!Sansan事業部 プロダクト開発部のふるしんです。 私は大阪のオフィスでSansanプロダクトのAndroidアプリの開発に従事しています。 play.google.com WorkManagerを使うと、アプリの起動状態が変化しても実行してくれるような、延期可能な非同期タ…

Sansan iOS アプリの内側

こんにちは。 Sansan iOS アプリエンジニアの中川です。 Sansan iOS アプリは B to B アプリの性質上、 App Store のプレビューやログイン、新規登録くらいしか未登録ユーザーが触れられる領域がなく、ビジネスマンならともかく、エンジニアがそのアプリがど…

DeployGateで開発中アプリの配布をスッキリさせたはなし。

みなさまはじめまして! Sansan事業部プロダクト開発部Androidエンジニアの原田です。 今回は導入から1年半くらいが経つDeployGateというサービスについて、私のチームがどのように利用しているかご紹介いたします。 背景 突然ですがみなさんは、開発中のア…

レスポンス速度に向き合う

こんにちは、Sansanの杉原です。BtoBサービスのSansanのブラウザアプリケーションのエンジニア兼プロダクトマネージャーをしています。 今回はブラウザアプリのパフォーマンスにおける速度(*1)で苦い経験をしたエンジニアが、プロダクトマネージャーになっ…

VIPER の実装コストを下げるために

こんにちは! Sansan iOS チームの髙橋佑一朗です。 Sansan iOS アプリでは現在、 VIPER をアーキテクチャとして採用していますが、VIPER の構成で実装していくに当たって1画面作るのにコードを書く量が多いなぁと少しづつ感じてくるようになりました。 そこ…

Sansan iOSアプリの発信者名表示機能に関する実装・運用改善について

はじめに Sansan事業部で法人向けクラウド名刺サービスSansanのiOSアプリ開発を担当している栗山です。 Sansanアプリには、名刺に記載されている電話番号や同僚から電話があった際に発信者名を表示する機能があります(以下 発信者名表示機能 )。 Sansanアプ…

Eight iOS アプリの申請作業はボタン一つ

Eight 事業部 iOS エンジニアの 河辺 です。Eight iOS チームでは、これまでアプリの申請作業を手動で行なっていましたが、昨年の12月より自動化しました。この記事では、そのアプリ申請作業の自動化の取り組みを紹介したいと思います。 これまでのアプリ申…

非同期処理を理解する

はじめに プロダクト開発部の荒川です。私事ではありますが、バックエンドエンジニアからiOSエンジニアへと転向しました。iOS開発は全くの未経験だったのですが、周りのメンバにも助けられつつ、なんとかやっていけています。サーバサイド、クライアントサイ…

CSS について復習する

こんにちは。Eight 事業部エンジニアの鳥山(@pvcresin)です。 業務では Eight Career Design の Web フロントエンドを担当しています。 Eight では様々な技術を使って、CSS によるスタイリングを行っています。 PC 版 Eight Sass(SCSS) + BEM Eight-UI: …

タイムゾーン対応で振り返る 既存プロダクトのグローバル化

プロダクト開発部 Globalプロダクトグループの天貝です。私の所属の正式名称は Globalプロダクトグループ ですが、開発部では グローバルチーム と呼ばれています。海外のユーザからのフィードバックをもとに、海外のユーザに今以上に価値を訴求できるような…

DSOCで行なっているメタデータ管理について

初めまして。DSOC Data Direction Groupの有山と申します。 現在、Data Direction Groupでは私を入れて主に2名のメンバーがデータエンジニアとして職務と向き合っています。 ところで、データエンジニアの仕事とはどういうものを想像するでしょうか。Data Di…

ECS Capacity Auto ScalingをTerraformで実装する

はじめに DSOCインフラチームの藤田です。昨年からプレイしているデス・ストランディングがまだ折り返し地点にも至っていなかったことを知りました。原因は一生懸命国道を作りすぎたためだと思います。 今回は昨年のre:Inventで発表されたECS Capacity Auto …

Serverlessで始める新規サービスのおはなし

こんにちは。Sansan事業部プロダクト開発部でエンジニアをしている 黒澤です。半年ほど前にSBBに寄稿させていただいたときは、新規事業の立ち上げをしていると書かせていただきましたが、 11月のサービス提供開始と共に、古巣であったSansanプロダクト開発部…

Sansan Labs 開発での Terraform ディレクトリ構成

初めまして。あけましておめでとうございます。 DSOC R&D アーキテクトの鈴木賢志です。 Sansan Labs*1 では、新しい働き方の実現を目指し実験的な機能を一部公開しています。私は普段、それらの開発を中心に、R&D から生まれるサービスの品質改善などに取り…

管理者がSansanスマートフォンアプリの端末パスコードロックを必須化出来るようになりました

こんにちは!Sansan事業部プロダクト開発部所属の赤城です。SansanのAndroidアプリ開発を担当しております。 2019年12月上旬から、管理者が端末パスコードロックを必須化する機能が使えるようになりました! 今回はこの機能について、実装するに至った背景か…

Eight の EC2 費用を Spotinst によって4割くらい減らした話

Eight 事業部の秋本です。 本記事では Eight における EC2 スポットインスタンスの活用について取り上げ、同時にスポットインスタンス運用をラクにするサービスである Spotinst もご紹介したいと思います。 TL; DR EC2 オートスケーリンググループで運用され…

New Relic Alert でサービス全機能のエラー監視を実現させてみた

Eight事業部プロダクト部 Platform Group / Engineering Manager の 藤井洋太郎(yotaro) です。 このエントリは New Relic Advent Calendar 2019 - Qiita の12/13分のものです。 前回、以下のNew Relicを活用したパフォーマンスチューニング事例の記事を書か…

Sansan AndroidにおけるFlux移行

SansanでAndroidアプリケーションエンジニアをしている山口 です。リードエンジニアになって8ヶ月が過ぎました。 今回はSansan AndroidにおけるFlux移行について書こうかなと思います。 Flux移行の背景 アーキテクチャの変更に限らず新しいなにかの導入は理…

AWS と GCP のコストを減らせ!(Redash による可視化編)

DSOC Infrastructure Group の 大澤 です。 最近自身のあまりの不健康ぶりにさすがに危機感を抱いたので、自宅から徒歩10分にある24時間営業のフィットネスクラブに申し込んできました。過去何回か挫折しているので今度こそ継続したいものです。 さて、突然…

【Eightの3つの新サービス(4)】“いいサービス”と”いい顧客”が、”いいかたち"で出会う:Meets

Sansan株式会社のEight事業部で新規事業の開発を担当している篠原です。 Eightの新サービスをご紹介する企画の最後となる今回はMeetsとその裏側のシステムについてご紹介します。 Meetsとは まずは、Meetsというサービスについて簡単に説明します。 優良サー…

© Sansan, Inc.