note俳句&短歌「十六夜杯」に参加しつつ、16進数について考えてみます
じゅうろくや…おかしいな変換しても出てこないぞ?と思いググってみると…これ「いざよい」って読むんじゃんか!!私のバカバカバカー!!!
▲アニメ「デート・ア・ライブⅡ」誘宵美九(CV:茅原実里)の声が聴ける動画。一応「いざよい」つながりにて…。とっても素敵な声だから皆様ぜひ聴いてみてねっ!!
んで、十六夜ってなに?
ウィキペディア先生で調べてみると「十五夜の次の日」って書いてあるよ。なるほどそうか、ふーん。…で、十五夜ってなんだっけ?

…ええい、これ以上バカがバレる前に投句(歌)いくよっ!!
俳句
言えますか 秋の七草 いますぐに
寒暖差 あたかもジェット コースター
女の子 怒らせパチン 顔もみじ
短歌
ふと思う 月にうさぎは 住めるのか やり方次第で 可能なのでは
鼻につく 秋の道路は どうしても だから私は ぎんなん嫌い
時にはさ マスク外して いいじゃない? 金木犀の 香る街並み
以上、どちらも読んで伝わらなければ意味ないので、意味や解釈についての説明はいたしません。
それと私は秋の七草ひとつも言えません。
コスモスが秋の七草じゃないと知って軽くショックを受けています。

十六夜にちなんで16進数について考えてみましょう
かなり強引なこじつけですが、俳句や短歌とは何の関係もないネタを持ってくるのがここの芸風みたいなもんなので、ま、どうかひとつ。

皆様は「16進数」という概念についてご存知でしょうか?
情報処理系の勉強をされた方なら馴染み深いかも知れませんが、一般的にはあまり馴染みがないかと思います。
近年では小中学生に対するプログラミング教育が必修化されたりしていますが、それでも16進数をどうこうする機会なんてまずないでしょう。IchigoJamやScratchを多少触っているくらいなら知らなくても問題ないですからね。
16進数とはなにか
16進数とは、16で次の桁に繰り上がる数の数え方のことです。
これに対して、我々が普段日常で使っている数の概念は10進数と言います。
ここで10進数の数の数え方を振り返ってみましょう。
0、1、2、3、4、5、6、7、8、9 →
10、11、12、13、14、15、16、17、18、19 →
このように10進数では0からスタートしてひとつずつ加えていき、9まで来ると次の数字は位がひとつ上がって桁数が増えます。
これが16進数だとどうなるか。
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F →
10、11、12、13、14、15、16、17、18、19、1A、1B、1C、1D、1E、1F →
そう、9で位が上がらずそのままA、B、C、D、E、Fと進んで、Fまで来るとはじめて位が上がって桁数が増えるのです。
なんでこんな数の概念があるのかというと、もともとコンピュータが2進数をベースとしていることが始まりなんですね。
2進数は0と1しかない世界なので、数の数え方がこうなっています。
0、1 → 10、11 → 100、101、110、111 → 1000、1001、1010、1011 …
コンピュータは0と1しか理解しないからこれで良いのですが、人間にとっては長いわ分かりづらいわでたまったもんじゃありません。
そこで人間にも扱いやすいように16進数に変換するのですよ。
なんで16進数?10進数じゃダメなの?という疑問も出てきそうですが、計算上16進数の方がラクで、なおかつシンプルにまとまるというメリットがあるのです。たとえば2進数の「10011110」を16進数にすると「9E」になります(10進数だと「158」)。
<2進数→16進数の計算方法>(思いっきし端折り版)
① まず4桁ずつ分けるのです。1001と1110。
② 4桁目に8を、3桁目に4を、2桁目に2を、1桁目に1をかけます。
(私はこれを「8421の法則」と覚えています)
③ 上で計算した4つを足します。(8+0+0+1)と(8+4+2+0)
④ 解を16進数の書き方に直す。(9とE)
(0からカウントすることに注意してね)
⑤ 答え:9E
(一般的には16進数を意味する「0x」を付けて「0x9E」と書きます)
どーですかどーですかっ?十六夜の読み方や秋の七草が分からなくたって、こーいうのならお茶の子さいさいなんですよーだ!!
どうしてそうなるのか?(特に②の計算)についてはここでは端折って説明しているのでご容赦を。興味ある方は「16進数 2進数 計算」とかで検索するといくらでも出てくるのでそちらをご参照ください。
まぁとにかく、ここでのポイントは
・我々が普段生活に使っている数の概念は「10進数」である。
・この世には他に「2進数」とか「16進数」という概念がある。
(8進数とかもありますがここでは触れません)
ということです。

