豊臣秀吉の太閤検地
「この番組は、エンジニアの成長は楽しい学びからをモットーに、昨日より少しだけ成長できる学びをお届けする、エンタメ系テックラジオでございます」
「ございます。少しだけ成長しましょう」
「さあ、今日の成長内容。あの、戦国時代に豊臣秀吉という男がいたんですけど、知ってます?」
「ああ、ギリギリ」
「ギリギリ?」
「はい」
「で、彼がやった、あの「太閤検地」っていう所業がありまして」
「ええ」

「うわ」
「ギリギリ聞き覚えがある」
「ギリギリ聞き覚えがある」
「うん」
「じゅんぺいはさすがにね、分かるよね」
「ちょっと脱落かもしれない、そもそも」
「一番、学生時代卒業してからまだ時間浅いから」
「えーと、太閤を検地する。太閤を検地する」

「え、ディテクションしようとしてる?」
「ええ。太閤さんの、なんか身体検査みたいなのをして、あ、健康ですね、これからも国を治められます、みたいな。国というか、地域を治められます、みたいな。承認をした、っていう所業ですね」
「あ、じゃあ、なんか、あの、免許みたいな?」
「そうそうそう」
「健康のやつが支配しろよ、っていう免許?」
「年一やってたやつですよね」
「太閤検地」
「たいこうけんしん」

「太閤検心?太閤検心だ、それ」
「年一で来るやつ。違うか。あ、教養なかった」
「まあ、簡単に言うと、日本って土地あるじゃないですか」
「はい」
「でも、この土地って、えー、管理されてないよね、っていう」
「うん」
「それを管理してこうぜ、っていうのが、まあ太閤検地なんですよ」
「ああ、なるほど」

「要は、それまでの土地は、なんか、もちろん持ち主っぽい人はいたんだけど、1つの土地に対して、複数人の人がやってきて、いや、ここは俺の土地だよ、って言ってきたりとか」
「うん」
「あと、うちの畑は、あの、今期、俵100個分の米を生産しました、みたいな」
「うん」
「でも、各地で俵の大きさが違いすぎて意味ない、っていう」
「ほう、なるほど」
「みたいなことが行われてました」
「昔エピソードですね、なんか、いかにも」

「まあ昔エピソード、ほんとだよね」
「うん。へえ」
「言ったもん勝ち、みたいな。で、そこに対して秀吉はですね、まず役人を派遣して、竿を持ってって、で、まずちゃんと測ったんですね。同じ基準で」
「うん。いや、えらい」
「で、米を測る量もちゃんと決めました」
「うん」
「で、えー、それぞれの土地に対して、誰がもう持ち主ですよ、っていうのを、もう検地帳っていう台帳に登録してったんですよ」
「ほう」

「で、えー、もう村ごとに、もう村っていう単位を決めて、それで、なんだ、村ごとに単位、管理するための台帳を作っていったと」
「うーん、頭いい」
「その結果、あの、正しく測ることができるようになり」
「うん」
「正確な生産力とかも把握できるようになり、誰が管理してるかも把握できるようになって」
「うん」
「それがですね、あの、今後の江戸時代とかも、いろんな管理をしてくベースになっていき」
「うん」

「で、えー、そこから時が進んで、今この現代、パソコンというものが生まれたんですね」
「はい」
「飛びましたね」
「はい」
「で、実はこのパソコンの中にですね、この太閤検地と似たような動きしてるやつがいまして」
「ほう」
「ファイルシステムです」
「ええ。まあ確かに整理はしてそうだけども」

「今日はね、まあ今ので、あの、太閤検地がイメージつくようになったと思うんで」
「うん」
「でも一方で、ファイルシステムって、なんか、あまりにも当たり前すぎて、意識しなくないですか、なんか。何してるとか」
「うん。はい」
「なんか空気みたいな」
「そうね。うん」
「あ、あって当然でしょ、みたいな感じになってるじゃないですか」
「あって当然」

「でも、その空気の中に、やっぱ窒素が7割あって、えー、2割酸素があって、その他何かがあって、みたいな」
「うん」
「そういうのを把握してくことによって、教養ってのは深まると思うんですね」
「うん」
「うん、間違いない。今日はそんなね、PC界の太閤検地であり、空気であるファイルシステム」
「なるほど」
「何をしてるかっていうお話をしていこうと思います」
「オッケーです。PC界の」

「大丈夫ですかね、ここまで」
「太閤検地」
「低クオリティ歴史番組だと思われて離れられてないですかね」
「タイトルがあまりにも違うから大丈夫じゃないですか」
「うん」
「タイトルがあまりにも違うから迷ってこない」
「うん。ちょっとね、サムネイル若干歴史がありますけど」
「うん」

「まあ、まだね、あの、撮ってる今、あの、まだタイトル決まってないんですけど」
「あ、ポッドキャストのチャンネル名」
「あ、チャンネル名」
「うん」
「チャンネル名も変えちゃうか」
「変えんな」
「うん」
「そんなポンポン」

「ヒストリーレッスンに変えようか」
「変えんな」
「そんなポンポン」
「うん」
「そしたら歴史好きが入ってきて、視聴者数増えるかもしんない」
「減るよ」
「減る」
「浅っ。歴史好きよりはるかに歴史知らないんだから、我々」

