Sansan Tech Blog

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

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

初めまして。あけましておめでとうございます。
DSOC R&D アーキテクトの鈴木賢志です。

Sansan Labs*1 では、新しい働き方の実現を目指し実験的な機能を一部公開しています。私は普段、それらの開発を中心に、R&D から生まれるサービスの品質改善などに取り組んでいます。
今回は、Sansan Labs で活用している Terraform のディレクトリ構成と、どのような理由でこの形になっていったかを紹介したいと思います。

Terraformのディレクトリ構成

Sansan Labs ではクラウドに AWS をメインで使用しており、昨年からインフラ構成管理のツールとして Terraform の利用を始めました。

初めて Terraform を使い始めた時に、最も悩んだのが .tf ファイルやディレクトリをどのように分けるか、という点でした。
これに対し色々考えた結果*2、以下のように落ち着きました。

terraform_project_root
├── env
│   ├── dev
│   │   └── main.tf
│   └── prod
│       └── main.tf
└── modules
    ├── module_1
    │   ├── main.tf
    │   ├── output.tf
    │   └── variables.tf
    ├── module_2
    │   ├── main.tf
    │   ├── output.tf
    │   └── variables.tf
    ├── ...

簡単にまとめると Terraform の Module という、構成をテンプレート化して再利用できるようにする機能を用いて、 環境ごとに分離したmain.tfファイルに、実際のインフラを表現していくといった戦略です。

*1:Sansan Webサービス内の右上にある、フラスコアイコンから利用できます。

*2:検討する上で一番はじめにヒットし参考にさせていただいたのは、クラスメソッド様のこちらの記事になります。ありがとうございます。

続きを読む

VAEに基づくグラフの表現学習

こんにちは。年末年始はファイアーエムブレムで可処分時間が消えてしまった DSOC R&D Group の橋本です。
さて、今回の記事では、変分オートエンコーダ (Variational Auto-Encoder, VAE) [1]に基づくグラフの表現学習について紹介したいと思います。
近年グラフに対する深層学習手法の発展が目覚ましく、応用先としては材料科学(分子や結晶をグラフと見る)*1や、ソーシャルネットワークなどが挙げられます。ここではソーシャルネットワークのようなグラフに対するものに限定して、ノードの潜在表現を得る手法を紹介します。*2

*1: 私はもともと化学を専攻していたというのもあり、材料科学に対するグラフ機械学習の手法にも興味があったりします

*2: VAEを用いたグラフの表現学習において、応用ドメイン先によって発展のアプローチが異なるようです。大規模なソーシャルネットワークについては本記事で紹介するようにノード埋め込みの解釈性向上についての研究が多いです。一方で例えばVAEを材料科学に応用する場合、新規材料の候補を生成することが一つの目的となります。それを達成するためにはできるだけ化合物が化学的に正しいように生成されることが重要となるため、いかに化合物の原子価の規則を守ったまま分子をdecodeするかについての研究などが主に進んでいます[7, 8]。

続きを読む

CSIRTになって思うこと

はじめまして。CSIRTの松田です。 今年の4月からセキュリティエンジニアとしてSansanで働いています。 前職では主にインフラエンジニアとして物理的な配線設計から保守運用まで幅広く携わりました。 インフラと向き合う中でセキュリティ対策装置に触る機会が多く、その奥ゆかしさに惹かれてセキュリティの世界にのめり込み、今に至ります。

私がSansanのセキュリティエンジニアに転身しようと考えた理由は、自身の経験が活かせることはもちろんですが、社としてのセキュリティに対する思いに共感したからです。

セキュリティと利便性を両立させる

これは企業理念「Sansanのカタチ」のPremiseとして、相反するセキュリティ利便性両方に徹底的に向き合うことを掲げています。 この、一見相反する両立が難しい事柄と常に向き合うことで圧倒的に成長できると確信しSansanのセキュリティエンジニアとなりました。

f:id:ss-matsuda:20191222204622j:plain

本記事は、これからセキュリティエンジニアを目指す方、興味のある方、そもそもCSIRTってどんな業務をやっているか謎だという方に少しでも参考になれば幸いです。

