CamAppのクリヤーホルダーを使ってみた・・・

CamApp対応クリヤーホルダー

CamiApp対応クリヤーホルダー

Nesux7で「CamiApp」を使っているのですが、これが結構便利です。
職場内で異動の準備を命じられたので、自分のメモやらドキュメントやらで、データになっていないものを整理するのにも利用しています。スキャンできる場合は、スキャナーを使った方が楽ですが、定型用紙のドキュメントは、たいてい元々データになっていますから、そもそも改めてスキャンする必要がありません。
という訳で、データになってない、しかも今後必要かどうか分からないものを、一気にCamiAppで撮影して、Evernoteに保管しておくことにしました。
CamiAppはコクヨのノートやメモ帳なんかのページを、スマートフォンなどで撮影して、ゆがみを補正した後、エバーノートやドロップBOXに保管してくれるアプリです。似たものにキングジムのアプリとかもありますが、コクヨのものは、ノートの左上に「アクションマーカー」という、フラグを書き込む欄があって、これが地味に便利です。塗り分けによって、どのクラウドサービスに保存するかとか、エバーノートのタグを指定したりとかできるからです。塗り分けによって、8パターンほど登録できます。
私の場合は4パターンほどしか使っていませんが、このアクションマーカーによって、他のアプリよりはるかに能率的に整理ができます。
で、整理するために・・・コクヨのアンケートに答えたときの景品で、CamiApp対応の「クリヤーホルダー」を活用しました。非売品です。

CamApp対応クリヤーホルダー

CamApp対応クリヤーホルダー

これは、四隅にマーカーがついていて、挟んだ書類をCamiAppで処理できるようにするものです。エレコムにも「スマホ文具」として同様のものがありますが、残念ながらエレコムのアプリは私にとってはあまり使いやすくありませんでした。写りが暗いのが致命的です。撮影された書類の視認性があまりよくありません。できればコクヨに、このクリヤーホルダーを商品化して欲しいところです・・・いや、相当の枚数を一括で作成依頼することはできるらしいんですが、個人では現実的ではありません。何となく、テプラの透明テープを使えば、普通のクリヤーホルダーに貼り付けて自作できそうですが、それはちょっと心理的な抵抗があるので実行できません。それにホルダーの表面がカメラのフラッシュや環境光を反射しにくいようなノングレアな仕上げになっているので、純正品のほうが良好な撮影結果が得られることは間違いありません。

さて、このクリヤーホルダーを活用して細々したものは何とかエバーノートにアップロードできました。
コクヨのサイトを見てみると、CamiApp対応製品が結構充実してきていますので、応援の意味も込めて、またメモ帳を購入することにします。アプリの開発費用は、ユーザーの消耗品の購入費から出ていることは当然ですから・・・。
ちなみに、とてもいいアプリですが撮影の時のシャッター音がかなり大きいので、もう少し小さくして欲しいところです。会議中なんかとても使えませんし、職場でも、勤務時間中は抵抗があります。盗撮防止などの措置でもあるのでしょうが、一考を願いたいところです。

HDDを換装してみた・・・


DESKSTAR Coolspin 0S03361

DESKSTAR Coolspin 0S03361

シーゲートの2TBのHDDが時々、不調になっていました。アクセスに非常に時間がかかったり、場合によってはOSから認識されなかったり・・・。
以前もWDでもやたらディスクアクセスが低速になったりして、ずいぶん痛い目に遭っています。
HGSTの4TB

HGSTの4TB

日立製や東芝製のHDDへの信頼はかなりあるのですが、国内メーカーのHDDは入手しづらくなっていましたので、やむなくWDやシーゲートを使っていました。
ここ2週間くらいは、問題のHDDも順調に稼働しているように見えていたので、問題が顕在化しないうちに、新しいディスクへ換装することにしました。
今回のディスクはHGSTの4TBのものです。HGSTも紆余曲折をへて、WDからまた、国内メーカーに戻ってきているようです。製造はタイのようですけどね。とても、いいことです。
外箱

外箱

