{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/udemy-crafting-shell","result":{"data":{"markdownRemark":{"id":"7509fa57-a49f-57db-b433-ad2a99edce64","html":"<p>Udemy で「自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう」というコースをリリースしました。</p>\n<p>どんなコースなのか、この記事で少し紹介させていただきます。</p>\n<p>※ 著者が出した Udemy 講座の一覧は <a href=\"https://www.nextskill.co.jp/courses\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a> です。</p>\n<h2 id=\"コース概要\" style=\"position:relative;\"><a href=\"#%E3%82%B3%E3%83%BC%E3%82%B9%E6%A6%82%E8%A6%81\" aria-label=\"コース概要 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>コース概要</h2>\n<p>IT エンジニアとして活動していると、何かの機会に Bash や Zsh といった「シェル」にふれるはずです。</p>\n<p>「シェル」についてはよく「カーネル」を囲む図で説明されたりしますが、それ以上はよく知らないという方も多いのではないでしょうか？\nそもそも「カーネル」についても「OSのコア」ぐらいの簡単な説明が多く、結局何なのかよく分からないという方は少なくないと思います。</p>\n<p>さて、「シェル」で行うことといえば「コマンドの実行」ですが、そもそも「コマンドの実行」とは何なのでしょうか？\n他には、「何かをインストールする」というのもよく分からない、何か理解の及ばない変化がコンピュータに起こるもの、と思っている方も少なくないと思います。</p>\n<p>そこでこの講座では…\n「シェル」を自作しながら、Linux のしくみや OS に近い領域のプログラミングを学んでいきます。\n「シェルってなに？コマンドの実行ってなに？」といった疑問を解消していきます。</p>\n<h2 id=\"このコースで学ぶこと・学ばないこと\" style=\"position:relative;\"><a href=\"#%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%A7%E5%AD%A6%E3%81%B6%E3%81%93%E3%81%A8%E3%83%BB%E5%AD%A6%E3%81%B0%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8\" aria-label=\"このコースで学ぶこと・学ばないこと permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>このコースで学ぶこと・学ばないこと</h2>\n<p>シェルの自作は、大きく 2 つの知識から成り立ちます。</p>\n<p>1.「Linux システムプログラミング」（OS に近い領域のプログラミングの知識）\n2.「インタプリタの作り方」（プログラミング言語の解析・実行の知識）</p>\n<p>このコースで学ぶのは「Linux システムプログラミング」の知識です。\nこのコースでは「インタプリタの作り方」は扱いません。</p>\n<p>※ 実装するシェルも、あくまで学習目的の簡易的なものです</p>\n<h2 id=\"主な対象者\" style=\"position:relative;\"><a href=\"#%E4%B8%BB%E3%81%AA%E5%AF%BE%E8%B1%A1%E8%80%85\" aria-label=\"主な対象者 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>主な対象者</h2>\n<ul>\n<li>Linux に入門して基本的なコマンドを身につけたが、もっと詳しくしくみを理解したい方</li>\n<li>Linux における「シェル」や「コマンドの実行」「標準入出力」などのしくみを、シェルの実装のレベルで知りたい方</li>\n<li>OS に近い領域のプログラミングに興味がある方</li>\n<li>プログラムをすらすら実装できるようになってきて、少し発展的な題材の実装に挑戦してみたい方</li>\n</ul>\n<h2 id=\"このコースの特徴\" style=\"position:relative;\"><a href=\"#%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%AE%E7%89%B9%E5%BE%B4\" aria-label=\"このコースの特徴 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>このコースの特徴</h2>\n<p>ここから、このコースの特徴を紹介します。</p>\n<h2 id=\"python-で自作シェルを実装\" style=\"position:relative;\"><a href=\"#python-%E3%81%A7%E8%87%AA%E4%BD%9C%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%92%E5%AE%9F%E8%A3%85\" aria-label=\"python で自作シェルを実装 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Python で自作シェルを実装</h2>\n<p>シェルのような OS に近い領域のプログラムの実装には、C や Go、Rust といったプログラミング言語が使われることが多いです。\nしかし、これらの言語よりも少ない前提知識で挑戦できるよう、このコースでは「Python」を使ってシェルを実装します。</p>\n<p>「Python でシェルを自作できるの？」という疑問を持つかもしれませんが、Linux の動作を踏まえると、Python でも実装可能なのです。\nなぜ Python でもシェルを実装可能なのか、という動作のしくみについても解説していきます。</p>\n<h2 id=\"たった-150-行のコード・3-時間の講座で解説\" style=\"position:relative;\"><a href=\"#%E3%81%9F%E3%81%A3%E3%81%9F-150-%E8%A1%8C%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB3-%E6%99%82%E9%96%93%E3%81%AE%E8%AC%9B%E5%BA%A7%E3%81%A7%E8%A7%A3%E8%AA%AC\" aria-label=\"たった 150 行のコード・3 時間の講座で解説 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>たった 150 行のコード・3 時間の講座で解説</h2>\n<p>最終的に完成する自作シェルは、Python で 150 行程度というとても小さなコードです。</p>\n<p>また、講座全体としても 3 時間ほどで、コンパクトに学習できるようになっています。</p>\n<p>この小さなコード、短時間の講座で、Linux のしくみや OS に近い領域のプログラミングについて、多くのことを学んでいきます。</p>\n<h2 id=\"おわりに\" style=\"position:relative;\"><a href=\"#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\" aria-label=\"おわりに permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>おわりに</h2>\n<p>「シェル」の自作に興味を持つ方は多いと思いますが、私が調べた限り、少なくとも日本語では、しっかりまとまった解説が見つかりませんでした。</p>\n<p>簡易的なシェルの自作は実はとても簡単で、プログラムの動作を学ぶのにもぴったりの題材です。\nぜひ受講してみてください！</p>\n<p>最後に、著者が出した Udemy 講座の一覧（割引クーポン付き）は、以下のページにまとまっています。</p>\n<p><a href=\"https://www.nextskill.co.jp/courses\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://www.nextskill.co.jp/courses</a></p>\n<p>ご興味ある方はこちらからアクセスしてみてください。</p>","fields":{"slug":"/posts/udemy-crafting-shell","tagSlugs":["/tag/linux/"],"autoRecommendPosts":["udemy-linux-reintroduction","udemy-step-up-python","udemy-docker-from-linux-and-networking","udemy-learning-application-architecture-with-reversi"]},"frontmatter":{"date":"2023-12-29T02:19:16.441Z","description":"Udemy で「自作シェルで学ぶLinuxシステムプログラミング―Pythonで150行の「シェル」を実装してLinuxのしくみを学ぼう」というコースをリリースしました。\nどんなコースなのか、この記事で少し紹介させていただきます。","tags":["linux"],"title":"Udemy で「自作シェルで学ぶLinuxシステムプログラミング」をリリースしました","socialImage":null,"recommendPosts":null}}},"pageContext":{"slug":"/posts/udemy-crafting-shell"}},"staticQueryHashes":["251939775","3942705351","401334301"]}