「はるかに浅い。まあ確かにね」
「うん」
「じゃあ今日はですね、ファイルシステムの話をしていく前に、ちなみにじゅんぺい君、ファイルシステムって何をしてるんですか」
「えー、ファイルを管理しているんですが」
「うん」
「ファイルシステム」
「ファイル、じゃあ、ファイルシステムなくなったらどうなるんですか」
「あれがなくなったら、えー、確かにデータ」

「うん」
「あのシステムがなくなったら」
「うん」
「データどこにもない、みたいになっちゃって」
「うん、うん、うん」
「で、パソコン動かない、みたいな」
「あり得るかもな」
「なんだそのふわっとした正解発表」

「じゅんぺい、あり得るかも」
「あ、まじっすか」
「いい来てほしいな。いい来てほしいんだけど」
「うん、可能性はある」
「あり得るかもしれない」
「可能性はある」
「いや、まあ、あの、動く、なんて言うんだろうな、動くを、動くということをどう定義するかによる気がするわ」
「動くっていうことをどう定義するか、えー、ChatGPTが使える」

「うん。え?」
「ええ」
「ファイルシステムがなくなったことによって」
「え?」
「はい。ChatGPTが使えるようになる」
「いやー、ちょっと微妙だったな」
「うん」
「ええ」

「どういう角度のボケなん、それは」
「いや、いや、なんでしょうね。いや、ボケだー、まあ確かにな。なんか、クローム、つまりクロームが」
「うん」
「クロームじゃなくてもあるか。まあ、クロームが使えたり、なんか、ポインターが使えたりとか」
「ポインター?」
「はい」
「マウスポインターのほう?それとも、あの」
「マウスポインター」

「マウスポインターのほうね」
「はい」
「よく分かったな、俺」
「よく分かったっすね、今」
「うん」
「多分聞いてるエンジニアは、あの、C言語とかCプラプラとか出てくるポインターのほうを想像してたんじゃないかな」
「あ、そうなっちゃうんだ」
「ちょっと教養なさすぎて、そっちじゃなかったんですが」

「まず、ファイルシステムというのはですね」
「はい」
「我々、普段、PC開いて、いろんなファイルを開いたりとか」
「うん」
「ディレクトリを作ったりとか」
「うん」
「それを移動させたりとか、名前を変えたりとか、そういう作業をやってますよね。GUIであれ、CUIであれ」
「もちろん」

「はい。こうやって、データをファイル単位で扱えるようにしてるのがファイルシステムなんですよ」
「うん」
「で、えー、PCおよびサーバー、まあどっちもPCで、ストレージ付いてるじゃないですか」
「うん」
「うん。でも、ストレージって、じゃあ、例えば5テラ、やりすぎた?2テラありますと」
「別に良くない?5テラでも」
「はい」
「はい」

「いや、まあいいんだけどね。いいんだけど、やっぱ、コンシューマーPCの中の最高峰といえば、やっぱ2テラぐらいでしょ」
「うん」
「ノンカスタマイズだと。で、2テラのストレージ、ありますと」
「はい」
「でも、ストレージって言ってしまえば、あの、01何個置けるかゲームじゃないですか」
「うん」
「うん。この01置ける個数が、でかければでかいほど、ストレージでか」
「うん、ですね」

「なんですけど、このストレージの中の、どっからどこまでが、どのファイルについて扱ってるの、っていうのは管理されてないんですよ、元々は」
「あ、なんもないとってことですね」
「なんもないと、まあ、まっさら」
「うん」
「01入れる箱が1列、1列なのか面積なのかよく分かんないけど、一旦今回は太閤検地に例えていきたいんで、四角いものとしましょう」
「うん、うん、うん」
「はい」
「バーって、あの、田舎行くとめっちゃ稲の田んぼがぶわーんってあると思うんですけど」

「はい」
「あれ、別にね、ファイルシステムがなければ、どっからどこまでが誰の田んぼかが管理されてないってことですね」
「そういうことです、そういうことです」
「うん」
「めっちゃ脱線ですけど」
「あ、はい、はい」
「水田をちょっと想像して、稲が植わった直後ぐらいのを想像してみると、稲が植わってるのを1、植わってないのを0みたいなふうに見立てると、なんかちょうど5テラぐらいになりそうじゃないですか、あの広大な田んぼ」
「えーと、ごめん、範囲は?日本?」

「日本じゃなくて、なんか新幹線からばって見えた瞬間ぐらいの」
「あー」
「うわ、全部田んぼだーぐらいの感じです」
「ちょっと待ってね」
「あれー」
「え?」
「あー、ちょっとね、エリアによるかもしんない」
「まあまあまあまあ、でも分かるでしょ」

「まあでもあれだよね、大体あの東海道新幹線の真ん中らへんってことだよね」
「とか、そうそうそう、とかとか」
「あー」
「東北新幹線そこそこ行ったとことか」
「はいはいはい」
「えー、難しい」
「いやー、残念ながらね、まったく見当つきません」
「そっか」

「すいません、ちょっと僕、あの、東北っていう右上出身のもんで」
「はいはいはい」
「うん。ちょっとその発想なかったな」
「ちょっと難しかったな」
「そっか」
「うん」
「まあでも一旦、その01が並んでる箱ですよってのは分かってもらえたと思うんですけど」
「うん」

