マイナンバー法における個人番号の検査用数字

マイナンバー法の個人番号(12桁)についても法人番号(13桁)と同様に検査用数字(チェックデジット)があります。
これは「行政手続における特定の個人を識別するための番号の利用等に関する法律の規定による通知カード及び個人番号カード並びに情報提供ネットワークシステムによる特定個人情報の提供等に関する省令(平成26年総務省令第85号)」に定められています。
法人番号のチェックデジットは先頭の1桁ですが、個人番号は末尾の1桁です。 (さらに…)

マイナンバー法における法人番号の検査用数字

「行政手続きにおける特定の個人を識別するための番号の利用等に関する法律」が成立し、国民全員にそれぞれ固有の番号「マイナンバー」が付けられます。
そのため、この法律を「マイナンバー法」と呼びます。
番号は個人だけでなく、法人にも付けられます。これを「法人番号」と呼びます。
法人番号は13桁で1桁目は検査用数字(チェックデジット)になります。これについては現在、「法人番号の指定等に関する省令」という省令案が出されていて、計算方法が明記されています。

(検査用数字を算出する算式)
第二条 令第三十五条第一項に規定する財務省令で定める算式は、次に掲げる算式とする。
算式
9-(を9で除した余り)
算式の符号
Pn 令第三十五条第一項に規定する基礎番号の最下位の桁を1桁目としたときのn桁目の数字
Qn nが奇数のとき 1、nが偶数のとき 2

あらかじめ決められた12桁の番号(基礎番号、商業登記法に基づく会社法人等番号)を右端の桁から取り出して、その桁が奇数ならば1、偶数ならば2を乗じます。これを全て足します。これを9で割って余りを求めます。9から余りを引きます。こうすると1から9までのいずれかの整数になります。

JavaScriptで検査数字を求める関数を書いてみました。

function kensa_suji(kiso_bango) {
    var sum, n, p, q;
    if(!kiso_bango.match(/^[0-9]{12}$/)) {
        return;
    }
    sum = 0;
    for(n = 1; n <= 12; n++) {
        p = kiso_bango.substr(12 - n, 1);
        q = n % 2 === 0 ? 2 : 1;
        sum += p * q;
    }
    return 9 - sum % 9;
}

JSFiddleで試せます。

VBAの変数を全て拾い出す

VBA(ExcelやWordのマクロ)のコードを書いていて長くなると変数の入力間違いなどに気付きにくくなります。
この場合、コードの先頭に「Option Explicit」と書きます。こうすると変数の綴りが違うとエラーが発生してすぐに気付きます。
そのためには全ての変数について「Dim」を使って明示的に宣言する必要があります。
変数を拾いだすのは結構、面倒です。

そこでJavaScriptを使って変数を全て拾い出す方法を考えました。

VBAでは変数に使える文字は、半角英数字、アンダースコアの他、全角のひらがな、カタカナ、漢字が使えます。
漢字は、シフトJISだけ想定すればいいので「一-龠」で拾えます。
先頭は数字とアンダースコアは使えません。
変数には何かを代入する場面があるはずなので「文字列 =」という部分を拾い出します。
拾い出した文字列の重複を削除し、タブと「Dim 」を付けて返します。

配列変数はあらかじめ宣言しないと、そもそも使えないので無視します。
ダブルクォートに挟まれた部分、シングルクォート以降は無視します。 (さらに…)

ブラジルW杯開幕までのカウントダウン

今年はサッカーのワールドカップがブラジルで開催されます。開幕戦は現地時間で6月12日17時キックオフ。時差がちょうど12時間なので、日本時間では同日5時になります。
開幕戦までの日数を表示する仕組みをJavaScriptで作ってみました。

カウントダウン2014FIFAワールドカップブラジル

レスポンシブな年表を作る「Timeline」

サッカー日本代表の公式サイトに試合日程を表示する「代表TIMELINE」というページがあります。
調べると次のツールを使っているようです。

