私がインターネットを好きになった理由(わけ)

とあるエンジニアがインターネットに興味を持って、インターネットに携わるお仕事まで辿り着いた軌跡です。
インターネット(ネットワーク)に興味を持っていただければと思い、長々と書かせて頂きました。
(「こういう人もいるんだ、へー」という程度で読んでください)

前置き

  • ここでは「インターネット」という単語をいろいろと混同して書いているので、曖昧な定義になっていることはご容赦ください

中学生時代

中学生の時に親がパソコン教室からもらってきたパソコンを触ったのが初めてだと思う

父親がインターネットに接続する契約をしてくれて、回線の種類は当時は ADSL はなかったから ISDN で繋いでいた。

プロバイダは親に言われたままのプロバイダを使った。
それが AOL との出会いだった (未だに AOL は存在しているらしい)

何も勝手がわからずに説明書を見ながら適当に繋いだ。
そこでいきなり海外の人からチャットが来た。
「hi」という発言だけだった。
AOL の接続ソフトに付属していたチャットツールは (おそらく) AOL の会員同士でチャットができるようになっていたのだろう。
何が起きたかわからないけど、 「hi」 とだけ返信した。そこから一言、二言拙い英語で話をしたと思う

そのやり取りの中で私は衝撃を受けていた。
大人なら「本当に海外から来たのだろうか」と疑うところだろうけど、当時の私は「海外の人から一瞬でメッセージが送られてきたんだ!」と完全に信じ込んでいた。

物理的にとても届くことがないくらい、遠い彼方から受信したメッセージにただただ感動していた。
無限の世界が広がった気がした。

片田舎に居たから尚更その衝撃は大きかったのかもしれない。
家ではしばらく AOL でチャットをする生活が続いた。

その頃、中学校ではネットに繋がるパソコンが導入された時期だった。
教室に設置されたパソコンを使って、友人が INTERNET CLUB のみんなのチャット(?)をしているのを見かけた。
そのチャットにはアイコン付きで話ができる機能があって「自分の好きな画像を設定してチャットできるなんて楽しそう」と思って私はこっそり家でやることにした。

そこで様々な人と話して知り合いになり、中学生にも関わらず、大阪や東京に遠征して、今で言うとオフ会もしていた。

技術的な話をすれば、当時のチャットは今の用語で言えば XSS(cross site scripting) 対策なんてされていなくて、発言の中に HTML タグを書いて、自分の発言に色をつけたり、太字にしてみたり、とチャットルームの皆と遊んでいた。

あまりにも迷惑な「荒らし」が居たときには、その穴を利用しつつ、謹製のツールで荒らしを撃退する、なんていう大人げない人も居た。
私もそのツールのソースコードを見せてもらったけど、当時の自分にはサッパリ理解できなかった。
(記憶が正しければ Perl で書かれていたと思う)

この頃だろうか、Windows XPで大流行した MSBlast というワームが猛威を奮っていた

ワームに攻撃されると、インターネットに繋いだ瞬間、ものの数十秒で Windows が強制的に再起動させられるというものだった。
自分のパソコンが攻撃されて勝手に操作されてしまう、というところにも変に感動した覚えがある。
「なんで見ず知らずの人から攻撃を食らうのだろう」と疑問を覚えて調べたこともある。
ここからインターネットセキュリティに関する興味を持ち始めた頃だと思う。
(アングラサイトを見たりとかハッカーの教科書とかを買って、全然理解できずに大失敗した頃)

とりあえず、この危険から逃げるにはルータというものを買うといいらしい、と調べて分かった。
そこで自分の小遣い(もとい、お年玉)を使ってルータを買った。説明書を見ながら設定して、インターネットにもう一度繋ぐとピタッと止んだ。

ルータが何をしているものか分からなかったけど、安心してチャットができるならそれでいいや、という理解だった。
この事件があってから「グローバル IP アドレス」と「NAT」という技術がある、という単語だけ見て分かった気になっていた。
この頃はとにかくインターネットを使って人とコミュニケーションを取ることに夢中になっていた。

遠く離れた人とコミュニケーションを取って、実際に会って話をすることもできる、というシンプルな「繋がり」が自分を熱狂させたんだと思う

高校生時代

高校生時代は MMO RPGにただただ没頭していた。

