ひとは間違いを犯すのだ

2015/2/10 [18:14:08] (火)

「絶対」なんてことはありえないんだけど、世の中これだけは「絶対」と副詞をつけても正しいのが「人間は絶対に間違いを犯す」

いや、別に倫理的とか哲学的なとかメタな話じゃなくて、単純なミスの話。だ。


人間のやることだ、ミスは必ず起こる・起こす。

ミスを起こさないための方法を100通り考えるヒマがあったら、ミスが起こった後にフォロー・リカバリする方法を10通り用意する方がよっぽど効率的で健全な判断だろう。

その方法はシステム的なことかも知れないし、担当者を温泉に連れこむような人的力技かも知れない。


わたしは自分の仕事を信用してないのでミスがあることを前提に、仕事の後のチェックやミスの早期発見の方法をまず考える(自分でやるのか、他人にまかせるのかはおいといて)


てことで、やっと今日の雑記の小ネタ本文はここから。無駄な前振りが長いのは年寄りなので勘弁してもらおう。


データベースへの登録作業。

登録したデータはサイトに表示されて…ネタは商品ページにありがちなスペック表みたいなシロモノ。


リンゴのページにはリンゴの表となって表示される。

名前リンゴ
値段300円
産地余市

ミカンのページにはミカンの表となって表示される。

名前ミカン
値段200円
産地愛媛


データベースを直接覗けるならSQL文一発で入力項目のチェックができるんだけど、いかんせん、管理画面でしか使えない。

入力したものを確認するにはリンゴのページを開いて確認し、ミカンのページを開いて確認し、とページの数だけ開いて確認する必要がある。


これはいくらなんでも面倒くさい。ミスを放置しろといわんばかりだ。


なもんで、あちこちのページにあるHTMLの単純なTableを一覧したい。ということで例によってperlの出番。


まとめてこんな表にすれば、いちいちページを開く必要がなく確認がらくちんだ。

名前値段産地
リンゴ300円余市
ミカン200円愛媛


当然perl には HTMLを解析するモジュールが用意されていて

HTML::TreeBuilder

HTML::TagParser

Web::Scraper

ちょっと調べた限りではこの3つが定評もあって使いやすそう。


ただ、今回はTableの項目を引っ張りだしてひとつのTableにするだけ、タテのものをヨコにするだけなので現物合わせ「オレオレscript」で作った。


lwpで各ページのHTMLを取得してその中から必要なtableを探してバラしてhashに収納して一覧表にして表示する。

今日の雑記はここ。tableをバラして収納するところ、ていうかこれだけ。


my $r;
1 while  $html =~ s!<th[^>]*>([^<]*)</th><td[^>]*>([^<]*)</td>!$r->{$1}=$2!e;

perlの正規表現のeオプションは強力でいろんな状況で使える。てか、式に使えるんだからなんでもありだよなあ。

hashに入れてしまえば後はどうにでも加工できる。



…にしても、本当にperlはすげー。

私立文系まっしぐらでプログラムなんて全然知らない・経験や訓練もないわたしでもそれなりに使えてしまう。日々の仕事でなんでこんなこと、てな単純な繰り返しや、ちょっとした条件分岐を入れればすむだけ、というような場合にperlはスイス万能ナイフ的に使える。


人間が1000回コピペすると3回ぐらいはミスをするけど、perlでスクリプトにしてしまえば間違いは犯さない。

これから何かひとつプログラム言語でも、というかたにはperlをオススメ。



ぶっちゃけ、perlがあるおかげで仕事でも趣味でもいろいろ本当に助かっている。

競馬の、馬券のデータ集計のために使うようになったAWKからperlに辿りついたわけで、競馬に感謝するしかあるまい。

image

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】