【Computing】のブログ記事

2009年6月17日  

割り切ったお付き合い

 何年か前にも書いたが、1÷3×3は手で計算すると1で、電卓で計算すると0.999999999になる。この違いを理解し運用に当たらないとコンピューターと手作業は融合しない、とワシは思っている。

 依頼者は「コンピューターで自動でやって」などと軽く言ってくる訳だが、中で考える人はどういう処理がいくつのパターン必要なのかを考えて仕組みを作っていくわけで、その時に依頼漏れがあると当然エラーになったり期待外(依頼者にとっては)の動きをする。最近は誰でも中途半端にコンピューター用語を知っているもんだから「バグだ」などと言って笑ったりする訳だが、それはバグではなくてオーダーミスである。まあ、依頼者の抽象的な要望を聞いた段階でそのことに思い至らなかったという点ではワシの責任ではあるが・・・

 今日もそういうトラブルがあった。端数の調整を入れる必要が生じた。行数に余裕がある場合は調整データを入れるだけで簡単なのだが、稀に行が一杯になっている伝票で調整を入れる場合がある。そういう場合は伝票を2枚に分けて処理する運用ルールなのだが、どうしても1枚でやれという。もともとこの処理はシステム発注の際はまったく話し合われておらず、運用が始まってから「これは出来ないのか」といきなり始まって対応してきたものだ。大部分は解決したが、どうしても1枚では処理しきれないケース(2枚に分ければ簡単に処理出来るのだが)が非常に稀な確率で起きる。

 一度は断ったが、怒りがいったん収まったところで他にも方法は無いかと思い作業してみた。主要なデータは運用ルール通りにしていじらず、コピーしたデータを印刷用データとして編集し、プログラムにも若干手を加えて要望通りの伝票が印刷出来るようにした。今までは基幹業務のデータがおかしくなるような変更は絶対に認めなかったが、「これは基幹業務の機能追加や修正ではなく、顧客サービス用の印刷ツールだ」と考えてみた。

 結果は・・・まあ当たり前だが上手く行く(印刷だけだからワープロみたいなもんだ)。システムとして見ればどうしようもない、最悪・最低のインチキ処理だが、メインデータは今までの運用通りだから気にしないでおく。新たなミスが生じる可能性もこれで増えてしまったが、この場合の運用ルールを新たに設定すればまあ大丈夫だろう。現場もトラブルが避けられて喜んでいる。釈然としない気分も残るが、これは顧客サービスだと割り切った。数字は割り切れないが、人間の気持ちは割り切れる。

 しかし、今回ばかりは「出来た」という嬉しい気持ちよりも残念な気持ちの方が大きかった。何年も前から定めているはずの運用ルールが簡単にひっくり返されてしまったこと、トラブルを避け安泰な方向になびく現場(ワシもか)・・・自分の考えに固執せず柔軟に対応出来たってことだけが収穫だったな。

 Accessでタックシールを作る案件が出てきて、今日作業をした。受注テーブルから品名などを引っ張ってきてシールに印刷するのだが、たとえば数量500で箱の入数が60だとしたら、「入数60」のシールが8枚と「入数20」のシールが1枚欲しいらしい。で、商品マスターにはまだ標準の入数のデータは入っていないし、歩留まりを考慮して数量の変更も出来るようにしなくてはならない。

 あと、シールは2列×4行で8枚並んでいるが、毎回8の倍数で出てくる訳じゃないので余りが生じる。これにも対応してあげたい(プリンターの故障のことを考えると、一度機械を通した紙、特にシール紙は使わない方がいいんだけど・・・)。

 両方とも以前やったことがある内容だが、2つを同時に処理したことはない。まあなんとかなるでしょうと思いながらスタート。

 まずはクエリを作成し、

「商品コード」「商品名」「数量」

を引っ張ってくる。次に商品マスターも見に行って標準入数を持ってくる。

商品コード,商品A,500,60

 次に割り算をし結果は切り捨てて、標準入数での箱数を計算。

商品コード,商品A,500,60,8

出てきた値×標準入数を数量から引くと、入数の端数が出てくる。端数の有り無しで0か1が入るようにし「箱数2」とした。

商品コード,商品A,500,60,8,20,1

 これらを作業テーブルに書き出すことにした。テストデータではうまく行くが、商品マスターに入数の登録がない商品では0除算でエラーが出るので、IIF関数などを使い回避した。

 作業テーブルをベースにしたフォームを作成し、

