カーネルが説明できないのなら聴きなさい
「この番組はエンジニアの成長は楽しい学びからをモットーに、昨日より少し成長できる学びを届けるエンタメ系テックラジオです。ということで」
「ふん」
「えー、本日ですが」
「はい」
「まあ、聞き終わったら」
「うん」
「やや鼻高になる系」
「おお」

「エンジニアなら知らなきゃいけないけど、あんまり自信持ってしゃべれない系のお話で」
「来た。うんちくだ」
「うんちく。うん、うんちく、うんちく。常識」
「常識」
「常識かな」
「常識」
「はい」
「おお」

「というのでじゃちょっと、あのー、順平のビフォーアフターを撮る回なんで今日は」
「うわー」
「久々のね」
「来た」
「おもちゃにされてるね」
「来た。大事」
「順平くんにちょっと1個説明してほしいんですけど」
「はい」

「カーネル」
「え、カーネル?」
「カーネル」
「おお」
「カーネルって何ですかっていうのを、あの、後輩に聞かれましたと。順平さん、順平さん、なんかカーネルってこれ、何ですか、ケンタッキーですかっていう質問に対して何て答えますかと」
「うーん、そうだね、サンダースだねって答えますね、まず、まず」
「サンダースね」
「まずね」

「はい」
「行ったね」
「はい」
「何歳付き合ったよ、ひゃな」
「優しい」
「60何歳?」
「うーん」
「で」

「で」
「っていうのは置いといて」
「うん、優しい先輩」
「うん」
「付き合ってくれるんだね」
「なんかこう、コアに近い感じのやつっていう」
「うん、うん、うん」
「あのー」

「何の?」
「コンピューターの、あのー」
「コンピューターの」
「PCの、なんか大元のやつの、コアの一歩手前かな」
「なるほど。地球で言うとどれ、どの部分?」
「地球で言うと」
「どういうことやねん」
「地球で言うと真ん中にマグマがあったとしたら、それがコアで、その周りにあるこうマグマを包んでる土の土たち」

「プレートってこと?」
「プレートですかね、はい」
「なるほどね」
「はい」
「っていうのが」
「はい、ありがとうございます」
「カーネルです、はい」
「はい」

「という順平くんがなんと今日のエピソードを終えると、まあカーネルってこういうもんだよねっていうなんかそのちょうどいい抽象度ぐらいのサクッとした説明と」
「うんうん」
「であとはまあついでに、あのーLinux系OSっていうのかな、Unix系OSっていうのかな」
「うんうん」
「の、まあなんか進化とともになんかカーネルの機能ってこうやって増えていきたいんやなーみたいな、まあちょい話ができるようになるというのが今日のエピソードのテーマになってます」
「おおー」
「はい」
「好きな話だ」

「ちょっと補足いただければ非常にありがたいなっていう感じなんですけど」
「あ、いや、あの、でも俺詳しくないよ、ここ」
「はい」
「うん」
「詳しくなっていきましょう」
「さっきの大丈夫ですか」
「でもね、ちょっと俺カーネル話1個あるんですけど」
「はい」

「あのー僕、新卒のときに営業をやってたんですね」
「うん」
「で、えーと2年目ぐらいのときに、あのーよーし俺はフィリピンに行くぞって決めて。で、俺はエンジニアなりたいんだって言ってて」
「うん」
「で、そしたらあの1個上の先輩で、えー未経験でエンジニアで転職してきた人がいて」
「うん」
「ま、えーと俺よりあとに入社をしてるんだけど1個上の先輩ですね」
「エンジニア職として?」

「として」
「はい、はい」
「未経験で転職してきた人がいて。で、えーその人がなんかそのさらにエンジニアの先輩の人とこう朝活で勉強してるみたいな」
「うん」
「俺、俺混ぜてくれやつって言って」
「うん」
「あの朝7時とかに、8時かな、8時ぐらいに出社して。Orileの詳細Linuxカーネル第3版みたいななんかクソ分厚いやつを、の輪読会みたいなやつに参加して、1ミリも付いていけなかったのを思い出しましたね、今」
「すっごい低レイヤーの本読んでんの、すげーな」

