Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SmartHRにおけるアカウントモデルの移行のはなし/Story of migration o...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takumi KANZAKI
December 08, 2018
Technology
2.3k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SmartHRにおけるアカウントモデルの移行のはなし/Story of migration of account model in SmartHR - Rails Developers Meetup 2018 Day 4 Nouvelle Vague -
Takumi KANZAKI
December 08, 2018
More Decks by Takumi KANZAKI
See All by Takumi KANZAKI
新生児〜生後6ヶ月を支えた技術/kosodate-engineer-meetup-3
tknzk
4
2.3k
kosodate_engineer_meetup_2
tknzk
3
6.1k
eb_with_multi_container_docker
tknzk
1
2.5k
AdServer Casual Monitoring by fluentd, Mackerel
tknzk
0
1.9k
Other Decks in Technology
See All in Technology
SRE Lounge Hiroshimaへの招待
grimoh
0
620
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
1
120
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
590
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
4.8k
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
0
2.7k
AICoEでAIネイティブ組織への進化
yukiogawa
0
120
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
130
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
350
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
1
200
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
0
110
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.5k
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
920
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
WENDY [Excerpt]
tessaabrams
11
38k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
220
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Documentation Writing (for coders)
carmenintech
77
5.4k
Speed Design
sergeychernyshev
33
1.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Transcript
SmartHRʹ͓͚ΔΞΧ ϯτϞσϧͷҠߦͷ ͳ͠ SmartHR, Inc Takumi Kanzaki (@tknzk)
͓͢Δ͜ͱ B2B SaaS Ͱ͋ΔSmartHR ͕ϓϩμΫτͷʹͱ ͳͬͯཁ͕݅มΘ͍͖ͬͯ B2B αʔϏεͷΞΧϯτϞσϧ͕ B2C αʔϏεͷ
ΞΧϯτϞσϧʹҠߦͭͭ͋͠Δ
SamrtHR ʹ͍ͭͯ • SmartHRਓࣄɾ࿑ͷखଓ͖ΛΧϯλϯʹ͢Δ ΫϥυܕιϑτΣΞͰ͢ • ϚϧνςφϯτΣϒΞϓϦέʔγϣϯ (MTWA) • SmartHR
ຊମ Rails ͷϞϊϦγοΫͳΞϓϦ έʔγϣϯ
SamrtHR ʹ͍ͭͯ • ਓࣄใͷऩू • ೖୀࣾ࣌ͳͲͷ༷ʑͳॻྨͷ࡞ • e-Gov APIΛར༻ͯ͠ͷ༷ʑͳॻྨͷఏग़ •
ޏ༻ܖػೳ • ௐػೳ • ैۀһDB • etc • ར༻ऀ: ਓࣄ࿑୲ऀ (ͱ ސࣾ࿑࢜) ͱ ैۀһ
None
MTWA ʹ͓͚ΔΞΧϯτϞ σϧ • αʔϏεશମͰΞΧϯτΛڞ༗͢Δ • GitHub • EMAIL ͳͲͰҰҙͷΞΧϯτ͕ൃߦ͞Ε
Δ • org ʹটͳͲͰඥ͚ͮ
MTWA ʹ͓͚ΔΞΧϯτϞ σϧ • ςφϯτ͝ͱʹΞΧϯτΛ࡞͢Δ • Slack, Kibela • ςφϯτ͝ͱʹΞΧϯτ͕ൃߦ͞ΕΔ
• ςφϯτͷΓସ͑ = ΞΧϯτͷΓସ ͑
SmartHR ʹ͓͚ΔΞΧϯτ ͱςφϯτͷؔ • σʔλߏతʹαʔϏεશମͰΞΧϯτΛڞ ༗ • ςφϯτͱϢʔβʔΓ͞Ε͍ͯΔΑ͏ʹݟ ͑Δ͕ɺ࣮ଶີ݁߹ •
Tenant ͱ User ͕ user.tenant_id ʹΑͬͯϦ Ϩʔγϣϯ • ͜ΕʹΑΓςφϯτʹΞΫηεͰ͖ΔΞΧϯ τΛ੍ޚ
SmartHR ʹ͓͚ΔΞΧϯτ ͱςφϯτͷؔ • ݖݶཧ • user.role_id Ͱݖݶઃఆ
SmartHR ʹ͓͚ΔΞΧϯτ ͱςφϯτͷؔ • ཁ͢Δʹ • user ʹςφϯτใͱݖݶใΛ͍࣋ͬͯΔঢ়ଶ
B2BαʔϏεʹ͓͚ΔΞΧ ϯτ • ςφϯτཧऀ͕ൃߦͯ͠ཧ͢Δ • ैۀһͷΞΧϯτ • AD ͱ͔ SSO
ͱ͔ SAML ͱ͔ IdP Ͱཧ͍ͨ͠ • ୀ৬ͨ͠Βണୣ/আ • ୀ৬ޙʹࣾͷυΩϡϝϯτͱ͔ΈΕΔͱ·ͣ ͍Ͱ͢ΑͶ?
SmartHRͷΞΧϯτ • ୀ৬ͨ͠Βണୣ? • ൱
SmartHRͷΞΧϯτ • ਓࣄ࿑୲ऀ • ୀ৬ऀʹ৬ථݯઘऩථΛൃߦͨ͠Γɺڅ ༩໌ࡉΛൃߦͨ͠Γ͍ͨ͠ • ୀ৬ऀɺ • աڈͷڅ༩໌ࡉݯઘऩථΛӾཡͨ͠Γͨ͠
͍
SmartHRͷΞΧϯτ • ࣮ձ͕ࣾཧ͢Δͱ͍͏ΑΓɺݸਓʹൃߦͯ͠ ͍Δͷͱߟ͑Δ΄͏Α͍͔͠Εͳ͍ • B2CαʔϏεͷཁ͕݅Ͱ͖ͯͭͭ͋Δ
ൃੜͨ͠ • ͓͔͛͞·Ͱ ϦϦʔε͔Β3ܦա͠ SmartHR Λ ͝ར༻͍ͨͩ͘اۀ͕ॱௐʹ૿Ճ • స৬ઌͰ SmartHR
Λར༻͍ͯ͠Δέʔε • ෳͷόΠτઌͰ SmartHR Λ͝ར༻͍ͯΔ έʔε
ൃੜͨ͠ • SmartHR ͷΞΧϯτϝΞυΛ ID ͱͯ͠ΞΧ ϯτΛൃߦ • ϝʔϧΞυϨε͕ॏෳ͢Δ͕ൃੜ •
ձࣾͷϝʔϧΞυϨε͕ൃߦ͞ΕΔΑΓલʹ SmartHR ΞΧϯτ͕ൃߦ͞ΕΔͨΊɺݸਓ ͷϝΞυΛ͏έʔε͋Δ • ΞϧόΠτͷ߹ɺݸਓͷϝʔϧΞυϨεΛར ༻͢Δέʔε͕ଟ͍
ϝΞυॏෳʹରԠ • ҰͭͷϝΞυͰ ෳͷςφϯτʹΞΫηεͰ͖Ε Ϥαι
ϚϧνϩάΠϯ • Ұͭͷ SmartHR ΞΧϯτͰෳͷςφϯτʹ ΞΫηεͰ͖Δػೳ • ͱͱɺࣾ࿑͚࢜ʹ࣮ • ෳͷސઌͷςφϯτͰཧऀͱͯ͠ϩάΠ
ϯ͍ͨ͠ͱ͍͏ཁ݅ • ݖݶཧಛʹߟྀ͍ͯ͠ͳ͔ͬͨ(ཧऀݖ ݶͷΈͩͬͨͨΊ)
ϚϧνϩάΠϯ • ࣾ࿑͚࢜ͷػೳͰ͋ͬͨͷͰɺಛఆͷϨίʔυ Λ͍࣋ͬͯΔ͔Ͱఆ͢Δ࣮ • ͜ΕΛશମ (ैۀһ͚ͷݖݶ) ʹ։์ͯ͠ɺϝΞ υͷॏෳΛղܾ͢Δ(ͨ͠)
ϚϧνϩάΠϯͷશମެ։ • user.tenant_id, user.role_id ͷͻ͖Λ ΊΔ • தؒςʔϒϧ (user_role) ʹஔ͖͑
• ΞΧϯτ͕ςφϯτʹͲͷݖݶͰΞΫηεͰ ͖Δ͔ͷใΛ࣋ͭ • user.user_role ͕ ςφϯτઐ༻ͷσʔλʹอ࣋ ͞ΕΔ
ϚϧνϩάΠϯͷશମެ։ • user ͕ tenant ͔ΒΓ͞ΕΔ͜ͱʹͳΔ • ΞΧϯτ͕ςφϯτͷ͔Βݸਓͷͷ • B2C
αʔϏεʹ͍͔ۙͨͪ
࣮ • ϚϧνςφϯτͷϛυϧΣΞͱͯ͠ • activerecord-multi-tenant gem Λར༻ • https:/ /github.com/citusdata/activerecord-multi-
tenant/ • (Ҏલ apartment gem Λར༻͍ͯ͠·͕ͨ͠ࠓ ͷ6݄ʹҠߦ)
࣮ • ϚϧνϩάΠϯͷͨΊͷΓସ͑ͷΤϯυϙΠϯ τ https://app.smarthr.jp Ͱఏڙ • app ಛผͳαϒυϝΠϯͰɺςφϯτΛΓସ ͑ͳ͍ঢ়ଶͱ͍͏ѻ͍
• ϩάΠϯɺϚϧνϩάΠϯͷςφϯτΓସ͑ ͳͲΛߦ͏
࣮࣌ʹى͖ͨ͜ͱ • user.user_role ͕ṖʹΩϟογϡ͞Εͯ͠·͏ • app ԼͰ user.user_role Λ৮ͬͯ͠·͏ͱ active-record
͕ΩϟογϡΛ࣋ͬͯ͠·͍ • ຊདྷΞΫηε͖͢Ͱͳ͍σʔλΛऔͬͯ͠·͍ ςφϯτΓସ͑ޙͷڍಈ͕͓͔͘͠ͳΔ
࣮࣌ʹى͖ͨ͜ͱ • ͜ΕΒɺ active-record/multi-tenant ͷվम • ͦͦ ςφϯτΛΓସ͍͑ͯͳ͍ঢ়ଶͰ user.user_role Λ৮Βͳ͍ͳͲͷमਖ਼Λͯ͠ղ
ܾ
SmartHR ʹ͓͚ΔΞΧϯτ ͱςφϯτͷؔ(ݱࡏ) • σʔλߏతʹαʔϏεશମͰΞΧϯτΛڞ ༗ • ςφϯτͱΞΧϯτΓ͞Εͨؔ • ςφϯτͷதͰͲͷݖݶΛ͍࣋ͬͯΔ͔Λఆ
͜Ε͔Β • SmartHR::ID ߏ • B2CϕʔεͳΞΧϯτϞσϧ + ݸਓใαʔϏ ε
None
None
None
SmartHR::ID ߏ • SmartHR ͷΞΧϯτΛ͍࣋ͬͯΕస৬స੶ Λͨ͋͠ͱͰɺաڈͷࣗͷैۀһใͳͲΛ ӾཡͰ͖Δ • څ༩໌ࡉͱ͔ݯઘऩථͱ͔ •
ैۀһใΛաڈॴଐ͍ͯͨ͠اۀ͔Βస৬ઌ ʹ 1 click Πϯϙʔτͨ͠Γ • ϚΠφϯόʔͷ༬͔Γอ (๏্͋Εͳ ͋Γ·͢.. )
SmartHR::ID ߏ • ࣾձΠϯϑϥ(ͷՄೳੑ)ͱ͍͖ͯͬͯ͠
We are hiring! • Ұॹʹࣾձج൫ΛϋοΫ͢ΔؒืूதͰ͢ • དྷ SmartHR::ID ߏΛ۩ମԽͤ͞Δ༧ఆͳͷͰ ҰॹʹΓ·ͤΜ͔ʂ
• ࢲ͕த৺ͳΔ༧ఆͰ͢ʂ • SSO ͱ͔ SAML ͱ͔AD ͱ͔ৄ͍͠ํ͜ͷ͋ͱ͓ ͠·ͤΜ͔ʂ
Who • @tknzk ( Takumi Kanzaki ) • SmartHR ιϑτΣΞΤϯ
δχΞ