SmartHR Tech Blog

SmartHR 開発者ブログ

ついにリリース!アプリストアを支える技術について解説してみた

こんにちは。エンジニアの@saitoryc です。

SmartHRでは「プラットフォーム事業」というものに取り組んでいるのですが、2022年にようやくアプリストア「SmartHR Plus」がリリースされました。
現在はβ版となっており、正式公開に向けて現在機能拡張を進めています。

SmartHR Plus画面イメージ

今回はそれを記念して『あまりにも分かりづらい事業紹介〜アプリストアを支える技術篇〜』という企画で、アプリストアやプラットフォーム事業で使われている技術についてお話する機会をいただきました。

www.youtube.com

これを見ればあなたもSmartHRのプラットフォーム事業についてバッチリ知ることができます。嘘です。
企画の遊び心が走りすぎて、全編通して何を言ってるのかよく分からないと思うので、詳しいことはこちらの記事にて説明します。
動画からは雰囲気と熱量を感じ取っていただければ!

プラットフォーム事業について

実はSmartHRにおける「プラットフォーム化」というものは、2018年に構想が立ち上がっています。当時のリリースがこちらです。 smarthr.jp

文書配布機能や年末調整機能はこの流れで作られたもので、SmartHR本体とは切り離されたアプリケーションとして機能提供されています。 同じスキームのアプリは次々と増えていきましたが、外部へ仕様を公開できる状態に整えるのにちょっと時間をかけてしまい、アプリストア公開まで4年近い年月がかかってしまいました。
ポジティブに考えれば、時間をかけたおかげで知見や要望を貯めることができた、とも言えるでしょう。
ようやく大規模に展開していける土台ができたので、今後は掲載するアプリをさらに増やして、SmartHRの機能を更に拡張していきたいですね。

ちなみに動画内では「濁音・半濁音禁止」というルールでこの辺の話をしてます。
技術的な話をするときに濁音と半濁音禁止されると、ほとんど何も喋ることができない、という事実をご存知でしたか?自分は今回初めて知りました。まず「プラットフォーム」って言えないですからね。
そんな制約を受けながらも一生懸命伝えようと奮闘してますので、是非一度御覧ください…!.

プラットフォーム事業の技術基盤について

続いてプラットフォーム事業ではどのような方式・技術を使っているのかをご紹介します。

  • そもそも「機能を拡張する」というのはどのような方法を取っているのか
  • それぞれどのような技術を利用しているのか

という点を3種類のやり方ごとに触れていきたいと思います。
ちなみにこれも動画内で同じことを説明しています。ここでは「英語禁止」という制約のもと説明しようと試みています!

SmartHRへの追加機能

まず1つ目ですが、先程も触れた文書配布機能や年末調整機能がこれにあたります。
SmartHRとはシームレスに繋がっているように見えますが、実態としては別のサービスという構成をとっており、OAuth認可とAPIを経由してデータのやり取りをしています。

認可コードフローの例

SmartHRはあくまで人事労務に特化したサービスとして位置づけており、それ以外の領域は別のサービスと連携することで機能を強化していこう、という思想です。
その中でもこれは「SmartHRと連携することを前提とした追加機能」というものになります。

なお認可機構にはAuthleteというSaaSを利用しています。APIが充実していて非常に使いやすいです。

アプリケーションパートナーが展開している既存SaaSとの連携

2つ目は、既に世の中にリリースされている既存のSaaSとの連携です。
連携の方式としては1つ目の「SmartHRへの追加機能」と同じ方式となりますが、異なる点としては「それ単体で利用可能なSaaSである」という事があげられます。

具体的な例を1つあげると、トヨクモ社の「安否確認サービス2」はこちらの方式で連携したものです。
当時のプレスリリースがこちらになります。 smarthr.jp

今後も多様なユーザーニーズに対応すべく、連携可能なアプリケーションパートナーを増やしていきたいですね。
プロダクトエンジニア観点でいうと、パートナーの開発面をサポートすることも重要な役割の1つでもあります。

SmartHRへの埋め込み型拡張

3つ目の方式は、SmartHRの外に追加機能を作るのではなく、SmartHR内に埋め込む形で機能を拡張するものです。
具体的な事例としては、「通勤経路検索機能」がそれにあたります。
こちらは2022年2月当時のプレスリリースです。 smarthr.jp