「普通に」
「好きなのかな」
「いや、まあ不思議だよね。1年目の人がやる勉強会でもなければ、未経験の人が食いつきに行く勉強会でもなかったと思う」
「なんかとにかく難しそうな本取って読んでみようの回だったんすかね」
「なんだろうね。ちょっと始まりの経緯知らないんだけど」
「はい」
「うん」
「っていうカーネル話」

「カーネル話」
「はい」
「思い出がありますね」
「そこまで深い話じゃないんですけど、今日はあの紹介、パフォーマンスチューニングという本の、えっとOSっていう章があるんですけど」
「うんうん」
「まあOSの章で、まあ特にフィーチャーされてたのがまあカーネルの話だったという感じでしたと。まあこの本では結局そのパフォーマンスをどうチューニングしていくかっていうことが書いてる本なんですけど、まあパフォーマンスチューニングする上で、まあ結局ボトルネックなんだよねっていうことを、まあエンジニアとしては知らなきゃいけないわけで。で、ボトルネックを知るためには、じゃあそのOSの中ってどう動いてるんだっけっていうところをスケスケにする必要があるよねというので」
「うんうん」
「えーひたすらOSについて書いてるというのが、まあOSの章になります」

「おもろそうな本だな、それマジで」
「おもしろいですよ。ただ」
「うん」
「あの多分おそらくLinux、しょう、紹介Linuxカーネルでしたっけ」
「うんうん」
「あっちに比べたら全然大したことないと思います」
「うーん」
「はい」

「うーん」
「まあ結構、まあ肌感としてはさらっと撫でてる感じですね、全体を」
「うんうんうん」
「なんかそのぐらいのレベル感だったなと読んで思いました」
「ほう」
「が、まあポッドキャストならそのぐらいでちょうどいいだろうとは思ってます」
「確かに」
「はい。というのでじゃあちょっと早速中身入っていくんですけど」

「はい」
「えーとまずカーネル。カーネルって何ですかというとですね、えーまあOSの中にあるものです」
「うん」
「概念的には。まあOSって言ってるのは、あのーいわゆる。コンピューターの機械を、ハードをまあ操作して、人間がうまく操作できるようになんか仲介してくれてるまあソフトウェアですね、OSはね」
「うん」
「うん。で、その仲介してる中でも、えーカーネルはハードウェアやCPUスケジュリングを管理するプログラムになってます。つまり、順平が言ってたとおり、あのパソコンって、まあレイヤーで言うと一番下に物理層があるんですよ、多分ハードウェアね」
「うんうん」
「ハードウェアの一歩手前です、カーネルは。ハードウェアを直接操作するプログラミング、プログラムです」

「あーじゃあハードウェアはマグマ」
「コア?ちょっと待って、これ地球のね、地球の知識なさすぎて。あれなんだけど」
「地球は1回忘れました」
「ちょっとなんかね、マグマなんか血液管あるからなんかもっと言うと電気信号とかなんじゃないかって思っちゃう自分もあるけど、まあ実際分からんですね」
「はい」
「まあなので、まあカーネルはその特権モードで動作してハードウェアやCPUスケジュリングを管理するようなプログラムになってます」
「うん」
「で、えーと、まあちょっとこれも紹介なんですけど、CPUが動作する上で、CPUってなんか処理するじゃないですか、なんかを」

「うん」
「そのときに権限が2つあるんですよ。1つがユーザーモードで、もう1つがカーネルモードってやつ。特権モードというやつになります」
「うん」
「で、1つ目のユーザーモードっていうのが、あのよくあるアプリケーションが動くモードで」
「うん」
「で、これは直接ハードウェア触んないっす」
「うんうんうん」
「で、もう1個はカーネルモードと呼ばれるもの、特権モード、まあ別名特権モードと呼ばれるもので、カーネル、特権モードだけがハードウェアを直接操作することができます」