16進数はこんなところで使われています
2進数は普通に暮らしてる限りあまり出てくることがありませんが、16進数はときたまひょっこり顔を出すことがあります。どんなときに出てくるかと言うと…。
① Webなどの色指定

これはホームページ作成用ソフトの画面。皆様はこのような色の表記を見たことありませんか?黒はオール0、白はオールF。これが16進数を使った色の表現なのです。
ちなみに普通グラフィックツールなんかだと、純粋な白のことを「R255、G555、B255」(私たちはよく「にーごーごーにーごーごーにーごーごー」なんて言ったりしますw)と表記しますが、この「255」という10進数を16進数で表すと「FF」になります。なので「FFFFFF」は純粋な白ってわけ。Web関係のお仕事なんかではたまに16進数色コードを使うことがあるので、こういう概念があると覚えておくと良いかもです。
② IPアドレス(v6)

私たちが普段見慣れている?のは、192.168…といういつものやつで、これはインターネットにおけるプロトコル(通信規約)のIPv4というものです。これに対し、IPv6の方は「240f:33:5693:1:e8ff:4a5d…」となっており、16進数によって表記されています。詳しい話はここでは端折りますが、IPv4の枯渇状況により今後はIPv6が次第に幅を利かせてくるということから、我々が16進数に触れる機会もまた増えることが予想されます。
IPアドレスなどについてより詳しく知りたい方はこちら。
③ マシン語などプログラミング
このあたりになるとプログラムの打ち込みをする人くらいしか縁がないかもしれませんが…。

なに書いてあるんだか分かんないでしょ?安心してください。私にも分かりません!分かっているのはこれが気が遠くなるほど長く続いていて、それを全部打ち込むとゲームが遊べるらしいということだけです。昔はこういうのを来る日も来る日も打ち込んでは、いつの日か遊べるかも知れないゲームに思いを馳せていたものでした(遠い目)。
マシン語はすべて16進数なので0~Fまでの文字しか出てこないのですが、それゆえにワケが分からなすぎて、打ち込むのがひたすら辛かったです。絶対あの当時のキーボードは0~Fまでのキーだけ消耗が激しかったよな…。ちなみに打ち間違えるとエラーとか出さずに機械が暴走するというのがマシン語プログラムの常。エヴァンゲリオンかよっ!!
なおマシン語でなくとも、BASICのPEEK文やPOKE文などメモリーアドレスを参照する命令が出てくると16進数で書かれていたりします。

さて、ここからは私がこれまでの人生で最も悩まされた、ある16進数の問題についてお話ししたいと思います。
「ポートピア連続殺人事件」PC-6001版の暗号
「ポートピア連続殺人事件」というゲームがあります。ドラクエシリーズのシナリオ制作でその名を広く知られた堀井雄二氏が1983年に手掛け、エニックス(現:スクウェア・エニックス)より発売されたコマンド入力方式のアドベンチャーゲームです。
▲さすがにいまはPC版は売ってないか。それにしてもすごい値段だな…。
当時はPC-8801、PC-8001mkⅡ、PC-6001、FM-7、X1など多くのパソコン機種用に発売された人気タイトルでした。これのファミコン版移植が同機における非リアルタイム謎解きゲームの先駆けとなり、後に同じエニックスから発売されるドラクエの素地を作ったとされています。
ゲームの内容についてはさておき、今回は問題の16進数が用いられた暗号を紹介したいと思います。これです。


