Googleしごと検索が求めている推奨プロパティのひとつに“baseSalary”というのがあるんですが、公式ドキュメントによると
雇用主から提示された実際の基本給(概算額ではない)。
https://developers.google.com/search/docs/data-types/job-posting#basesalary
ということで、要するにこの項目には給与について書くことが求められています。
実際に記述する際の書式(JSON-LD)ではこんな感じ↓
給与額が固定の場合
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "JPY",
"value": {
"@type": "QuantitativeValue",
"value": 300000,
"unitText": "HOUR"
}
}
給与額が一定の範囲内の場合
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "JPY",
"value": {
"@type": "QuantitativeValue",
"minValue": 200000,
"maxValue": 400000,
"unitText": "HOUR"
}
}
違いは、上で“value”とある行が、下では“minValue”と“maxValue”に変わっている点。ただどちらにも続けて数値が記述されていて、つまり、ここに給与に関する金額を記入するという決まりになっています。
それが何か問題?
実はこの金額、文字が半角数字で、かつ「’」や「”」で囲まれていません。コードを書く人ならお分りになると思うんですが、要するにこれらは数値データということです。
通常、日本で金額を見せるときって「25万円」とか「1,500円」みたいに漢字や記号(カンマ)を加え、読みやすく・伝わりやすく表記しますよね。
ところが、漢字や余計な記号が入っているとコンピューターが計算や比較に利用できないので、Googleしごと検索では金額を純粋な数値データで入力するよう求めているのです。
ふーんそうなんだ、とまあ、そこは納得するしかないんですが、Googleに送るデータはともかく、人間のユーザーが見る募集要項が
給与 | 年収30000000円 |
---|
みたいな表記だと…ちょっとピンときません。
ちなみにこれ↑3,000万ですよ。見せる方も見る方も、ぜひピンときたいもんです。
Googleはともかく、人間には人間用の表記したい
という訳で、人間のユーザーにピンときてもらうべく、ユーザーが目にする箇所、つまりウェブページ上では数値データを漢字混じりの表記に変換するスクリプトを書いてみました。
一緒にカンマも入ります。
それが、こちら↓
function yenFormat(_val){
const _string = String(_val);
const _length = _string.length;
const _digits = ['', '万', '億', '兆', '京', '垓'];
let _result = '';
let _results = [];
for(i = 0; i < Math.ceil(_length / 4); i++){
_results[i] = Number(_string.substring(_length - i * 4, _length - (i + 1) * 4));
if(_results[i] != 0) _result = String(_results[i]).replace(/(\d)(?=(\d\d\d)+$)/g, '$1,') + _digits[i] + _result;
}
return _result + '円';
}
関数になっているのでいろんな方法で利用できますが、例えば、要素にクラスを付けて変換するならこんな感じ↓
See the Pen yLYWbxv by PieceDesignInc. (@xyyyyxww) on CodePen.
この記述↓を足すことで、「yenFormat」というクラスがついた要素中の数値を変換することができます。
$('.yenFormat').each(function(){
$(this).text(yenFormat($(this).text()));
});
他には、フォームで入力された数値を変換して出力するならこんな感じ↓
See the Pen 数値データを漢字混じり表記に変換する by PieceDesignInc. (@xyyyyxww) on CodePen.
お問合わせや求人応募のフォームで使うってことは無さそうですし、利用するならCMS内の記事編集画面? …でもあまり使わないか。
あと、おまけでPHP版も作ってみました↓ WordPressでの利用などに。
<?php
function yenFormat($val){
$length = strlen($val);
$digits = array('', '万', '億', '兆', '京', '垓');
$results = array();
for($i = 0; $i < ceil($length / 4); $i++){
$results[$i] = substr($val, -4, 4);
$val = substr($val, 0, -4);
if($results[$i] != '0000') $result = number_format($results[$i]).$digits[$i].$result;
}
return $result.'円';
}
?>
垓までいけます
単位は10の20乗「垓」まで対応しています(日常生活で見たことないけど)。
単位の追加は配列に書き加えるだけなので、簡単に好きなだけ行えるんですが、「垓」の次にあたる10の24乗「し」が表示不可の漢字だったので今回はここまでにしました。
よろしければ、「し」を何とかしつつ、この辺↓を見ながら続きの単位もお好みでどうぞ。