今日も知らない街を歩くスマートフォン用の表示で見る今日も知らない街を歩く雑記に近い形でちまちま書いていきます。IT昨日からUbuntuを学習しています。インストールを終えて、いじりつつ参考になりそうなサイトを探して読んでいます。第1回」で、「バグ#1」という話が出てきました。Ubuntu道場!出典元はこちら。share"これを読んで、バグについて思った事を書きます。store.近所のPCショップに出かける。すると、どんなバグが発生するのか。pre-installed.MicrosoftなどのフリーでないOSがプリインストールされたPCばっかりで、UbuntuなどのフリーなOSがプリインストールされているPCはほとんど見かけない。皆さんはここにあるバグが何か、おわかりでしょうか。バグ#1のレポートはこう続けます。passes.売り場に並んでいるのはフリーなOSがプリインストールされているPCがメインであるべき、またUbuntuはもっと注目されるべき、そしてシステムというものはユーザーフレンドリーになっていくべきだ、と書きます。これはジョークの要素も含んでいますが、バグの本質をついています。バグというものは「こうあるべきなのにそうではない」ということを表しているからです。深刻なバグであるほど発見は難しい以下に二つガジェットを用意しました。どらちも「実行ボタンを押すと、今日僕が食べた夕飯をポップアップで表示する」というプログラムです。試していただければ幸いです*1。試していただけたでしょうか?それではこの二つのプログラム、バグがないプログラムはどちらでしょうか。正解は「どっちもバグがある」です。コンピューターはバグを教えてくれない1つ目はすぐにバグだとわかるでしょう。ボタンを押してもなにも反応がありません。原因は、javascriptをちょっとでもかじったことがある方ならわかると思いますが、ポップアップを出す命令「alert」のスペルミスです。alartになってます。これをalertに直してやれば、ポップアップが表示されます。ポップアップは正しく表示されたと思います。*2しかし、これもバグです。今日の僕の夕飯は鳥うどんだからです。天ぷらそばではありません*3。このプログラムの仕様は「今日僕が食べた夕飯をポップアップで表示する」なので、仕様を満たしていないことになります。「お前の夕飯なんて知らねえよそんなの!!」ごもっとも。僕の夕飯が何だったか知らなかった、それこそが問題なのです。何をやろうとしているかを「正確に」把握していないと、2つ目のプログラムをうっかり正しいと思ってしまいます。1つ目の事例を見た後だと、なおさらそう思うのではないでしょうか。明らかにおかしな画面が出たら誰もがバグだと思いますが、怖いのは、一見するとそうだとはわからないバグです。誰かが気付かない限りバグは発見されず、後々になって大きな問題を引き起こします。財務計算などで、エラーで何も処理できなくなるのは問題になるでしょう。大変な問題になるのは、一見処理が正常に終わったと思ったら、後になって金額や勘定のつじつまが合っていないことが判明する場合です。バグというとコンピュータープログラムの問題とみなされがちですが、本質は開発者と利用者の認識が一致していないことにあります。最近のみずほ銀行のシステム障害についても同じことが言えます。バッチ処理が予定通り終わらなかった、と聞くとコンピューターのトラブルと考えてしまいますが、根っこにあるのは「東京都内の特定支店の特定口座への振り込みが想定以上の件数に上った」こと、つまり開発者(システム側の振込想定件数)と利用者の認識(実際に振り込まれた件数)が一致していなかったことがそもそもの発端です*4。ある事について「どうあるべきか」という意見を統一するのは簡単なことではないでしょう。複雑なビジネスの世界ともなればなおさらです。したがって、どんなにコンピューター技術が発達してもバグは完全には無くならないし*5、今後もシステム障害が起こったというニュースは報道されるでしょう。それは決して不幸なことではないのかな、とも思います。前述のバグ#1のように、高度なバグはあるべき姿の再定義を行い、より良いと思われる在り方に変えられるチャンスを内包していると思うからです*6。執筆時間:1時間44分11秒(javascriptに手間取りました......。)*1:知らなかったのですが、はてなダイアリーってJavascript使えないんですね。クロスサイトスクリプティング対策のようですが、私見ではこれからjavascriptは利用するユーザーは増えてくると思うので、もったいないなあと思います。*2:テストはしたつもりですが、もし出ないブラウザがあったらごめんなさい。*3:ちなみにエビが嫌いなので、天ぷらそばを食べることは無いと思います。*4:逆に言えば、認識さえ合えばバグがバグでなくなることもありえます。スペースインベーダーの名古屋打ちは、開発者は意図していなかったもののプレイヤーは裏ワザだと思い、結果「裏ワザだよね」と意見が一致し、バグでは無くなりました。*5:そして瑕疵担保などの条件も含んだ形で、開発者と利用者の間で「仕様だ」「バクだ」という論争が始まってしまうのです。*6:あ、一応システムエンジニアのはしくれなんで、僕自身はバグなんて大嫌いだし、バグの作り込み防止や発見・除去は一所懸命にやりますよ。料理テーブルゲームはてなブログをはじめよう!TownBeginnerさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。