「商品コード」「品名」「入数1」「箱数1」「入数2」「箱数2」

を編集できるようにした。使いやすくなればと思い、横の方に数値の合計を表示するようにしておいた。

 指定した枚数分のシールが印刷出来るようにするにはネットで紹介されている技を使った。

----------------------------------

1)カウント用のテーブルを用意する(フィールドは1つ「count」だけ、データは1~n・・・nは最大印刷枚数)

  今回は「一度に印刷するのは最大200枚位」とのことだったので、念のために300までセットした。

2)カウント用のテーブルと上記の作業テーブルを元にクエリを作成。二つのテーブルはコードなどで結ばない。箱数1の列で抽出条件に「>=count」としておく。

----------------------------------

 簡単なシールだったらこのクエリを基に印刷すればいいのだが、今回はもう二ひねりする。

 上記のクエリを追加クエリに変更し、作業テーブル2に書き出す。抽出を「箱数1」でやるものと「箱数2」でやるものをそれぞれ作成。

 作業テーブル1に空データを仕込んでおき、他のデータと区別が出来るようフラグを立てておく。空データだけ開くフォームを作成し、1~8を指定するボタン(タックシールの並びと同じ配置)を設置する。ボタンを押すと空データの箱数1に「指定した数字-1」をセットする。出来上がった空データを処理する追加クエリを作成。

 これら3つの追加クエリを実行し、空データ判別フラグ→商品コード→入数でソートしたデータでタックシールを印刷。入数は降順にする。

 あとは作業データを消去するクエリを作成し、適切に流れるようボタンを配置したりしておしまい。比較的短時間で思っていた通りのものが出来た。出張の限られた時間の中で即興演奏のような作業は非常にいい刺激になる。悔しい思いをすることも多いが、今回はまあうまく行った。

 自営業の人と一緒に仕事をしたり手伝ったりする機会が多く、いつも刺激を受けている。自分に対して厳しいルールを課しているように見えるがご本人にとっては「そんなの当たり前」らしい。「あともう少し稼働時間を増やしたい」とか「喰っていけるだけじゃ意味がない」とか、いつも沢山の刺激を頂いている。

 コンピューター屋さんは別にして、古いパソコンを大事に使う例が多いのも特徴だな。仕事の道具としてシビアに考えている。会社員にありがちな「あれちょうだい」「これちょうだい」「もっといいのちょうだい」がない。パソコンが自分の仕事にとって何をするための道具なのかを正確に理解し、コストとリターンを厳しくチェックしているようだ。

 学校の先生がWebの地図サービスに生徒の家を登録し、非公開にし忘れていたというミスが何度かあったようですな。「非公開にし忘れたことがミス」と思われているような気がするが、ワシは「個人情報を伴う公的な業務でそういうサービスを使うことがそもそも間違い」だと考える。

 もし、駅前に置いてある大きな地図がとても詳しくて便利で、しかもそこに誰でもなんでも書き留められるとする。「ここのラーメン美味しいよ」とか「ここから見る夕日は最高」とか書くとみんなで盛り上がって楽しいだろうな。で、そこに「1年1組 ○○太郎の家 東京都千代田区・・・」なんて書く馬鹿はいないよな? ましてや、学校の先生だったら絶対書かないよな?? 横にスーツ着たオッサンが立ってて「暗証番号を入れれば他の人には見えません」と言ったって、100%信用できるかどうか分からないって普通は思うよな??? Webサービスの地図も同じことなんだと思うけどなあ。

 PC・ネットの話しとしてなんとなくPCリテラシー(活用能力)ネタっぽく扱われているけど、リアルな世界に置き換えたらかなりのヤバさだと思うよ。

 非公開に設定したとしても、業者側のミスとかトラブルなどで公開されてしまう可能性がある(Amazonの書評事件なんてあったよね)。もしそうなっちゃっても「申し訳ございません」という言葉だけで済まされちゃうだろうな。そういえば某証券で漏洩事件なんてのもあったばかりですな。

 ワシだったら検索結果を印刷するとかキャプチャして画像で保管しておくとかして、Webサービス会社のデータとしては保管されないようにしておくなあ(それでも検索結果は残るけど)。たとえ自分が管理しているサーバーだとしてもWebサーバーには置かないな。

 百歩譲って、上の方から「非公開にすれば使っても良い」と言われたとしても、名前じゃなくて出席番号だけ入れておくとかして、他人が見ても何のリストだかわかりにくいようにするな。「便利だから」ってだけで何でもかんでも使っていいってもんじゃないと思うのだ。新規サービスだからってすぐに飛びつかず、用心して使い勝手を見る。大丈夫そうだと分かってから大丈夫な使い方で使えばいいのだ。

 または考え方を変えて、教員住所録をWebサービスで作成するってのもいいかもしれないな。災害などがあったときにすぐに対応できるし、不登校の先生(たくさんいるらしいね)への家庭訪問もやりやすくなって便利でいいかもしれないな。

