恥をかかないためのLinuxファイルシステムクイズ!
「さあ始まりましたひまじんプログラマーの週末エンジニアリングレッスンでございますやってまいりました本日もしっかりしてはいで今日はですねLinuxのファイルシステムの一部駆け出しエンジニアには知っててほしい部分をちょっとお話しさせていただきますほうはいファイルシステムじゅんぺい知ってるかあのー」
「知りませんちなみにそんなにディープなところ行かないです全く行かないですあんまりどういう話なのかも想像ついてないんですけど確かにそれもそうですねどういういいですか予想でいいですかWindowsでいうCドライブDドライブ的ななんか」
「そういうところの話ですかそれのLinux版ちなみにそこまでもいかないんですけど今日はどこまでいくかっていうとよく見るあのディレクトリ何のディレクトリか分かるっていうところとあとLinuxってざっくりこういう特徴あるよねみたいなところの話ですフェザータッチしてるわけですね本当にフェザータッチですというのでまずそもそもですよLinuxのファイルシステムっていうのがあるんですがこいつだいぶ偉いと」
「偉いですかなりすごいとかじゃないファイルシステム界の中でってことそれはわからんわからんすけど」
「冷静にストレージっていろいろあるわけなんですよハードディスクメモリーキャッシュUSBドライブCDこれらを全部同じような感じで扱えるようにしてるのすごく偉いんですよねなるほどフォルダがあって中にファイルとかまたさらにフォルダがあってっていう感じですかそうですそうですだってHDDハードディスクにしてもハードディスクって中身にCDみたいな演場入ってるんですけどあのどこのセクターの部分読み込んでるみたいなね」
「その辺を全部ふわっとさせてディレクトリとかファイルで表示してくれてると」
「CDのここの部分を読み取ってるみたいなところをああいう風に簡単に表してくれてるからすごいぞってすごいそういうことそういうことすごいんよしかもなおかつね円盤ってお部屋が区切られてるんですけどセクターみたいな感じでねあれ適当に入れるとめちゃめちゃ隙間が空いた状態で効率よく使えないことになるんですようんうん」
「それも効率的に記憶できるようにしてくれてたりするんですねえらいなっていうので」

「で偉いなーって思ってる中でその偉いなーっていうのをやってくれてるのがVFSというねバーチャルファイルシステムというものでございます偉いんですけどでLinuxの特徴としてLinuxって全てをファイルとして扱うっていうのが特徴としてあるんですよそのファイルシステムとして確かに全部そうかもどういうことかというとですねLinuxってCDドライブもファイルになってるんですよ」
「マウスとかハードディスクとかもはいはいはいはいそうなんですねそうなんですよ確かにはいMacとかWindowsとかだと多分まあドライブとかUSBデバイスとして表示されると思うんですけどLinuxってあのチェンジディレクトリとかでそのマウスとかまでいけるんですよはいはいチェンジディレクトリでいけるってことはファイルなんですようんうんうんまあもちろんねマウスっていうのがあるわけじゃないんですけどねはいはいうんうん」
「ああそういうことですかWindowsとかだとなんか何ですかそのCドライブとかっていう風に書いてありますけどそれもLinuxだとなんとかファイル的な感じに置き換えられてるってことですねそうだねそうそうそうそうまあちょっと正確に言う話はねちょっと今後のクイズに関わるので今のところ触れないでおくんですけどクイズですねあるんですね」
「さっきHDDとかUSBとかうんうんかんないって話をしましたけどああいうストレージってそれぞれフォーマットが違かったりするんですねフォーマットPDFとかDXTとかそういうことですかいやいや拡張子ではなくてですねなんて言うんでしょうね記憶の記録の形式記録の形式文字コード的な意味ですかいやもっと」
「ちょっと違うと思います。ちょっと違うの?はい。すいません。正直、ぶっちゃけそんなに詳しくないんで、なんとも言えないんですけど、ドライブ系?SSDとかSDカードとかを初期化する時ってフォーマットするって言いません?いう。懐かしい。でも、めっちゃ昔のパソコンでしか聞いたことない。今もあります。え?今もあります。マジ?はい。今もある。ディスクユーティリティとかで。消去って書いてるんですけどね、Macは。でもフォーマットするんですよ。へー。そういういろんなね、あのー」
「違う方法で書かれてるやつもみんな等しく扱ってってくれてるのがこのVFSっていうバーチャルファイルシステムってやつですねで偉いぞーという中で偉いぞーという中でこれで今までLinuxのファイルシステムのVFSというところをちょっとお話しさせていただいたんですがここからは常識クイズじゃないですけど明日使えるいや恥をかかないための勉強になりますいやいやいや」
「リナックスでねCDスラッシュってルートに行った後はいバーンっていっぱいディレクトリ出ますよねありますね例えばどんなのがありますか全然分かんないAPPないですかないかなないな作ってればあるルートあるルートあるあとはあそこらへんはいサービスないない」
「すいませんちょっとありそうでないやつばっか言っちゃいそうなんでやめておきますここら辺でじゃあじゅんぺいを対象にクイズとして成立するか非常に微妙なところなんですけどまあでもね知っとけっていうのはちょっとやっぱあるのでねじゃあちょっとこのディレクトリ何のディレクトリだろうクイズをやっちゃったやろうと思いますじゃあいきますね回答の方法としてはなんだろうなこういう用途のディレクトリみたいな」

