goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ユニットテストの問題点

2006-02-17 19:51:55 | 開発ネタ

 ユニットテストの問題を考える前に、ユニットテストが好きな人たちの、ステレオタイプみたいなもんを、独断と偏見で考える。

 こういう人は、アジャイル大好きで、TDDを主張する人たちだ。とすると。。
 当然のように、こういう人たちは、DbC(契約による設計)を主張する。

 この場合、事前条件、事後条件、不変条件をアサーションとして入れて、ユニットテストのテストツールで、その条件がクリアすると、青くなるから(すげーひょーげんだ ^^;)青くすることが目的となる。(言ってる意味がわかんなかったら、こんなところを見てください)




 で、事前条件、事後条件、不変条件を、アサーションの形に落とし込むには、実質、事前条件、事後条件、不変条件の命題を、同値条件(さらには、境界値)にまとめ、それを、アサーションの条件として入れることになる(さらにテストケースを縮退することもありえるが)。

 そうすると、結果的に、同値条件を、どこから抽出してくるか?ということが問題になる。

 これは、DbCのスタートラインから考えると、当然、仕様書からになる。
 仕様書に、事前条件、事後条件、不変条件があるのだから。

 ということは、仕様書に書かれていない条件は、テストできないということになる。

 もし、ソフトウエアの開発上、仕様書に書かれていない条件というのが、「当然のごとく」、「日常的に」、「論理的に」入ってくるのであれば、この考え方は、崩壊してしまう。




 ところが、ウィリアムのいたずらが指摘するまでもなく、このような仕様書に書かれていない条件などというのは、「当然のごとく」、「日常的に」、「論理的に」(=ソフトウエア業界の構造的に)入ってくる。

 なぜか。。。

 ソフトウエア業界の構造として、コンサルやエラーい人(一次請け、二次請けのSE)、給料の高い人は、現在の、実機の問題点を知っている人でなく、コンサルティング会社、または、いい会社の偉い地位に居る人、あるいは下請けの社長や取締役で、人集め中心の人である。

 その人たちは、ハードや技術に詳しいというよりか、むしろ、戦略や業務に詳しい、あるいは、ご機嫌取りや、権謀術数、人集めに詳しい人である。

 その人たちが書く仕様書は、技術的な問題点については触れていない。

 あるいは、あるハードや特定の技術にむちゃくちゃ詳しい、論を張るような人たち。この場合、詳しい業務分析方法や、現実的な落とし込み能力がなかったりする(なんでもDBに入れたり、なんでもユビキタス ^^)。

 この場合、業務が抜けていたりする。

 つまり、今のソフトウエア業界の構造上、仕様を書くえらい人は、技術上の問題と業務の両方を熟知している人というよりは、「昔」そういう人だったかもしれないけど、いまは、業務よりか、スペシャリストの人が担当しちゃったりする。

 そーすると、とーぜん、自分の知らないところの仕様は抜ける。
 そーすると、その部分は、事前条件、不変条件に載らないので、ユニットテストから外れる
 そーすると、その部分でバグになるということだ。




 たとえば、「ある時間ぴったしに」何かのバグが起こるといったとき、業務系しかやったことのない人は、「境界値チェックをしてないんだろう」とかいう。この一言を言ったとたんに「こいつ、知らないのか・・・」といって、以降の部下からの信頼度0になってしまったりする危険もある。

 プロセッサが2つ動いている場合、ある時間ぴったしには、反応しないことがある。
 電圧が、その瞬間に、そこまで上がらないことがあるから。。
 (通信が届かないとかもある)

 そこで、遊びを設けないといけないことがあるんだけど、その遊びが、チューニングとなる。
 なので、境界値ぴったしになんかになると、困ったチャンになることがある。
 (ちなみに、これが、前のICameraで、「寝かせる」とか書いているところにあたる。これは、カメラのコプロと、本体のCPUとの関係で起こるようだ。なので、コプロを使わない場合、連写の問題が起こらなかったりする。起こらないメーカーと、起こるメーカーは。。ひ・み・つ)




 ということで、構造的に、仕様書に抜けは、ばりばりあり(つーか矛盾も多いし、最近の仕様は。。つーか、仕様をまとめる力のないやつが、アジャイルでごまかしてるっていうケースもあるし)、ということで、仕様書を信じてユニットテストをしても、テスト的には、問題になり、それが、結合で分かればいいんだけど、システムテストにきて、どーしょーもならなくなる。。

 じゃあ、どーするのか。。っていうところで、それを書いたサイトをみつけたんで、今回は、そのサイトを紹介しようと思って、ここまで、前置きを書いたんだけど。。

 前置きだけで長くなりすぎたので、今日は、ここまで。

 覚えていたら、続き(どーするのか。。っていうことを書いたサイト紹介)を書きますね

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWのページのまとめ:その1 ICamera(カメラ機能:ちょっとやばいかもレベル)