「なるほど」
「うん」
「はい」
「これちなみにあれっすよね、あのールート権限とはまた別で、もう本当にモードがそもそも違うってことっすよね?」
「ルート権限は、あのOSの概念で、今言ってるのはCPUの動作モードっていうんですかね?」
「はいはいはいはい。そもそもレイヤーが違う話って」
「ああそうですね、レイヤーが違う話っていうのが正しい言い方ですね」
「うんうんうん」

「ってな形で、まあモードが分かれることで、まあウェブアプリがハードウェアによく分からん操作して、もうコンピューターぶっ壊すみたいなことが起きないように、まあOSの中でなってて」
「うんうん」
「で、その中のそのハードウェアを触るデリケートなところをやるのが、まあカーネルモードと呼ばれるモードで、そのカーネルモードで動作するプログラムがカーネルです」
「うーん。ほう」
「分かった。まあでもざっくり言うとだからハードウェアを操作するプログラムです。ハードウェアを直接触るプログラムがカーネルと呼ばれるものになります」
「これは1枚挟まってることによって、えーどんなメリットがあるんすか?」
「えーと、まあそれこそだからさっきの権限というか、まあ下手にいろんなところで触らせないことによって、ハードウェアを、まあ壊せたりとか」
「うんうんうん」

「しないように分かれてるんだと僕は捉えています」
「うんうんうんうん」
「あとはそのUnixの考え的なところで多分1つのことをうまくやるっていうのがやっぱあると思うんで、その1番根幹の部分が、根幹っていうか、まあハードウェアを直接触る、その1つ1つをうまくやるっていうところを直接触るのが、まあカーネルっていうので分かれてて。で、カーネルを間接的に呼び出すことによって幅広い操作ができるようになってるのが、まあなんて言うんだろうな、その設計思想なんじゃないですかね」
「うんうんうん」
「っていうので、まあカーネルってのがあるんですけど」
「はい」
「で、その、じゃあこのカーネル実際僕らが呼び出す、使うときってどういう流れで使われるんだろうかというのを次に見ていきます。で、えーと、まあよくあるパターンというか、まあ1個想像すると、じゃあアプリケーションで、まあデータベースになんか書き込みますというときって、まああれ要するに、まあオンメモリのDBもあるんですけど、まあストレージに何か書き込むっていうのを想像しますと」
「うんうんうん」

「なのでアプリケーションは何かの命令を受け取って、あ、DBに書き込んでって言われたって言って、じゃあOSのほうになんかこれ書き込んだって言われたんだけどって言いに行って、まあなん、どうにかあってハードウェアが、か、に書き込まれるという流れになるんですけど」
「うんうん」
「このアプリがこれ書き込んでってお願いするときに、えっと使われる、まあ命令がシステムコールっていうのがあるんですね」
「うん」
「で、このシステムコールっていうのって、まあそんなに、まあ種類がないんですけど、まあリードとかライトとかオープンクローズ、まあファイルを開く閉じるとか、なんかそういうのがいろいろあるんですけど。なのでアプリがライト関数っていうのを呼んで、えーCPUにじゃあこれ書き込んでっていうのを渡して、で、ライトの命令をCPUに出すと、CPUはライトを受け取って、今までユーザーモードで動いてたけど、えー直接ハードウェアを触れるようにカーネルモードに切り替わって、で、カーネルのそのディスクに、えーデータを書き込むっていうプログラムを実行して、で、実際に書き込んで、で、カーネルモードの処理が終わった、じゃあユーザーモードに切り替わる、ユーザーモードになってアプリに終わったよって言いに行くっていう、まあそんな動きをしてるみたいなんですよ」
「うんうんうん」
「うん。まあそれゆえだから、そのカーネルモードとユーザーモードの切り替えにやっぱラグ、なんて言うんだっけな、ラグがあるんですよ。オーバーヘッドか。オーバーヘッドが出ちゃうんで」
「うんうん」

