はじめに
この記事はNuco Advent Calendar 2024の21日目の記事です。
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。
本記事では、エンジニアが低レイヤーを学ぶ上で参考になるコンテンツを紹介します。
低レイヤーに詳しくない人はもちろん、大学で情報工学を学んだ人にもおすすめできるコンテンツが盛り沢山です。
なぜ学ぶか
低レイヤーの知識を学ぶことで、ソフトウェアが動作する仕組みを深く理解し、パフォーマンス改善やバグの根本原因を特定できる力が身につきます。最新技術をブラックボックスのまま扱うと、さらに新しい技術が出た時に1から学習する必要があるかもしれません。
低レイヤーを学ぶことで技術の本質を理解し、最新技術のキャッチアップを手助けしてくれます。あなたがAIを使ってコードを生成し、貼り付けるだけのコピペ戦士なら、一読の価値がありです。
知識の深さが技術の幅を広げ、より本質的な問題解決が可能です。
どんな分野があるのかを一緒に見ていきましょう。
この記事で紹介する分野一覧
- コンピュータ全体の理解
- コンピュータアーキテクチャ
- CPU
- オペレーティングシステム
- システムプログラミング
- コンピュータネットワーク
- コンパイラ、インタプリタ
- その他低レイヤーを学ぶときにおすすめコンテンツ
各分野を学ぶ上で参考になるコンテンツ
大まかな分類になっているので、低レイヤーにどんな分野があるかを抑えたら興味のある分野の項目を参考にしてください。
コンピュータ全体の理解
まずはコンピュータがどうやって動いているのか、動かすためにどんな部品が必要なのかを見ていきましょう。
YouTube
見るだけでコンピュータの内部まで学びたくなる動画です。
CS50というオンライン講義もこの教授がやっています。低レイヤーの話ではないですが、こちらもおすすめです。
技術書
ハードウェアからソフトウェアまでの技術の全体像をわかりやすいイラストで解説しています。
低レイヤ入門に最適な一冊です。
コンピュータの基本原理を丁寧に解説した入門書です。
どちらも読んで基礎知識を頭に入れておくと、この後の分野を学ぶのが楽になります。
コンピュータの高速化について様々な技術をまとめた入門書です。
通勤時間に読める文庫本サイズの入門書です。
隙間時間を有効活用しましょう。
低レイヤーに関わる分野はコンピュータサイエンスと強く紐づいているので、上記2冊でどんな関連分野があるの理解しましょう。
もっと幅広い範囲を知りたいならこれです。
海外大学でも使われています。
Nandゲートから始まりテトリスを動かせるようになるまで自作する本です。
CPU, OS, コンパイラなど他の分野もまとめて学べるお得本なので、時間がない時はこれだけで十分です。
最近第二版が出ました。
コンピュータアーキテクチャ
コンピュータを動かす部品を大体理解できたら、。次はどのようにして動いているのかを理論的な側面から知りましょう。
手を動かして学べる本もたくさんあるので、ぜひ手に取ってみてください。
演習がついている本を選ぶと記憶の定着を助けてくれるのでなおいいですね。
技術書
300ページくらいでコンピュータアーキテクチャを紹介している良書です。
サクッと理解したい時にはこれくらいのページ数の本がおすすめです。
大学の講義でも使われている教科書です。
コンピュータの歴史も紹介されているので、昔と今の違いを知ると結構感動します。
図が豊富にあり、覚えやすいが、量があってしんどいです。
パタヘネの愛称で知られています。
コンピュータサイエンスの教科書として世界的に定評がある一冊です。
ヘネパタと紹介されていることがよくあります。
x86アーキテクチャの古典的名著。基本を理解するのに最適です。
少し古いですが、今でも十分に通用します。
プログラマが知るべきハードウェアの側面に絞って紹介しているので、大学で情報工学を学んだことがない人にもおすすめです。
演習付なのもポイントが高いですね。
ハードウェア記述言語で実際にCPUを作りながら学べる良書です。
アセンブリとC言語を使用し、コンピュータが内部でどのように動くかを克明に解説した1冊です。
900ページある鈍器です。ちなみにお値段18000円。
コンピュータシステムの理論と実装をやって物足りなければこれをやるのもありです。
各章ごとに演習問題がついているので、しっかり実力がつく一冊です。
参考資料とか課題についてはカーネギーメロン大学のwebサイトにあります。
CPU
コンピュータアーキテクチャの本とかぶっている部分も多いですが、CPUメインの本を紹介します。
技術書
CPUの内部構造をわかりやすく解説した良書です。
2011年出版なので、最新の知識は以下の本を参考にしてください。
最新のCPUについても解説しているわかりやすい一冊です。
仕事で各コードを高速化する際の手助けをしてくれるでしょう。
可愛いメイドさんが表紙の一冊です。
回路を購入してCPUを作成しますが、作成しなくても十分勉強になります。
プログラムを動かしながら学べるため、初心者でも理解しやすい実践的な内容です。
低級言語を実行するエミュレータの制作を通してx86 CPUの仕組みを学ぶ本です。
200ページほどで解説しており取り組みやすいです。
ゲーム
電子回路設計を題材にしたパズルゲームです。
どれだけスマートに実装できたかでを数値化してスコアを競うゲームです。
パズル好きにはたまらないと思います。
コンピュータの基本構造を学ぶことができます。
論理回路やCPUに挫折したことある人でもゲームを通して学んでみてください。
オペレーティングシステム
お楽しみの自作OSのお時間です。
教科書も豊富にあるので、理論と実装を行き来しながら学びましょう。
Linuxも少し紹介しています。
自作OSコミュニティもあるので、ぜひあきらめずに挑戦してみてください。
YouTube
-
45分でゼロから作る!OS自作ライブコーディング 2023-7-29 C-3
OS自作の雰囲気を味わえるライブコーディング動画です。
解説をしながらプログラミングをしているのが参考になります。
技術書
サクッと全体像だけ理解するときにおすすめです。
OSは作る方が番面白いので、さっさと実装の本に進むと挫折せずに楽しめます。
OSの入門教科書です。
情報工学を専攻していない人でも読めるのでおすすめです。
上と同じく、理論的な内容をわかりやすく解説している教科書です。
Android OSの裏側を学べる本です。
今までの知識があれば自分が使っているスマートフォンの裏側が想像できて面白いです。
C++でOSを自作する本です。
ネットを漁ればC++以外で実装している記事がたくさん出てきます。
みかん本と呼ばれています。
CでOSを自作する本です。
フロッピーディスクの使用を想定しており、時代の流れを感じる一冊です。
こちらもみかん本と同様かなり有名なので、作ってみた系の記事がたくさんあります。
RustでOSを作成する本です。
C, C++だけでなく、せっかくならRustでやりたい人向けの本です。
無料で読めます。
無料で読める自作OSの本です。
日本語訳されたGithubもあります。
最後までできればかなり力がつきます。
組み込み系の自作OSです。
書籍紹介ページの対象読者を見てやってみようかなと思える一冊です。(大体痛い目に遭うやつ)
「OSというものを作ってみたい中学生や高校生,パソコン部の生徒」
UNIXカーネルのソースコードを読みながら勉強できる一冊です。
10000行のソースコードを読むのでOSの力がつきます。
タネンバウム先生の分厚い本です。
MINIXというOSを作成します。
16000円もするので、会社にあると嬉しい一冊です。
大学の授業でもよく教科書として使われています。
Linux関連
ハンズオン形式でOSレベルの低レイヤの知識を学べます。
最初にこの本から始めて、イメージを掴みましょう。
システムパフォーマンスを上げる技法をLinuxを用いて解説している本です
読めば間違いなく成長できる必読の一冊です。
システムプログラミング
ハードウェアとの繋がりをさらに勉強するために、実際にプログラムを書いてみましょう。
低レイヤーの勉強を通して、新しい言語に挑むのも自分の幅を広げるのに役立つと思います。
技術書
Goで書かれたアプリケーションから低レイヤまで降りていく本です。
Go使いにぜひ読んでいただきたい一冊です。
Rustに入門しながらシステムプログラミングを学べます。
-
詳解Rustプログラミング
Rustでシステムプログラミングを学べる本です。
Rust in Actionで検索すると英語の記事が出てきます。
200ページでLinuxのシステムプログラミングについて解説しています。
雰囲気を掴むのにぴったりです。
Linuxの仕組みを学びながらシステムプログラミングも学べる本です。
ページ数の割にサクッと読めると好評です。
Linuxカーネルの内部に焦点を当てたシステムプログラミングの指南書です。
システムコールの基礎から応用までを詳しく解説しています。
システムプログラミングの重要なトピックを丁寧に紹介している一冊です。
Amazonの本の紹介が物騒ですが、それにも納得できるボリュームのある良書です。
「UNIXでプログラミングを行う者すべてが読むべき1冊。読んでないヤツはモグリだ」
とても分厚い。
Linuxプログラミングをマスターしたいなら避けては通れない一冊です。
コンピュータネットワーク
技術書
図を使ってサクッと理解したい時にいいです。
理解が進まない分野は図を使ってさくっと理解したいですね。
ネットワークの基礎をわかりやすく解説した入門書。
ど定番の本です。
選ぶのに迷ったらこれだけでも読んでみてください。
資格試験の本なので、ネットワークの体系的な知識が得られます。
理論だけでなく、実際にLinux上で動かしながらTCP/IPの本質を体験的に理解できます。
著者の書籍紹介ページ。
タネンバウム先生の本。
マスタリングTCP/IPを読み終えたら次に読みたいですね。
現代に必要不可欠なセキュアな通信の仕組みを詳しく解説しています。
プログラミングでネットワークの動作を理解できる一冊です。
講義動画と演習がついたネットワークに関する本です。
こちらは無料で全て読むことができます。
コンパイラ、インタプリタ
自分で言語を実装して、普段書いているプログラムがどのように解析されているかを知りましょう。
自分が習得したい言語や好きな言語を使って自作系の本を読むと挫折しにくいです。
技術書
コンパイラとインタプリタどちらも学べる入門の一冊です。
コンパイラの仕事を1から説明している良書です。
180ページほどでコンパイラを解説した一冊です。
著者がYouTubeで講義動画を公開しているので、独学者向けです。
JavaScriptでコンパイラを作成する本です。
タイガーブックと呼ばれています。
大学の教科書としてよく紹介されるので、大学で情報工学を学んだことがない人におすすめです。
ドラゴンブックと呼ばれています
1000ページ近くあるので護身用に一冊あると便利ですね。
こちらもタイガーブック同様に大学の教科書として使用されています。
Cコンパイラの作成を通じてプログラムの仕組みや低レイヤの知識を実践的に学べるガイドブックです。
文法解析やコード生成といった基礎から丁寧に解説しています。
C言語を書いたことがないエンジニアも多いと思うので、ぜひ挑戦してほしいですね。
Pythonでインタプリタを作成します
比較的短いのでこれで自作インタプリタに入門しましょう。
Goでインタプリタを作る本です。
普段使い慣れている言語で低レイヤを学べるのはありがたいですね。
Rustでインタプリタを作成します。
全て無料で読める英語のオンラインブックです。
こちらも無料で読める英語のオンラインブックです。
CでLispインタプリタを作成します。
プログラミング言語のインタプリタ開発を学びながら、言語設計や実装の基礎を習得できる一冊です。
その他低レイヤーを学ぶときにおすすめコンテンツ
低レイヤー関連
ポッドキャスト
「低レイヤーを知りたい人のためのCコンパイラ入門」著者のRui Ueyamaさんのポッドキャストです。
技術書
低レイヤーを色々学んだ後に読むと知識がつながって楽しめます。
主にアセンブリとCで解説しているので、SNSで人気だからと手をつけると痛い目に遭います。
ビット操作をメインに少しでも効率的なコードを書く手法を紹介しています。
タイトルだけで書いたくなってしまいますね。
Webサイトのパフォーマンスあげてスコアを競うISUCONという大会の本です。
大会関係なく、どうやってパフォーマンスを上げるかという点から詳しく説明されているのでぜひ読んでみてください。
今までの知識が活きること間違いなしです。
アルゴリズムとデータ構造
技術書
よく見る分厚いアルゴリズムとデータ構造の本ではないので、さくっと入門できます。
効率よくデータを操作する方法について学び、低レイヤーだけでなく、アプリケーションにも応用しましょう。
最近第三版が出ました。
スティーブン・エス・スキーナ教授の授業動画がYoutbueにあがっているので、英語の勉強をしながら学ぶとかなり力がつきます。
公式サイト
データベース
どのような仕組みでデータベースが動作しているのかを理解しましょう。
技術書
- Amazon: リレーショナルデータベース入門 第3版
リレーショナルデータベースの基礎から応用までを包括的に解説した書籍です。
大量のデータを処理するために、現実のソフトウェアはどのようにして課題を解決しているかを書いた良書です。
まとめ
ここまで読めば各分野にどんな本があるのか色々知ることができたと思います。
銀の弾丸のように、これさえ読めば大丈夫といった本はないので、ぜひ自分に合う本を探してみてください。
コメント欄でおすすめの本があれば教えてください。
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。