SIMILE Widgets | Timeline

JavaScriptを使い、年表を表示します。データはXMLで与えます。
試しに日本史年表を作ってみました。

日本史年表

日本語もOKです。

GoogleカレンダーからExcelにデータを移行する方法

GoogleカレンダーからエクスポートするとiCalendarファイル(iCal形式)というテキストデータになります。
例えば、千葉ロッテの今年の日程をエクスポートすると次のようになります。 (さらに…)

土用の丑の日の意味

「土用」は大雑把に言えば、年に4回ある節分の前、約18日間のこと。節分は2月の節分が知られていますが、実は年4回あって、立夏、立秋、立冬、立春の前日だそうです。
つまり「土用」は「日」ではなく「期間」です。天文学的に計算できます。
土用 - Wikipedia

一方「丑の日」には天文学的な意味はありません。
単純に十二支(子丑寅卯辰巳午未申酉戌亥)を一日ずつずらしているだけです。
例えば2013年7月21日は「子の日」、7月22日は「丑の日」、7月23日は「寅の日」となり、延々と繰り返されます。

「土用の丑の日」は、毎年ほぼ同じ時期に訪れる夏の「土用」の約18日間に、12日周期で訪れる「丑の日」のことです。毎年ありますが2回の年もあります。

ウナギを食べて元気になろうという風習があります。
「土用」は暑い時期ということで意味がありますが、「丑の日」には意味がありません。

十二支は基準となる日の干支が分かれば計算で求まります。
修正ユリウス日というのがあります。1858年11月17日を0日目として経過日数を示すものです。

修正ユリウス日が0日が寅の日であることが分かっています。
経過日数を計算し12で割ったあまりが寅の日からの日数になります。

JavaScriptで関数を作ってみました。修正ユリウス日に2を加えて(寅の日は子の日の2日後)、そのあまりによって十二支を返します。

function junishi(y, m, d) {
    var junishi, mjd, amari;
    junishi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"];
    if(m < 3) {
        m += 12;
        y--;
    }
    mjd = Math.floor(365.25 * y) + Math.floor(y / 400) - Math.floor(y / 100) + Math.floor(30.59 * (m - 2)) + d - 678912;
    amari = (mjd + 2) % 12;
    return junishi[amari];
}
ウナギ 大回遊の謎 (PHPサイエンス・ワールド新書)

ウナギ 大回遊の謎 (PHPサイエンス・ワールド新書)

GoogleのスプレッドシートでJavaScriptを使う

GoogleのスプレッドシートはExcelに似た感覚で使えて便利です。
しかもJavaScriptが使えます。
これを使えばユーザー定義関数などを作ることができます。
過去にJavaScriptで作った関数がそのまま使えるケースも多いでしょう。 (さらに…)

円周率の近似値をピックの定理で求める

ピックの定理というのがあります。
多角形の各頂点が格子点上にある場合、

面積=辺と頂点上にある格子点の数÷2+内部にある格子点の数-1

で求められるというものです。

これを使い、円を多角形で近似して面積を求め、円周率の近似値を求めてみます。 (さらに…)

一人は男と分かっているときのもう一人は?

こんな問題がありました。

ある人がこんなことを言った。
「私には二人、子供がいますが、一人は男です。」
この人のもう一人の子供が女である確率は?

男女の生まれる確率は2分の1とします。
となると、もう一人の子供が女である確率は2分の1だと考えてしまいますが、実は違います。
男女の生まれるパターンは次の4通りで、確率は同じです。
(1)男、男
(2)男、女
(3)女、男
(4)女、女
「一人は男」なので、(1)から(3)の3通りです。
「もう一人が女」なのは、(2)と(3)の2通りです。
したがって、確率は3分の2となります。

腑に落ちないので、次のようなシミュレーションをしてみました。JavaScriptです。
すると「0.66」という結果が出て正しいことが分かりました。 (さらに…)

古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報