2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kintoneで性別判定をしてみよう

Posted at

はじめに

  • ES2015以降の構文を含むため、Chromeでのみ動作確認をしています
  • サンプルコードのため実際の使用は自己責任でお願いします🙇‍♂️

作るもの

  • 名前を元に性別を自動判定する

タイトルなし.gif

フォーム構成

スクリーンショット 2020-07-31 17.31.51.png

フィールド名(フィールドコード) 種別
姓(姓) 文字列(1行)
名(名) 文字列(1行)
LastName(LastName) 文字列(1行)
FirstName(FirstName) 文字列(1行)
性別(性別) ドロップダウン

API

今回は GenderizeというAPIを使って性別判定を行います。
使用方法は簡単で、https://api.genderize.io/?name=●● と叩くと推定性別、パーセンテージが返ってきます。
ただし、日本語には対応していませんのでアルファベットで渡してあげる必要があります。
また、国の指定もできるので今回はcountry_id=JPというパラメータを付与します。
このパラメータが結構重要で、mika(みか)という日本名は概ね女性につけられますが、
英語圏だとmichaelの略名だったりする関係で、パラメータなしだと男性判定、パラメータありだと女性判定になります。
よって外国人も含む場合は国名などのフィールドを用意してパラメータを変化させることを要件に追加するのもありでしょう。

カスタマイズ

今回はレコード追加画面を保存したタイミングで性別判定を行い、ドロップダウンに性別を反映します。

gender.js
(() => {
  'use strict';
  kintone.events.on('app.record.create.submit', event => {
    const record = event.record;
    const firstName = record.FirstName.value;
    const apiUrl = `https://api.genderize.io/?name=${firstName}&country_id=JP`;
    return kintone.proxy(apiUrl, 'GET', {}, {}).then((args) => {
      const res = JSON.parse(args[0]);
      const gender = res.gender;
      record.性別.value = gender === 'male' ? '' : '';
      return event;
    });
  });
})();

留意点

  • Genderize APIは1日1000件までが無料範囲内です。
  • 実際の運用では、Possibilityに基づき、閾値を設定する必要がありそうです。
  • 今回のコードにはエラー処理を含めていません。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?