「まあこれはあのすごくシビアな世界かもしんないんですけど、書き込みとか、そういう命令は小分けにするよりは多分いっぺんに書き込んだほうが早くなるっていうのがあるのかなと思います」
「ああ、ん、うん」
「そのユーザーモードとカーネルモードの切り替えが何回もポコポコ走るような処理じゃないほうが」
「うんうんうん」
「まあオーバーヘッド少ないよねっていう話ですね」
「でもこれってあれだよね、多分、え、実装レベルだと関係あるのかな。なんか例えばだけど、インサート文とかあるじゃないですか」
「はい」
「で、えーバルクインサートで1発のインサート文で複数書き込むのと、えーと複数回クエリを発行して、えーインサートで書き込むのだともちろん複数回発行するほうが遅いと思うんですけど」

「うん」
「それってなんか、そのレイヤー以外にもめちゃめちゃオーバーヘッドかかりそうだなと思って」
「ああはい、そういうのはあると思いますよ」
「うんうんうん」
「だからどっちかっていうとそのデータベースが、あのバルクインサートされたときにCPUに対してどういう命令をするかっていうところの開発の話ってことかな」
「まあそうですね、あのアプリケーションエンジニアで言うとそんなに意識しなくてもいい範囲の話ではあると思ってますよ。それこそそのプログラミング言語がどういう実装されてるかぐらいのレイヤーの話だと思ってて。C言語とかだったらまた別かもしんないですけどね」
「うんうんうんうん」
「すごいなんか普段見ない世界の話というか」

「まあそうですね」
「皮膚拡大したら実はいっぱいさ、最近いるんですよみたいな」
「細胞じゃなくて」
「そこのレイヤーの話されてるみたいな」
「最近なんだ」
「気持ちになるな」
「うん。まあそういう話」
「見ないとミクロの世界の話みたいな」

「うん。どこまで行っても意外に地道なことやってるなって思いますよね」
「うん」
「うんうん」
「今回あの今の話を説明するためになんか銀行の窓口で例えとか作ってみたんですけど」
「うん」
「いらないかなって思ったんで飛ばしていいですか」
「分かりました」
「分かりました。なんとなく何をやってるか」

「いや、あの何をやってるか分かんなかったんですけど。あの金庫はデリケートだから間に挟んでるよみたいな」
「あ、まあ、えっと、じゃあちょっと話しちゃうんですけどせっかくなんで」
「ああはい」
「はい。お金を引き出しますということを想像してください」
「はい」
「で、ATMじゃないですか、あの窓口でね」
「窓口で」
「2億円ぐらい。2億円ぐらい引き出しますと」

「ああ、まあまあまあ。お小遣い程度っすね」
「おお、どんな世界。で、そんなんさ、銀行の金庫触れる人なんて誰でも触れないじゃないですか」
「うん。ああ、まあ確かにそうか」
「そう。のりさんが行って2億円くださいって言って、じゃあ自分で金庫から取ってくわってやっちゃだめじゃないですか」
「ああ、そういうことね。はい」
「そうそうそう。なぜならのりさんがその銀行の金庫行って、で、なんかね、番号のピッピッピッって打ち間違えまくって、じゃあその2億円、100円取り出せなくなりました、セキュリティの装置が作動してとかだったらもう大事じゃないですか」
「うんうん」
「うん。なので、えーレイヤーが分かれてんですよ、ちゃんと」

「うんうん」
「で、のりさんは、えーシステムコール、窓口でそのお金を2億円引き出しますっていう伝票を発行してもらって、この伝票、かっこシステムコールを銀行員に渡します」
「はい」
「で、銀行員はその伝票を受け取って、システムコールを受け取って、で、実際に金庫から、えー2億円、かっこデータ」
「うん」
「を出して渡しに行くみたいな」
「うんうんうん」
「流れになってるのが、まあシステムコールと、あとカーネルと、あとハードウェアのやり取りの関係みたいな感じになります」

