【超ざっくり解説シリーズ3】シェル(Shell)とは?シェルについて初心者にもわかりやすく解説するよ
とよももだよ!今日はプログラミングをやると必ず耳にする「シェル (Shell)」について説明するよ
■ オペレーションシステム(OS)とは
Shellを理解するには、OS(オペレーションシステム)について知っておく必要があるからざっくり説明するよ
「OS」とは、PCのハードウェア(手で触れることのできる部分)とPCに入っているソフトウェア(手で触れることのできない部分)を管理してくれている、超超超基本的なソフトウェアのことだよ
OSが入っていないPCは、PCとして動いてくれないんだ。PCに限らず、スマートフォンにもOSが入っているよ
私たちがPCのGoogle ChromeでWEBサイトを見れたり、ExcelやWordを使えるのは、OSが私たちが見えないところで、これらの機能を実現するためのお仕事をやってくれているからだよ
■ カーネル (Kernel)とShellの関係性
OSには「カーネル (Kernel)」と呼ばれる心臓部分があるよ。このカーネルは、PCのハードウェアとソフトウェアの間に立って仲介してくれていると考えてね
上の図のように、Shellはカーネルを包み込むように存在しているよ
ShellはOSとカーネルの間で通訳をしてくれたり、カーネルからの指示をOSに伝えてくれるコンピュータプログラムなんだ
私たちユーザは、コマンドなどでのみカーネルとコミュニケーションをとることができるんだよね
あなたが「このプログラムを起動したい!して!」とPCに伝えた時、Shellがカーネルにその旨を伝えて、カーネルがShell経由でOSに指示を出すよ
そしてOSは、あなたが起動したいプログラムを動かしてくれるんだ
こんな風にShellが仲介役をやってくれているおかげで、私たちユーザは使いたいプログラムを動かし、楽しむことができているよ
Shellには色々と種類があるよ。一番一般的なものは「bash」。その他に「csh」や「fish」、「zsh」などもあるよ。
全部同じじゃないの?と思うかもしれないけど、それぞれ使い方や特徴が違うんだ。興味があったら調べてみてね
■ TerminalとShellの違いは?同じなの?
「TerminalとShellって同じなの?」という疑問が出てこないかな?私はずっと不思議に思ってたよ。ついでなので説明するよ
「Terminal」はユーザであるあなたが、キーボードで入力した文字をTerminalの画面に表示してくれるプログラムだよ
Terminal自体は文字を表示することしかできないから、あなたが入力した文字をどのように扱えばいいのかわからないんだ
なので、あなたが入力した文字をTerminalはShellに送るよ
ShellはTerminalから送られてきた文字をコマンドに変換して、まずどのプログラムをユーザが使いたいのかを確認するよ。それからそのコマンドをShellがカーネルに送って、カーネルとOSが対象のプログラムを起動するよ
最後に、実行結果をあなたが見れるように、ShellがTerminalに結果を送って、Terminalがそれを表示するよ
■ まとめ
長々と説明したけど簡潔にまとめるよ
Shellは「カーネルとOSの間で色々なお仕事をしてくれるプログラム」
Terminalは「ユーザとShellの間に入って色々なお仕事をしてくれるプログラム」だよ
カーネルについてはとても奥が深くてここでは説明しきれないので、興味がある人はネット検索などで調べてみてね!
■ お世話になった参考資料たち
■ シェルとは
■ Qiita: 初心者が調べた。shellとは
■ Quora: What is the shell in OS?
■ Youtube: The Terminal vs The Shell
■ Youtube: What is a shell?
■ 広告だじょ〜
株式会社X-HACKではプログラミング初学者向けの勉強会や、複数回に渡るプチスクールを開催しています
興味がある方はこちらのconnpassページをご確認ください
Twitterで「#xhack勉強会」と検索しても色々と情報が見れます!