コミケの最中だ~
そんな事とは関係なく、前回「アウトソーシング環境構築」のエントリィで書いたお話にちょっと通じるかな~っていうのを見たので、自分の胸に杭を打つために書き留めておく。「joコマンドさようなら、俺はパイプが好きだから。PART 1 §そしていつものお小言」がそれなんだけども、端的に刺してきてグエー死んだンゴってなったな。
有用なツールやらライブラリが増えて、コピペプログラミングはめちゃくちゃ楽になったけれども、その背後にあるアルゴリズムとかに気を配れないと、特定のツールに特化してしまうという危うさを孕んでいるぞ~、というお話。便利なアプリケーションであっても、その裏には絶対に基礎的な部分があるんだよな。そこから目を背けていると、変なものを掴まされた時に、それに気付く事すらできない。
かと言って、必ず基礎的な部分を知っておくべきなのか、というのは、実際のところそうとも言えないんだよな。
抽象化・モデル化・モジュール化・低レイヤーの隠蔽などは工学や技術の発展における必須要素という理解なので,上のレイヤーの理解には下のレイヤーの理解が必須(「推奨」と明確に区別せよ)という言説・状況は,個人的には,工学や技術の発展を阻害する要素という認識であり,駆逐・排除の対象です.
— Akso de la Malbono (@Cryolite) June 18, 2015
ヒェ、駆逐されてしまう。いわゆるレイヤーの概念は、下位=より物理的、基礎的な知識・技術を、包括してひとつのアプリケーションとして提供して、上位=より発展的なプロダクトに対して、目を瞑ってでも下位レイヤー部分の利用ができまっせ~という形で提供されるわけだけれども、これってある意味「技術の目指すべきところ」なんですよね。
アウトソなんちゃらのエントリでも「スイッチを入れると電流が流れるから~」と書いたけど、私たちの生活の中で、スイッチと電圧・電流の流れ方の関係なんて気にしなくてもいいし、そこを考えないといけない、というのは工学の敗北たりえるんだよな。AC100Vは壁内配線ないしコンセントというものに内包されていて、私たちがそれを接続し使用するときはコンセントのオスメスさえ気にしていればいい、という状況は、まさしく低レイヤー(物理的配線)がモジュール化されて、現に使いやすくなっているわけなのだから。今は50Hz/60Hzすら殆ど気にしなくてよくて、Plug&Playな世界にどんどん近付いている。
パソコンの世界も同じで、TCP/IPとかにあるようなレイヤーモデルによって、結線するだけで、DHCPとかなんとか自動でネゴってくれて、ユーザーはL2とかL3とか全く気にする必要なく使えるし、ブラウザを起動すればすぐにHTTP/HTTPSで様々な情報リソースにアクセスできちゃう。あるいはHTTP/HTTPSの区別も殆ど付きづらいレベルになっているし。
なおかつ、レイヤーが分かれることによってメンテナンス性も上がる。それこそユーザーが気付かないうちに、低レイヤーの部分も進歩を遂げている。それが可能なのは、レイヤー間のプロトコルさえ後方互換が保たれていれば、機能の追加とかメンテナンスを、他のレイヤーと独立で行うことが出来る、という工学的なレイヤー化の成果なんだよな。
マシン語信仰とか低レイヤー信仰とかがかなり嫌いで、1つの理由は工学はそういうのからの解放がテーマじゃんってところで、もう1つはお前らは最近の命令セットとかコンパイル時最適化のやばさを見ずにz80みたいな世界観で低レイヤーを語るんじゃねーよ!みたいなところ。
— ふじよし (@Fuji_Yos) August 22, 2019
低レイヤーだから昔と変わらない、なんて事は勿論なくて、そこの知識をアップデートしないままの視点からものを語っていると、やっぱり不幸しか招かないわけだよな。分かっていないなら、無理に首を突っ込まないで、黙って低レイヤーの恩恵を受けていればいいのだ。まぁ知識をアップデートできていない事に気付かないってのが一番不幸なんですけどね。
じゃあ低レイヤーに手を入れないなら低レイヤーの知識は不要か?というのも別の話で、ひととおりの知識くらいは持っておいた方が良いし、低レイヤーに起因するトラブルに巻き込まれたときに死んじゃうと思うんだよな。インターネットに繋がらないという時に、ルーターがおかしいのか、LANケーブルが断線したのか、それともパソコンのLANカード側がおかしいのか、あたりの切り分けはできておきたいよな。
そしたら俺低レイヤー極めてくるから…
情報工学はレイヤーが高すぎるので物理学をやって宇宙の根底を理解することで初めて情報工学を理解できます
— すとんりばー (@strvert) December 20, 2018
これになった