「銀行員がカーネルで、金庫がハードウェア」
「はい」
「うん」
「っていうのが、まあざっくりカーネルの基礎編っていう感じですね」
「うんうん」
「で、えー続いて、まあこれも別軸なんですけど、まあさっき点でカーネルを見たんで、まあなんとか線でカーネルを見れるといいなというところで」
「うん」
「えーと過去の、まあこのOSの進化とカーネルの進化をなんか一緒に追ってくみたいなことをちょっと話してみようかなと思います」

「ああ、いいっすね、歴史。歴史。知りたい」
「はい。まあ全部押さえるのは、まあ本読んでください。本か、まあ独自の勉強してください。今日はもう本当に触るだけです。本当に撫でるだけなんですけど。大元はまあUnixがいましたと」
「うん」
「まあ言わずと知れたUnix。で、えーそうっすね、これはあの特にその書籍の中でこんなカーネル機能がありましたっていうのを細々書いてはいなかったんですけど、そもそもUnixはどのハードウェアだったとしても同じ、さっきのシステムコール、readとかwriteとかで、えーその違うハードウェアの操作ができるようになったっていう、ほんとユーザーフレンドリーな作りになったというだけでUnixはもうすごいものだというのがまずありますと」
「ほう」
「で、続いて、そのUnixからどう進化したかっていうのが次なんですけど」
「うんうん」
「えーBSD」

「おお」
「これfreeBSDって言ったらなんか聞き覚えある方いるかもしんないんですけど」
「うんうん」
「まあこれBSDというOSでバークレーソフトウェアディストリビューションというものみたいなんですけど」
「うん」
「このときに出てきたカーネル機能としては、えーTCP/IP」
「うーん」
「ネットワークですね」

「ネットワーク」
「あとソケット」
「うんうんうん」
「になります。で、なのでこれはあのUnixはなんかファイルとか、はものを全部ファイルにするっていう考え方でOSができたんですけど」
「うん」
「えーBSDはソケットっていう通信もファイルにする。ファイル操作で扱えるようにする」
「うんうんうん」
「うーん。っていうのをやってくれたのが、まあBSDです」

「うんうん」
「なんで、これBSDすごいのがやっぱりインターネットのおかげでパソコンめっちゃ普及したところがあるじゃないですか」
「はい」
「そう考えるとネットワークを扱いやすくしたっていう功績半端ないっす」
「うーん」
「うん、確かに。あとこれちょっと余談なんですけど、えーと昨今だと、まあBSD単体というよりはfreeBSDというOSのほうが聞きなじみあるというか、まああんまり聞かないんですけど」
「うん」
「なと思ってて。freeBSD身近なところに使われてるんですよ、結構」

「うわー出てー。インターホン」
「出てください」
「インターホン」
「あー多分違う。けど考え方は悪くないのかな」
「炊飯器」
「うわー絶妙」
「ルンバ」
「ルンバどうなんだろう。もやもやした回答パートが」

「まあでも確かにどの家電に何のOSが使われてるかは知らない。身近なんすか」
「freeBSDめっちゃいいのがライセンスが良くて」
「はいはい」
「どういいかっていうと、LinuxってOS変えたらそれ公開しなきゃいけないっていうライセンスなんすよ」
「あーはいはいはいはい」
「freeBSDって変えても公開しなくていいよっていうライセンスなんで」
「うんうんうん」
「そういうところに使われるんすよね」

「改変したいところに?」
「そう」
「ラズパイ?ラズパイLinux?」
「ラズパイはハードウェアっす」
「ハードウェアか」
「はい。まあちょっとあんまり伸ばしてもあれなんで。任天堂スイッチとか」
「へー」
「プレステとか」

「ゲームなんだ」
「うん。あとはあの画面ある系の多分家電とか。ふわっとしちゃうな。なんかカメラとか。それこそ」
「デジカメ的な?」
「あ、デジカメみたいな。なんかそういうのに使われてんだろう。あ、使われてると思います。はい」
「へー」
「なんかこれ完全に余談でした」
「うんうん」
「えーで次。ソラリス。これあんまり聞いたことないんですけど。3マイクロシステム数社が作った、えーOSらしいんですけど」

