こんにちは!
フリーランスエンジニアのかたやまです。
今回は、IT用語のブラックボックスとホワイトボックスについて解説します。
ブラックボックスととホワイトボックスは、非常に理解しやすい内容です。プログラミング学習では、必ず理解しておくべき内容なので、しっかり理解しておきましょう。
難しい用語は使わずに、簡単に解説していくので、ぜひ最後までご覧ください。
ブラックボックスとホワイトボックスとは?
ブラックボックスとホワイトボックスをそれぞれ解説します。
ブラックボックスとは?
ブラックボックスとは「中身が分からない状態」です。ボックスという名前がついているので、箱でイメージすると分かりやすいと思います。直訳すると「黒い箱」なので、中身が見えない箱なんだなーと理解してください。
中身が分からないまま使用しているサービスはブラックボックスの状態であると言えます。例えば、以下のようなサービスは全てブラックボックスと言うことができます。
- Google検索 … 気になる言葉を検索すると、検索したキーワードに関連するWebサイトが表示される
- LINE … メッセージを打ち込んで送信ボタンを押したら、相手の携帯にメッセージが届く
- 電話 … 電話番号を入力して発信すると、電話番号の相手に電話がかかる
- キーボード … キーボードを打つと、画面に文字が打ち込まれる
- カメラ … 撮影ボタンを開くと写真を撮影して、写真フォルダに保存される
私たちは中身が分からなくても、これらのサービスを便利に使っていることが分かります。
ホワイトボックスとは?
ホワイトボックスとは「中身が分かっている状態」です。直訳すると「白い箱」ですが、ここでは透明の箱をイメージしてみてください。透明なので、中身が見える箱なんだなーと理解してください。
中身が分かっている状態なので、サービスの中身が丸見えで、過程もすべて理解することが可能です。エンジニア目線では、処理をすべて理解しておく必要があるので、作成したプログラムはホワイトボックスということができます。
ブラックボックスとホワイトボックスを知っておくべき最大の理由
ブラックボックスとホワイトボックスを理解したところで、「これを知って何の意味があるの?」と感じた方も多いのではないでしょうか?一見すると、この2つを区別することはメリットがないように思えますが、ブラックボックスとホワイトボックスを知っておくべき理由が明確にあります。
最大の理由
最大の理由は、「世の中には、あえてホワイトボックスの状態にしてくれているサービスがある」ということです。
世の中にあるほとんどのサービスは、ブラックボックスです。中身を見せることは技術の漏洩になり、真似される可能性があるからです。一方で、中身を見せているサービスもあります。このメリットは、世の中全体が良くなるということです。
例えば、食品会社の日清は、カップヌードルの製法を世界で初めて開発したあと、作り方を世界に公開しました。企業秘密にしておけば競合に差をつけ、ボロ儲けできたにも関わらず、すべて技術を公開しました。ブラックボックスだったものが、ホワイトボックスに変わったと言えます。これにより、世界にインスタントヌードルは広がり、今ではさまざまな種類のインスタントヌードルを口にできるようになりました。
IT業界でもこういったサービスがあります。世界の誰でも見ることができるソースコード「OSS」です。
OSSとは?
OSSとは、オープンソースソフトウェアの略です。意味は、「ソースコードが公開されているソフトウェア」のことです。
OSSとして最近話題になったのは、GoogleのAIエンジン「TensorFlow」です。なんと、Gooleが作ったAIの技術の中身を全世界の人が見ることができます。さらにTensorFlowの公式ページでは、AIの技術について話し合えるコミュニティ機能があります。
このように技術を公開することは、儲けより世界がより便利になることを目的しており、素晴らしいことだと思います。私たちはこの事実を知っておくと、将来使ったサービスをホワイトボックスにして、世界をより便利にするという選択肢を持つことができます。
派生用語
最後にブラックボックスとホワイトボックスの派生用語を解説します。ブラックボックステストとホワイトボックステストです。どちらもテストの方法を表しています。
ブラックボックステストとは?
ブラックボックステストとは、プログラムの中身がどうなってるかは気にせず、情報の出入りだけに着目して行うテストです。
サービスが使われるときに実際にどのような操作が行われるのか?どんな情報が入力されるか?を想定してテストを行うのがブラックボックステストです。中身が分からなくてもテストできるので、エンドユーザーなど開発者ではない人がテストを行うのが一般的です。
ホワイトボックステストとは?
ホワイトボックステストとは、プログラムの中身がどうなっているかに着目して、プログラム内のそれぞれの処理がきちんと動くかを確認するテストです。
プログラミングでは「順次」「分岐」「反復」のルールを使ってプログラムを完成させます。ホワイトボックステストでは、すべての「順次」「分岐」「反復」が正常であることを確認します。中身がすべて正常であることを確認するのがホワイトボックステストなので、中身の分かる開発者やエンジニアが行うのが一般的です。
※「順次」「分岐」「反復」の関連記事
たったこれだけ!3つの プログラミング基本ルールを 知る(順次・分岐・反復)
まとめ
今回の「ブラックボックスとホワイトボックス」の解説は以上です。
簡単にまとめると、ブラックボックスとホワイトボックスは「中身が見えない状態と中身が見える状態」と理解していただければOKです。
では、また次回!