「まあなので、ストレージをこう開いて、まあ開いて見れるとしたらですよ。で、ちゃんと数字が書かれてるとしたらですよ。もう01000110001010101、バーってめちゃめちゃ書かれてるわけですよ」
「うん」
「でも、僕らは普段そんなことを意識することなく、いや、このファイルはもうこのファイルっしょ、みたいな」
「出ますからね、LSとか」
「うん」
「ね、ファインダーとかで見たらね」
「そう。っていうので、こういうふうにファイルだとかフォルダとして扱うことができてる。これがファイルシステムでございます」
「ありがとう」

「うん」
「ありがとう、ファイルシステム」
「ありがとう」
「君のことは忘れない」
「いやいや、死んでないわ、別に」
「現役ですね」
「うん」
「今後もなくなんないだろうね、これは」

「そうあってほしいですね」
「なくなるはずがない」
「うん。で、今日は、じゃあ、そのファイルシステムってどうやって、その01の並びを管理してるのっていう話なんですよ」
「はい」
「で、ちょっとね、あの、ファイルシステムのライフサイクルに合わせて、あの、説明していこうかなと思うので。えー、まず、ファイルシステム、起動したら何をするかっていうと、フォーマットっていうのを行うんですね」
「うん、うん、うん」
「で、このフォーマットっていうのが、いわば、えー、管理し始めるぜっていう状態」
「うん。えっと、全部0に書き換えますか」

「そこは分かりません」
「なんか、あの、ストレージの初期化とかするときは、多分全部0とかにすると思うんですけど」
「うん」
「まあちょうどね、田んぼも稲植える前はね」
「うん」
「雑草とか抜いて土耕しますからね」
「うん、うん、うん」
「あれフォーマットですね」

「フォーマット全部0にしてるのかな」
「物によるのかな。まああの、何、PCとか捨てるときのやつはね、してそうですけど」
「うん」
「まあ起動時はね、やんないかもしんないですね。その、頑張って捨てるときにデータ消すということは、残り得るってことでしょうから」
「あー、してませんね」
「うーん」
「じゃあ」
「ゼロ埋めしてないです」

「なんか雑草とか、まあ、なんだ、他の人から、ここの田んぼ君のだからって譲り受けた状態、よし、こっから僕がやるぞ。僕がやるぞ、なのかな。違うな」
「うん、うん」
「えー、うちの管理下にな、うちの村の管理下になったぞぐらいがフォーマットってことですね」
「いや、えっと、フォーマットは、これから管理するぞって言って、秀吉が中央でいきり立って台帳作ったところって感じっすね」
「うん」
「うん、うん。これがフォーマット」
「なるほど」
「で、これによって、えー、管理領域がまず作られますと」

「はい」
「で、えーと、そのときにですね、えー、基本的にフォーマットで裏側でやってることなんですけど、えー、01って1つにつき1ビットじゃないですか」
「うん」
「なんですけど、まずはその1ビットの塊を、えー、4キロバイトに区切って区画を作るんですね」
「うん」
「まあこれは、いわば共通の、さい、なんだ、あの、さっき秀吉が、あの、共通の面積測りに来たみたいな、尺度揃えに来たみたいな言ったと思うんですけど」
「はい、はい」
「まあこれに近いことをやっている」

「米の量とかを同じにした」
「えっと、ストレージ扱うときに4キロバイトを最小単位として扱うようにしてるというか」
「うん」
「あー、待って、あの、ごめん。4キロバイトっていうのは、ちなみに、あの、あくまで代表的な数値だって、そこはファイルシステムによってサイズ違うはず」
「うん」
「ファイルシステムによってというよりは、まあファイルシステムによるんでしょうけど、OSによって変わる感じなんですかね」
「いや、ファイルシステムによって変わるんじゃないかな」
「同じOSでも違うファイルシステムを使ってることがある」

「えー、大体はそう」
「あ、そうなんだ」
「あ、そうです、そうです、そうです。それで言うと、ちょっと今回の台本にはなかった話にはなるんですけど、例えば、じゃあ、リナックスでサーバー立てるじゃないですか」
「うん」
「で、僕らには1つの、あの、ファイルのツリーに見えてると思うんですよ」
「うん」
「あれ、複数のファイルシステムで動いてます」
「へー、そうなんだ」

「で、それをカーネルの中にある、えーと、仕組みが、要は1つっぽく見せてる」
「うーん」
「だから特定のディレクトリはこのファイルシステムだけど、ここのディレクトリはこのファイルシステムっていうことが全然普通にある」
「それは」
「基本、基本そうなってるかな。うん」
「それはなんか、外部ストレージは違うファイルシステムが動いてるみたいなことですか、例えば」
「いや、えっと、そうではないかな。もうリナックスカーネル的にそうなってるかもしんない」
「へー」

「仕組み上。例えば、あの、スラテンプってあるじゃないですか」
「はい」
「ルートディレクトリの直下にテンプっていうディレクトリがあると思うんですけど、tmpの」
「うん」
「あそことかはテンプエフエスっていうファイルシステムが動いてるんですけど、ほかはexp4っていうファイルシステムが動いてたりみたいな感じで」
「あー、見覚えある」
「今いる、開いてるディレクトリによって動いてるファイルシステムが違うってことが起きうりますね。起きうる、うん。起きてますね」
「ためになった」

「はい。えーと、まず区画を揃えていきますよと、フォーマットのときは」
「はい」
「で、プラス、えー、台帳を用意します。管理していくための」
「うん」
「あとはその台帳はですね、エリアごとに作るそうですね」
「物理的なエリアですかね」
「えっと、さっき言った区画を、ある、ある程度一定にまとめて管理するようにしてますと」
「うん、うん、うん。4キロバイトをある程度まとめて管理してるんですね」