セキュリティエンジニアと言っても幅広い意味を持つので、その一要素であるCSIRTに焦点を当てます。私自身、CSIRTに従事するのは今回が初めてだったため、表面的には理解していたものの実際にどのような業務を行うのか理解を深める目的で情報を整理し、まとめてみました。

続きを読む

歴史をたどってディープラーニングを学ぶ 第三回 Cifar10と勾配消失問題についての考察

こんにちは、ニューラルネット老人こと糟谷勇児です。
最近は恐竜に凝っていて化石を買ったりしています。ニューラルネット界の化石と化してしまう前に、今回もディープラーニングを勉強していきたいと思います。

さて、前回はReLUについて自作のプログラムで検証しました。
これまでMNISTを題材にしてやってきましたが、MNISTの認識はディープラーニングより単純な手法のほうがうまくいくと思われるので、いまいち真実味に欠けるところがありました。

そこで、今回はタスクをちょっとだけ難しくするべくCifar10というデータセットに挑戦していきます。
https://www.cs.toronto.edu/~kriz/cifar.html

Cifar-10

ちなみにCifarはCanadian Institute For Advanced Researchの略のようです。暗号を表すCipherと似てるのでいつもわからなくなります。

Cifar-10には、10種類のクラスがあり、airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck がそれぞれ数字でタグ付けされています。
マルチクラス分類は学習データが必然的に増えるのでクイックに検証をまわすために、今回は2クラスに絞ってみます。
やはり一番かわいい猫を選びたくなりますね。

画像を見てみると・・・

f:id:kasuya_ug:20191222181727j:plainf:id:kasuya_ug:20191222181730j:plainf:id:kasuya_ug:20191222182140j:plainf:id:kasuya_ug:20191222182142j:plainf:id:kasuya_ug:20191222182145j:plain
小さいけど猫だ。

f:id:kasuya_ug:20191222181144j:plainf:id:kasuya_ug:20191222181321j:plainf:id:kasuya_ug:20191222181555j:plainf:id:kasuya_ug:20191222181724j:plain
ねこ・・・?

f:id:kasuya_ug:20191222181422j:plain
ねこ・・・だけど・・・。

今回のような認識タスクでは、人がミスったものを目で見て「これはしょうがないでしょ」とか「これはなんで認識できないんだろう」など分析するんですが、結構判断に困る画像が出てきそうなので、比較的わかりやすそうな飛行機と船を題材にすることにします。

飛行機
f:id:kasuya_ug:20191222182351j:plainf:id:kasuya_ug:20191222182354j:plainf:id:kasuya_ug:20191222182357j:plainf:id:kasuya_ug:20191222182400j:plainf:id:kasuya_ug:20191222182402j:plain


f:id:kasuya_ug:20191222182254j:plainf:id:kasuya_ug:20191222182256j:plainf:id:kasuya_ug:20191222182259j:plainf:id:kasuya_ug:20191222182301j:plainf:id:kasuya_ug:20191222182304j:plain

なお、Pythonの場合はPickelした画像が用意されているのですが、C#にはないのでファイルに落としてから、OpenCvSharpというC#用のOpenCVのラッパーを用いて読み込むようにしています。

続きを読む

新卒データアナリストの9ヶ月

こんにちは、CPO (Cheif Product Officer) 室でデータアナリストをしている佐々木です。

私は今年の 4 月に新卒で Sansan のデータ統括部門である DSOC(Data Strategy and Operation Center)*1 に配属され、10 月の異動により現在は CPO 室に所属しています。実は Sansan がデータアナリストを新卒で採用したのは私の入社した年が初めての試みでした。
今回は、新卒データアナリストとして入社してからの 9 ヶ月間の振り返りを書いていきたいと思います。

CPO 室のご紹介

まず簡単に現在所属している CPO 室がどんなところかを紹介します。CPO 室の業務については先日 CPO 室の新卒同期の佐藤が書いています。
buildersbox.corp-sansan.com

要約すると、CPO 室は

  • プロダクトについて中長期目線で考え、あるべき姿を提案する
  • あるべき姿が定まった時に、現状とのギャップを把握し、その差を埋める

という 2 つの大きな役割を担っている部署です。

