【PowerShell & WORD】QRコードを差し込み印刷してみる 1/2

このBLOGの趣旨からすると完全に「閑話」なのですが、せっかくなのでBLOGに残しておきたいと思います。 以下のような要件があったとしましょう。 お客様にWORDで作成した案内状を印刷して送付したい。 案内状には、宛先ごとに異なる URL(会員番号等が含めたような) を張り付けたい。 さらに、URL の QRコード も一緒に貼り付けたい なんとなくありがちな要件ですよね。この要件をお金をかけずに実現しようとしてパッと思いつくのは、 QRコードを生成するフリーのライブラリを使って、バッチファイルでQRコードイメージ(jpgファイルとか)を生成 作成したQRコードのイメージを WORD で差し込み印刷(または差し込みメール) ってかんじじゃないかと思います。きっと Office の MVP の方あたりだと、もっとエレガントな方法が思いつくと思いますし、こうした案件に対応する専用の製品もあるはずなのですが、今回は小手先でなんとかしてみようかなと思います。ってことで、せっかくの休日なので遊んでみました。 ■QRコードのイメージファイルを生成する ① まずはQRコードのイメージファイルを作成してみる QRコードのイメージファイルとは、ご想像通り、こんなものです。こいつを会員数分、事前に生成しておくわけですね。 とはいえ、QRコードの仕様なんて私は把握していませんし、たとえ仕様を読んだところで私のような人間には手に負えません。そこで、フリーのライブラリを探すことになるのですが、とても素晴らしいライブラリがありました。ご存知の方にとっては超有名なライブラリだと思うのですが..。その名も DotNetBarcode です。 【フリーソフト】高機能でカラフルなQRコード(二次元バーコード)がデザインできる ColorfulQRCodeMaker/高性能バーコード・ライブラリー DotNetBarcode公式ホームページ 他に、Open Source QRCode Livrary などの選択肢はありますし、商用のライブラリももちろん販売されていますが、今回は DotNetBarcode にお世話になろうと思います。いかんせん、私のような非DEVにもとてもやさしい仕様で、サンプルプログラムや仕様書もきっちり用意されていました。作者様、本当にありがとうございます。 さて、早速上記サイトの「ダウンロード」から、DotNetBarcode V2.4.0 をダウンロードしてください。 ZIPファイルを解凍すると、中に以下のファイルが含まれています。 CsharpSample [DIR] VBSample [DIR] 【始めにお読みください】.txt ← ライセンスに関する情報等、必ず読んでから使用してください! 【DotNetBarcodeV2.4.0での機能強化点】.txt DotNetBarcode.dll ← ライブラリ本体 DotNetBarcodeクラスライブラリ(DotNetBarcode.dll)の仕様書.doc DotNetBarcodeクラスライブラリ(DotNetBarcode.dll)の仕様書.pdf DotNetBarcodeクラスライブラリを使ったQRコードアプリの作り方.doc…


【BI】PowerPivot for EXCEL 2010 のアーキテクチャと容量制限などを簡単に

いやー、ここ数日の当 BLOG へのアクセス数をみると、見事に人気のない PowerPivot に関する投稿です(笑)。でもいいんです。認知が低いものを訴求するのが私の仕事ですから…(涙)。 興味のある方は 1,048,576人にお1人程度かと思いますが、PowerPivot for EXCEL 2010 のアーキテクチャと、ハードウェア要件および容量制限等について簡単に書いておきます。参考サイトは以下の通りです。 MSDN:PowerPivot Team Blog より PowerPivot Component Architecture PowerPivot for Excel 2010 は Excel 2010 のアドインであることは何度も触れている通りです。このアドインをインストールすると Excel 2010 にデータ分析のための機能が追加されます。これによって、SQL Server Analysis Service(SSAS)を使用することなく、OLAPベースの ピボットテーブル、ピボットチャートが使えるようになるのです。よろしければ以下のサイトも参考にしてください。 【BI】PowerPivot ってなんだ? 「アドイン」であるということはとても重要な概念でして、これを踏まえて以下の図をご覧ください。PowerPivot for EXCEL 2010 のアーキテクチャを表したものです。 ざくっと書いてしまうと、PowerPivot for Excel 2010 Add-In Assembly が PowerPivot を Excel本体にロードし、VertiPaq とエンジンと呼ばれる高速処理機構が圧縮したデータをメモリ上に片っ端から読み込んで処理を行います。PowerPivot の特徴は、「メモリ上で実行する」という点にあり、一切のクエリーや計算はディスクを介さずに実行されます。それによって高速な分析を可能にしています。 それそれのコンポーネントについて、以下に簡単に解説しておきます。 ■ PowerPivot…

2

【BI】イベントログを PowerPivot に読み込んで分析ーその2 分析軸の作成