シーゲートのHDDも今のところ復調しているので残しておこうかとも考えたのですが、一旦不調に陥ると、OSの起動そのものが遅くなったり、あらゆる処理が低速になるので、すっぱりあきらめました。それに動いているうちしか、データを完全抹消できないし・・・。
という訳で、換装対象のシーゲートのデータを新しいHGSTのHDDにXCOPYして、シーゲートのディスクはTrueImageのツールから、データの完全抹消を行いました。結構時間がかかりましたが、致し方ありません。
もちろん物理的に接続したままでは、Windows7からは4TBのボリュームとしては認識されず2TBの壁に阻まれていますので、データコピーをする前に環境を作っておきました。2TB越えを実現するHGST GPT Disk Managerというツールをダウンロードします。
HGST GPT Disk Manager

HGST GPT Disk Manager

ツールをインストールして、HGST GPT Disk Managerを起動したら、まず左ペインの変換タブを選択し「ハードディスクをGPTに変換」を実行し、処理が完了したら、次はパーティショニングタブの「新しいパーテーションの作成とフォーマット」を実行します。
HGST GPT Disk Manager

HGST GPT Disk Manager

1分ほどで処理は完了し、4TBすべてが一つのボリュームとして利用できるようになりました。
2TBの壁があることは知っていましたが、2TBを超えるようなリッチなストレージを今まで利用したことがなかったので、今回が2TB越えの処理をするのははじめてでした。便利なツールのおかげであまり悩まずにすみました。
2TB越え

2TB越え


あとはエアダスターで筐体内のホコリもしっかり除去して掃除をしておいたし、CMOSのバックアップ用のボタン電池もついでに交換しておきました。
気分もディスクもさっぱりして、ちょっといい感じです。
新しいディスクは容量も増やしていますから、ここに音楽ファイルをFLACで取り直して入れる予定です。

退職を申し出てみた・・・

今朝、退職を申し出てみた・・・そしたら、給料増やしてくれるらしい、1.8倍くらいになるらしい。給料増やすと言うより、ポジション替えらしい。
なんだか、来年度の新規プロジェクトをやってほしいとのこと・・・。
私のようなメンタル弱くて円形脱毛症を発症しちゃうような人に任せるのは人選ミスじゃないかと言うも、思うに任せず。
給料増えるならいいか・・・Tongue Out

10:43:00 AM 追記
来月に辞令が出るらしい・・・。

カナやんのMTV Unplugged Kana Nishino(Blu-ray)が発売される件・・・

見た瞬間、ポチってました。

マジ、天使です。

いろいろ準備を始めた・・・

XBA-H3

XBA-H3

仕事があまりにも立て込んでいて、ほとんど家に帰れていない状況・・・。

だから我が社は住居手当がないのか・・・!と、何だか悟ってきた今日この頃です。
さて、そんな中で唯一の楽しみは、ソニーの自信作らしい新型Walkman「ZX1」がまもなく届くこと・・・とはいえ、発送は12月の初旬なんですが、それまでに一応必要物品を少しずつ準備中なのです。

PRF-NWH40

PRF-NWH40

まず、定番の液晶フィルム。純正品でOKですね。通販のソニーストアでは、何と売り切れでした・・・。プライバシーフィルターの方はまだ在庫があったんですが・・・。
なのでヨドバシカメラで購入。1280円なり。還元ポイント128ポイントらしい・・・。使えるチャンスあるのかなぁ。ただ、ゆうパックで送ってもらって送料無料というのが、親切。
あとは、カナル型ヘッドフォン「XBA-H3」。ソニーストアで視聴してみたところでは、今までのソニーのBAのイヤホンとはかなり傾向が違う感じだったので、買ってみました。
あと、タッチノイズがほとんどないのは好印象です。ケーブルが平らになったソニーのイヤホン使ったときは、タッチノイズのひどさに、3分でお蔵入りにした経験があります。Bluetooth接続のイヤホンの付属品だったので惜しくはなかったけど、これで我慢できる人がいるのか疑問ではありました。
リファレンスで持って行った、EX1000に比べても、高音においては上まで無理なく伸びていて透明感があり耳障りではなく、低音域もよく出ていて完成度が高いと感じました。ダイナミック型ドライバーとバランスドアーマチュア型ドライバーの両方を搭載したソニー初のハイブリッド型イヤホンといううたい文句でしたが、確かにその効果は出ているようです。というか、相互にバランスがとれるようにうまくチューニングされていると感じました。
特筆すべきは過去のソニーのバランスドアーマチュア型ドライバーは、どこか音の広がり方が変なところがあったのですが、それが解消されています。自然な広がり方を感じます。
低音域や高音域と比べると、中音域がわずかに、引っ込んでいるかなと感じましたが、むしろ中音域を誇張しないバランスのチューニングが施されていると解釈しました。
ただし、装着を丁寧にやらないとかなり音の印象が変わる気がします。耳掛式のイヤホンですから、自分用に調整すれば安定して、装着はできると思いました。
いずれにしても、過去のソニーのカナル型イヤホンとしては、かなり好印象だったので、購入してみました。