「4キロバイト、えっと、で、区画は大体128メビバイト」
「メビバイト」
「うん、うん」
「MIBって書くやつですね」
「あ、そうそうそうそうそう」
「あ」
「で、分けてる理由は、あの、台帳とデータが近くにあると効率がいいからっていう感じっすね」
「うん、うん、うん」

「で、特にハードディスクのとき、HDDだったときは、それがすごい効いてたっていう背景がありそうっす」
「ハードディスクは、なんかレコードというかCDタイプだから、前から順番に読み込むから、隣にあると都合いいんすよね、多分」
「そうです、そうです」
「うん、うん」
「なので、管理台帳が結構細かく区画ごとに分かれてて。で、ほんとに、なんか村みたいな感じじゃない?村役場で台帳管理するじゃないですか」
「うん」
「ね。今の状況に当てはめるとあれですけど、じゃあ、住民票取らなきゃっつって、北海道に住んでる人が、あの、青森に、青森?青森ちょっと近いな、遠いけど。沖縄に取りに行かないといけないみたいな」
「東京でよくね?」

「東京でいいな」
「うん」
「だと、確かに東京だな。1か所管理しちゃうとそういう問題が起きますよと」
「うん」
「そうじゃなくて、ちゃんともう村の単位で区切って、そこで台帳管理せいっていう感じですね」
「うん、うん。市役所みたいな」
「そう」
「うん」

「まあ」
「今どこでも取れるか」
「まあ、厳密には、あの、村役場ね」
「あ、はい、はい」
「これ今、あの、安土桃山の話してるからさ」
「あ、すいません。ちょっと」
「うん」
「額が」

「で、一応管理台帳も3つございます」
「上長ですね」
「あー、えーと、上長ではないかもしれない。これ役割違うな」
「うん、まあまあ、そうでしょうね」
「あー、うん」
「役割が違います。まず、アイノードっていうものが1個ありますと」
「アイモード?」
「懐かしいね」

「懐かしい」
「昔のドコモのインターネットの携帯のサービスね」
「うん。ちょっとね、詳細は分からない」
「平成期ちゃった」
「アイノードです」
「アイノード」
「で、これは要はもう土地の台帳みたいなもんですね」
「はい」

「うん。で、これとかは。1ファイルにつき1個割り当てられるのかな、アイノードは」
「インフォメーションノードなのかな。なんなんだろう」
「うわ、なんだろう。ちょ、何の略かは分かんないんですけど。一旦アイノードというものがありますと」
「はい」
「で、これ発行、実は上限枚数あって。まあ台帳のページの限界あるんすよ」
「困った、困った。あるでしょうね」
「そう。なので、まれにストレージ空いてるけど、これ以上ファイルが作れないっていう問題とかが、アイノード枯渇で起きることもありますね」
「うわ、それどんぐらいなんでしょうね」

「うわー、どんくらい。まあ」
「でもめっちゃ」
「小さいファイルたくさん作ったらそうなるんだろうなっていうことしか分かんないな」
「うん、うん。まあでもあるでしょうね」
「うん」
「言うて、1と0で管理してるんでしょうから」
「まあそうね。そうです、そうです。で、あとはディレクトリ」
「うん」

「ディレクトリは、そういうファイルとはまた別の台帳で管理してます」
「うん」
「で、あとはビットマップっていうのがあって。これはどこの区画が空いてるよっていうのを管理してるやつですね」
「あー、空いてるようだけなんですね」
「そう。さっきのアイノードは、まあコンピューター的には、多分ファイル名とか、どういうファイルでみたいな情報が入ってて。ビットマップは、どっちかっていうともう土地単位でどこが空いてるかっていうのが管理されてるみたいなイメージかな」
「うん、うん。すいません、土地単位って4キロバイトの話でしたっけ?」
「これはそう」
「うん、うん、うん。じゃあ結構アイノードに大事なものがいろいろ入ってるんですね」

「アイノードに入ってると思う」
「大体アイノードに入ってて、ディレクトリの情報はディレクトリに入ってて、で、ビットマップはそれ以外のというか、まあここ空いてるようだけがある感じなんですね」
「そうです。アイノードはね、ファイル名とかメタ情報とかも入ってるんじゃないかな」
「入ってそうですよね」
「そうね。ファイルの名前とか、権限とか。だから、あの、LSとかで出てくるやつとかは、結構アイノードに書き込まれてる情報が出てんじゃないかな」
「ハイフンLで出るやつ」
「そうそうそうそうそうそう」
「権限、ファイルサイズ」

「最後にアクセスした時間とか」
「うん、うん」
「あとは、まあデータの場所とかもそうだね。ストレージのどこにあるかみたいなことかな」
「うん、うん」
「あ、すいません。で、ファイル名は入ってなかった」
「あ、そうなんだ」
「ファイル名は、じゃあどこで管理してるんだ?あー、ファイル名はディレクトリ管理に一緒に管理されてるっぽいですね」
「うーん、なるほど」

