新しいLinuxの教科書を読んだ
TL;DR
読んだ経緯/私のレベル
私はこれまでLinuxを個人的な用途で5年以上使ってきました。 しかし、何かやりたいときや何か問題が起こったときはWeb検索して、出てきた検索結果を何も考えずにターミナルへコピペするという使い方でした。 当然、コピペしているものが何を意味するか、なぜその組み合わせだと上手く動くのか全く理解できていませんでした。 今年の4月にSEとして新卒入社し、これからプロとしてLinuxを使っていく上で現状のレベルままでは不安でした。 現在はまだ新入社員研修中で時間のあるので、今のうちにLinuxの基礎を勉強することにしました。
全体的な流れ
この本では、LinuxのCUI操作に必要な基礎的な知識について学ぶことができます。
- シェル
- ファイルシステム
- ファイルを操作するコマンド
- 探すコマンド
- 調べるコマンド
- vi
- bashの設定
- 権限
- プロセスとジョブに関するコマンド
- 標準入出力
- パイプ
- テキスト処理
- 正規表現
- シェルスクリプト
- アーカイブと圧縮に関するコマンド
- バージョン管理
- パッケージ管理
なお、この本ではCUI操作の解説に重きを置いているため、Linuxの各種設定に関してはbashの基本的な設定を除いて書かれていません。
また、内部的な仕組みに関しても書かれていません。 内部的な仕組みについて知りたければ、Linuxのしくみを読むといいかしれません。
できるようになったこと/わかるようになったこと
- シンボリックリンクとハードリンクの違いを理解できた
- lessコマンドで検索できるようになった
- findコマンドとlocateコマンドの違いを理解できた
- manコマンド以外でコマンドについて調べる方法を知った
- viの基本操作ができるようになった
- sourceコマンドのメリットを理解した
- プロセスをまとめてkillできるようになった
- 1つのターミナルで複数のジョブを操作できるようになった
- パイプを使えるようになった
- 2>&1を説明できるようになった
- yum installやgitの省略形ではない形を知った
その他
実はこの本、Linuxを使い始めたときに読んだことがあります。 そのときはコマンドをターミナルに入力して得られる結果があまりにも面白くなかったため、最初の方しか読むことができませんでした。 一方で、今回は今までコピペしてきた謎のコマンドの意味が分かるようになっていくのが面白かったため、最後まで読み通すことができました。 そのため、この本を読んでみて「少しつまらないなぁ」と思ったら、「コピペしてるコマンドの意味を知りたい!」という気持ちが湧き出てくるまで、しばらくコピペでLinuxを使ってみるのもありかもしれません。
今回の私の経験に近いツイートを前に見たので貼っておきます。
学習は優先順位がめちゃくちゃ重要。
— ふろむだ (@fromdusktildawn) January 18, 2022
次の①→②→③→④の優先順位でやると、質の高いスキルを素早く学べる。 pic.twitter.com/VTWK3dTIF6
私はどのようにしてLinuxカーネルを学んだかを読んだ
読んだ経緯
私はこの4月に就職するので、これからどんなスキルを強味に生き残っていこうかを考えている。 昨今は機械学習が流行っていて面白そうではあるのだが、自分の能力を考えると、そこに飛び込んでも付いて行けそうにない。 続いて思いついたのが、低レイヤである。私は仕組みを理解することが好きなので、興味を持って勉強できるのでは?と思ったのだ。 読書メーターを徘徊していたところ、本書を見つけ、今の自分にちょうどいいかもしれないと感じ読むことにした。
私のレベル
ほとんどLinuxに関する知識はなく、自分のパソコンにUbuntuを入れて少しLinuxコマンドやシステムコールを触ったことのある程度である。「試して理解Linuxのしくみ」という本を同時に読み進めているので、本書を読むための助けになった。
書籍の全体的な流れ
最初に著者がなぜLinuxカーネルを学び始めたかが書かれている。ものづくりに興味のある人であれば、著者に共感できる人も少なくないのでは?と思う。続いて、著者がしてしまった学習する上での失敗が紹介される。この後の章から学び方が紹介されるのだが、この失敗談があることで、なぜそのような学び方が必要かが分かる。残りの章は学び方の解説となっている。初めに学び方の要点を示した上で、各項目の詳細な説明がある。ここでは学び方だけではなく、知っておくと学びやすくなるLinuxカーネルの基礎知識も解説されている。著者にとっては基礎知識なのだろうが、私には難しく感じられるところもあった。
読んだ感想
Linuxカーネルの勉強法はネットで調べてもなかなか情報がないので、たいへん貴重な情報を知ることができた。私はKindleで読んだのだが、550円という安さも驚きである。
本書では学び方が詳細に書かれているので、これからLinuxに関する知識を極めていこうかどうか悩んでいる私としては「本当にそれらの学習に興味を持って取り組めるか?」が具体的に想像できたので、自分の今後の人生を考えていく上でも参考になった。具体的に想像した結果、ソースコードを読むために特定のコンピュータアーキテクチャの勉強をしなくてはいけない部分が私は興味が保てそうにないので、Linuxは必要になったときに必要な部分だけ学ぶことにして、そこまで深入りしないようにしようと思った。
本書はLinuxカーネルの学び方を取り上げているが、解説を部分的に切り取ったり抽象化したりすれば、他の学習にも活かせるような内容だと思う。
『「技術書」の読書術』を読んで、これから取り組むこと
『「技術書」の読書術』を読んだ。この書籍はタイトルにある技術書の読み方だけではなく、技術書の選び方やアウトプットの方法、各フェーズでの便利なツールまで解説している。初歩的なところから解説しているので、IT初心者の私でも読みやすかった。
この書籍を踏まえて、これから取り組むこと
以下に取り組んでいこうと思う。
- 勉強が苦にならない分野を見つける
- わかりやすい技術書から読み始める
- 技術書を読み進めて「難しい」と思ったら、見出しや図のみに目を通すことで、「このキーワードは見たことがある」という状態にする
- 技術書を読んだら、ブログに学んだことを書き出す
- 関連する本を読みつくした場合、RFCや大学・企業・個人が公開している資料を読み、最終的には論文を読む
各項目の説明と取り組む理由
勉強が苦にならない分野を見つける
一点突破読書法という方法の最初のステップとして紹介されていた。一点突破法はひとつの分野の本を複数冊(最低でも20冊)揃えて、集中的に読書をするというやり方。
私の場合、文字を読むスピードがかなり遅いので、いろいろな分野に手を出していると、どれも初心者レベルで終わってしまうような気がしている。そのため、一点突破読書法は私に適していると思った。
ここでの問題が「どうやって勉強が苦にならない分野」を見つけるかだ。この書籍には、見つけ方までは書いてなかったと気がする。私の作戦としては、軽めの本(例えば、ブルーバックスなど)を読むことで、少ない時間でより多くの分野に触れ、勉強が苦にならない分野なのかどうかを精査していきたいと思っている。
わかりやすい技術書から読み始める
いきなり難しい技術書から始めると読むのに時間がかかってしまうけど、わかりやすい技術書から読み始めれば、当初は難しいと感じた技術書でも前提知識があるので読みやすくなるよね?という話し。
これは薄々感じていた。色んな人の勉強法を調べると優秀そうな肩書がある人ほど、1冊の本で済まそうとせずに「え?こんな優秀な人がこんな絵とかたとえが多そうな本から?」と思ってしまうような本から読み始めている。難易度の刻み方が上手い。逆に私のような馬鹿ほど、「1冊で済ました方がお財布に優しいし、読む文字数も少ないので時間コストの少ないはず!」という考えで、分厚い難しい本から始めてしまい、途中で挫折する。反省も込めて、今後はわかりやすい技術書から取り組みたい。
技術書を読み進めて「難しい」と思ったら、見出しや図のみに目を通すことで、「このキーワードは見たことがある」という状態にする
理解していなくても、別の技術書を読んでいるときに「あっ!あの技術書に出てきたキーワードだ!」とリンクすることが学びにいいらしい(なぜ、これがいいのかは分からなかった)。
本屋では分かりやすそうだった技術書でも、読み進めていくと難しいと感じることがある。そんなとき私は悪あがきをして時間を無駄にしたり、その技術書を読むのをあきらめるにしても「あぁ、また無駄遣いをしてしまった」と後悔する。そこで今回教わった方法を実践することで、時間の無駄もなくなるし、後悔も少なくなると思う。
技術書を読んだら、ブログに学んだことを書き出す
どうやらアウトプットすることで定着率が高まるらしい。そのアウトプットがまさにこのブログ。「自分ならこうする」を書くともっといいらしいので(何がいいのかは分からなかった)、これから取り組みたいことを書いている。
関連する本を読みつくした場合、RFCや大学・企業・個人が公開している資料を読み、最終的には論文を読む
さらなる学びのためには、こうするといいらしい。"lecture notes"と検索すると、海外の大学の資料がヒットする。論文の検索エンジンとしてはGoogle Scholarが紹介されていた。また、論文の関連性をネットワークグラフで表示してくれるConnected Papersは周辺知識を深める上で便利そう。