App::SocialSKK の socialskk.pl を自動起動するようにした
これは素晴しすぎる!
使えるまでを軽く説明しておく(Macの場合)。
まずインストール。
# cpan App::SocialSKKこの際 socialskk.pl も同時にインストールされます。
次に $HOME/.socialskk に
plugins: - name: SocialIME - name: HatenaBookmark - name: Wikipediaこんな感じに書く。
あとはsocialskk.plを起動するだけでApp::SocialSKK使える状態になります。
AquaSKK側での設定は「環境設定」の「辞書」タブで「+」を押して辞書を追加し、辞書の種類を「外部 skkserv 辞書」にし、場所を「localhost:1179」にするだけです。
(ちなみにいままでMacではMacUIMを使っていたのですが、現状のMacUIMだとskkservとskkの辞書を同時に設定できないっぽいので2年ぶりぐらいにAquaSKKに乗り換えました。そしたらAquaSKKがめっちゃ進化していてびびった)
とりあえず「ほってんとり」って書いて変換したら
料理のススメ:これから料理をしようと思っているひとへ - Money does not hurt your heartってでた。はてブからうまく取れてるようですね。
まぁ、これはネタとして。
その他にもSocialIMEには郵便番号とかも登録されてるっぽくて、日本語入力モードで「/0000000」(0000000はちゃんとした郵便番号ね)と打って変換を押すとその郵便番号の住所が出てきました(昔は郵便番号データベースをファイルに落したりしてたのを思い出した)。
っていうか実はSocialIMEに郵便番号が登録されてること知らなくてApp::SocialSKK::Plugin::ZipCodeとか作っちまった。悔しい...。
悔しいからソースを公開しておく。
package App::SocialSKK::Plugin::ZipCode;
use strict;
use warnings;
use base qw( App::SocialSKK::Plugin );
use XML::Simple ();
use URI;
use Encode ();
sub get_candidates {
my ($self, $text) = @_;
return if !defined $text || $text !~ /^\d{7}$/;
my $uri = URI->new( 'http://zip.cgis.biz/xml/zip.php' );
$uri->query_form( zn => $text );
my $res = $self->ua->get( $uri->as_string );
if ($res->is_success) {
eval {
my $xml = XML::Simple::XMLin(
$res->content, ValueAttr => [ qw(state_kana city_kana address_kana company_kana
state city address company) ]
);
my @candidates;
for my $seq ( [ 4..7 ], [ 0..3 ] ) {
my $val = join( '', map {
my $v = $xml->{ ADDRESS_value }->{ value }->[ $_ ];
$v ne 'none' ? $v : '';
} @$seq );
push @candidates, Encode::encode(
'euc-jp',
Encode::is_utf8( $val ) ? $val : Encode::decode( 'utf8', $val ),
);
}
return @candidates;
};
}
}
1;
__END__
=head1 NAME
App::SocialSKK::Plugin::ZipCode - Retrieves Candidates from Zip Code API
=head1 SYNOPSIS
# Add a line like below into your .socialskk:
plugins:
- name: ZipCode
=head1 DESCRIPTION
App::SocialSKK::Plugin::ZipCode performs retrieval of
candidates from Zip Code API
=head1 SEE ALSO
=over 4
=item * Zip Code API
http://zip.cgis.biz/
=back
=head1 AUTHOR
Yoshiki Kurihara E<lt>kurihara __at__ cpan.orgE<gt>
あ、本題を忘れそうになってしまった。
socialskk.plをログインしたら毎回起動するのはめんどうなのでlaunchdで起動するようにしといた。これはMac OS X 10.5.6でしか動作確認してませんのであしからず。
設定は簡単。$HOME/Library/LaunchAgents/socialskk.plist ってファイルを作って下記の内容にで保存したあとMacを再起動すると socialskk.pl が自動で起動しているはず。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>socialskk</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/socialskk.pl</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
</dict>
</plist>