2009年5月15日  

リカバリー

 請求書発行作業をしていたら予定外の得意先の請求書が2枚(1社2営業所分)出てきてしまったそうだ。締日を変更するのを忘れていたらしい。

 さてどうリカバリーするか。もちろん作業前のバックアップは取ってあるので、ファイル丸ごと元に戻してやり直す方法がこれまでは基本だった。今回はたった2件なので、請求データを集計しているファイルの中身を手で直してもいい。

 しばし検討(数秒だけど)し、今回は初めての方法でやってみることにした。

 まず間違った2レコードを消去、作業前バックアップの中から該当の2レコードだけをコピー、そしてマスターの締日変更。あとは間違って出てきた請求書の破棄。これで何も間違いが起きなかったことになる(実際にはもう少し細かい作業やチェックをしたが、おおまかに書くとこんな感じ)。

 データを全部戻してやり直すのは手間だし、業務がストップする時間が長くなる。今回はたった2件なので手で数字をチマチマ直すのが一番早いはずだが、あえて上記のやり方でやってみた。手作業で直すよりは数分余計にかかったが、営業所が数十ある大きな得意先で一斉に間違えたとしても今回のやり方ならほぼ同じ時間で作業出来るだろう。

 でもチェックの時間は件数分長くなるだろうな。間違えないのが一番なのは当たり前ですな。

2009年5月14日  

自動

 先日公開したデータの維持や更新をどうするか考え、いくつか試してみたがうまくいかない。何か手っ取り早い方法がないかと探してみたらエクセルが使えそうだったのでやってみた。

 まずはエクセルでWebからデータを引っ張ってこれることを確認。これをまずマクロにし、そのコードに手作業であれこれ追加していった。URL生成、取得、転記と作ってループするようにしてテスト。転記の後に消去を入れたらほぼ期待通りに動くようになった。あとはこれをたまに動かして、既存のデータと照合して更新していけばよさそうだ。

 エクセルでやっつけてしまうあたりが素人さを物語っているが、実際素人なのでしかたがないですな。

 エクセルのシグマボタンって、当初想定された機能とは別の使い方をされているような気がする。シグマボタンは「オートサム」と言う「自動で合計を出す」ボタンなのであるが、式を入れる時の「=」代わりに使われているケースが多い様な気がする・・・ワシの周りだけかな。

 ワシはエクセルの前のロータス123(の前のマルチプラン)から使っているので、シグマボタンってのは後から登場した便利なボタンっていうイメージを持っていて、合計を出すときにしか使っていない。別にそんなボタンが無くても式を直接入力して合計は出せるのだが、エクセルが主流になって以降に自己流で使い方を覚えた人は何でもかんでもシグマボタンを使っているケースが多く見受けられる・・・ワシの周りだけかな。

 たとえば、

=SUM(A1,A4)

とあって「A1からA4の合計を出してるなあ・・・あ、ちがうちがう、これ『A1+A4』だ」とびっくりするような感じですな。

 もっと凄いのになると、

=SUM(A1×1.05)

 (※ 掛け算の記号が * だと分かりにくいんで × で表示してあります)

なんてあったりして、合計出してるのか掛け算しているのか分からなくなることが多いですな。

 エクセル入門って、まず「=A1+B1」を覚え、次に「=sum(A1:B1)」を覚え、「同じ入れ方で=averageにすると平均が出ますよ」って感じで関数を覚えていくってのが普通だと思っていたのだが、シグマボタンがあまりに便利なので大半の用事がこれで済んでしまい、関数までたどり着かなくてもやって行けちゃうようですな。それで、エクセルって「複雑な計算は知らないけど、私は合計だけは出せる」って使っている人が多いようだ(しつこいけどワシの周りだけかな)。実際、長年エクセルを使っている人から「掛け算ってどうやるんですか」と聞かれたことがある。

 まあ、それ以前に「エクセルって計算も出来るんですね」と言われたこともあるんで、たいていのことは大丈夫だ。

