奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

完璧は不可能、でもそこに近付けるのがプロでは?

今回は、以下の記事について言及しつつ、後半は持論を展開するって流れです。

続 スキルの深広練

ん…まぁ本当は「バグが起きた」ではなくて「バグが起きて、その後、それに気づいた」なんだけど。で、その「気づいた」に、結構な高さのハードルがあるんだけど。
「気付いた」については、セキュリティなんかが典型的だと思います。
例えば、以下とか。

認識って一番難しいものよ?

また、PHPでいうと「htmlspecialcharsを書いたからXSS大丈夫」と思い、
「関数自体がバグっている事や、引数の指定が不十分である」事を「考えない」とか。
この辺は、いわゆる徳丸本をご覧になってみると良いかと。

また更にいうと、クラックにはJavaScriptが結構使われる事や、
iframeが脆弱性を生む可能性に「気付くか否か」とか。
一応念を押すと、「JSやiframeを使う === "100%"脆弱性になる」ではなかった「はず」です。
ここも、徳丸本をご覧になってみると良いかと。

なので、「気付くだけでもハードルがある」のはその通りと思います。
一方で、「気付かないって、"ある意味"幸せだよな〜」とも思いますがねぇ。

練度が一定以上になると、まず「29の軽微な事故」に相当する、いわゆる「汚いプログラミング」とか「明らかにおかしい設計」とかに、気づき始める。
例えば、いわゆるアクセサメソッドが無くて、変数がpublicとか。

また、PHPでいうと、
emptyや、==や、Shift_JIS5C問題や、非MVCな作りや、
オレオレ証明書https対応がOK(中間者攻撃への考慮は?)とか。
もう少し上流だと、Webで1画面に1000行以上の表がある(使い勝手どうなの?って部分において疑問)とか。
あと、これは汚いかどうかの意見が分かれる気もするのですが、
Javaで文字列の比較を「equalsではなくcompareToで行う」とか。
compareToは、戻り値から察するにソート目的に使うんじゃないかと筆者は思うのですが。
つい最近も見て、これで2度目になったので、どうなのだろうかと。

300の異常は、たぶん「いやな予感」とか「きな臭い匂い」という、相当に感覚的なモノ。ドレイファスの技能習得モデル( http://d.hatena.ne.jp/gallu/20100118/p1 )でいうところの、基本、達人クラスがもつ感覚。
筆者が達人なわけがないので、違うと思うのですが。
WindowsD&Dを「多用」している人を見ると、
作業は早いんですが「正確性」や「安全性」が微妙な印象がありまして。
なので、サーバマシン(Unixなど)を触らせると危ないと「感覚的」に感じています。
「雑」って言葉が、一番的確な気がしますね。
あと、そういった方を2人ほど見た事があるのですが、
「我流」って点も共通してますね。
「どんなに最低でも、その職業で10年、ものごっつがんばって」到達できるかどうかが不明、程度。
無理を承知で突っ込んでみたいです(笑)
達人になるには、やっぱり10年「も」かかってしまうものなのかと。
筆者はまだ、10年の折り返し地点にも到達していないので、
「先が長い」と感じてしまいまして(笑)
バグを「出してから対応」したい? それともバグが「出る前に対応」したい?
一番気になった点です。
以前は、「出るのは仕方ないし、出てから対応するで良いんじゃない?」と思っていたのですが、
最近は、「出るのは仕方ないじゃ、"お金を貰っているプロ"的にNGでは?」と感じてしまいます。

また、セキュリティの話ですが、
暗号の「寿命」とか、携帯の「かんたんログイン」とか、
「100%破られない"完璧"なセキュリティ」を構築する事が、
「不可能」なのは分かります。
でも、「可能な限り100%に近付ける為に努力するのがプロ」なんではないかと。
勿論、ガッチガチにセキュアにすれば、
上述のかんたんログインが無くなったり、
CSRF対策の一環として、重要な処理を行う前にパスワードを入力させたりと、
「セキュアだけど、使いにくいサイト」が生まれるのでしょうが。
あとは、「利便性とセキュリティのトレードオフ」という、
よくある話になるのではないかと。

ミスをしない人間は「いない」以上、
どちらにしても、バグは発生してしまうとは思います。
でも、その言葉を「完璧を目指さない為の免罪符」に使うのは、
筆者は疑問に感じてしまいますねぇ。
なので、「バグが"出る前に対応"したい」が筆者の考えですね。
というか、未来にツケを回すと、
自分が「想定していた以上」のツケが回ってくると、
経験則で思ってしまうのでっていう辺りが本音でしょうか(苦笑)