XBA-H3 ハイレゾロゴ

XBA-H3 ハイレゾロゴ

一応、カナル型イヤホンではソニーが言うところの「史上最高音質」という位置づけらしいです。
それはさておき、XBA-H3は「ハイレゾ音源対応」を堂々うたったモデルで周波数特性は3-40,000Hzだとか・・・。いや、こんな高音、人間は聞こえるのかという突っ込みはさておき、つい、ものは試しと使ってみたくなるのは私の性格です。
早くハイレゾWalkmanのZX1と組み合わせて使ってみたいところです。
本命のZX1が到着し、XBA-H3を十分エージングした後に、両者の組み合わせで再評価してみるつもりです。

11月 24, 2013 追記
ハウジングがかなり大きいので、大きさを気にする人はちょっと考えた方がいいかもしれません。

zenphotoで西野カナギャラリー作ってみた

カナグラフィー

カナグラフィー

思い立ってzenphotoに好きな画像を集めてみることにした。
zenphotoにしたのは、FTPで画像を含んだフォルダをアップロードすると、そのままアルバムを作ってくれるらしいから・・・。
じゃ、サーバーサイドでスクリプト走らせて任意の画像を、zenphotoのalbums配下の任意のディレクトリにダウンロードしたら自動でアルバムできるよね、って訳で採用です。

zenphotoのインストールは問題なく完了しました。何度かセットアップ中に警告が出ましたが、その警告のほとんどはディレクトリを作れとかパーミッションを適宜に設定せよといった内容なので、5分ほどでインストールは完了しました。
むしろ、サーバーにzehphotoのファイルをアップロードする方が時間かかっています。レンタルサーバーなんかで、zenphotoが自動インストールできるようになっていれば、楽だったかも。

画像の取得スクリプトは「いかにしておっぱい画像をダウンロードするか〜2012」が大いに参考になりました。
萌える対象は違いますが画像取得という目的は同じでしたから、参考にさせていただきました。
そのままでは動かなかったので、BingのAPI周りを少し変えました。

#!/usr/bin/perl

use strict;
use warnings;
use Encode qw{encode_utf8 decode_utf8};
use utf8;
use LWP::UserAgent;
use HTTP::Request;
use Digest::MD5 qw/md5_hex/;
use Path::Class qw/dir file/;
use URI;
use JSON qw{decode_json};
use LWP::Protocol::https;

my $word=”西野カナ”;
my $query       = @ARGV ? encode_utf8(shift) : $word;
my $account_key = 'ACCNT_KEY'; #自分のアカウントキーをセット
my $url         = URI->new('https://api.datamarket.azure.com/Bing/Search/Image');
my $ua          = LWP::UserAgent->new;
my $dir= dir('/hoge/zenphoto/albums/kana_graphy'); #zenphotoのalubumsディレクトリを指定する。

my $page_count     = 0;
my $download_count = 0;
my $interval       = 50;

$dir->mkpath if ! -d $dir;

STDOUT->autoflush;

