第二種電気工事士免状

届きました。ほかの県では申請してから4週間かかる、という話も散見していたのですが、青森県の場合は1週間程度で届きました。

写真を貼った紙をラミネートパウチしたもので、受験料その他で合計数万円かかっている割にはまあ、ちゃちいです(笑)

昔の無線従事者免許証も確かこんな感じでしたが、今の無線従事者免許証はカード化されてかっこよくなっているのでちょっと負けている感じがします。。

まあこれで自宅のコンセントなんかを合法的にいじれるようにはなりましたが、その際の壁に穴を開けたりする作業なんかは電気工事士試験の範疇ではないので、全く無知です。その辺が問題・・。

姓・名を分割

仕事で、姓・名がくっついて登録されてしまっているデータを、姓・名に分離する必要が出てきました。

幸い、フリガナは「セイ メイ」のように分離されていたので、フリガナの姓の部分を漢字に変換して、漢字氏名の先頭と合致したらその部分をスペース付きで置き換えるという処理を考えました。

問題は、人名の辞書ですが、ダウンロードをしてきて云々、は面倒くさいので、Yahoo APIのかな漢字変換サービスを使用してみました。パラメータの”dictionary”に”name”を指定すると人名辞書から検索してくれるようです。

APIを叩くのはWebServise::Simpleを使うと楽に作れます。変換候補の一覧はXMLで帰ってくるので、一瞬XML系のモジュールでパースしようかと思いましたが、”<Candidate>○○</Candidate>”を見つけるだけで事足りるので、正規表現で取り出しました。

10000人分のデータを処理してみたところ、難しい名字の100人ほどはうまく変換できませんでしたが、だいたいうまく処理できました。10000件ノンストップでAPIを呼び続ける行儀の悪いプログラムでしたが、さすがYahooだけあってまったく問題ありませんでした。(APIの呼び出し上限は50000件/24時間)

以下サンプル

#!/usr/bin/perl
use strict;
use warnings;

use Encode;
use utf8;
use WebService::Simple;

my $name     = '山田太郎';
my $kananame = 'ヤマダ タロウ';

my $api = WebService::Simple->new(
    base_url => "http://jlp.yahooapis.jp/JIMService/V1/conversion",
    param    => {
        appid => appid,
    });

my ($sei, $mei) = split(/ /, $kananame);
$sei =~ tr/ア-ン/あ-ん/;

my $result = $api->get(
    { sentence   => $sei,
      mode       => "normal",
      dictionary => "name",
    } );

my @candidate = decode_utf8($result->content) =~ m|<Candidate>(.*?)</Candidate>|g;

foreach my $result ( @candidate ) {
    if ( $name =~ /^$result/ ) {
        print encode_utf8("$name");
        $name =~ s/^$result/$result /;
        print encode_utf8("->$name\n");
        last;
    }
}