なぜ読んだのか
個人的な興味があって、以前よりElixir
というプログラミング言語を学んでいる。このElixir
の動作環境がErlangVM
というものであり、Erlang
というプログラミング言語を実行するためのものだ。このElixir
、Erlang
は高い堅牢性(robustness)を備えており、古くから金融システムや電話交換機に用いられているという。また、このErlang
という言語を作ったのはJoeを中心とした、エリクソン社という通信機器を扱うスウェーデンの企業であり、実装にはErlang
が用いられていたようだ
つまり、Elixir
の歴史を追う中でErlang
に出会い、Erlang
の歴史を追う中で、用途を調べた所、「電話」というワードに辿りついたわけだ。どのような実装がされているのかを理解するためには、電話にはどのような仕様が必要なのかを知りたいと思った
また、電話の仕組みは現代のインターネットのベースになっているのだという。インターネットの仕組みという現代においては抽象化された事象への理解を深めるためにもこの書籍を読んで見て背景を知ってみるのはアリだと思った
あとDr.Stoneで千空が携帯電話作ってたので、そんなこと出来るん?と気になり、気付いた時にはポチっていた
加入電話の仕組みってすげー
電話の仕組みは至ってシンプルだった。詳細はぜひこの書籍を読んでほしい。本当に面白い。電話の仕組みについて全く知らない自分でも、核になる部分の情報はインプット出来たと思う
ベースにあるのは、声、つまりは空気振動という現象を電波に変換して、電話線という導線を通じて、対象の相手側に伝えるという物理現象だ。また、声を電波に変換するということは声をバイト情報(0と1の組み合わせ)にして電波を利用して導線を通じて、相手側に送り出すという事と等しい。電波を利用して送り出したバイト情報を受け手側で復元することで音声を再生する。電話がこのような単純な仕組みで動いていることに驚きを隠せない。しかも、何十年も前にだ...
さらに関心させられたのは、どのようにして相手側を探索するのかという仕組みと、どのようにして接続を保証しているのかというところだ。相手を探すために、電話交換機という全国に設置されている接続を繋げるための媒体を巡る旅がスタートする。発信者のリクエストを元に電話交換機Aから電話交換機Bに。電話交換機Bから電話交換機Cにと、電話交換機自身に保持されている接続者情報を探し、対象の接続先を探していく。この経路を記録して、発信元に知らせる。このような作業は特定のバイトパターンをコマンドのように定めて行われている。例えば、「00001111」のバイト情報であれば「交換機Bで対象の電話番号を持つ接続者を発見しましたよ」というFINDというコマンドとして扱っているわけだ(これは例なので実際には存在しない)。これは現代のIP(インターネットプロトコル)と非常に似ているし、実際にベースになっているのはこの部分からだそうだ
そして、この探索した経路を元に通話回線(音声をやり取りするための回線)を繋げることで初めて、通話ができる状態になる。つまり、音声を届けるための回線と情報をやり取りするための回線は分かれており、通話をするために2本の回線が用意されている。
話すとまだまだ面白い話があるが、このぐらいにしておく。どのようにして、届けられる音声の順序を保っているかという話も非常に面白い
IP電話の時代になって
電話をするために従来の電話線を用いる方法からIP、すなわちインターネット回線を用いた方式に変化していく。しかしながら、ベースの仕組みは全く変わっていない。新たに通話のためのプロトコルをインターネット回線上で定めて、相手側を探すために互いにプロトコルをベースにデータ送り合うだけで、加入電話の時と行なっていたことはほとんど変化していない。IPアドレスをいかにして非公開にするかなど、加入電話の時よりもセキュリティに対する意識と注意が高まっており、どのように秘匿性を保持しているのかが面白い。今まで、曖昧な理解のままだったが、なぜ Gateway
やNAT
というものが必要なのかがよく分かる
全く同じ様な仕組みでIP電話が実装されていることに加入電話というものが、いかに洗礼されて設計されたいたかということに恐怖さえ感じる。仕事柄、第2部の話はすんなり頭に入ってくるので、第2部から読み進めて、第1部に戻るという読み方もありかもしれない
業務に直結しないものを読む価値はあるのか
ある。オススメしたい。直接的には役に立たないかもしれないが、インターネットの背景を知ることが出来るため、非常に勉強になる。内容も優しく読みやすかった。この本を読んでみて、「あれ、電話ってもしかして作れるんじゃね」と思った。まずは、振動を電波に変える装置から取り掛かろう。待ってろ、千空..
こんなすげー仕組みに使われていて、安全に動作しているErlang
半端ないって