「で、多分そのディレクトリ管理のところで、えー、このファイル名のところはこのアイノードっていう形のペアで管理してるはず。まあペア以外の情報もあるかもだけど」
「うん、うん」
「まあそのへんがセットで分かるようになってると」
「え、ディレクトリって、えっと、フォルダ構造のこと言ってますか」
「ディレクトリはディレクトリのこと」
「ね、ディレクトリはディレクトリのこと」
「ディレクトリはディレクトリのこと言っている。えー」
「はい」

「ウィンドウズ的に言うならフォルダのこと言っている」
「あ、あー、オッケーです、オッケーです」
「うん」
「えっと、多分あれですよね。このアイノードというか、なんかここにある、えー、データは」
「うん」
「システムルートからたどるとこのパスにあるよっていうのが、まあファイル名まで入ってるみたいなイメージになるんですかね」
「こ、もう1回いいっすか」
「ディレクトリの情報って」

「うん」
「その実データと同じ場所にあるんすよね。同じ場所というか、うん、実データと同じ場所」
「あー、ん?実データと同じ場所って、近くに、あー、そういうことね。はい」
「そう。で、近くにあるんすよね。で、ここにあるデータは」
「うん」
「このパス、ルート、なんちゃらかんちゃらかんちゃらかんちゃら」
「うん」
「えー、ホゲホゲドット」

「うん」
「HTMLみたいな」
「うん」
「そういう情報がディレクトリの情報に入ってる」
「うん」
「っていう理解だってます」
「あー、そうそうそうそう。あ、で、ディレクトリは、あの、太閤検地で言うと村の、村の管理帳と言ってもいいかもしれない」
「ちょっと、太閤検地側の村の管理帳のイメージが明るすぎてどういうことっすか」

「この田んぼは、この村の中のここにありますよみたいなことですか」
「いや、この村は八つ墓村ですよみたいな」
「あ、この村はか」
「で、ここには誰が住んでますよみたいな」
「うーん。はい、はい、はい」
「はい、はい、はいって言っても、はい、はい」
「誰が住んでますよってか、なんか住んでる人が番号呼びしてるんだけど」
「あー、なるほど」

「ここに、ここの村には鈴木さんが1番に住んでるよ。で、1番の土地台帳見たら、より詳細が書かれてるみたいな」
「うん、うん、うん」
「そういう分業がされてますね」
「あ、オッケーです、オッケーです」
「っていうのが、このまずフォーマットでやってることですと」
「うん」
「フォーマットでだいぶ来てしまったな。ちょ、サクサク行くぜ」
「はい」

「で、まあファイルでやる操作って言ったら、まあ大体もうあとクラッドになると思うんだけど」
「作って、読んで、更新して、消して」
「うん」
「そう。まずはね、ファイルを作る。これは何をしてるかっていうと、まず空いてる区画を探しますと」
「はい」
「えー、ビットマップ」
「そう、ビットマップから。で、えー、空いてる区画の中にある、えー、アイノードの、えー、書き込み欄を1個使って、こういうファイルを作りますよっていう情報を書き込んでいくと」
「うん」

「うん。で、そこには、えー、どこのストレージのこの場所から何キロバイト使ってるよみたいな情報も書かれてるんで、一旦そのファイルの新規作成って、最初中身空っぽで作られるじゃないですか」
「うん」
「あれは、えー、アイノードに対して、まあ権限とか、こういう種類のファイルですよみたいな情報を書き込んでくみたいな、そんな感じですね」
「えー、今のってタッチコマンドの話してますか」
「タッチコマンドの、あー、まあそうだね。タッチコマンドの話。まあタッチ」
「からファイルを作るコマンド」
「うん」
「なんかファイルを作るときに空っぽのものから作るみたいなのが、なんかあんまり直感的じゃないかなと思って」

「そうだね。いや、なんか今ちょっと悩んでしまったのは」
「はい」
「果たしてファイルを作るのってタッチだけなんだろうかって、今ふと、なんか」
「あー、あ、うん。ちょっとそれは」
「わけわかんない思考に至って」
「例えばタッチコマンドってことですね、っていう」
「例えばタッチコマンドです」
「はい」

「ああいうふうに新しいファイルが作られるときは、アイノードを割り当てて、そこに詳細情報を書き込んで、管理下に置いてますよっていうことですね」
「うん」
「うん。で、埋まった部分はビットマップの空き地台帳から外してると」
「うん、うん」
「これはもうね、太閤検地でも全く同じことしてるはずと。いや、ここはあいつの田んぼだぜって言って、台帳に書き込むみたいな」
「まあ、太閤検地にビットマップがあるかはよく分かんないですけど、まあまあ」
「ビットマップはないかもな」
「はい」

「そう。で、その村の呼び名帳にまた、えー、新しくできた田んば、田んぼは何番だって書いたら、完了ですと」
「うん」
「で、続いてファイルを開く。普段のPCの使う感じだと、ダブルクリックしたらポチッて開かれると思うんですけど」
「うん」
「これはですね、まあその対象のアイノードを確認して、で、その対象のアイノードに、まあどっからどこまでがこのファイルの内容ですよってのが書き込まれてんで、その分を呼び出して、えー、ファイルを開いてるという感じですね」
「うん、うん、うん、うん」
「で、もっとその手前には、おそらくディレクトリを探すところから始まってるだろうっていうのがあります。まあディレクトリとアイノードで場所は全然開けると思うので、まあそれを参照してたどってファイルを開いてるという流れですと」
「うーん」

