6歳の息子が図書館から借りた本の一つに「かっぱのてがみ」というお話しがありました。読み聞かせたところ、これは「データ」や「プログラム」、「プログラムの書き換え」、さらに「情報セキュリティ」に関する示唆に富んだお話しだと気づきました。
6歳の息子にはまだそんな話は早いのですが、この記事ではまずコンピュータサイエンスの重要な要素である「データとプログラムの同一性」についてお話ししようと思います。インターネットを介した金融サービスの安全性や、遺伝子治療の原理を例として挙げることで、コンピュータサイエンスは世界の動作原理に関わる「理学分野」でもあることを理解してもらえることと思います。
「かっぱのてがみ」のあらすじ
まずはあらすじから。
- 男が正体不明の人物(じつは河童)から手紙を託される。海辺で合言葉を叫ぶと現れる人物に渡してほしいというので受諾する。
- 手紙を開けてみると何も書いていない。これは河童の手紙だと気づく。
- 手紙を水に浸けてみると内容が読めた。なんと「この手紙を持ってきた人間を食べてください」と書いてある。
- そこで男は手紙を書き換える。新たな内容は「この手紙を持ってきた人間には世話になったのでお礼をあげてくれ」。
- 男は海に到着し、合言葉を叫ぶ。現れた人物(こちらも河童)に新しい内容の手紙だけを渡す。
- 男はたくさんの海の幸を受け取る。これ以降もずっと。
というお話しです。
息子が借りた本はこれです。
- 「かっぱのてがみ」、教育画劇
類似のお話で、ネットであらすじが確認できるのは以下。こちらも参照してみてください。
コンピュータサイエンスの眼鏡で見ると
それでは、このお話しをコンピュータサイエンスの眼鏡を通して見てみましょう。
そもそもこのお話しは、陸の河童が海の河童にお手紙を書いたことから始まります。その手紙が「データの伝達」つまり事実を伝えるためのものであれば誰にも何の問題も生じないはずでした。図では「元気です」という事実を伝える手紙を示しています。確かに何の問題もないですね。
しかし実際は手紙は「この男を食べてください」という指示文、つまりプログラムでした。そして。このお話しでは、海の河童は受け取った指示文つまりプログラムをそのまま実行する存在です。つまり、海の河童はコンピュータと同じ働きをしていますので、図でもコンピュータのコンプくんを示しておきましょう。
さて、このプログラムの内容を探り出した男は驚きます。これを海の河童に渡すと、自分が食べられてしまうのですから。どうしたらいいのでしょうか?
プログラムの書き換えによるコンピュータの動作の変化
そこで男が取った行動は、コンピュータサイエンスを知る人にとっても知らない人にとっても賢明でした。なんと陸の河童の手紙の内容、つまりプログラムを、自分に都合のいい内容に書き換えたのです。
海の河童はコンピュータと同じ。受け取ったプログラムをその通りに実行します。ですので、海の河童はプログラムで指示されたとおりに、男にお礼としてたくさんの海の幸を贈ります。めでたしめでたし。
この昔話は、コンピュータサイエンスにおける重要な概念をいくつも含んでいます。列挙してみましょう。
(1)コンピュータは受け取ったプログラムのとおりに動作する。
繰り返しますが、海の河童はコンピュータと同じ働きをするものとして描かれています。そもそも、コンピュータは「指示どおりに作業する人間」を理想化したものですので、これはまさにコンピュータサイエンスの真髄と言えるでしょう。
(2)「手紙」はデータでもプログラムでもありえる。
これも重要です。コンピュータに指示をするプログラムは、それ自体がデータでもあります。ですのでそれを書き換えることができるのです。
これは「データとプログラムの同一性」とも呼ぶべきもので、現代の全てのコンピュータが従っている「プログラム内蔵方式」の特徴の一つでもあります。
これはあまりに当たり前に思えるかもしれませんが、1940年代から50年代のコンピュータ黎明期においてはまったく当たり前ではなりませんでした。プログラムはプログラム、データはデータであって、プログラムをまるでデータのように扱うことはできなかったのです。
今のわたしたちは、データとプログラムが同じものであることを経験することができます。新しいアプリをPCにインストールするときに、インストールファイルをダウンロードしますね?そのファイルは画像やメールのようなデータと同じようにネットワークを経由して送られてきます。しかし画像やメールと違って、その「データ」は「インストール」つまり実行することができる「プログラム」なのです。
(3)データと同様に、プログラムは書き換えることができる。
これは男が取った行動です。画像データや文書データを書き換えることができるように、プログラムも書き換えることができます。書き換えたプログラムを受け取ったプログラムは、何の疑念ももたずに書き換えたプログラムのとおりに動作するのです。
悪用もできる「指示文の書き換え」
プログラムの書き換えは、日常的にあちこちで起こっています。たとえばOSやアプリのアップデート(更新)。これも最新のプログラムに「書き換える」ことでOSやアプリの動作を修正するものですね。
しかしここでは一つ、プログラムとまではいかないような「指示文の書き換え」の悪用例を挙げましょう。それは「ネット送金をターゲットにした犯罪」です。

