4~6月振り返り
やったこと
- 書籍
- 30日でできる! OS自作入門
- はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ
- プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
- オペレーティングシステムの仕組み
- Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
- はじめて読む486―32ビットコンピュータをやさしく語る
- Linuxカーネル2.6解読室
- BareMetalで遊ぶ Raspberry Pi
- コンピュータの構成と設計 第5版 上 (途中まで)
- UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI (途中まで)
- Unix考古学 Truth of the Legend
- Raspberry Pi
- 書いたもの
- その他
学んだことに関する振り返りは以下にまとめました。
当初はOSの勉強というテーマで、Linuxディストリビューションや運用など上の方に伸びていくことを想定していましたが、CPUやハードウェアなど低いレベルの方向に向かってしまいました。実務に直接役立つ知識は得られませんでしたが結果オーライだと思っています。動機は記事にも書いたように「基礎を知れば最新技術に素早く対応できる」という説を確かめることです、がもう少し掘り下げたいと思います。学生時代の陸上で経験したことの一つに「身体能力を十分高めた(雑に言えば筋トレを頑張った)人の方が技術面の向上も早く、記録の伸びが大きい」という発見、もっと言えば反省がありました。プログラマとしてこれまで新しいことを学んでも上滑りする、思ったように理解が深まらない、と感じる原因の一つとしてプログラミングにおける基礎能力の不足があるのではないかという疑問を抱いていました。コンピュータサイエンスの知識を基礎能力とする妥当性はさておきこれが今回システムを学んだ背景です。3ヵ月の勉強ではこれが正しい(あるいは間違っている)と確信するには至りませんでしたが、「システムプログラミングを学ぶのは楽しい」という発見がありました。前回学んでいた機械学習は「面白いけどもういいかな」という分野でしたがシステムの勉強はまだ興味が尽きないという意味で割に自分に向いている、と言えるかもしれません。コンパイラなど触れていないトピックはたくさんあるので、一度時間を置いてまた帰ってきたいと思います。
良かった点・反省点・改善点
- 実際に手を動かした
- 実際に手を動かすことが学習効率に影響することは認識していたため、当初から題材を探していました。Raspberry Piという案を閃き、実際にハードウェアと格闘しながらシステムについて学べたのは非常に大きかったです。最終的な成果を出すところまでは至りませんでしたが、手を動かして学ぶことの重要性を再認識しました。今後も強く意識して続けて行きたいと思います。
- 中だるみしてしまった
- Raspberry Piに実際システムを組んでみる段階に至って、ハードウェア開発の難しさからモチベーションを維持するのが難しくなってしまいました。加えて旅行が立て込んである期間すっぽり抜けてしまったため最後中途半端な形で終えてしまったのは非常に残念です。旅行が続いたのは季節柄なので仕方ないとして、モチベーションを維持する工夫の必要性を感じました。定期的なアウトプットを自分に課す、など思い浮かびますがみなさんどうしているのでしょう。
- より多角的に学べた
- 前回の反省を活かし、なるだけ多くの資料を手元に用意して、読んだり読まなかったり一部だけ読んだりといろんな角度から学ぶことで立体的な知識を得ることができました。
- (ついに)英語でのアウトプットを始めた
- たったのブログ一本、しかも日本語で書いたことの翻訳ですが英語でのアウトプットを果たしました。今後もコンスタントに続けていけたらいいなと思います。