「イベントログを PowerPivot に読み込んで分析」シリーズです。 はじめに 計画 分析軸の作成 ←今回  PowerPivot for EXCEL 2010 の準備とデータの取り込み 計算列の作成とテーブル間リレーションの作成 ピボットテーブルの作成 今回は EXCEL を使用して分析軸の作成を行います。 前回の話の流れから、以下のシナリオで考えてみます。 シナリオ:時間帯およびサーバーごと、およびサービスごとのエラーの傾向を分析したい ■メジャー(尺度) :エラーの数 ■ディメンジョン(軸) :日時、イベントタイプ、サーバー名、サービス さっそく、分析軸を作成しましょう…といっても大した作業ではありません。単にEXCELのシートを作成するだけです。ここで作成した分析軸を、あとでPowerPivotに読み込みます。 ■日時ディメンジョンの作成 日時ディメンジョンは、イベントの時間的な推移をみるうえでも重要ですし、異なる種類のイベント同志、異なるサーバー間のイベント同志を関係づける際にも重要な軸となります。以下の図を見てください。時間軸が用意されているからこそ、サーバーAとサーバーBそれぞれで発生しているイベントの密度に「同じ時間帯」という関係性を見出すことができます。 パフォーマンスログがとられていれば、以下のようにパフォーマンスとイベント発生の密度の関係を把握することも可能です。 ということで時間軸を作るわけですが、事前に軸の粒度を決めておく必要があります。1秒単位の軸なのか、1分単位なのか、はたまた1時間単位なのか…。これによって分析の粒度が変わってきます。 イベントログを分析する場合、秒単位ほどの細かさは必要ないでしょう。よって、今回は分単位とします。 作成する時間軸の範囲は 2009年12月1日 から 2010年11月30日 の 1年間とします。 ※ 軸を作成するのは Excel 2010である必要はありませんが、ここでは2010を使用します Excel を起動して、適当なシートを開いてください。 はじめに、シートの名前を「時間軸」に変更しておきましょう。 次に、以下のようにシートの1行目に起点となる「2010/12/1 0:00」を入力してください。 これ以降、2010年11月30日 23:59 まで1分単位の値を手で入力するわけにはいかないので、Excel の素晴らしい機能である「フィル」を使用します。以下(左図)のように「フィル」メニューから [連続データの作成] を選択してください。 [連続データ]ダイアログが表示されたら、以下(右図)のように設定します。これは、 選択されたセルを基準にして、列方向に 1分(0:01)単位で2010/11/30 23:59 になるまで加算…


【BI】イベントログを PowerPivot に読み込んで分析ーその1 分析の計画

「イベントログを PowerPivot に読み込んで分析」シリーズです。 ※ SSASと併用したデータマイニング については別の機会に..ということでご了承ください はじめに 計画 ← 今回はここ 分析軸の作成 ※2010/03/30 追記  PowerPivot for EXCEL 2010 の準備とデータの取り込み 計算列の作成とテーブル間リレーションの作成 ピボットテーブルの作成 Business Intelligence という言葉から、BIに関連する機能って「なんか人口知能のようなもの」をイメージしてしまう方もいらっしゃると思います。え?いません!? じ、実は、何を隠そう、私がそうです(恥ずかしい….)。 ということで、今回は「分析の考え方」についてズブの素人なりに説明してみたいと思います。 分析を実行するには、はじめに「何を分析したいのか?」をざっくりと洗い出しておく必要があります。具体的に言えば、分析のための「メジャー(尺度)」と「ディメンジョン(軸)」が明確になっていないと分析に着手することができません。 メジャー(尺度)とは、分析したい数字です。イベントログであれば「イベントの数」が該当するでしょう。 もちろん、「イベントの数」といっても、単なる総数では意味がありません。「いつ発生した」「どのサーバーの」「どんなサービスが出した」イベントの数であるかを明確にすることで、はじめて分析が行えます。具体的には、例えば「3月1日から3月10日のあいだの、DNSに関連したエラー」の数 などです。 この「いつ」や「どの」、「どんな」に相当するのがディメンジョン(軸)です。 メジャーが「売上」であれば、ディメンジョンは「店舗」「商品名」「地域」「日時」「値引き額」などでしょう。 恥の上塗りになるので言いたかありませんが、「ディメンジョン」と聞いて「中学校で習ったXYZ軸」を思い浮かべてしまうと、かえって混乱します。だって、店舗、商品名、地域、日時、値引き額 で既に5次元ですから、立体を頭に思い浮かべようとするとワケが分からなくなります。わたしゃ馬鹿なので、その呪縛から抜け出すために相当な時間がかかりました…ほんとに恥ずかしい話です。だからいまだに Newton とか読めないんですよね…。 話を戻しまして。 イベントログの分析であれば、求められるのは以下のような結果かと思います。 ※ 本当は、ここにパフォーマンスログを重ね合わせたいところですが、ひとまず今回はイベントログだけを見ていきます。 時間帯およびサーバーごと、およびサービスごとのエラーの傾向 不正なアクセスが発生している時間帯 重大およびエラーイベントの発生履歴 サーバーの稼働状況 ・ ・などなど 例えば「時間帯およびサーバーごと、およびサービスごとのエラーの傾向」を分析したいと考えた場合には、メジャーとディメンジョンは以下のようになるでしょう。 メジャー(尺度) = エラーの数 ディメンジョン(軸) = 日時、サーバー名、エラーを出しているサービス ここに「サーバーのメンテナンススケジュール」などを組み合わせられると、SEの夜間作業の正当性を主張する際のネタにもなりますね。 メジャーとディメンジョンがざっくり決まったら、必要なデータを準備します。 メジャーとなる「エラーの数」は、イベントログが格納されているテーブルを集計することで取ってこられますから、事前に準備する必要はありません。 では、ディメンジョンはどうでしょうか?…

2