TalesWeaver という Nexon が提供しているゲームでリアルタイムにキャラクター同士で RPG ができるゲームだった。(ラグナロクオンラインはその頃には有料化されていた気がする)

このときにはゲームが好きだったのもあって一人で黙々とレベル上げをしていたりしていた。
その後、ある程度レベルが上った後、ギルドに所属してギルドメンバー同士でダラダラとチャットもしていた。
この頃はオンラインゲーム上にある独自の文化のようなものに出会った時期でもある。

RMT(Real Money Trading. 強いキャラクターのアカウント情報やアイテムを実際のお金で売買すること)やチートの方法(ゲーム内部での不正行為)などなど。
ゲームの仕組みが気になって「通信を見る方法」とか適当なワードで調べて、パケットキャプチャを知り、どんな通信をしているか中身を覗いてみることもあった。

この頃にはサーバとクライアントという概念を薄っすらと知った時期だと思う。

大学生時代

大学生時代にはバイトで IT に関わるバイトをしていた。
Web プログラミングが主だったけど、社内のネットワークの設定もしていた。

他には、会社のホームページを公開するために DNS サーバを立てて、ドメインを管理してくれる会社のページで設定もしていた。
当時 DHCP のことを深く知らなくて、社員全員の PC に社内 DNS サーバのアドレスを設定して回ったと思う(今思うと恥ずかしい)

周りでは詳しい友人が居なかった(見つけることができなかった)から、ほぼほぼ独学だった。
大学3年生になり、研究に集中するためにバイトの頻度を減らし、研究室に篭もるようになった。

そこで出会ったのが Cisco 1812J というルータだ。
研究室に置いてあったが、誰も設定できる人がいなかったため、放置されていた。
ネットで値段を調べると高額なものだったため、「もったいない」と思った。

何かの活用方法がないかと先生に相談をした。
研究室では回線を2つ引いていた。
そこで先生から「学内への通信は学内のプロキシサーバを通して、それ以外のインターネットアクセスはもう一つの回線に流してくれ」と依頼を受けた。
(ルータにはポリシールーティングの設定をすることになる)

できる自信があったかというと、過剰な自信だったかもしれない。
当初の甘い見積もりは打ち砕かれ、徹夜で研究室のルータの設定をしていた。

数日研究室に篭って、思った通りのトラフィックが流れたときには何ともいえない感動を覚えていた。
「トラフィックを操ることもできるんだ」と。

そういった経緯を通して、「ルーティング」や「IPアドレスの仕組み」を曖昧ながらも知った。
設定したネットワークを皆が使ってくれるという経験が「インターネットを使う側」から「作る側」になりたい、と思うようになった。

また、この頃に「なんでインターネットに繋がるんだろう?PPPoE ってなんだろう?」と、技術的な要素を含んで疑問を持つようになってきた。
そのことについて、いくらインターネットを調べても、自分の調べ方が悪かったのか一向に情報が出てこなかった。

この疑問は就職するまで持ち越すことになる。

社会人時代

大学を卒業して、とある会社に就職した。就職した会社では自分が得た曖昧な知識がどんどん埋められていった。

「MAC アドレス」や「ルーティングプロトコル」、「トンネリング」 etc …
(その会社の面接で「L2スイッチとL3スイッチの違いは?」と言われて、ドヤ顔して思いっきり間違えた回答をした記憶がある)

その会社ではインターネット(ネットワーク)を「使う側」から「作る側」になった大きなターニングポイントだった。
厳密に技術要素を理解をしないと通信ができないし、ろくな改修もできない。
曖昧な状態では仕事を進めることができなかった。

とある日、仕事の中で通信プロトコルを実装する機会があった。
その時にも自身が思っていた以上に要求される知識が多く、悪戦苦闘していたと思う。

ping(通信を確認するためのコマンド) や tcpdump(パケットをキャプチャするコマンド) をしてみるも、自分の実装した箇所で OS 自身が panic して死んだりする。 (デバッグ方法も今思えば遠回りなことをしていたと思う。)

結構な月日をかけて実装に見通しが立ってきた時に、すんなり ping が通ったときがあった。
実装が上手く行かず憔悴していた私は「また自分が設定を間違えて通っただけだろ」と思っていた。