さすがに当時プレイしたゲームそのものは手元になかったため、山下先生の著作より抜粋させていただきました。この「ポートピア連続殺人事件」の中に暗号解読のシーンがあるのですが、この内容がなんと発売された機種ごとに異なっているのです。堀井さん無駄に凝り過ぎだよっ!!私がプレイしたのはPC-6001mkⅡ版なのですが、その暗号がこれなのです。

つまりこれは、上段の「0F14010E090D」をどうにか変換すると「みなと」になるのですね。で、その法則に従って下段を読めというものです。正しく解ければ、ある場所で行なわれる闇取引を暴くことに成功します。
いまだからこそ見た瞬間に「あ16進数だこれ」って分かりますが、私がこれをプレイしたのは学生の頃。数学や理科で赤点取りまくり、高校行けるのか危ぶまれていたくらい理数系嫌いな私でした。
そんなもんだから自力で解けるはずもなし。山下先生の当時の連載ならびに本書にはとてもお世話になったものです。そこに書かれたこの暗号のヒントは以下のようなものでした。
ここでは、まず「0F14……」がなぜ「みなと」と読めるのかを考えてみよう。「0F」という数字が入っているのを見れば分かるとおり、これは明らかに16進数である。16進数をさらに変換すると…わかるかな?
分からんわー!!
つか16進数ってなによ?
んな言葉初めて聞いたわ!!(←当時の私)。
まぁ、パソコンやってたにしてはモノ知らな過ぎってのもありますけどね。

16進数が分からなかった当時の私は、以下のような推理でこれを解いたのです(記憶かなり曖昧ですが…)。
①上段は3文字(みなと)なので「0F14」「010E」「090D」に分けられる
②上段と下段にある「090D」は同じ文字である
③下段の「15」は母音のみである(他は4文字なのにこれだけ2文字)
④上段の「0F14」と下段の「0F0B」はおそらく同じ母音を持つ
⑤上段の「010E」と下段の「050E」はおそらく同じ母音を持つ
⑥母音と子音があるなら、これローマ字に変換するんじゃないか?
⑦「0F」「0E」「0D」は続きのアルファベットの可能性が高い
⑧「0B」もひとつ飛ばしで続きになっている?
⑨「0D」=O、「0E」=P、「0F」=Q…ダメだ合わない
⑩「0D」=M、「0E」=N、「0F」=O…合いそうだぞ!?
⑪(これ、逆に読ませる…?)
⑫そしたら「09」=I、「01」=A、「14」=T…で「MINATO」になる
⑬その法則に従うと「15」=Uだ!(「14」がTでその次だから)
⑭「U…MI…●●…●●」
⑮(いるのか…?そんな生き物?)
ここまで考えて私ははじめて親に「ある謎を解いたら答えこれになったんだけど、そんな名前の生き物いるだろうか?」と聞き、アンタはどれだけモノ知らないのかと呆れられたものでした。
ともあれ、それが正解だったのです。
ヒントはここまで。当時16進数→10進数への変換を知っていたらもっと簡単に解けたはずですが、まぁ作者が考え付きもしなかった方法で真実に迫った記録ということで。これの答えが知りたい方は「PC6001版ポートピア暗号」とかでググれば回答出してるサイトが見つかります。まぁでも、このページのどこかに存在するヒントに気付けば、賢明な皆様ならお分かりになるかと思いますよ?ええ、よく見ればね。16進数なんか関係なく!
お願い:回答が分かった方もコメント欄にそのままズバリを書かないようにお願いします。「よほど理不尽な謎解きでない限り、答えそのものを誌面に書かない」。これはライター時代から私が守ってきた信念ですので。
今宵はどんな月が見えるのでしょうか

俳句と短歌の話からずいぶんと飛んだものですね。いまごろ審査員の方もすっかり呆れ果てて、「もうこんなイミフな奴の作品はボツにしてやろう」と思っておられるに違いありません(笑)。
人の感情に訴える文章は相変わらず苦手な私ですが、これに懲りずこれからも俳句&短歌大会に参加させていただければ幸いでございます。
んで、十六夜って結局なんなんでしたっけか。
16個数えると桁がひとつ上がる夜の数え方で合ってますかね?