「回答方法でお願いしますじゃあまず例題からいきますね例題って言っても本題なんですけどスラホームの場合はスラホームはユーザーのホームディレクトリが入っているディレクトリですCDで何も引数渡さなかった時に移動されるところ」
「が入っているやつですねスラホームはホームディレクトリが入っているとユーザーのホームディレクトリが入っているディレクトリがホームでしたはいっていう感じで回答をお願いしますはいじゃあもうすいません例題でじゅんぺいくんが気絶しそうですはいあるある探検体になってますホームディレクトリの話しいですかあれだよCDでスラッシュいってルートいった後にはい」
「LSって見るといっぱいディレクトリが出るんだけどその中でホームっていうディレクトリがあるんですよそんなの見たことありますホームっていうディレクトリに何が入ってるかっていうとそのパソコンコンピューターに登録されてるユーザーのディレクトリがそのスラホームに全部入ってるあーいやいつもいますわそこにいつもそこにいるよねいつもいますあー」
「スラホームってねなるほどちなみにマックの場合はスラユーザーズですね確か違かったらすみません大文字のユーザーでしょユーが大文字のっていうのが例題でしただんだんと難易度を上げていく感じでいきますね次スラルートルートはねROTですねじゃあじゅんぺいくんからルートなんで」
「なんかあんまいじっちゃいけないファイルたちが入ってるみたいななるほどねアバウトすぎますねこれアバウトすぎるからね禁断の正義ってこと?禁断の正義なるほどねちょっとこれはいそれが回答ですじゃあ次のりさんお願いしますはいこれレベル1ですか?レベル1です」
「ルートユーザーのためのホームディレクトリだと思ってます大正解です完璧ルートユーザーのホームディレクトリがスラルートです」
「あんまり行くことないかなただスルースとかでルートになった後にホームディレクトリーなんか作ったらここになんかできますね確かにスラルートにね嬉しいイメージできましたなるほどなじゃあ次いきますそうですねスラDEVこれ何のディレクトリー」
「デブですよねデブですねデベロップメントのデブですよねきっとってことはえーわかんない例えば例えばのしから入るタイプ例えばDockerをインストールしたときにここに入るそういうアプリケーション開発に便利なツールってことですかが」

「入るところですなるほどじゃあのりさんお願いしますはいまず多分これデベロップメントじゃないと思ってて多分これデバイスですねマウスとかキーボードとかさっき言ったやつここに入ってた記憶がありますのりさん大正解ですあの関東くそーいやまずはデブだからデベロップメントだと思うんじゃねえぞすいませんすいません」
「気持ちはめっちゃわかるこれはねあるあるだよね最初絶対デベロップのデブかなと思ってノリさんが言う通りデバイスですねこれはなんでさっき言ってたハードディスクとか物理ディスクがあるときはデブのSDAってのに入ったりしますねSDアルファベットでパーティションハードディスクの中のパーティションなんだ区分け」
「はいはSDA1とか2という感じで表されたりしますね例えばであとあのおもろいなって思うのはデバイスじゃないのもあるんですよスラデブスラヌルとかあーあるあれじゃないですかそこにさいらないメッセージを出力することがありますさようでございますスラデブスラヌルっていうのは何もしないっていう出力先ファイル」
「シェルコマンドとかでエラーメッセージとかを標準出力したくねーわみたいな時はスラデブスラヌルに出力することでメッセージなんも出さないでコードの実行ができたりとかする使いどころ難しかったりするんですけどあとスラデブスラランダムとかひたすらランダムな数字を出してくれるっていうファイル」
「乱数生成ってことですかそれもファイルでやってるんだスラデブスラなんとかとかありますねそういうのが入っているのがこのデブここもあれですよね普段はあんまり触ることないところですよねきっとそうだね僕は最近触ってたのは例えばLinuxにSSDとかUSBとかバーンってプッサしてマウントすることがあるんですよマウントするときに」
「スラデブスラSDCとかDとか見に行ってマウントスラデブスラSDCスラなんとかのディレクトリにこの」
「SSDをマウントして表示しますみたいなコマンドを打つときに使いますねスラデブした対価は多分AWSとかでEC2でサーバー立てたときにストレージをアタッチするときとかにたまにコマンドを使わなきゃってときに触ることがありますねEBS拡張するときはそうそうそうそうもうありますねなるほど」
「ストレージもありかなあとDevNurは使うこともあるコマンドでたまに見ますよねたまに自分で進んで使おうと思ったことは一回もない別にメッセージ出てもいいやと思ってたよくないかと思うからねそれなんだよそんなスラDevでしたあと2問くらいにしようかな知ってるやつ来てくれ知ってるやつしか出しません3問いきますスラBINはいはいはい」