SmartHRの特定画面内にプラグインのような形式で埋め込み、機能を拡張できるようになっています。 この「通勤経路検索」ではWeb Componentsを使って、SmartHRの入力フォームを拡張しています。
これにより例えば「駅名を入力することでその区間の経路を検索した結果を表示して選択する」といったような、独自の入力フォームを実現しています。

通勤経路検索のカスタム入力フォーム

実際の入力画面のキャプチャですが、駅名の候補リストや経路の候補リストはNAVITIME社が提供しているAPIから取得して表示しています。
これらの処理はSmartHR側の画面では関与しておらず、埋め込まれたWeb Components内の処理として行っています。

この方式はSmartHRの使い勝手を大きく向上する可能性を秘めていると考えており、今後もっと追求していきたいと考えています。
今回は入力フォームを対象としましたが、必ずしも入力に限定せずに様々な画面での拡張を考える余地がありそうです。

プラットフォーム事業におけるR&D

SmartHRの特徴の一つとして「自分たちが提供しているサービスを自分たちの実際の業務で使っている」ということが上げられます。
いわゆるドッグフーディングというやつで、自ら改善点を洗い出してより良いものを創り上げていく形式をとっています。
そしてこのやり方は、プラットフォーム基盤、つまり「アプリの開発体験」に対しても同じ考え方をしています。

パートナーにアプリを作ってもらうための基盤に必要な機能は何なのか。
実際に自分たちでも使ってみないと分からない部分があると考えています。
そのため自分たちでもアプリを開発することで「プラットフォーム基盤のドッグフーディング」を行っています。

たとえば通勤経路検索機能のWeb Componentsを使った埋め込み方式は、まさにこの取り組みによって作られたものです。
この方式を増やすのであればもっと開発者フレンドリーにする必要はありそうですが、それも実際にやってみたからこそ得られた知見だと思います。
作りやすく使いやすい、そんなやり方を追求していく必要がありますが、正解のない領域なのでここが一番難しくて一番楽しいポイントかもしれません。

それ以外にも同様の取り組みで作られた機能として、「カスタムボタン」というものもあります。 カスタムボタンとは従業員リスト画面への追加機能で、選択した従業員の情報をアプリに送るものになります。

カスタムボタンの連携フロー

一見シンプルな機能ですが、これがなかった場合はアプリ側で「従業員検索機能」をそれぞれ用意する必要があります。
どうせ同じような一覧画面を作るのであればSmartHR側でそれができればいい。そういった発想からこちらの機能は追加されました。

こういった形で実際に開発する側の目線で考えながら、汎用的な機能を追加していくことがプラットフォーム事業におけるR&Dと位置づけています。
実際作ったアプリもちゃんとニーズがあればユーザーに使っていただけるものにもできるので、一石二鳥ですね。

プラットフォーム事業の今後について

より魅力的なアプリストアにしていきたい、というのがやはり一番です。

動画でも例としてスマートフォンやゲーム機本体の話をしましたが、魅力的なソフトウェアがなければ、どんなに素晴らしいハードウェアも宝の持ち腐れです。
SmartHRのプラットフォームはハードウェアではないですが、考え方としては同じことが言えます。いかにユーザーニーズを捉えたアプリを並べられるか、ここが肝になると思います。

どうしたらアプリが増えるのか。
ここはやはり開発者体験の向上だったり、実際にSmartHR上でできることを増やすことで開発可能なアプリの幅を広げたり、実際にアプリストアからアプリをインストールして使うユーザーを増やしたり。
どれか1つに絞るのではなく、「全てをバランスよくやらなくちゃあならないのが、プラットフォーム事業の辛いところ」ではありますが、それがまたやりがいを感じるポイントでもあります。
そしてこれらを同時並行でやるには、人手が全然足りていないのが現状です。
2023年2月時点ではエンジニアは4名体制となっており、 一緒にやる仲間をもっと増やしたいと思ってます。

終わりに

ということでプラットフォーム事業、そしてSmartHRでは絶賛エンジニアを募集中です。
特にプラットフォーム開発チームはまだまだ立ち上げたばかりなので、これから自分たちで事業そのものを創り上げていく楽しみがある、というのが大きな魅力ではないかと思います。
もしご興味ありましたら、是非カジュアル面談や面接の場でお伝えいただければ!

そして今回の企画『あまりにも分かりづらい事業紹介〜アプリストアを支える技術篇〜』ですが、皆様の評判が良ければおそらく第2回も開催されると思うので、そちらも是非ご期待ください!

hello-world.smarthr.co.jp