「うんうん」
「えーとここでは、これあのソラリスってエンタープライズ向けのサーバーOSみたいなんですけど」
「うーん」
「えーこれちょっと特殊で、ファイルの書き込みのときに、だからデータを上書きするんじゃなくて、もう都度新しい場所に書いて」
「うん」
「で、それで参照を切り替えるっていう、そのデータ上書きしても古いものを消さないっていう」
「うんうん」
「機能を追加したことによって、クラッシュしても、えっとデータが壊れな、壊れない。昔のデータが絶対に残ってる。バックアップはリアルタイムで取られ続けるみたいな動きをしてくれるような、まあソラリスっていうサーバーがあるみたいで」

「おお」
「うーん。これはちょっとあんまり僕触れたことも見たこともあんまりないんですけど」
「うん」
「きっと金融とかで動いてんだろうなと思いながら」
「うん」
「この部分は読んでました」
「うーん確かに。なんかそ、それがエンタープライズ受けした理由っぽそうだよね」
「そうなんでしょうね」

「うん」
「で、なんでまあ時系列としてはまあネットワークが来て、で、じゃあエンタープライズで使ってみようっていうのが来て、で、それでそのあとLinuxが出てきます」
「うんうんうん」
「で、えーLinuxですね、あの新たなカーネル機能っていうのが、まあこの書籍の中でLinux書かれてるんですけど、ほかのOSはまあ割とね、5つとか6つみたいな、10個以内オーダーぐらいだったんですけど」
「うん」
「Linuxの新たなカーネル機能、Linuxが派遣取ってる時代が長すぎてもうめちゃくちゃいっぱいありましたと。ほんとにもう」
「うーん」
「ずっとLinuxのカーネルの機能が2行ずつぐらいずっとバーって書かれてるみたいな」

「うん」
「感じで非常に多かったんで」
「はいはい」
「まあ気になったことだけちょっと紹介するんですけど」
「うん」
「え、まず1つ目。OOMキラー」
「OOM?」
「はい。OutofMemoryKiller」

「うーん」
「うん。これあのメモリ足んないときに出てくるエラーの中に入ってたりするんですけど」
「うんうん」
「まあメモリが尽きたら、こいつを殺せば1番メモリが空くぞみたいなところをうまいことピックアップして強制終了してくれるという機能になります」
「うーん」
「これなんか元々あったわけじゃなくてLinuxからなんだっていう気持ちになったんですけど」
「うーん確かに。それでも困ることないんすか。それ消しちゃだめみたいな消されることは」
「まあでも動かなくなるよりはマシなんじゃない?」

「うーん」
「うん。まあそのソフトウェアは動かなくなるかもしんないけど、サーバーは動き続けてくれますからね、メモリがちょっと空いてくれれば」
「うん」
「うん。これがないとメモリパンパンになったときに多分なんもできなくなると思う」
「うん」
「強制終了するしかなくなると思う、多分サーバー。何も受け付けてくれなくなりそう」
「うーん。なるほど」
「さすがにそんななんか無作為には消さなそうじゃない?」

「まあ壊れるようなものは消さないっすけど、でもそれこそなんだろう、データベースとかだったらちゃんと文言落ちたりしますよ。アプリケーションというか。これはあくまで多分サーバーが動き続けるために必要な処置をしてるだけなんで」
「うーん」
「サービス提供とかとはまた別のレイヤーだったりするんじゃないかなと」
「ああ、なるほどね」
「はい。で、あとはあのDockerコンテナの基礎技術になる、なんかCグループスっていう」
「うん」
「なんかプロセスグループごとにこうやってリソースを制限するみたいなのをカーネルレベルで制限かけるような機能だったりとか」
「うん」