「これはもうバイナリーの瓶ですよねと思うんですよ何してんだろうなでもめっちゃ見ますよねめっちゃ見るねめっちゃ見るんですよね多分一番最初じゃないアルファベット順に並ばしたときに一番上多分AはないはずBも他はないはずあんのかなあんま分かんないバイナリーなんでバイナリーファイルが」
「全部入っているところ全部全部苦しいなこれ苦しいでもこれはねここが俺正直ここが一番恥ずかしいと思ってるここが分かった方がいい主観ですけどでも考えて分かるものではないいやちょっと分かるかもしれないいやなんかここもさっきのデブとかよりは使うんすよそうなんだね使わないんですかね入ってることある気がするなはい」
「なのでバイナリーのファイルが全部入っているところです」
「じゃあのりさんお願いしますバイナリーはあってると思うんですけど全部ではないと思ってます基本ここはコマンドが入っててかつビンとSビンとあとユーザーとかオプトとかの中にもたまにビンがあったりすると思うんですよそこの隅分けはちょっと怪しいなと思ってるんですけどCDとかLSとかそういうOSのめっちゃ基本的なコマンドが入ってるイメージです」
「ノリさん正解です基本的にコマンドが入っているところですねシェルファイルスクリプトとか書くときもねシャープビックリビンシェルって書きますよねスラービンシェルってねシバンって言うらしいですよルマンドみたいなどういう意味なんだろうシバンなんかね分かんないですね読み方だけはっきり覚えましたシバンあの部分のこと」
「ちなみにそのだからビンはCATとかLSとかそういうコマンドが入ってますさっきのりさんが言ってたSビンはシステム管理用のコマンドが入っているらしくてリブートとかシャットダウンとかああなるほどねそういうのが入っているらしいですねでユーザーは言うかUSRですねUSRすらUSRのユーザーはユーザーごとのコマンドとかが入るところですねうんうん」
「自分で作ったコマンドとかもしくは自分だけ使えるようにインストールしたものとかビムとかアプトゲットしたら普通に入らないかな入る気がするなどうなんでしょうねそんなビンです」
「これなんて読むんでしょうねビンですよね多分ビンって読んでるですよね読み方ね分かんないから確かに教えてほしいどこにも書いてないよねちなみにのりさんが言ってたオプトとかってオプトは何ですかよく見るイメージあるんですけどやめとけやめとけこの後の問題で来たらどうすんだよオプト自体も言っちゃいますいいですよ問題もいっぱいあるんでオプトはですねスラOPTちょっと語源は何なんだろうオプトは」