「これはちょっと太閤検地で例えるまでもないぐらい、なんか同じな気がするので、そのまま次行きますね」
「はい、はい」
「で、続いてファイルの、えー、アップデート。要は名前、な、書き換え、ファイルの中身を書き換えたりとか、名前を変えたりとか、場所を変えたりもこれに当たります」
「うん」
「まあでもどれかのほうがいいな」
「まあ中身変えるのが一般的じゃないですか」
「そうっすね。中身を書き換える。これはですね、まあ区画を足します。まあ必要なストレージ使う量増えるんで、その増えた部分に、を確保してからどんどんそれに書き込んでいきますと」
「うん、うん、うん」

「で、増えた区画の情報、今はこっから何キロバイト使ってますよみたいな情報」
「うん」
「を、えー、アイノードの台帳に書き込んで、で、それで保存して、えー、新しいファイルとして使われるっていう感じですね」
「うーん。ちょっとめんどくさい質問してもいいですか」
「はい」
「えーと、更新の結果、めっちゃサイズが大きくなったときって」
「うん」
「今の、今いる場所では収まんない可能性あるじゃないですか」

「確かに」
「そういうときって、別の土地取り直すんすかね。てか多分そんな気がするんですけど」
「あー」
「そう、なんか、あ、お隣さん埋まってる。あ、こっちのお隣さん、隣さんも埋まってる。あ、結果としてこのぐらいのデータ書き込みたいけど、土地が足りないよーってなったときに」
「はい、はい」
「お引越しぶちかましそう」
「その村に、村以上の土地ができたらどうするのかってことっすよね」
「あ、うん、そうそうそうそう。まさかね、隣の田んぼも俺のだって言わないでしょうから」

「そうだね」
「フラグメントしないよね、さすがに。分割しないよな。分割、1つのファイルだけど、Aという村の中が元々あったから、そのAという村で使い切れるだけ使って、ただそれじゃ足んないから、Bという村のほうに新たな土地を用意して、AとBの村で2つで1つみたいなことをやる説もあるけど、さすがにそんな効率の悪いことはしてないでほしい」
「えー、ちなみに村を超えるサイズの土地が作られたらどうなるか問題」
「はい」
「は、普通にはみ出ておしまいらしいです」
「えー、じゃあ分割されるってことですか」
「いや、分割されず、繋がったまま村、村からはみ出るっぽい」
「それはでも」

「うん。でもそれは周りが空だった場合だよね」
「そうそうそうそう。周りが空だった場合ですよね」
「周りがすでにあったときだよね」
「はい」
「飛び地になります」
「あー、飛び地になるんだ」
「はい」
「へー」

「でも、なるべく飛び地にならないように工夫はしているらしいです」
「なるほどねー」
「空き区画を少し余分に抑えておくみたいなことをして、なるべく飛び地にならないように工夫はしている」
「まあ、そもそも多分ギチギチにファイル保存しない気がしますしね、その」
「うん。そうそうそうそうそう」
「ある程度バッファを持たせて」
「うん」
「保存をしていくとは思うんで」

「っぽいですね」
「へー」
「あとはテクニック的なところで言うと、ちょっとだけメモリに留めておいて、まとめて書き込むことによって、細切れを避けるみたいなこともしてるっぽいっすね」
「どういうこっちゃ」
「あの、細かく変更して、あ、増えたって、毎回毎回書き込んでたら、何かに割り込まれて、えー、分割される可能性があるからじゃないですかね」
「あー、そういうことっすね。なるほどなるほど」
「うーん。なんか。回数少ないほうが、それはまとまるよねっていう」
「なんだっけ、データベースとかの話で、なんかそのへんの話した気がすんな。ちょっと忘れちゃったけど、そう。そうっすね、性能維持のね」

「ストレージエンジンのとことか」
「あ、ストレージエンジンだっけな。はい。まあ、なんかそういう動きしてるんっすね。メモリに貯めて一気に書き込むみたいな」
「もうやってるっぽい」
「うん」
「まあ、なるべくそれによって飛び地にならないようにしてるけど、致し方ないときは飛び地になります」
「うん、うん」
「で、アイノードの管理帳に飛び地で書かれるんだろうね」
「うん、うん」

「まあ、これがファイルの更新」
「はい」
「そしてラスト、ファイルの削除。これはですね、今って、まあディレクトリによって場所を管理して、アイノードによって、えー、その中に何が書かれてるかっていうのを管理してるじゃないですか」
「うん、うん、うん」
「で、えー、このファイルの削除は、まあその区画の管理を削除してるだけっていう感じですね」
「うん」
「帳簿から外してるだけ」
「うーん。帳簿って言ってるのは具体的にはどれになるんですか」

「えー、アイノードとディレクトリ」
「あー、そっちもちゃんと変えてるんですね」
「かな」
「まあでも、アイノードとディレクトリ変えるだけだと、で、実データは残っていて」
「うん」
「ファイルシステム上見えなくなってる」
「そう」
「だけってことですね」

「あ、待って、これアイノード消してないかもしかして」
「まあどっちもありえそうだけど。でもアイノード残ってたら、ファイルシステム上なんか消えてんだか消えてないんだか分かんない気がするし。まあ多分ビットマップも、ね、空いてるよっていうふうに削除時に書き換えるというか更新してくれるんでしょうけど」
「うん、うん、うん」
「なんかファイルのリストを見るときにビットマップ見て、あ、これは消えてる、これは消えてないってやるの、なんか非効率な気がするから」
「そうだね。ビットマップはそこを空きにしている」
「うん、うん」
「で、アイノード自体は残っている」
「うん、うん」