2006-02-17 16:56:38 | ケータイ

最近、アクセスカウンタをみると、ウィリアムのいたずらのBREWのページを見てくれる人が多い。

で、そのわりには、ぜんぜん整理されてない(>_<!)
そんなに、期待される、あぶない情報もかいてなーい(>_<!!)

なので、ここに、少しずつ、知識をまとめてみる。
で、あとで、そのホームページにリンクする。

今回はカメラ機能。

でも、ここまで書いちゃったら。。。やばいかなあ(^^;;)
KDDIの人が来て。。「もうだめぽ!!」とか書いたりして(>_<!)




■■ BREWにおけるカメラ機能概要(やばくないレベル)
 BREWでは、カメラ機能には、大きく2種類(実際には、2種類目は、もちょっと細かく分かれる)ある。

(1)コプロセッサを使わないもの
 ひとつは、コプロセッサを使わないもの。この場合は、FRAMEイベントごとに表示する。
 こちらが、BREWのAPIリファレンスに書かれているGetFrameしたものをBitBltするものである。

(2)コプロセッサを使うもの
 もうひとつは、コプロセッサを使うもの。この場合は、FRAMEイベントで、表示する必要はない。
 システムが勝手に行う
  →あるメーカーを除く。。そのことについては、最後に記述する。

 (1)と(2)では、イベントの遷移がことなる。

 シャッターを切るとき、StopさせてからRecordSnapshotをとるか、それとも、RecordSnapshotにいきなり、Previewから遷移させるかである((2)は、後者。この場合、Stopがいらない)

 ウィリアムのいたずらが、BREWのページで指摘しているのは、おもに(1)のほうだと、確か思った(ごめん、かなり昔のことなので、記憶が定かでない)。

 (2)のほうは、何もしなくてもいい。ただし、逆に、なにもしないということは、ディスプレイは、プレビュー画像を全面に表示してしまう。そのため、コントロールを表示したい場合、Redrawが必要なことがあると思う(いや、ウィリアムのいたずらは、消えてしまったんで、書いているんだけど、自分のソース、ここコメントにしてあるんだよね。要らない端末もあったのかなあ??)

 なお、絵の場合(プリクラみたいなことをするとき)は、オーバーレイを使い、ディスプレイに直接、絵を表示しようとしてはいけない。
 (1)と(2)は、FPSのリストを取ることによって、一番初めの値が何かでわかる。




■■ ソースコードが、共通に使えるところと、そうでないところ

上記1、2とも、インスタンス生成から、プレビューまでは、共通に使える。

イベント処理において、
Frameイベントで、
(1)は、GetFrameしたものをBitBltしたあとで、Updateして再表示、リリースする
(2)は、なにもしなくてよい(コントロールが張っていない場合)

シャッターをきるイベントで(Commandなり、Keyなり)
(1)は、Stopさせる
(2)は、RecordSnapshotする●*

Doneで
(1)は、シャッターを切るイベントの後に来た場合はRecordSnapshotする
   ●*
  →これ以外のイベントでも来る。
(2)は、とくにしなくても大丈夫