while (1) {
    my $skip = $page_count * $interval;
    $url->query_form(
        'Query'   => qq{'$query'},
        '$top'    => $interval,
        '$skip'   => $skip,
        '$format' => 'json',
    );

    my $req = HTTP::Request->new(GET => $url);
    $req->authorization_basic('', $account_key);

    my $res = $ua->request($req);
    die $res->status_line if !$res->is_success;

    my $json = decode_json $res->content;
    last if !defined $json->{d}{results};

    for my $entry (@{ $json->{d}{results} }) {
        my $media_url = $entry->{MediaUrl};
        next unless $media_url =~ /\.jpg$/;
        $download_count++;
        my $filename = md5_hex(encode_utf8($media_url)) . '.jpg';
        my $filepath = $dir->file($filename);
        next if -f $filepath;
        print encode_utf8("$download_count : download... $media_url\n");
        $res = $ua->get(
            $media_url,
            ':content_file' => $filepath->stringify
        );
        unless ( $res->content_type =~ m/^image/ ) {
            unlink $filepath;
        }
    }
    $page_count++;
}

若干のノイズもあるけど、カナやん画像がどっさりと取得でき、ギャラリーに自動追加できるようになりました。

悲報-円形脱毛

ER-GC70

ER-GC70

日頃の無理がダメージになってきたのか、ブラック企業勤務の宿命なのか・・・。円形脱毛を発症(気づいてから)して、早11ヶ月、かなり悪化した。
で、もうベリーショートにすることにしました。

という訳でバリカン買いました。付属のアタッチメントを付け替えながら、ダイアルで1mmから45mmまで、刈る長さを調整でるらしい。とはいえ、それなりに長く設定したら、逆に円形脱毛部分が目立つので一気に、細かいこと考えずに2mmに設定して刈りました。丸刈りなので簡単すぎ。左右の対称とかも考える必要もなし。
理髪店でやったらこんな作業でも、2000円以上ですが、短いとかえって、こまめに刈らないとカッコ悪いので・・・いや円形脱毛で、既にみっともないんですが・・・これなら、週1くらいのペースで刈ってもお財布に影響はありませんし、時間も節約できます。ブラック企業すぎて、給料は安いし理髪店に行く時間も、おいそれとれないし。激安の床屋ってのは見たことあるけど、深夜営業の床屋なんて見たことないもんね。

ちなみに理髪店料金の3回分少々で購入。
本体は水洗いできて、後の処理も簡単でした。乾燥後は、付属のオイルを注油しておくだけ。髪の毛の処分はちょっと悩んだけど、次回以降は、刈った髪の毛もほとんど出くなるので、今回だけの悩みだな・・・。

マジ、転職考えようかな。ちなみに、周りにゃ、療休・休職・退職いっぱいいる・・・。

Sonyのヘッドフォン「MDR-1RBT」がハイレゾ対応製品だった件・・・

MDR-1RBT

MDR-1RBT

愛用のソニーヘッドフォン「MDR-1RBT」は、最近のソニーのヘッドフォンとしては、結構いい感じのヒットだと、自分としては満足していました。MDR-1RをBluetooth化したもので、ワイヤレスのヘッドフォンとしても十分満足できるものです。もちろん有線接続も可能ですので、Bluetooth接続での音質が気になるならケーブルをつなぐだけです。もっとも、ケーブルの取り回しが気にならない利点は、思いのほかに大きくワイヤレス接続のヘッドフォンも、リラックスして音楽を聴きたいときはいいものだなと感じている訳です。

MDR-1RBTハイレゾ対応

MDR-1RBTハイレゾ対応

さて、そんな「MDR-1RBT」なのですが、Sonyがハイレゾ推しをはじめてから、すぐに後継機が出てきました。「MDR-R1MK2」シリーズです。ワイヤレスタイプの「MDR-1RBTMK2」もあります。姉妹機として「MDR-10R」という廉価版のヘッドフォンも出ています。
で、悔しいのはこれらの製品が「ハイレゾ対応」製品と銘打たれていることでした・・・。
ハイレゾ対応のウォークマンを狙っている私としては、新製品のハイレゾ対応ロゴを見て結構しょんぼりとしたものです。

ところが、今日、ソニーストアのサイトを見てみると、何と旧モデルの「MDR-1RBT」にもハイレゾ対応ロゴがついているじゃありませんか。
ちょっと嬉しくなった今日この頃なのでした。

Flashで雨雲レーダーをアニメーション表示する #2

ナウキャスト画像

ナウキャスト画像

Flashで雨雲レーダーをアニメーション表示する #1の続きです。

