はじめに
- ES2015以降の構文を含むため、Chromeでのみ動作確認をしています
- サンプルコードのため実際の使用は自己責任でお願いします🙇♂️
作るもの
- 名前を元に性別を自動判定する
フォーム構成
フィールド名(フィールドコード) | 種別 |
---|---|
姓(姓) | 文字列(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に基づき、閾値を設定する必要がありそうです。
- 今回のコードにはエラー処理を含めていません。