●*は、共通化できる

あと、サスペンドのときの処理、中止における、コールバック停止、メーカーにおける差異があるが、機密にふみこみそうなので、ここでおしまい。




■■ カメラ機能の注意点

・BREWのGetFrameで受け取った画像は、直接保存ができない。
 端末ごとに違うのだが、BREWのGetFrameで受け取った画像を直接保存したり、利用したりしてはいけない。とんでもない画像が帰ってくるか、画像が取得できない(大きく、正像、90度回転、取得不能の3種類)、この場合、かならず、ディスプイレイと、コンパチのビットマップを作成し、そこに、BitBltする。

・クローズするとき、連写するとき
 プログラム的に自動で行うと、なんか、たまにおかしくなる端末がある。
 この場合、スリープさせると、なおる。
 ただし、早めにリリースしないと、今度、連写のときに、そのファイルをつかんでいるということで、エラーになったりする端末も、たしかあった気がした。

・size指定など
 できるところが、決まっているものがある。詳しくは、設定してみればわかる。

・あるメーカーだけに独特な現象
 マニュアルどおりやると、真っ白な画像が出て、プレビューできなかったら、
 GetFrameした画像をBitBltして、そいつを、GetPixelして、SetPixelしてみよう。
 あーらふしぎ!!でてきたでしょ(^^)

 そのメーカーは、「ひ・み・つ」多分、機密事項だよね。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

個人情報保護法のためには、原本をスキャンし、スキャンファイルをwebアプリで使うほうがいいと思う

2006-02-17 13:34:39 | Weblog

 日経コンピューター 2006年2月20日号(特集が「個人情報保護法の功罪」)の46ページに、ファンケルで問題になった事例があります。まとめると、こんな感じ。

<<業務フロー>>
事前(前提)条件:お客さんからアンケートが送られてくるが
        その内容が、わからない→なので、お客さんに問い合わせる

ユースケース
1.原本(葉書)をコピーする
2.営業またはお客様センターに葉書(原本)をおくる
3.それらの部署では、内容を確認する
4.確認したらもとの部署に戻す
5.元の部署では、返ってきた葉書の枚数を数える
6.戻っていないものをチェックし、渡した部署に、紛失してないかきく
7.(2)の部署では、7の内容を確認し、「紛失してないよ!」と答える

事後:確認された葉書(原本)が帰ってくる
   未確認のものは、葉書が存在する報告を受ける

<<問題点>>
・面倒。
 うん、そう思う。ウィリアムのいたずらが、今書いていても面倒だ。。




 これって、1で、コピーとるんなら、スキャナに入れちゃえばいいんじゃない。
 あとは、情報を見る人を制限し、コピーできないようにさせれば。。

つまり、こうだ

<<ウィリアムのいたずらの改善フロー>>
事前(前提)条件:お客さんからアンケートが送られてくるが
        その内容が、わからない→なので、お客さんに問い合わせる
        (これは、おなじ)

1.原本(葉書)を「スキャンする」
 →この時点で、原本は、読めるデータと一緒に、大切に保存する。
2.そのスキャン内容をWebページにアップする
3.調査部署は、Webページにアクセス、未処理のものの、内容を確認する
4.確認したら、Webに記入する

5.6.7は、Webアプリがやるので、人は、いらない。

事後:葉書(原本)は、すぐに保管できる
   確認されたものの、内容はわかる
   →もし、その内容を葉書に記入したければ、スキャンイメージと
    あわせてプリントアウトすればいい
   未確認のものは、どれで、いくつかは、Web上でわかる。

そーすれば、パソコンで確認できるので、原本はすぐに保管できるし、
その上、アクセスできる人を制限できれば、情報漏えい管理も、パソコン上でできる




このCGI自体は、そんなにむずかしくないよねえ。。。

1.まず、スキャンしたイメージファイルをアップロード。
   1件1ディレクトリにして、そこにイメージファイルを入れる。