2009年5月11日  

Wiiでインターネット

 先日、Wiiをインターネットに無線でつないだがうまく行かなくなったという相談を受けていろいろとアドバイスをしていたつもりだったが、WindowsXPのファイヤウォールの話しになったあたりで自分がイメージしているつなぎ方と違うなと思った。無線ルーターかアクセスポイントを使用しているのだろうと思い込んでいたが、「ソフトウェアルータ対応 USB2.0用 無線LAN子機」(簡単に言うと「無線親機モドキにもなるUSB無線子機」か?)をXPのノートパソコンに挿し、それを親機としてWiiをつないでいたらしい。最初はうまく行っていたが、ファイアウォールやウィルス対策ソフトの機能をオフにした方がいいという説明を読んで不安を覚え、また動作も不安定だったので別の方法にしたいとのことだった。

 「出来れば有線LANがいいよ」と言ったが、Wiiを有線LANでルーターにつないでもネットには繋がらないとどこかで読んだとのこと。いや出来るし、現に我が家でもやっているのだが・・・相談主もそう言いつつ「なら、なんで有線LANアダプターがあるんだろう」と疑問に思っていたらしい。いろいろ話しているうちに『WiiではPPPoEが出来ないので、ルーターの下にぶらさげないといけない』というのがうまく伝わっていないのかなという気がしてきた。

 PPPoEってのは超簡単に言うとプロバイダとユーザー名やパスワードなどのやりとりをしてネットに繋ぐ機能ですな。常時接続の初期の頃にインターネットを契約し、パソコン一台だけで使っている場合は「接続ツール」なんてアイコンをクリックし「OK」と押すと接続出来るなんて設定のところがあると思うが、そういう場合はWiiをただ有線でつないでもインターネットには繋がらない。パソコンが2台以上あって同時にインターネットが出来る状態になっていたり、パソコンは1台だけどひかり電話も同時に申し込んだなんて場合にはたいていルーターが設置されていて、ユーザー名やパスワードのやりとりはルーターがやってくれるので、Wiiや2台目以降のPCは簡単に繋がる可能性が高い(DHCPがオフになっていなければ大丈夫かな)。

 相談主はゲーム専用の無線親機を買い直す気になっていたらしいが、IP電話の絡みでルーターがレンタルされ設置されていることが確認できた(しかもワシが大好きなV110だった)ので「有線でも大丈夫だよ」とアドバイスした。決め手になったのはコンセントだった。「無線LAN親機を置くとコンセント一つ使って電気喰うよ。LANの機器類には電源スイッチはないから、スイッチ付きのOAタップを買ってきてWiiと連動するようにしておくといいよ」というアドバイスが決め手になって有線アダプターになったようですな。もうコンセントは全部埋まっていて、これ以上機器を増やしたくなかったらしい。もともと有線希望だったというのもあるし、ルーターとWiiがたまたま近くにあったのも材料になったのだろう。

 有線LANアダプターだと10BASE-Tになってしまうようで速度がやや足りない感じもするが、とりあえずやってみたいとか、たまにダウンロードする程度だったらこれで十分だろう。中途半端に無線LANを設定して誰かに侵入されたり、メインのPCのセキュリティが甘くなってウィルスにやられたりするよりはよっぽどマシだと思う。もちろん、少しでも速くとか、毎日2時間以上Wiiで通信やって過ごすなんて方には無線LANの方がいいだろう。

 こんな感じの説明や質問が何往復かしているうちに大体理解してもらえたようだった。PPPoEの他に、ルーターとモデムの区別が付いていなかったことなんかも原因になっていたようだ。無理もないよなあ・・・IP電話やひかり電話の設定がされたルーターなんて「これは設定済みだから触らないでください」と言われるに違いないし、そこにもう一台のPCやWiiをつないで使い放題になるなんてイメージ湧きにくいだろうしなあ。

 上記のやりとりのあと、早速有線LANアダプターを買ってすぐに接続に成功したらしい。更にこれをきっかけに家庭内ネットワークの意識が生まれてきたようで、古いノートPCを台所に設置してレシピサイトを見ながら料理し出来上がったらTwitterで報告・・・なんて使い方を編み出したようだ。なかなかやるもんですな。

               
Powered by Movable Type 4.22-ja