Flashアニメーションを生成するアプレットはFlanisを利用することとしました。これはこれで、それなりに準備が必要だったのですが、まずは雨雲レーダーが画像の元となるものを取得しなければなりません。
もちろん雨雲レーダーなどを観測する設備は持っていませんので、気象庁のナウキャストからレーダー画像を取得してみます。あくまで、技術的な実験です。

気象庁ホームページの「レーダー・ナウキャスト(降水・雷・竜巻):全国」のページを表示すると、雨雲レーダー画像が表示されます。
レーダー画像の上で、右クリックをして「画像のURL」を取得すると、「http://www.jma.go.jp/jp/radnowc/imgs/radar/000/201311051915-00.png」などとなります。末尾の「201311051915-00.png」が画像のファイル名となっており、ファイル名の一部に画像が表現している日時が埋め込まれています。この例ならば、2013年11月05日19時15分の雨雲レーダー画像という訳です。「-00」の部分は、現在の現況図であることを示しています。気象庁のナウキャストでは現在時から1時間後までの雨雲の予想図も表示ができるのですが、予想図のファイル名は末尾が「-01、-02・・・」などと未来になるほど大きくなっています。10分単位での予測のようですから、最も未来を表しているファイル名の末尾は「-06」となります。
また、/radar/000/の部分は、/radar/が降水強度分布予測画像であることを示しています。つまり雨雲レーダー画像というより、雨の強度を示した画像といった方が正確ですね。雷の発生地域を示している画像なら、この部分が/thunder/、竜巻のナウキャストなら/tornado/となるようです。その他の部分の構成は、降水強度も雷も竜巻のナウキャストもすべて同じです。

/radar/の後の/000/は全国図であることを示しています。たとえば中部地方なら、この部分が/210/となっています。したがって、この部分の数値を調査すれば任意の地方の画像を取得することができます。
さらに、これらの画像は5分おきに更新されているようです。

以上のことから、この降水強度の分布図を取得するためのスクリプトを作成するために分かったことを整理すると次のようになります。

  • ベースとなるURL「http://www.jma.go.jp/jp/radnowc/imgs/radar/000/」は不変である。
  • 現在時から、気象庁サイトにアップロードされているであろうナウキャスト画像のファイル名を、規則に基づいて生成する必要がある。
  • CRONで5分単位でスクリプトを実行し、連続的にナウキャスト画像を取得する必要がある。

さらにスクリプトの仕様として、次のようなことを定めておきます。

  • 直近2時間分の画像をまとめてアニメーション化したいので、24枚分の画像を常に処理の対象とする。
  • 2時間より前の画像は、アーカイブしておく。(使い道は考えていないけど・・・)

後はスクリプトを作りながら、必要な機能は追加していくことにします。
今回は、サーバサイドで運用することを考えていますので、Linuxで定番のPerlで記述することとします。
実際に作成したスクリプトは次のようなものです。時間短縮のために、CPANのモジュールをふんだんに使っちゃってます。

#!/usr/bin/perl
use strict;
use warnings;
use LWP;
use LWP::UserAgent;
use DateTime;
use DateTime::TimeZone;
use DateTime::Format::Strptime;
use LWP::Simple;
use File::Copy;

# 取得先(気象庁のNowcastから)
my $url_base = "http://www.jma.go.jp/jp/radnowc/imgs/radar/000/";
# &CreateFileNameで現在時から遡って24枚分のレーダー画像のファイル名を得る
my @TargetFiles = &CreateFileName;

my $i=0;
my $data;
# 画像保存先のディレクトリ名
my $newFileDir="/hoge/hogehoge/ani/images/";
# 古い画像の保存先ディレクトリ名
my $archivesDir="/hoge/hogehoge/ani/images/archives/";
# 画像保存先のディレクトリが存在しなければ作成する
&MakeDir($newFileDir);
&MakeDir($archivesDir);
# レーダー画像のダウンロード(全国版)
for($i=0;$i<=23;$i++){
	# ローカルにレーダー画像が存在しなければダウンロード処理へ
	if(&LocalFileExit($newFileDir . $TargetFiles[$i])==1){	
		# 気象庁サーバーに画像が存在すれば(コード200でチェック)ダウンロードを実行	
		if (&FileExit($url_base,$TargetFiles[$i])==0){
			$data=getstore($url_base.$TargetFiles[$i],$newFileDir . $TargetFiles[$i]);
		}
	}
}