2.未確認のものを出す
  →3で、確認内容を書き出すので、ディレクトリにイメージファイルしかないものを、
   一覧表示すればいい。

3.確認した内容を、入力
  →1で作成したフォルダ(下にイメージファイルがある)に、
   確認内容をファイルに書き出す

4.担当を依頼した部署は、確認依頼を出していたものを、出力するなり、なんなりする
  →ここで、出力なり、何なりすると、「したよファイル」を作ることにする
   なので、確認ファイルがあり、したよファイルがないのを表示、出力する




 こまかくは、もっといろいろあるけど。。

 まあ、どっかの会社から出てきても不思議はないし、このブログで、「ファイル間でのトラックバック」のあとのネタにいいかな。。っていう感じだ(作るかもしんない)。

 こんなかんじで、個人情報は、すぐにスキャンでとって、原本は、どっかに大切に保存、作業は、パソコン上のワークファイルに入れるというのが得策と思う。

 そのため、はじめから、スキャナで機械で読み込ませられる形で、アンケート用紙などを作るといいと思う。

 こーいう提案、どっかの企業とか、やんないのかなあ。。。

 やんないと、ウィリアムのいたずらが、ここで、ブログに書いちゃうよ。。

 。。。つーか、提案してても、ここで、書いてもいいんですけどね。

 中小企業診断士が、中小企業に情報管理の手法を提案するということで。。。




 って、ウィリアムのいたずら、中小企業診断士なのに中小企業診断士の活動、まったくしてないなあ。。この調子だと、5年後、更新できるかなあ・・(>_<!)

 あ、これを、来年以降、無料で公民館かなんかで講座ひらいて、中小企業の社長さんから、証明書もらうってやったら。。。経済産業省や、診断協会から怒られるかにゃー。

 「それって、コンサルなの、ブログの雑談じゃなくって!」って(^^;)



 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

無線LANアクセスポイント、増えてくれませんかねー。初期投資4万、月々4千円でできるみたいだけど

2006-02-17 03:17:46 | Weblog

 昨日の、ニンテンドーDSでWebブラウザが出る記事、ヨーク考えてみたら。。

・うん?たしか、マクドナルドから無線LANってできなかったっけ?
・そしたら、マックから、無線LANでニンテンドーDSで、松井証券のWebページが見れるってこと??
・おお、マックから、発注できるのかなあ(^^)v

 と思って喜んだら。。。

 無残にも、期待が打ち消されました。

 ここです。(以下、斜体は、その、YAHOO BBの「おでかけアクセス」(マクドナルドのようなアクセスポイントからのアクセス)のFAQページから引用)

(マックがアクセスポイントとなるYAHOO BBのおでかけアクセスは)
Q.公衆無線LANインターネット接続を利用するためには何が必要ですか?

A.WiFi認定の無線LANカード(IEEE802.11b準拠)に対応したパソコンをご用意ください。
  なお、PDA、ゲーム機による接続については弊社サポート外となります。


 サポート外ですか。。。そうですか(;_;!)

 でもでも、どうも、ニンテンドーDSは、FREESPOTっていうアクセスポイントがあるみたい。

 じゃあ、そのアクセスポイントに行けば、無線LANで、発注できるのかなあ。。
 と思って調べてみたら。。。近くにないっす(>_<!)




 でもでも、そこをみたら、どーも、お店(飲食店など)が、FREESPOTのアクセスポイントになるための、導入キットっていうのがあって

 ここ http://www.freespot.com/owners/kit.html

さらに、FREE SPOT実現費用例(めやす)っていうのがあるんだけど、それによると(以下の斜体は、そこからの引用)


導入・初期費用        約33,500円(税込)
ランニングコスト・月額費用  毎月3,675円(税込)  


でアクセスポイントが作れるって書いてある。

うーん、これくらいなら、近くのお店とかも、導入してくれないかにゃー

ニンテンドーさん、ぜひぜひ、ドトールか、ベローチェに、FREESPOTのアクセスポイントになるように働きかけてください。

 おねがいりんこのぷー


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする