SmartHRʹ͓͚ΔΞΧϯτϞσϧͷҠߦͷͳ͠SmartHR, Inc Takumi Kanzaki (@tknzk)
View Slide
͓͢Δ͜ͱB2B SaaS Ͱ͋ΔSmartHR ͕ϓϩμΫτͷʹͱͳͬͯཁ͕݅มΘ͍͖ͬͯB2B αʔϏεͷΞΧϯτϞσϧ͕ B2C αʔϏεͷΞΧϯτϞσϧʹҠߦͭͭ͋͠Δ
SamrtHR ʹ͍ͭͯ• SmartHRਓࣄɾ࿑ͷखଓ͖ΛΧϯλϯʹ͢ΔΫϥυܕιϑτΣΞͰ͢• ϚϧνςφϯτΣϒΞϓϦέʔγϣϯ (MTWA)• SmartHR ຊମ Rails ͷϞϊϦγοΫͳΞϓϦέʔγϣϯ
SamrtHR ʹ͍ͭͯ• ਓࣄใͷऩू• ೖୀࣾ࣌ͳͲͷ༷ʑͳॻྨͷ࡞• e-Gov APIΛར༻ͯ͠ͷ༷ʑͳॻྨͷఏग़• ޏ༻ܖػೳ• ௐػೳ• ैۀһDB• etc• ར༻ऀ: ਓࣄ࿑୲ऀ (ͱ ސࣾ࿑࢜) ͱ ैۀһ
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ϕʔεͳΞΧϯτϞσϧ + ݸਓใαʔϏε
SmartHR::ID ߏ• SmartHR ͷΞΧϯτΛ͍࣋ͬͯΕస৬స੶Λͨ͋͠ͱͰɺաڈͷࣗͷैۀһใͳͲΛӾཡͰ͖Δ• څ༩໌ࡉͱ͔ݯઘऩථͱ͔• ैۀһใΛաڈॴଐ͍ͯͨ͠اۀ͔Βస৬ઌʹ 1 click Πϯϙʔτͨ͠Γ• ϚΠφϯόʔͷ༬͔Γอ (๏্͋Εͳ͋Γ·͢.. )
SmartHR::ID ߏ• ࣾձΠϯϑϥ(ͷՄೳੑ)ͱ͍͖ͯͬͯ͠
We are hiring!• Ұॹʹࣾձج൫ΛϋοΫ͢ΔؒืूதͰ͢• དྷ SmartHR::ID ߏΛ۩ମԽͤ͞Δ༧ఆͳͷͰҰॹʹΓ·ͤΜ͔ʂ• ࢲ͕த৺ͳΔ༧ఆͰ͢ʂ• SSO ͱ͔ SAML ͱ͔AD ͱ͔ৄ͍͠ํ͜ͷ͋ͱ͓͠·ͤΜ͔ʂ
Who• @tknzk ( Takumi Kanzaki )• SmartHR ιϑτΣΞΤϯδχΞ