SmartHR Tech Blog

SmartHR 開発者ブログ

必見!データ連携機能の裏側

こんにちは!プロダクトエンジニアのyanagidaです。2024年6月にリリースしたデータ連携機能の開発をしています。

support.smarthr.jp

この記事では、これまで露出することがなかったデータ連携機能の裏側をご紹介できればと思います。

データ連携機能とは

データ連携機能は文字通り、SmartHRと他社システムの「データ」を効率的に連携する機能です。例えば、SmartHRの従業員情報を他社システムに書き出し同期します。逆に、他社システム側の従業員情報をSmartHRに取り込むこともできます。ニーズの高さや実装工数、社内の戦略などを元に優先度を決めながら順次データ連携のバリエーションを拡充しています。

個社カスタマイズにも対応

従業員規模の大きなテナントにおいては業務アプリを独自ルールで運用していることも多く、汎用的なデータ連携では要望に答えきれないケースがしばしばです。このようなケースに対応すべく、「データ連携プレミアム」と銘打ち個社カスタマイズのデータ連携を依頼元テナントにのみ提供するサービスも開始します。

smarthr.jp

データ連携機能の利用イメージ

どの連携においても同じ手順でデータ連携を実行できます。

1. データ連携の一覧から利用したいものを選択する

データ連携の一覧から利用したいものを選択する

2. 詳細画面で[設定]を行なう

[設定]を行なう

3. [設定]が完了したら[実行]する

[実行]する

実行結果は画面下部の[実行履歴]とメールで確認できます。メールは実行者のログインメールアドレスに送信されます。

実行履歴を確認する

※ より詳細な使い方は、データ連携のヘルプページをご覧ください。

support.smarthr.jp

なぜ作るのか

他社システムと効率的にデータ連携をしたい

どの企業どのユーザーにおいても業務効率化のため複数のアプリを導入し運用していますが、同じような情報をアプリごとに入力する必要があり効率的な運用の妨げになっています。データ連携機能を活用することでSmartHRと他社システム間のデータを手間なく連携し、シームレスな運用を支援します。

データ連携を効率的に拡充したい

データ連携の要望は多岐にわたり、その都度新たな開発をすることが求められます。そのため、データ連携の開発プロセスを改善し、効率的な開発体制を構築することも求められています。

既存のデータ連携機能を集約し運用保守を効率化したい

SmartHRには既存のデータ連携機能が存在し、現在も運用を続けています。これらの機能はそれぞれ別な時期に個々のサービスごとの要望に応じて作られているため、UIや使い勝手がその時々で最適を目指したものとなっています。その一方で、今すべての連携を並べてみるとUIと使い勝手に差異が生まれてしまっているという課題がありました。また、すべてのアプリが独立したアプリケーションとなっているため、例えばRubyのバージョンアップをすべてのアプリケーションに適用しなければならないなど、運用保守にかかるコストも課題となっていました。

これら既存機能の代替(あるいは上位互換)を新規のデータ連携機能で提供し一本化することで、UIや使い勝手を統一したり、運用保守にかかるコストを下げたいと考えています。また、面倒を見るアプリケーションが1つにまとまることで改善要望も1箇所に集まり対応しやすくなったり、インフラコストが削減できるなど副次的な効果も見込めています。

どう作るのか

データ連携を効率的に拡充していくために、実際の連携処理の部分に組み込み型iPaaS(Integration Platform as a Service)の「Anyflow Embed」を利用しています。

全て内製する場合、連携先となる他社システムごとにAPIの仕様や認証の仕組みを調査し実装する必要がありますが、iPaaSを活用することでこの工程を全てスキップでき、我々は具体的なデータ連携仕様の検討とロジック構築に集中できます。これはデータ連携を効率的に拡充するうえで大きなメリットと捉えています。 そのため、データ連携機能本体は言わばデータ連携のカタログのようになっており、iPaaS上で作成したデータ連携処理をSDKで呼び出す構成になっています。

データ連携機能のざっくりしたアーキテクチャ図です。データ連携機能本体からiPaaSで実装した連携処理をSDKで呼び出し、連携先のシステムへのAPIリクエストはiPaaSが行なう構成になっています。
ざっくりしたアーキテクチャ図

一方で、iPaaS上で構築したデータ連携処理が本当に意図した挙動をするかという観点での品質担保には課題があります。全て内製する場合であればユニットテストやインテグレーションテストを用意することで一定の品質を担保できますが、iPaaS上で構築したロジックに対して、それに類する品質担保策を講じられておらず、マニュアルテストに依存しているのが現状です。この課題へのアプローチとして

  • ブラウザ操作を自動化するツールを利用してデータ連携実行までの操作を自動化したうえで
    • 他社システム側のAPIを実行し、期待通りのデータが連携されているかレスポンス内容を確認する
    • 他社システム側画面の操作も自動化し、期待通りのデータが連携されているか画面上で確認する

などの方法を模索していますが、他社システムに大きく依存するため実装コストが高い上、データ連携自体も拡充されていく状況の中でなかなか最適解を見つけられずにいます。引き続き検討を行ないます。

野望

上述したとおり、データ連携を効率的に拡充しながら、その過程で既存のデータ連携機能の集約もしていくのが基本的な方針となっています。その一方で、データ連携操作の部分にはまだまだ改善の余地があり、我々プロダクトエンジニアの腕の見せどころだとも思っています。 人が欲しいと思うデータ連携機能をさらに超えるものを作りたいという野望をもっています。

2024年1月にデータ連携機能開発ユニットを立ち上げた際「今は2030年。我らのデータ連携機能は『最強』の外部サービス連携アプリと呼ばれていますが、それはなぜですか?」というテーマでブレインストーミングを行ないました。その中で挙がった機能の一部を「野望」の一例として紹介します。

  • 初期設定だけすれば、その後の連携は設定したトリガーに基づき完全に自動で行われる
  • データ連携を実行する前にバリデーションチェックができ、事前に修正すべき項目がわかる
  • AIによる事前の修正内容の提案を受けられる。提案内容での修正の実行もできる

いずれ実装してやるぞと、本気で考えています。

まとめ

この記事では、これまで露出することがなかったデータ連携機能の裏側を紹介しました。データ連携の拡充を軸にしつつ、野望を胸に機能改善にも取り組める点が非常におもしろいと感じています。数多くの他社システムに触れられる点も魅力の一つです。

SmartHRでは一緒に働く仲間を絶賛募集中です!少しでも興味を持っていただけましたら、まずはカジュアル面談でざっくばらんにお話ししましょう!

hello-world.smarthr.co.jp