「これはですねアプリケーションソフトウェアパッケージが入るものですねなんでしょうねバッジファイルとか入れることありますそうですねそういうアプリケーションに適用させるファイル正直僕とあんまり使い道分かってない勝手に入るところとかなんでしょうねきっとねはいじゃああと2個じゃあスラVARいやー入ったことないなバーですねバー」
「いやー入るよここはしょっちゅう使うなーえマジっすか入る入る入ってんのかな俺じゃあちなみに僕はこれは正解は知りませんでしたこういうのに使うっていうのは知ってるんですけどはいはいはいやばい検討もつかないえーとマジでわからんなえーJavaScriptのファイルが入るところ変数宣言に引っ張られてんじゃんJavaScriptまあといえばもうJavaScriptでした僕の中ではすいませんわからなすぎましたでもあれ語源同じなんじゃないかなノリさんお願いします」
「バリアブルのバーじゃないかなと思ってるんですけどあそこって可変のファイルというかよく更新がかかるファイルが入るイメージがあってログとかあとウェブサーバーとして使ってるサーバーならそのバーの中にwwwみたいなのを作ってhtmlみたいなのを作ってそこをドキュメントルートにするみたいなイメージがあります」
「っていう回答ですね合ってるんですが正式なディレクトリ全体として何かっていうとよく変更がかかるファイルですすごいバリアブルなんでしょうねすごいふわっとしてますよねまあ確かにねよく変わるやつここ入れとけ感がなかなか出てますけどそんなバーですじゃあラストETCはいえーと」
「ETCエトセトラなどなどって感じなんでなどなどって感じなんでうわーこれこのファイルどこ入れよう入れるとこねーっていうファイルたちが集まる場所はいノリさんお願いしますちょっと何の略かは分かんないんですけど設定ファイル入れるとこっすねノリさん大正解でございます」
「これは僕も何年か分からないんですけど設定ファイルを入れるところです確かにエトセトラなんじゃないかなって思うんですけどちなみに僕はフィリピン留学している時に英語の先生にエトセトラって言ったらエッチェトラって言われて本当って未だに思ってますエッチェトラ?エッチェトラだよって言われて本当の発音ではってことですそれはフィリピン方言じゃないってずっと思ってます俺も今思いましたフィリピン方言じゃないってねえ」
「エトセって言いますけどこれはなんか僕もその他のファイル入りそうだなと思ってたんですが設定ファイルが入るところですあれこれ俺使ってるのかだからよく設定ファイルいじるときはもうあんな中入ってでもだいたい中入ったらアパッチだったらhttpdとかエンジンxだったらエンジンxみたいなディレクトリが切られててその中にさらにコンフのファイルが入ってますねそうそうそうそう」
「あの辺いじったらだいたいサーバー再起動とかしないサーバーじゃないなアプリケーション再起動しないと動かないみたいなイメージありますね入ってるのか多分ね使ってそうだなっていうのを中心に出しましたはいっていうのでおさらいするとですね頭からスラルートはルートのホームディレクトリですあとは何言ったっけなデバイスデバイスが入ってるディレクトリですねディレクトリですねで」

「バーが変わるものいっぱい入ってますビンはコマンド入ってますエトセが設定ファイル入ってますぐらいですかねその辺覚えてたらもうあと引き出し一個もないマウントとかは分かりますよねスラーMNTとかねあとテンプとかね言われたら分かる指数とかね言われたら分かるな」
「みたいなのありますけどさっきのところ押さえたけどそんなに恥かかるんだろうというところでそうねバーETCじゃないですかよく使うのそうですねっていうお話でしたはいこれは半年後くらいに聞いて聞きながら答えれるかなってもう一回くらいやってもらえればいいかなって感じですね仕事しましたよね仕事しました?仕事しましたよねかけだしエンジニアとして仕事したかなと思って」
「クイズ企画を成り立たせてくれたってことね天然でしっかり仕事したな」
「その割にやりきった顔ないけど恥ずかしいなと思って半年後聞くとき今も恥ずかしいですけどこれがあるからこそ伸びますから人間はこういうの学びたかったらエルピックとかやるといいですねそうですねこのクイズおもろそうだなっていうので思いついた話だったのでぜひぜひ半年後聞き直しましょうありがとうございます今日のLinuxのファイルシステムのほんのごく一部の話でした」
「はいじゃあ今日はあのじゅんぺいくんがいるということでね学びありがとうじゅんぺいの学びということでもう作一言一言一言男らしすぎる意気込みじゃんそれ僕が今週学びで思ったのが現場でそのシングルスレッドだったところマルチスレッドに対応させたのがあったんですよなんかデータ操作だったら大変そうですね結構怖な」
「ペアブロとかしながらやってたりしたんですけどその機能自体はOKでしたとOKでしたただログとかも二重で出ちゃったりするようになっちゃってたんですよねそうなりそうだねなんで僕的にはマルチスレッドにしたときはそういう他の部分もマルチで出ちゃうようになっちゃうからそこら辺も気をつけ」
「気を配ってやっていかないとなっていう学びでした結局それはもう直したんですけど僕一人じゃちょっと直せなくて手伝ってもらいながらみたいなところで直したのでマルチに頑張ってこれをマルチにするぞっていうだけじゃなくて他のところも気を配るようにしようって思いましたマルチスレッドにしたことないんですけどちなみに僕もですマルチスレッドっていうのは一つのタスクを二つのスレッドで処理していくってことですかそうですねはい」
「難そう平行してみたいなイレギュラーケース考えるとめんどくさいんですよねマルチスレッドねじゃあ処理が途中で失敗した時のロールバックどういう風に実装するとかねそもそもどのレイヤーを維持するのそれアプリケーションプログラムでライブラリがあったりしますねパイソンとかだとマルチスレッドとでもそういう話しか分かんないけどなんていうんでしょうアリババクラウドのテーブルスターっていうデータベース」