「参照がなくなってるだけみたいな」
「参照」
「ディレクトリのところかな」
「ディレクトリがなくなってんのか」
「うん。そうそうそうそうそう」
「だから機密データを消したければストレージはもう」
「うん」
「焼けと言われている」

「そうそうそうそうそう」
「所以ですね」
「あれ、なんか全部を上書きするんでもいいんじゃなかったっけ」
「ただ」
「上書きもだめなのかな」
「100パーセント消せる、消したと言えるかは分かんないです。なんか微妙に磁気が残っててみたいなのが」
「はい、はい、はい。あ、そういうのもあるのか」
「はい」

「まあそうですね。なんでファイルを消したからといって、実データは残ってたりするので、それをそのまま捨てて情報漏えいしたみたいなこと、なんか情報の授業とかでやりますよね」
「うん。なんだっけ」
「えー」
「ちょっと前に」
「なんだっけ」
「リ、リースPC」
「うん、うん」
「借りたら、なんか別会社のシステム立ち上がったとか、なんか、なんだっけな。なんかそんなお粗末な事件あったな」

「マジで?」
「はい」
「立ち上がっちゃったの?」
「立ち上がっただけだ。そう」
「不思議だな、それ」
「いや、まあ消してなかったんでしょうね」
「うん、うん、うん」
「まあ消してないからそれ以前の問題だな。なんか復旧できるとか、すいません、それ以前でしたわ」

「復元させようとして、あ、そうだよね」
「はい」
「立ち上がってしまったって消してないよね、多分」
「違う話だ、それ。すいません」
「そう。まあでも復活できるんで気をつけてねっていう」
「うん」
「で、まあこれ太閤検地で言うとね、あの台帳から消したとしても、田んぼ自体は残ってるよねみたいな」
「あー、分かりやすい。うーん」

「っていうことが起きてるんで、廃棄時には気をつけてねっていう」
「気をつける」
「はい。で、えー、まあざっくりファイルシステムがやってることはこういう動きをしてますよと。で、最後にね、あの、じゃあファイルシステムってファイルシステムって言ってるけど、えー、そもそもどんな製品があるのっていう」
「はい」
「ので、ざっくり名前だけ触れて終わりにしようかな」
「はい」
「はい」
「まず、Linuxでよく使われるのがEXT4」

「気になる。マウント、マウントするときになんか」
「うん」
「見る」
「見るね、これ」
「うん」
「Ubuntu、Ubuntuとかで使われてるっぽい。まあでもLinuxは、Linuxは結構使われてるんじゃないかな、これは」
「うん」
「1番多いイメージだけどな、なんか」

「うん、うん。よく見る」
「そう。で、あとはXFS」
「あー、これもよく見る」
「これはね、あの、AmazonLinux2023とかで使われてます」
「2025だっけ?次のやつとか」
「え?」
「2023って最新?」
「じゃない?」

「やべ、それはエアアップすぎた」
「あ、分かんない。ちょっと最近あんまAWS触ってないんで分かんないっす。なんか最新くせえな」
「最新」
「そうだよ。まああんまここらへんは更新多くないイメージ。で、あとはねー、これ確か読み方ButterFSだった気がするんですけど、BTRFSってやつですね」
「うわー、知らんかも」
「うーん」
「バター」
「これはね、これもまあLinuxだけどFedora」

「レッドハットが支援するコミュニティ、RPMK」
「レッドハット」
「レッドハットパッケージマネージャー」
「レッドハットパッケージマネージャー。まあこのFedoraとかで使われてるこのButterFS、これはね、なんかスナップショットが取れるみたいな。一瞬で取れるか。丸ごと、ある時点の状態を丸ごと保存するスナップショットが一瞬で取れるとか。データの破損を自分で検知できるみたいな」
「一瞬で取れるのはなんで?すごいな」
「一瞬で取れるのはなんでだろうね。まあでもスナップショットってなんか、ん、あんまりこうはっきり分かんないけどさ、実データは保存してないよね、確か」
「うーん」
「えー、そうなのか」

「確かね」
「まあその、なんだ、差分バックアップ的なことはしてるかもしんないけど」
「うん。なんか説明聞くたびに毎回なんでこれでバック、あの、復元できるのって思うイメージあるんだよな。スナップショットって」
「うん、うん、うん」
「だからなんだっけ、物理的に吹っ飛んだら確か戻せないんだよね、スナップショットは」
「あ、そうなんだ」
「うん。まあでもこのあたりかな。ほかのやつはね、なんかNTFSとかAPFSとかは、まあWindowsとかMacの標準みたいな感じなんで、開発してるときにこう触るとかはあんまりないかもしんないっすね」
「うん、うん、うん」

「まあというので、まあファイルシステムいくつかあって、で、ちょっと最初のほうに脱線して触れたとおり、1つのシステムの中で複数のファイルシステム動いてたりするので、あれなんですけど、まあこういうのはね、なんか性能とかに応じて結構使い分けたりとかするらしいので、あと分散してるかどうかみたいなやつも確か関係あった気がするんだけど。まあそのへんはね、実際にこう、なんだ、あんまりシステム作ってて、うーん、今回ファイルシステムこれにしようかなみたいなマニアックなことすることを、僕はまあ正直これまでやってきたことないし、多分これからもあんまやんないと思うんですけど」
「あるかなー、今後」
「まあないよね。まあとはいえ、あの、こういうの知ってるのと知ってないので、いざサーバーに入って、あーストレージをマウントしなきゃーみたいなときにね、見えてくる世界が変わってくると思うので、今日はそんなファイルシステムのお話でした」
「あざました」
「はい」
「あざます。はい、じゃあ一言だけいいっすか、アフタートーク」
「一言だけで?」
「はい。最近Macの設定を変えたので、1つ」

