Excel2007でのVBAに挑戦

 VisualBasic.NETは散々使ってる割に、WordやExcel上でVBAを使ったことはありませんでした。

 今回とある案件でCSV形式のログをあれこれ加工する作業が発生しそうなので、泥縄チャレンジ。

 1からCSVファイルを扱うのを新規アプリで起こすより、Excelベースで必要な入力補助機能を追加してくのが良いかなと。

 とりあえずExcel2007上でマクロを有効にする方法すらわからなかったので、上の本を購入。スクリーンショット付きで手順が解説してあって良かったです。おおまかなお作法がわかりました。まぁ、使い方さえわかってしまえば、コード自体はVBですもんね。

 同じような表紙でも改訂前の2007対応前のものも店頭に残ってたりするのでこれから買われる方はご注意を。

 二冊目は実践的なサンプル集という感じ。今回やりたかった、

  • セル内の数値でMediaPlayerのタイムスライダーを制御して指定点を再生
  • チェックボックスなどのフォームUIを使ったセル値の入力補助

を実現するにあたり、大いに参考になりました。これはアタリでした。

 Excel上でカスタマイズしたUIが使えるってのは、今回の案件に関わらず色々役に立ちそうです。もっとはやく勉強すれば良かった。

遅いネットワークをシミュレートする方法

-=NEGiES Official Homepage=-
 とある案件で、遅いネットワークでSkypeビデオがどれくらいマトモに映るかを検証する必要ができたので、なんとかプロキシの類でデモできないかと調べたところ上記のツールを見つけました。Windowsのアプリで、アプリ別、ポート別に帯域制限をかけたり遮断したりすることができます。帯域も絞れるファイアウォールといった感じですね。パケットモニタとしてもなかなか使いやすさそうで、応用が利きそうなので覚え書きがてらご紹介しておきます
 また、Webだけで良いのであれば、SloppyというJavaベースのツールも発見。こちらはJava環境さえあれば、LinuxやMacOSXでも動くようです。しかもインストール不要で、ブラウザからリンクをクリックするだけで立ち上がるようです。

小型トランシーバー DJ-PX2

 少し前のエントリで書いた小型トランシーバー、ALINCOのDJ-PX2を購入して、先日実際にユーザテストに使ってみたのでレビューしてみます。

 結論からいえばほぼ満足です。今まではベルトクリップ付きの機種で腰につけて耳までイヤホンを取り回していたのですが、PX2のサイズなら胸ポケットに入れてショートケーブルのイヤホンを使うことで、非常にスッキリさせられます。厚みが薄めなのが良いです。

 下の写真はCFカード、SDカードと並べた様子です。

DJ-PX2

  ショートアンテナは縮めたり外したりはできず固定です。受信専用モデルで割り切れる場合は、DJ-RX2の方が良いでしょう。ただ一般的な胸ポケットならスッポリ隠れてしまう程度ではあります。

 どちらのモデルもイヤホン(マイク)はやや大降りだったので別に用意しました。最初、市販品で代用しようと思ったのですが、まずピンジャックの径が一般的な3.5φではなく、2.5φなのと、普通のモノラル仕様のイヤホンを挿すとピン配列の関係で送信状態にロックされてしまうという問題が発生しました。プラグの挿し具合を途中で止めれば大丈夫なのですが、業務で使うので安定第一で純正品を追加購入しました。胸ポケットからとりまわすにはやや無駄に長いんですが、まぁ仕方ないかなと。

 基本的なUIは上面の電源スイッチと前面のボリューム(四角い方がUp、丸がDown)のみ。チャンネルなどの設定は前面下部の電池カバーを外した中にあるDIPスイッチで行います。急に混線しだしたのでサクっとチャンネルを変えたい時や、二進数が苦手な人にはちょっと扱いづらいかも知れません。

 いずれにせよポケットにすっぽり入ってしまうので、被験者さんからみてイヤホンしか見えないというのは極力意識させない意味では有益かなと思います。これから買う方は片方をこの機種にすることをお奨めします。ただし本体にマイクが内蔵されていないので、観察ルーム用は他の機種が良いと思います(PX2だと付属のイヤホンマイクを使う必要がある)。特殊小電力型のトランシーバーでしたら問題なくつながるはずです。

 あと、ユーザテストで観察室からのメッセージをトランシーバーで伝える場合、1つ問題になるのは、PTTボタンを押してすぐにしゃべると、聞いてる側で最初のコンマ何秒かが欠けてしまう点です。話す側の人に「ボタンを押して一瞬待ってから話しだす」ことを徹底してもらいましょう。

トランシーバー物色

 観察室設置型のユーザテストではトランシーバーがあると便利です。観察室側から進行役にメッセージを出すのに便利だからです。

 聞くところによると、多くのインタビュー調査会社ではそういったサービスを拒否するところも多いそうです。実際、σ(^^)が時々臨時で進行役を依頼される某調査会社もそもそも機器を持ってすらいませんでした。確かに進行役の負荷は高いので嫌がる気持ちもわかります。しかし、より適切でスムーズな進行のためにはやはり用意するべきだと思います。単に観察室(クライアント)側から追加の質問が出せる、というだけでなく、例えば以下の様に進行役にとってもメリットがあります。

  • 被験者から対象製品・サービスなどに関する背景質問が出た時にフォローしてもらえる
  • 機器トラブルの時に解決方法をアドバイスしてもらえる
  • 進行上のミス(タスクをとばした等)や進行ペースの遅れ等に関する指摘を受けられる

 観察室から適切なフォローが受けられれば、むしろ進行役の負担は減ることすらあると言えます。もちろん、なるべく完結な言葉で用件を伝えるなど、進行役と被験者の会話を阻害しない配慮が観察室側にも必要ですが…。慣れていないクライアントさんにマイク持たせちゃうと、要領を得ない質問を長々とされて(被験者とも)会話を中断せざるをえなくなったりなんてことも実際にありますしね。

  • 悪い例 「えーっと、聞こえますか?もし時間があったらついでに聞いてみて欲しいんですけどぉ、先程被験者の方が純正ナビではなく後付を選んだと言ってたじゃないですか?その理由をどうしてかなと思いまして…」
  • 良い例「後付ナビにした理由を聞いてください」

■そろそろ買っちゃおうかな…

 さて、土日に某社のお手伝いで久しぶりに観察室アリのテストをしました。そこではσ(^^)が昔薦めて買ってもらった赤外線のオーディオレシーバーを使っていました。なぜか電池は充分にあるのにセッション中に雑音が入りまくって会話を中断する羽目になりました。またこれは前から思っていたんですが、イヤホンのコードが長すぎて取り回しが不便です。この会社では特殊小電力のトランシーバーもあるんですが、ややデカくて重いのと、これまた時々混信があって不便に感じていました。

 冒頭に書いたように結構大手の調査会社でもトランシーバーを持っていないケースもあるし、いっそ今時のより良い製品を自前で持っておこうかなと思いました。誰かの参考になるかも知れないので、物色履歴を覚え書きしておきます。

■Bluetoothレシーバーでなんとか

 まず今時、トランシーバーを使わなくていいんじゃないかと。どうせすぐ隣の部屋で到達距離はさして必要ではないんだし、最近の数グラムのBluetoothレシーバー(ヘッドセット)で代用できないかと。例えばウチにあるPlantronicsのDiscovery640Eなんかだとわずか9g。受信だけで良いのでオーディオ用のレシーバーに片耳イヤホン挿して使う手もありますね。またこんな製品も見つけました→。ちょっと攻殻機動隊っぽくてイカしますねw。

 というか、いっそモノラルの受信だけでいいので補聴器くらいのサイズの製品がないもんかと思ったんですが、残念ながら見つかりませんでした。

 送信側はPCを使うのが一番簡単かも知れません。それも2台用意して普通にSkypeとかでつなぐのが楽でしょう。1台でマイク入力の音声をBluetoothデバイスに直接流すのは意外に工夫がいりそうです。ケータイ用の送信機は最近どこにでも売っていますが、これもマイクの音声を直接は入れられずラインアンプなどが必要になりそうです。なるべくシンプルな組み合わせでできないかもう少し物色してみます。

■王道のトランシーバーでは?

 チャンネルによっては混信の可能性があったり、PTTボタンを押してすぐに話すと受信側で頭がわずかに欠けてなんてしゃべったか聞き取れなかったりする問題はありますが、手軽さではやはりトランシーバーが良いかも知れません。場合によってはクライアントさんに直接使ってもらうこともあるものですから、シンプルさは大切です。

 そんなトランシーバーでなるべく小さいものを物色したところ、アルインコのDJ-RX2という機種を見つけました。この機種はガイド用途などを狙った受信専用モデルで、W54×H75×D15mm/約36g(電池別)という小型っぷりがGoodです。送信側は普通の特殊小電力トランシーバーでOKだそうです。ヨドバシで14,000円くらいのようです。

 また普通のトランシーバーでも同社のDJ-PX2というモデルがRX2と同じディメンションであるようです。値段は3,000円ほど高い模様。でもこの価格差だと普通に送受信できるPX2を買っておいた方が良いかも知れませんね。アンテナが邪魔っぽいですが。

 受信専用モデルとしては、SONYにもRCB-U33というのがあったみたいですね。こっちの方が微妙に小さく厚い、W50×H72×D20mmだそうです。どこかに売れ残っていればこれでもいいかも。

 とりあえず、近いうちにお店で現物を見てこようと思います。

コンピュータというものの本質

■不幸な定型作業

 先日、とある現場で、Webフォームからメール送信された顧客情報を表計算ソフトベースのデータベースにひたすらコピー&ペーストする、という作業をしている風景に出くわしました。メールには各記入欄のデータがカンマ区切りで1行になっており、そこだけを選択してコピペする、という超単純作業です。ところがその数が二千数百件あるらしい。だいぶ頑張った後らしく、あと八百件程度だと言う。当人曰く、「1時間で100件くらいできてます」と言う。あと8時間もこれするんですか…

 お節介なσ(^^)は、いくらなんでももう少し効率的な方法があるだろうと思い手伝ってあげることにしました。そこで使っていたメールソフトは、メールボックス毎に1つのテキストファイルで保存する方式だったので、それを適当なテキストエディタで開いて文字コードをJISからShiftJISに変換した後、Linuxマシンに送ってgrepコマンド(条件にマッチした行のみを取り出すテキストフィルタ)にかけてお終い。具体的にLinuxマシン上でしたことは、

cat mail.txt | grep ,2007- > db.csv

と打ったのみです。mail.txtの中身をgrepに渡し、grepはその中で「,2007-」という文字列を含む行だけを選別、それをdb.csvというファイルに保存、という意味です。全ての作業で三分とかかりませんでした。残り800が2,500だったとしても同じだったでしょう。

 世の中、こういう不幸がまだまだたくさんあるんだな、世界の経済ってこうして回ってるんだなと思うと、空恐ろしくなりました。世の中全てのニーズを拾えたら、grepで一財産築けるんちゃうか、と思ったほどです。

 ここで問題にしたいのは、Linuxやgrepみたいな便利なものを知らない人が多すぎる!ということではありません。ことはgrepに限ったことではないのです。(ちなみにWindows上で使えるgrep実装もたくさんありますよ)

■コンピューター=計算機というメタファー

 本来、コンピューターとは「計算するモノ」という意味です。ちょっとコンピューター歴の長い人は「計算機」と呼んだりもします(今時の若者に言ったら電卓のことかと思われちゃいますね)。そういう人たちにとって、コンピュータとは、「定型処理を高速に処理するための装置」です。そもそも軍が大砲の弾道計算をさせるために研究開発されたものだったりしますしね。だから、今自分の目の前にある課題の中で、文字通り“機械的に”処理できる部分はないかを意識し、可能であれば簡単なスクリプトやマクロを作ったり、時にはプログラミングまでします。時には自分の技量を超えていたり、わざわざ道具をゼロから作っていては元が取れないと感じたときでも、ネットなどで既存のツールがないかを探してみることでしょう。

 一方で、“パソコン”やインターネットの普及を期にコンピュータに触れ始めた人は、それが「計算するモノ」だというメンタルモデルを持っていないんだろうと思います。Apple Computerも社名からComputerをとっちゃうご時世ですもんね。彼らは、もはや「PC」が本来なんの略であったかを知ることもなく、Wordで文書を作り、メールを読み、Webを閲覧するための道具であり、プリインストールされたソフトウェアのみの中でできることをする、という感覚でしょう。実はWordひとつとっても、マクロなど合理化のための機能はゴマンと搭載されているのですが、「そういうことができるはずだ」という意識がまずないので、メニューやヘルプを探索してみようとすら思わない。昨今の機能競争時代、思いつくほとんど定型作業はなんらかの自動化の手段が用意されているというのに、永遠に気付かれないままでは、使う側も作った側も不幸ですよね。

 そんなところにも、コンピューターを使いこなす人とそうでない人、より効率的なやり方を模索できる人できない人の差が生まれる一因があるんじゃないかなと思いました。一言で言えば「機械が得意そうなこと=論理的に判断ができ、定型的に処理を加えられる内容、を切り出すセンス」とでもいいましょうか(全然一言じゃないな…)。具体的にその実践に必要なスキルを持っているか、探せるか、という以前に、まず「あ、これは機械まかせで省力化できそう」と気付けないと始まりません。

 さて、そういうセンスはどうやって磨けばいいんでしょうね?半導体素子の論理回路に関する知識でしょうか?世界初のコンピュータENIACが弾道計算という単一の目的のために作られたんだぜ、という歴史的背景を知ること?良い事例に数多く触れること?そもそも、小学校からコンピュータに触れている今の子供達には自然に身についてたりしちゃうんでしょうか?

 そういえば、ウチの父はPCの操作自体はなかなか覚えずに同じことを何度も聞いてきますが、「仕事でとった数十枚の写真を小さくするのが大変。なんか簡単にできる方法ないか?」的な質問もよくしてきます。うーん、単に経営者的に合理化欲求が強く、とりあえずなんでもσ(^^)に聞いてみること自体には心理的障壁が低いだけかも知れません(笑)。

 

 とりあえず、目の前の膨大な機械作業に心が折れそうになった方は、袖をまくりハチマキを締める前に、“マクロ”とか“バッチ”とかいう言葉で検索してみて下さい。WordでもPhotoshopでも大抵なにかしらの手助けにはなるはずです。特にテキストデータの場合は、“正規表現”とかググってみるとシアワセになれるかも知れません(^^)/。