# 現在時から25枚前以前の画像データを削除(移動)する
&DelOldFiles($newFileDir,@TargetFiles);
# FlAniSの設定ファイルを書き込む
&CreateLoadFile(@TargetFiles);


`convert -geometry 300x260! -delay 50 -loop 0 /hoge/hogehoge/ani/images/*.png /hoge/hogehoge/ani/images/animation_n.gif`;

#print "perl_n";

sub CreateLoadFile{
# FlAniSの設定ファイルを作成する
# GetTime関数用の引数として@parを確保する 内容はレーダー画像のファイル名を順次代入する
	my @par = @_;
	# FlAniSの設定ファイルのフルパス
	my $loadFile = "/hoge/hogehoge/ani/images/loadlist.txt";
	# ex:--->> ./ani/images/201103211840-00.png "2011/03/21 18:40" overlay=./ani/overlay.png
	# レーダー画像の保存先	
	#my $ServerPath = "./ani/images/";
	# オーバーレイ用ファイルの保存先
	my $overlayPath = "./ani/overlay.png";
	# レーダー画像のファイル名を時系列に並べ替え
	@par=reverse @par;
	@par=&GetTime(@par);
	# 配列の要素を改行コードを区切りとしてスカラー変数に一文で格納
	my $scalar=join("\n",@par)."\n";
	# ファイルをオープン	
	open(my $FH,">",$loadFile);
	# 上書きで書き込み	
	print $FH $scalar;
	close $FH;
}

sub GetTime{
# レーダー画像のファイル名から画像の撮影時刻を得る FlAにSの設定ファイル内に記述する
	my @FileName = @_;
	my @myArray = @FileName;
	#                        year      month     day       hour      minutes
@myArray = map {$_ =~ s/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})-00.png/\.\/ani\/images\/$1$2$3$4$5-00\.png "$1\/$2\/$3 $4:$5" overlay=\.\/ani\/overlay\.png/g; $_} @myArray;
	# print "$_=myArray\n" foreach(@myArray);
	return @myArray;
}

sub DelOldFiles{
	# 古いレーダー画像を削除する
	my @deletefile=@_;
	# 指定ディレクトリ内の拡張子pngのファイルの一覧を得る	
	my @file = glob $deletefile[0] . "*.png";
	# 配列の差分を格納する
	my @deff;
	# 配列の要素となっている文字列にディレクトリ部分を付加しフルパス名にする
	@deletefile = map {$_ =~ s/(\d+-00.png)/$deletefile[0]$1/g; $_} @deletefile;
	# 配列の先頭要素を削除する(引数として対象ディレクトリ名が格納されている)	
	shift @deletefile;
	# 配列を比較して、不一致のファイル名を抽出する
	# @fileにあって@deletefileにないものをリストする すべて一致すれば真を返す
	@deff = grep { !{map{$_,1}@deletefile }-> {$_}}@file;
	foreach my $temp (@deff){
		move $temp,$archivesDir;
	}
}

sub MakeDir{
# サーバーに引数で指定されたディレクトリが存在しなければ作成する
	my @dirname = @_;	
	if (!-d $dirname[0]){
		mkdir $dirname[0];
	}
	else{
		# print "Directory already exists!\n";
	}
}

sub LocalFileExit{
# ローカルのファイルの存在チェック ある:0 ない:1
	my @filename = @_;
	my $result;
	if( -f $filename[0] ) {
		$result=0;
	}
	else {
	   	$result=1;
	}
	#print "Result=",$result," filename=",$filename[0],"\n";
	return $result;
}