「サービスから今データを読み込むみたいなところをシングルでバーってやってたんですけどその機能がアリババクラウド自体に機能というかAPIあってパラレルマルチにするのはこのAPIですみたいなのがあったんですよそれもまんま持ってきてこっちのコードに合わせて変更していくみたいなところだったんですね用意してもらってるやつを使って」
「自分のコードに対応させるっていう感じでしたアプリケーションのところをいじっていく感じになるんですかねそうですねAPIで提供してくれてるんだったらまだ裏側は吉田にやってくれそうだですね自前でコーディングするとねいろんなこと考えなきゃいけなくなりますけどSDKとかAPIとかでやってくれてるんだったらまだ何も考えなくても吉田にやってくれそうそうなんだマルチスレッドって一番」
「イメージつかない単語なんですよねそうなんですねシングルタスクのマルチスレッドとマルチタスクの場合もありますよねありますねマルチスレッドマルチプロセスの話ですよね多分そういうことかわかんないです今同じこと思いついてるかわかんないですけどその辺ややこしいですよね2つの仕事を同時にやっていくのか1個の仕事を複数のCPU使ってやっていくのかみたいなあーなるほど」
「その辺の用語の使い分け意外とぼやっとしてて分かります?あれなんですよね一応僕は今マルチスレッドって言ってましたけどアリババクラウドで提供されてるもので言うとパラレルスキャンっていうもので一個の例えばテーブルをバーって今までは上から下に読み込んでいたところを例えばそのテーブルを4つぐらいに分けて同じコンピューター同じ一つのものがその4つを同時に並行して読んでいく」
「っていう感じでしたなるほどねマルチタスクっぽいなイメージマルチタスクっぽいですねプロセスが複数ありそうなるほどそういう使い分けふわっとした話ですけど一つのプロセスを複数のスレッドがやるのがマルチスレッドで複数のプロセスを並行してやるのがマルチプロセスでどうやらどっちもできるのがマルチタスクっていうらしいですねそうなんだ」
「マルチタスクは正直僕あんまり知りませんでしたはいはいはいスレッドとマルチプロセスは多分基本情報とかで出てくるからなんとなくなんとなく把握してましたけどそういうらしいですへーってねマジでふわっとしちゃいますからねOSとかもさ複数のやつ動いてるように見えて実は」
「シングルスレッドとかじゃなかったでしたっけOSは知らんすけどPythonとかはそういうことありますちょっとずつ実行していくみたいなうんうんうんマルチスレッドですねOSどうだっけなCPUの数とかによるかもしれないですねひょっとしたらコア数とかで変わりそうだねそうですそうですそうです」
「はいっていう学びでした一盛り上がりしましたでもなんかこうちょっとこれ上級になるにあたってだけどなんかこの辺の同時並行処理みたいなやつはいつかやらなきゃなと思ってますパフォーマンス関わるときには必要ですよねそれこそビッグデータの処理とかは多分クリティカルにかかってくるいつか大規模なものを触るってなったらそういうのを検討しなきゃいけないときが来るんだろうなってなるよね来ます来ます」

「ずっとそれじゃないフィールドで生きていくこともできると思いますけどねまあ確かに全然いますからねあんまないですからね多分そういう大規模なの多分ねそれもできる大人になりましょうありがとうございましたありがとうございましたじゃあストーリー話したというところで最後に我々ハッシュタグひまじんプログラマーでフィードバックツイッターで募集してますのではい」
「気軽にね感想でも何でもつぶやきでもお願いしますよろしくお願いします最近はエゴサーチの幅をグーグルまで広げたのとこの前たまたまね暇人エンジニアのエンジニアリングレッスンみたいな感じでなにそれなっているのも見つけましてなんで見つけたのそれ幅広がりすぎですね不思議と暇人エンジニアだと本当に暇そうに見えるなって思った確かにねなんで引っかかったんだろうその曖昧なやつ」
「俺の検索力すごいな検索力あとは説明欄にあるGoogleフォームでもお便りとかトークテーマとか募集してますので質問とかですねそちらお願いしますじゃあ終わりますそれではまた次回バイバイ」