『古田さん、それって使いやすいですか?』第24回掲載

"使いやすさ"への取り組み / 古田さん、それって使いやすいですか? 第24回 | Ricoh Japan
 リコーさんでの連載が更新されました。
 今回で24回、つまり丸2年続いたことになる。これもみなさんのおかげです。ありがとうございました。
 おかげさまでさらに継続させていただくことになりました。今回の記事にも書いてある通り、小難しい話が続いたので、しばらく具体的に身近な製品レビュー的なものをやっていこうということになりました。お楽しみに。
P.S.
 あ、Operaで開くと表示に時間がかかる問題が解消されたかも…

『古田さん、それって使いやすいですか?』第23回掲載

"使いやすさ"への取り組み / 古田さん、それって使いやすいですか? 第23回 | Ricoh Japan
 そういえば最近、こちらで報告してませんでした。リコーさんでの連載、更新されました。来月で丸2年になります。早いモノですね。お陰様でそれ以降も継続させていただくことになりました。最近、ちょっと小難しいネタが多かった気がするので、もう少し身近なネタを考えてみたいと思います。

PEARとかAjaxとか勉強中

 期末明けのせいか今月は仕事があんまり無いので、プログラミングの勉強に励んでおります。このあいだは某業務で作っているWebアンケートシステムの絡みもあって、PEAR(PHP用の汎用ライブラリ)に挑戦しました。うわ、これは確かに便利ですわ。

 今日は、右の本でGoogleMaps APIとAjaxについて。この本、Google Maps APIを使った簡単なWebアプリケーションを作成するための解説に沿っており、XMLの基礎やPHPを使ったXML-RPCについても網羅していて、最近のフレームワークがいい感じに概観できました。XML-RPCは名前くらいは知っていましたが、具体的な中身を見るに、上に書いたシステムにも取り入れられそうな技術です。

 PEARにしろXML-RPCにしろ、今まで使わなかったのが惜しまれる位です。昔作った独自のライブラリをいつまでも使ってないで、スタンダードに浸ってみる時期なんでしょうね。

覚えやすい和製通話表

 最近では、某使いやすさ日記もすっかり若手の研鑽の場となっていますので、ロートルはひっそり自分のブログにでも書いてみますw。

 皆さんは、通話表というものをご存じでしょうか?ミリタリー系の映画なので「アルファ、ブラボー、チャーリー」なんて無線で会話を耳にすると思います。あれは、アルファベットの発音に冗長性を持たせて、電波状況が悪い中でも間違いなく伝達可能にするための工夫なんですよね。例えば、PDCの携帯電話などでも「B」と「D」が聞き分けづらくて、「ABCDのD」なんて言い直したりすると思いますが、そんな時の言い方に世界共通のコードがあれば便利なんじゃないか?ってこと取り決められているのです。先のWikipediaの記事にもあるように、日本にも和文通話表という50音仮名を言い換えるための通話表が存在します。

 さて、先日意外な場所で面白い通話表を耳にしました。実家のBフレッツ工事に立ち会った時に、工事業者の人がNTTの担当者と携帯電話でやりとりをしている中でそれは聞こえてきました。工事の人が突然、「カープ、ホークス、ベイスターズ…」などとはっきりした声で話しだしたのでちょっと目をぱちくりさせてしまいました。そう、日本人に馴染み深いスポーツチームの名前を使った通話表なんです。一文字たりとも間違いが許されない、何かのIDかパスワードを伝達するのに使っていたのです。なるほど、上記の欧米式の通話表に比べて、日本人には覚えやすいかも知れません。工事のお兄さんに「それ、AからZまであるの?」と聞きそびれてしまいましたが、まぁきっとあるんでしょうね。少なくともAからFまであれば16進数の伝達には使えそうです。σ(^^)はプロスポーツに疎いので、サクっと適当に書き出してみてどらくらい埋まるのか見当もつかないですが、お暇な方、是非リストを作ってみて下さい。