その仕事内容は、プロダクト戦略の策定から、既存機能の改善、新規施策の提案と評価、KPI設計、分析基盤作り、ユーザ調査*2 など多岐にわたります。

軽く現在の業務を紹介したところで、入社当初から振り返りたいと思います。

*1:https://sansan-dsoc.com/research/

*2:弊社では NPS という顧客ロイヤリティ指標に本気で向き合っています。https://buildersbox.corp-sansan.com/entry/2019/08/06/113748

続きを読む

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

こんにちは!Sansan事業部プロダクト開発部所属の赤城です。SansanのAndroidアプリ開発を担当しております。

2019年12月上旬から、管理者が端末パスコードロックを必須化する機能が使えるようになりました! 今回はこの機能について、実装するに至った背景から実際の使い方、そしてAndroidアプリ開発時の裏話を紹介させて頂きたいと思います。

背景

Sansanスマートフォンアプリには、パスコードロックの機能があります。これは、スマートフォン自体のパスコードロックとは別に、Sansanアプリを起動するたびに4桁の認証コードの入力を求める機能です。正しい認証コードを入力しない限りアプリを使用できないため、仮に「端末を紛失し、第三者に端末のロックを突破された」「端末のロックを解除して放置した隙にスマートフォンを操作された」等の事象が起こってしまった際にも、Sansanアプリ内の情報が第三者に漏れることを防ぐための機能です。

f:id:ginyolith:20191220182244g:plain:h400
パスコードロック時の動き

今までのSansanスマートフォンアプリにおいては、上記のパスコードロックの設定は利用者個人に委ねられていました。 その性質上、一部のユーザー様から下記のような要望をいただいていました。

  • セキュリティに関する施策の一環でパスコード設定をマストにすることを検討しており、管理者側で一斉にONにできるようにしたい

  • スマホアプリのパスコード設定について、管理者側で設定の必須/不要を選んで、強制的に設定させたい

上記の背景から、 個人のセキュリティ意識に依存せず、企業のセキュリティポリシーとしてパスコード設定を利用できるようにする仕組み として、管理者がパスコードロックを必須化できる機能を開発するに至りました。

続きを読む

2020 年のテーマは進化

新年明けましておめでとうございます。
CTO の藤倉です。

みなさま、2020 年の新年はいかがお過ごしでしょうか。今回の年末年始は 9 連休という稀に見る大型連休となり、日頃の疲れをゆっくりと癒した方、長期の旅行をされた方、最大の寝正月を過ごされた方(私はこれ)などいらっしゃるのではないかと思います。

お休みもあけたところで、2019 年を振り返り、2020 年に成し遂げたいことを書いてみたいと思います。

2019 年の振り返り

以下の記事は 2019 年の年初に書いたものです。

buildersbox.corp-sansan.com

改めて読み返し、会社として、できたこととできなかったことがあります。一方、自分自身の成果という観点で言えば 40 点程度だったかなと思います。惨憺たるものです。

私個人の昨年の振り返りとして反省するのは、会社の状況や周囲で巻き起こる出来事を意識しすぎるあまりに目線が足下に行きすぎ、ボトムアップ的な思考の割合を増やしすぎたことにあります。CTO の任を全うするためには、全てとは言わないものの、視点を未来に置いて創造していく姿勢が大切であると痛感した一年でした。CTO 就任からまずは基礎固めとしてボトムアップで進めたものが形になるのと並行して、会社や事業の状況を認識し、それに伴って自らの目線と時間の使い方を未来志向に調和させていくべきであったと振り返ります。

2020 年に向けて

学びを得るためには過去の振り返りは重要ですが、くよくよしてばかりいる暇などありません。元気よく 2020 年に向けて想いを馳せていきましょう。

昨年、特に後半に私自身が感じていたのは Sansan という会社が出せるスピードの変化です。6 月には上場をしました。エンジニアの数も増えて、事業の幅も広がりつつあります。組織としての成熟度も一段レベルが上がりました。何かこう、Sansan という会社のエンジンのサイズが一回りも二回りも大きくなったような感覚です。アクセルを踏むと、それはもう強い力で前進します。

この会社で CTO としての役割を担うには、私自身が進化し、この高性能なエンジンをしっかりと乗りこなさなければなりません。

続きを読む

© Sansan, Inc.