sub FileExit{
# Web上にあるファイルが存在するかチェックする	
	# 気象庁のサイトのURLおよび取得したいレーダー画像のファイル名を引数として受け取り配列に格納する
	my @array = @_;
	my $url = "http://www.chameleon-weather.net/x.report.html";
	my $ua = LWP::UserAgent->new;
	# ダウンロード用URLを引数から作成
	$url=$array[0] . $array[1];
	# ユーザーエージェントをIE9互換にする
	$ua->agent("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)");

	# リクエスト
	my $request = new HTTP::Request(HEAD => $url);
	my $header = $ua->request($request);
	my $result;
	# ヘッダ出力のチェック(ファイルが存在すればレスポンスにエラーコード「200」が返る) 
	if ($header->is_success) { 
		$result=0;
	}
	else{
		$result=1;
	}
	return $result;
}

sub CreateFileName{
	# 現在時間から24枚分の画像ファイル名を生成する(過去に向かって5分刻み)
	# レーダー画像の生成される間隔(5分)	
	my $IntervalTime = 5;
	my $i = 0;
	my @ListRadarFiles;
	# DateTimeオブジェクトを生成する
	my $time_zone = DateTime::TimeZone->new(name=>'Asia/Tokyo');
	my $dt=DateTime->now(time_zone => $time_zone);
	# 現在時から分を切り出す	
	my $min=$dt->strftime("%M");
	# 5分の倍数で切りのいい直近の「分」を作成する	
	$min=int($min / $IntervalTime) * $IntervalTime;
	# 現在時に基づいて基準になる時刻を文字列として作る
	my $fname=$dt->strftime("%Y/%m/%d %H");
	# 分と秒を連結
	$fname=$fname . ":" . $min .":00";
	# 現在時に基づいて基準となる時刻のオブジェクトを生成する
	my $basetime = DateTime -> new(year => $dt -> strftime("%Y"),month => $dt->strftime("%m"),day => $dt -> strftime("%d"),hour => $dt -> strftime("%H"),minute => $min,second => 0,time_zone => 'Asia/Tokyo');
	# 生成したDateTimeオブジェクトを一時変数に格納
	my $temp=$basetime;
	my $strp;
	for($i=0;$i<=23;$i++){
		# 5分ずつ減算
		$ListRadarFiles[$i]=$temp -> subtract(minutes => ($IntervalTime * $i)) -> strftime("%Y%m%d%H%M-00.png");
		# 変数$tempに再度、起点となる現在時をセットしなおす(時間計算をすると$tempの起点時間が変わってしまうため)
		$strp=DateTime::Format::Strptime->new(pattern=>'%Y-%m-%dT%H:%M:%S');
		$temp=$strp->parse_datetime($basetime);
	}
	return (@ListRadarFiles);
}

上記のコードは、ナウキャスト画像を取得するだけでなく、2時間以上前の古い画像は削除して、アーカイブ用ディレクトリにアーカイブしておくように記述しています。
また、フラッシュアニメーション作成用のプログラムFlanisのための、各種設定ファイルを自動生成するルーチンも書いています。このあたりのことは、また次回以降に記述していきます。
ナウキャスト画像を取得するための具体的なプログラムの動きはコードを読解すれば分かると思います。適宜コメントも入れておきました。少し未整理で、もっといい記述方法ができそうな部分も多々ありますが、とりあえず初期の目的は達成できています。

Moraにカナやんのハイレゾ音源がない件・・・

ソニーストア F887

ソニーストア F887

最近のソニーは元気が良くって、WalkmanもF800シリーズの後継のF880シリーズが順調にリリースされている。ソニーストアでは、64GBモデルが売り切れで入荷待ちとなっているほど・・・。かくいう私も、思いっきり買いそびれている。理由は、ソニーが推しているハイレゾ音源にある。聴きたい曲がハイレゾ音源で提供されたら、買い増ししようと思っているけど、今はF805を使っているので、音源がハイレゾでなければ、購入する意味があまりない訳です。そしてまだまだ、ハイレゾが楽しめる音源が少ない。イーグルスとかちょっと心引かれるものもあるのだけど、西野カナがない・・・。いや、J-POP聴くのにハイレゾいらんだろとかいう突っ込みは、無効です。好きなアーティストはいい音で聞きたい。

まあ次の新曲にはハイレゾ対応してくれるだろうと思っていたのに、Flac形式での提供は今回もなかった・・・。
せめて自社系列の音源はFlacでの提供をお願いします、moraさん。

Mora さよなら

Mora さよなら