「はい」
「1つ変えたいい設定、あの、キーボードで入力する数字を」
「うん」
「デフォルトで半角にできるっていう設定があるのをこの前知って、それ変えたらめっちゃ快適でした」
「全角のときもってこと?」
「はい、そうです」
「あるらしいね、それね」
「へー。めっちゃ便利。おすすめです」

「なるほどね」
「うん。まあ全角の数字使わないじゃないですか。てかなんか」
「全角はね、使わない」
「うん。登録するときって、まあ半角じゃないと受け付けられなかったりするんで」
「うん。え、俺たまにさ、あの、1とか2は使うんだけどさ」
「あー、はい」
「別にデフォルト半角でも、ぜん、あの、変換モードだったら、あの、変換でいけるってことよね」
「いけると思います、はい」

「じゃあそれ絶対いいやん」
「めっちゃいいっす。これマジでおすすめ。革命でした、僕」
「やろう」
「1番いいかも」
「はい。ちょっとやり方だけ、ざっと言えます?」
「やり方は、えーっと、Macのシステム設定のキーボードだったかな」
「はい。あ、じゃあ、あの、キーボードから気合で設定できると。まあそこは皆さんAIで調べてくださいって感じか」
「そう、そうですね。キーボードじゃなかったかな。はい。ちょっと奥まったとこにあったイメージですね」

「ちょっと奥まったところにあった?」
「はい」
「押し入れ探してるんじゃないんだからさ」
「意外、意外と奥まってましたね、確か」
「うん」
「はい」
「Macの設定でキーボードから」
「はい」

「入力ソースで編集ボタンを押して、で、日本語入力選択して、で、そうすると、その数字を全角入力っていうなんかチェックマークがあって、多分これチェック取ったら半角になるんじゃないっすか」
「そこだ。奥まってますよね、ちょっと」
「え?」
「そう、そう、そう」
「ない」
「そこです」
「あ、なった、なった」
「それMacの日本語入力?」

「Macの日本語入力です。Google日本語入力はないです」
「あー、だからか。なるほど。Googleの日本語入力入れちゃってるんっすよね。無理なのか、そうすると。なんか調べたらワンチャンありそうじゃないっすか」
「諦めた。みんな」
「みんな」
「あとは任せた」
「はい。おすすめです。革命でした、これは」
「いや、これね、あの、やってないんですけど革命っすね」
「うん」

「マジ全員やったほうがいいっす」
「うん。ほんと全員やったほうがいいと思いました」
「はい。じゃあ、じゅんぺい君」
「はい」
「革命的なティップスを共有ありがとう」
「ありがとう。あれ、はい。のりさんもいいエピソードありがとうございました」
「はい。ありがとう」
「はい」

「じゃあ、この番組では皆様からの感想をSNSのXで募集しております。ハッシュタグはひまじんプログラマーを付けて投稿していただくといいと思います」
「いいと思います」
「さらに、私たちに直接何かメッセージや思い、もしくは質問を届けたいという方は、エピソードの説明欄にあるGoogleフォームから、えー、お送りいただくことで、我々に届くことができるんで、いいと思います」
「いいと思います」
「いいと思います」
「また、Slackオンラインコミュニティ、ひまプロ談話室というものもございます。こちらでは、エンジニアリングに興味のある人たちが集まって、わいわいガヤガヤしていく、そんな温かいコミュニティとなっております」
「おま」
「えー、参加希望の方は、番組の説明欄にございますGoogleフォームよりお申し込みいただくと、サンクスページに招待リンクが埋め込まれておりますので、その招待リンクを使って入ってみるといいと思います」

「いいと思います」
「ぜひ入ってください」
「そして、この番組は各種ポッドキャストプラットフォームで配信中でございます。このエピソードが参考になったよ、おもしろかったよという方が、もしいらっしゃいましたら、評価ボタンみたいなものがあると思いますので、そちらで星を付けて評価していただけると、こうやってはい、日々の配信してくためのエネルギーになったり、活力になったり、その他何かになったりするので、ぜひともよろしくお願いいたします」
「めったに」
「はい、どうぞ」
「めったにいないみたいな表現になっちゃってましたけどね。いるはず」
「いやいやいやいや」
「うん?」

「いるはずですよ」
「いるはず。いるはずもおかしいな。はい」
「いるはずですよ」
「はい」
「太閤検地について知りたかった人」
「うん」
「それでは皆さん、また来週、じゃない、また次回」
「バイバイ」

「バイバイ」
「オンラインコミュニティ、ひまプロ談話室を作りました」
「僕らの発信だけではなく、皆さんの発信も大歓迎」
「コミュニティイベントやポッドキャスト裏話もたっぷり。学びと笑いを共有する場にしていきましょう」
「参加は簡単。説明欄のリンクをポチッと押してフォームを送るだけ」
「あなたのアウトプットが誰かの学びになる。今すぐ説明欄からクリック」