パケットをキャプチャすると、ちゃんと自分の実装した箇所を通っているのが確認できた。
苦労したのも相まって、感動もひとしおだった。

この時に「ping が通ったら感動する」ということを覚えたような気がする。
自分が作った成果物の上をパケットが飛び、機器同士で通信ができるようになった時には、やっとインターネットを「使う側」から「作る側」になれた気がした。

そして今

なんだかんだあって、今は Web 系の企業に転職した。
今もインターネットに近いところで仕事をしていて、運用のお手伝いをさせてもらっている。
今も以前の知識を使って楽しく働いている。

最後に

昔と比べて今のインターネットは構成している技術自体が複雑になっているし、「動いて当たり前」のような環境になっている。
今から「作る側」として学ぼうとすると、ハードルは上がっているかもしれない。

けれど、一見複雑に見えるかもしれないインターネットはシンプルな技術から発展してきているから、決して理解不能なものではないと思う。「巨人の肩の上にのる矮人」という言葉があるが、まさしくそれを実感する分野だと思う。

ゆっくりと紐解いて、ポイントを抑えていけば繋がる理由は必ずある。
今のインターネットに対する「あって当たり前」はある意味最高の褒め言葉なのかもしれない。

長々と書いてきたけど、結局自分は今でも「繋ぐ」ことが楽しいのだ。


TaskBoard という箱庭プロジェクトをやっている

Github は以下

こうやって自分用の実験用プロジェクトを持っているとなにかを試すときにも便利だったりしてよろし
omniauth 導入しようとしたけど、なんか連携を複雑にしすぎたので一旦は pending にしようかなと。

LDAP 連携とかも実験しておきたいなぁ


Destiny2: ギャンビット/クルーシブル/ヴァンガードストライク アーマー一式の情報サイト

海外勢のこういうまとめサイトを作る気力はすごいですね。

とにかく地道に狩るしかないですね(;・∀・)


Wordperss Markdown Editor + WP Code Highlight.js で快適記事執筆環境

Markdown Editor

WP Code Highlight.js

WordPress の記事を Markdown で書きたかったので、 Markdown Editor を入れました。

Markdown Editor デフォルトだとシンタックスハイライトがいい感じにされないので、 WP Code Highlight.js も導入。

Syntax Highlight はこんな感じ

def hello
  puts "world"
end

Markdown Editor は Side-by-Side もあるのでとても便利。


Ruby on Rails で Token base authentication(JWT) と OmniAuth を組み合わせて使うと「OmniAuth::NoSessionError (You must provide a session to use OmniAuth.):」と言われる問題の対処

こんな感じで書くといいっぽい

Doing this at ApplicationController:

class ApplicationController < ActionController::API
  before_action :skip_session
  ## Skip sessions and cookies for Rails API
  def skip_session
    request.session_options[:skip] = true
  end
end

And adding this in application.rb:

config.middleware.use ActionDispatch::Session::CookieStore

As @betoharres says, it’s ugly but works for now.

確かに上手くいったけど、なんでこれで対処できているのか分からんのであとで調べる


買った: BASYS 3

リファレンスはこちら


欲しいもの: Lattice iCEstick (FGPA)

Digi-Key はこちら。

 

こんな使い方をしている人もいるらしい。

ブレッドボードに挿して、スイッチと連動するっていいね。

 


感想: CPUを作る TD4への道

最近はこういうのを見て楽しんでいる。

TD4 と大きく異なるのは ROM 自体は PIC を使って実現していること。

PIC はからっきしなので使えたらカッコいいなぁ。

74HC181 自体の供給も減ってきているし、はてさて FPGA で作ったほうがいいかなぁ、という思いを個人的に抱いている。

 

なんでこういった読み物にたどり着いたかというと、 555タイマーに挟んだコンデンサの意味が分からん、となっていたから。

コンデンサの役割はここで理解しつつ、プルアップの記事も読んだ

分圧や分流の仕組みが実は知ったかぶりだったらしい。丁寧に解説されていて、LED が光らない理由も明確になった。

 

ハードは理科の実験みたいでチマチマしているけど、確実に進んでいる感覚があって楽しい(∩´∀`)∩


気になっているFPGAボード

DE10-Lite

MAX10 載っているのでいい感じかも

 

 

 

Other

色々学習の過程が書かれていてよい。あとで読む