22卒内定者が『フリーランス人事と案件のマッチングスコア算出』機能をリリースしました!

皆さん初めまして、
22卒内定者で人事プロパートナーズで開発を担当している、神野凌太郎と申します!

今回、人事プロパートナーズ内でフリーランス人事と案件のマッチングスコア算出」機能をリリースしたので、リリースに至った経緯と機能詳細についてご紹介したいと思います!

■人事プロサービス概要

f:id:r_kamino:20211122124847p:plain

各社が抱える組織課題の解決に強みを持った即戦力人事の業務委託人材と
人事のリソース不足でお困りの成長企業をマッチングするサービスです。

興味のある方は、
ホームページからぜひお問い合わせください!

itpropartners.com

■機能開発に至った背景

弊サービスでは、案件をご紹介する前に専属CA(キャリアーエージェント)がご登録いただいたフリーランス人事と面談を行います。

面談では、

  • どういう経験をされてきたか
  • 案件にはどのくらいの日数や、週何時間くらい稼働できるか

などをお聞きして、管理画面に面談情報を登録していきます。

その後、登録した情報をもとにフリーランス人事に案件をご紹介しています。
ただ、弊サービスには多くのフリーランス人事の方にご登録いただいているため、企業担当が案件にマッチするフリーランス人事をピックアップするのが困難です。
そのため、企業担当からCAに案件概要を説明した後、
CAが案件にマッチするフリーランス人事ピックアップしています。

f:id:r_kamino:20211122124958p:plain

問題点としては、

  • 企業担当とCAのコミュニケーションコストが大きいこと
  • CAの属人的な情報で、案件とフリーランス人材のマッチングを行なっていること

が挙げられます。

そこで、「人と案件のマッチングスコア算出」機能をリリースすることで、
少しでも企業担当とCAの工数を削減し、より最適なマッチングを実現しようと考えたわけです。

■マッチングスコア算出のロジック

マッチングスコアは、以下の8項目それぞれの入力内容を突き合わせて算出します。
具体的には、それぞれの項目で0~1の間で評価を行い、設定した重みをかけ合わせて
スコアを算出しています。

f:id:r_kamino:20211122130155p:plain

企業担当とCAのヒアリング結果から、
「月間稼働時間」「勤務形態」「タグ」「稼働可能時間帯」がマッチングにおいて特に大事な項目だということがわかったので、他の項目に比べて重みが大きくなっています。

また、案件・フリーランス人事のどちらか未入力の項目があった場合は、
自動的にその項目は0として評価をします。
項目によっては未入力のほうが入力していた時よりもスコアが大きくなる場合があるからです。

 ■実装手順

 ①仮の評価方法を作成

まず、フリーランス人事と案件の入力項目を見比べて、マッチングに必要な項目を洗い出しました。
項目を洗い出すなかで、どちらか一方にしか項目でも、マッチングに使える項目と判断したものに関しては、新たに項目を追加する想定でピックアップをしました。
ここで、既存のデータにこだわるのではなく、あくまでマッチングに必要な要素は何かという判断軸でピックアップを行うことを意識しました。

②過去データをもとに、手動で評価値を算出

過去のフリーランス人事とその方が稼働している案件情報を用いて、評価値を算出しました。
実際にマッチングが成立した情報を使った時に、評価値に問題がないかを確認するためです。

結果として、全ての項目を0、1だけで評価してしまうと、明らかに他の項目より評価が高くなってしまう項目があったので、それぞれの項目に重みをつける方法を取ることにしました。
データベースに重みの値を保存できるようにして、いつでも値を変えられるようにします。

③CAと企業担当にヒアリング

②までに作成した叩きを用いて、CAと企業担当と要件のアップデートを行いました。
マッチングに用いる項目と重みに問題がないかを確認してもらい、評価方法の改善をするのが目的です。

ヒアリングにおいてCAと企業担当どちらかに偏った意思決定にならないように、
中立に意見を取りまとめるように心がけました。

④入力フォームの設置

要件のアップデートで新たに出てきたマッチング項目を管理画面で登録できるように、入力フォームの設置を行いました。(システム設計上、複数のデータベースと入力ページの改修が必要で、想定以上の工数がかかりかなり大変でした。。)

⑤自動マッチングの実装

マッチングに必要な項目を入力できるようにしたので、最後に自動マッチングの実装に取り掛かりました。
アップデートした要件をもとに、それぞれの項目でスコア算出のコードを書きました。(全部で200行くらいのボリュームです、、)

また、算出したスコアを用いて「フリーランス人事→案件」「案件→フリーランス人事」でマッチング検索できるページを実装しました。

下記の図は、「案件→フリーランス人事」で検索したページの例です。
算出したスコアの高い順でユーザー表示を行うことで、フリーランス人事と案件の最適なマッチングを提案します。

 

f:id:r_kamino:20211122130552p:plain

■開発を通して大変だったこと

最も大変だったことは、自動マッチングの抽象的な要件を具体に落とし込む作業です。

もともと、「フリーランス人事と案件を自動マッチングできたら良いよね」と開発チームでの何気ない会話からスタートしているので、「やりたいことは決まっているけど、具体的には何も決まっていない」状態でした。

そのため、具体的な実装要件を詰める前に、ビジネスロジックをプログラムに置き換える作業が必要です。

まず、スラック上で企業担当とCAがやり取りしているテキストからマッチングに必要な項目を推測し、開発チームで叩きを作成することから始めました。(叩きを作成するのに半日以上かかりました、、)

「叩きがある状態だと効率的に要件を詰めることができる」と上長から教えてもらったという背景から、叩きを先に作成することにしました。

実際に、叩きがある状態で議論をすると、より本質的なマッチング要件を決めることができ、
実装もスムーズに行うことができました。

学んだこととしては、「実装前の要件整理に時間をかけること。」
時間をかけた分だけ、ビジネスに寄り添った機能開発ができることを実感しました。

■まとめ

実際にこの機能をリリースすることで、

  • 月間12.5時間の削減
  • 客観的な情報で誰でも人選が可能な状態

を実現することができました。

実際にCAと企業担当からは、「最適なマッチングが実現できて、リソースが余った分、さらに別のところで価値提供が行えるようになった」というお声をいただきました!

今後、この機能を活用してフリーランス人事の方に直接案件をレコメンドできる機能のリリースも考えています。

他にもまだ活かしきれていないデータは数多くあるので、うまくデータ活用を行なってサービス向上に寄与していきたいと思います!

最後までお読みいただきありがとうございました!

------------------------------------------------------------------------------------

株式会社Hajimariでは、Laravelをメイン言語として自社開発・受託開発を行なっており、一緒に開発を行なっていただけるエンジニア募集しています!

23新卒エンジニアの募集も開始しておりますので、少しでも興味ある方はカジュアルにお話ししましょう!

興味のある方は以下の記事をぜひご覧ください!
みなさまとお会いできるのを心からお待ちしております!

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com

www.wantedly.com