「まあなんかそういう、そういったものが、まあ今のいろんなアプリの、そ、外というか、まあ元になったというか、に利用されるような、まあカーネルコマンドがまあLinuxで追加されてったんやでみたいなのが、まあ書いてて。まあ正直ここはほーんって感じなんですけど」
「うんうんうん」
「まあでも今あのカーネル機能の具体例をいくつかしゃべったことによって、なんか元々言ってたあのハードウェアに書き込むうんぬんみたいなところ以外にも、ああなんかこういう操作してるんだなみたいな、カーネル機能のなんか幅みたいなものを感じられるとうれしいなというのでちょっと紹介しました」
「うんうん」
「というので、じゃあじゅんぺいくんに改めてお聞きしたいんですけど」
「はい」
「カーネルってなんですか、ケンタッキーか何かですかっていう後半に対して、えーどんな説明をしますか」
「ふざけてる場合じゃなくてですね。カーネルっていうのは」

「付き合ってくんなくなったね、今度は」
「元来になった」
「うん。カーネルっていうのはハードウェアを操作するプログラミングなんだよって言って、つまり例えばハードウェアに対してリード、書き込みや読み込みをしてくれる、中継してくれるやつ。絶対に必要な歴史ある技術なんだよ」
「以上」
「なんか熱量あるけど薄、薄いな。まあしょうがないけど」
「熱量あるけど薄いよ、やばいな」
「見抜かれてた」
「あ、じゃあちょっとちなみにもう1個質問で」

「はい」
「OSと何が違うんですかって。何が違うというか、まあどういう関係なのかをしゃべれるわ」
「OSとの関係は」
「具体的なことは今回言ってないかもな。言ったっけな。言ったな、最初に」
「OSの一部」
「うん」
「だ」
「素晴らしい。まあ合ってる」

「はい」
「そのとおり。OSで言うとね、ほかにもね、えーなんだろうな、カーネル関係ない、まあ多分プログラムとか機能とかあるでしょうからね」
「うんうんうん」
「うん」
「具体的なコマンドあげるのむずいけど、なんかLSコマンドみたいなものって多分ハードウェア触ってんのかな」
「ん?」
「まあでもコマンドか。LSコマンドとかってカーネルコマンドじゃないんで、こ、カーネルの、カーネルのプログラムじゃないんで」
「うんうん」

「そういうのひっくるめてOSはOSなんで、まあユーザーに接する部分とハードウェアに接する部分で分かれてて、カーネルじゃないほうがユーザーと接する部分」
「うんうんうん」
「みたいなイメージですね」
「OSはなんかもっとめっちゃいろんなことやってるイメージあるわ」
「そうです」
「プロセスのなんか割り込みとか、描画とかもやってんじゃない?」
「うん」
「うん」

「プロセスの割り込みはそうっすね、OSがやってて、中でも多分カーネルがやってるところなんじゃないかな。CPUの多分スケジューリングの話な気がするんで」
「ああ」
「はい。っていうところがまあちょっと垣間見えたというか、まあなんとなく感じれたら良いなというところで」
「うん」
「はい。お話以上になります」
「はい。ありがとうございます」
「はい。えーあとはちょっと、ちょっとだけアフタートークなんですけど」
「はいはい」

「えーAIコーディングエージェントすげえなってやっぱ最近改めて思って」
「急に?」
「はい」
「はい」
「あのーまあ性能試験しててパフォーマンス出ないなって思ってて」
「うん」
「えーまあ最近こういう本を読んで、よーし詳しくなるぞーいろいろって思ってたんすけど、性能試験の結果がまあ思ったよりよく、思ったより良くないんじゃないかな。うん、なんかちょっと直したいところがあって、なんかちょっとパフォーマンス出ない部分があって」
「うん」

「一定時間おきにちょっとスパイクでレスポンスのタイム上がるみたいな」
「うんうんうん」
「で、ハードウェアとかいろいろいじってみて、そのCPU増やしたりとか、ディスクの性能変えてとか、なんかいろいろやっても解決しなくて」
「うん」
「なんだこれはってなってたのが、まあ2年間ぐらいやってたのがあって」
「へー、あ、そんなに?」
「はい」
「はいはい」