ネット送金をターゲットにした犯罪例です。被害者が送った振り込み指示の内容を書き換えることで犯罪者が被害者のお金を盗むことが考えられます。実際には、このようなことが起こらないように様々な情報セキュリティ対策が取られています。
被害者が何らかの理由で親戚の口座にお金を振り込もうとしたと想定します。その指示が犯罪者の手に落ちて、書き換えられてしまったとします。もしそれを受け取った金融機関がその指示を実行していまうと、親戚の口座ではなく犯罪者の口座にお金が振り込まれてしまうかもしれません。もちろん、このようなことが起こらないように様々な情報セキュリティ対策が取られていますが、もしそのような対策がなかったとしたらどうでしょうか。ネットワークの便利さを守るための、情報セキュリティ技術の重要性が理解できると思います。
遺伝子治療も「プログラム書き換え」として理解できる
もちろん、プログラム書き換えは様々な良い目的のためにもつかわれています。ここではコンピュータと一見関係なさそうな分野から「遺伝子治療」を例に挙げてみましょう。
遺伝子とは何でしょうか?それは地球上の多くの生物の細胞の中に格納されたプログラム。A・G・C・Tの4文字アルファベットで書かれていて、その内容によって細胞のはたらきがコントロールされているのです。
コンピュータでは0と1の二種類の記号で書かれたプログラムで動いていますが、生物は4つの記号で書かれたプログラムで動いているといえますね。
参考情報:
ところで遺伝子に書かれた内容に誤りがあったらどうなるでしょうか。プログラムに誤りがあってもコンピュータはそのまま実行してしまうように、遺伝子に誤りがあっても細胞はその通りにはたらきます。結果として、細胞の健康を損なうことがあったとしてもです。
そのような遺伝子に起因する細胞の機能不全を修復する手法として遺伝子治療があります。細胞の遺伝子を書き換えることで、細胞が正しくはたらけるようにする先端的な医療技術ですね。それを今回のプログラム書き換えとして捉えると、下のような図になります。
遺伝子はプログラム、そして細胞はプログラムどおりに動作するコンピュータと考えると、遺伝子治療はプログラム書き換えであることがわかると思います。
「データとプログラムの同一性」や「プログラムの書き換え」はコンピュータサイエンスの根本概念の一つですが、その応用範囲はコンピュータ分野だけに限定されないのです。インターネットを介した金融サービスの安全性を守るためにも、遺伝子治療で多くの人を助けるためにも、これらのコンピュータサイエンス概念の理解が前提になっています。
日本ではあまり知られていないコンピュータサイエンス。これは、
- 世界の根本原理に迫ることを目的とした理学
- そしてそれを応用して便利なものを作ることを目的とした工学
の両方の要素を併せ持った、とても刺激的な分野であることがお分かりいただけたのではないでしょうか。
ホーム画面に戻るにはここをクリック
関連記事:
- 「コンピュータって何だろう」、かながわグローバルIT研究所、2016年2月16日
- 「不思議な2進数」、かながわグローバルIT研究所、2016年2月16日
- 「小鳥の数と2進数」、かながわグローバルIT研究所、2016年5月20日
- 「ディープラーニングと昔話「茶・栗・柿・麩(ふ)」」、かながわグローバルIT研究所、2016年4月28日
(かながわグローバルIT研究所 森岡剛)