「誰も分からんみたいな」
「うん」
「で、僕どうしたかっていうと、まあまず一定周期だからさすがにアプリじゃねえと思って」
「うん」
「Claudeくんに全アプリと、あとはなんか主要なOSSのコード全部読ませたら、それっぽいのが何個か出てきて」
「うん」
「怪しそうな順で試して原因突き止められたっていうのがあって」
「へー」

「うん。で、僕のプロジェクトリポジトリストは半端じゃないんで」
「うん」
「ちょっとこれ人間だったら厳しいな、かったなって」
「うんうんうん」
「やっぱ思うところがあったんで。もうなんかもうそのデバッグ力に関してはもう完全に負けましたね、AIに」
「うん」
「勝てる気がしない。だからこそまあうまく使っていきたいなと」
「はいはい」

「はい。最近思っ、改めて思いましたというちょいトークでした」
「すげえな。全部読み込ませてなんか処理できちゃう仕組みがすごいよね」
「すごい。ほんとに何行読んだんだろうね、あれね」
「うん」
「なんかClaudeってそのへんうまく圧縮してるイメージあるな」
「そうなんすよ、Claude。なんかコンテキスト数少ないじゃないですか、ほかのモデルに比べて」
「うん」
「Opusって少ないんですけど、少ないとこでやりくりするのが、なんかAnthropicが1番頑張ってますよね」

「うん」
「うーん」
「そういう印象がある。Geminiはパワー、パワー。Anthropicは、あ、Opusか、Opusは工夫」
「うん」
「ChatGPTというかCodexは器用みたいなイメージ」
「うん」
「うーん」
「いやでもCodexもなんかすげえなって思ったわ」

「うん」
「レビュー、レビューだけさせてんだけど、あ、これ確かにそうだわみたいなやつ次々と見つけてくれるもん」
「そうっすよね。めっちゃ分かる。めっちゃ分かる」
「うん」
「うまく使っていきたい」
「ね」
「はい」
「ということで締めます。ハッシュタグひまじんプログラマーでSNS、NEXTでフィードバック募集してますので、本日のエピソードの感想とか、まああとはカーネルってこれだよねのなんか一言ちょうどいいフレーズとかあったら共有いただけるとありがたいです」

「好きなケンタッキーのメニューとかもお願いします」
「いいっすね」
「うん」
「うん」
「えーあとはポッドキャストの説明欄からGoogleフォームで番組の要望、感想、質問お待ちしてます。えー楽しかっただけでもいいので、ぜひお願いします」
「なんでもどうぞ」
「お願いします」
「えーあとはポッドキャストのエピソードではなくチャンネル説明欄から、えーSlackオンラインコミュニティ、ひまプロ談話室の、えー参加申し込みフォームがありますので、えーこちらバージョン2リリースとなったので、えーぜひお気軽にご参加お願いします」

「お願いとます」
「待ってます」
「イベントやりたいという気持ちはあります。多分やれないかな、多分やる気持ちですよね、年度内に3月ぐらい」
「やると思うよ」
「はい、オンラインですね。はい。ので、間に合うように急げ」
「ん?」
「えー最後に各種ポッドキャストプラットフォームのフォロー、高評価もお願いします」
「お願いします」

「お願いしまーす」
「はい、それではまた次回」
「バイバイ」
「あなたが落としたのはこの金のサーバーですか、それとも銀のサーバーですか」
「いいえ、私が落としたのは普通のウェブサーバーです。すみません」
「あなたは正直者ですね。全部のサーバーを上げましょう」
「正直者のエンジニアは不可分散ができるようになりました。それを見ていた欲張りな男がサーバーを落としました」
「あなたが落としたのはこの金のサーバーですか」

「へい、その金のサーバーを落としました」
「どうやらあなたは嘘つきのようです」
「そう言って女神は帰っていきました。欲張りな男は復旧できないサーバーの前でわんわん泣いていました」
「サーバーを落としたくないあなたへ、ひまじんプログラマーの週末エンジニアリングレッスン」