All Articles

2021 年後半で勉強したことのふりかえり

2021 年も終わろうとしているので、2021 年後半で勉強したことをふりかえって記事にまとめます。

普通は 1 年のふりかえりをするかもしれませんが、自分にとって 1 年は長すぎて思い出せないことが多いです。

なんとなく半年単位で目標を立てたりふりかえりするのがよさそうな気がしているので、その初の試みになります。

読書

2021 年 7 月から、毎月読んだ本を記事にまとめています。

整理すると以下のようになります。

読了した冊数 まとめ記事
7 14 【2021 年 7 月】読んだ本の記録
8 16 【2021 年 8 月】読んだ本の記録
9 22 【2021 年 9 月】読んだ本の記録
10 7 【2021 年 10 月】読んだ本の記録
11 6 【2021 年 11 月】読んだ本の記録
12 5 【2021 年 12 月】読んだ本の記録

合計 70 冊です。 ほぼ技術書でこの数なのは、なかなか多いほうだと思います。

今年読んで良かった本は、別記事「【2021年】今年読んで良かった技術書 5 選」にもまとめていますが、その中で 2021 年後半に読んだのは

の 3 冊です。

なかでも、『詳解 Linuxカーネル』を一通り読めたのは大きいです。

Linux つよつよの方からすれば入門的な内容だとは思いますが、これを読んだことがあれば Linux 中級者と言えなくないと思います。

資格

OS や Linux について勉強する中で、今更ながら関連する資格をとろうと思い、以下の 3 つを取得しました。

  • 8月: LPIC レベル 2 (201 と 202)
  • 9月: LPIC レベル 3 (304)
  • 10月: CCNA

LPIC はさくさく取得できたのですが、CCNA は想像していた以上に出題範囲が広く、驚きました。

LPIC レベル 3 と CCNA を持っていれば、Linux やネットワークを扱う上で、まず学ぶべきことはおさえていると言えると思います。

これらの勉強がてら Linux の物理・仮想マシンや Cisco Packet Tracer で色々さわったことで、かなり理解も深まりました。

特にネットワークは、VLAN・STP・OSPF といった AWS などのクラウド環境でふれない部分に手を出せて良かったです。

友人との勉強会

もう 5 年近く続けている友人との勉強会では、connpass グループ (StudyCo) を作り、公開勉強会を開催し始めました。

特に機械学習や MLOps といった分野に力を入れて発表していこうということで、自分は

という 2 つの回を担当しました。

今まで機械学習は理論の勉強のみでコードを書いたりしていなかったのですが、これをきっかけにコードを強制的に書くことができました。

また、「https://www.studyco.io/」という、Web サイト・ブログも構築して公開しました。

これを機に、勉強会をしている団体としてしっかり活動していけるといいなと思っています。

ブログ

このブログ (完全に理解した.com) については、2021 年後半で 61 記事 (2021 年々間で 113 記事) 書いていました。

特に 12 月は「画像・動画・音声処理および XR ひとりアドベントカレンダー」と題して、興味のあった画像・動画・音声処理や XR について調べながら 25 記事書きました。

このアドベントカレンダーは、全然知らない分野を調べながら書いたため記事のクオリティは低いですが、自分が勉強したかった分野を強制的に勉強するきっかけとして良かったです。

このあたりは今後力を入れていきたい分野なので、2022 年にはもっと踏み込んで勉強したり実際に実装したりしていきたいです。

プログラミング言語

2021 年の後半では、今までなんとなく読み書きしていた

  • Python
  • PHP
  • Go

を改めて勉強しました。

Python はかなり雰囲気で書いていたのですが、改めて勉強したことで、確信を持って書けるようになりました。

しっかり読める言語が増えると、コードを読める OSS が増えるのが大きなメリットだと感じます。

特に自分がよく手を出す Docker・Kubernetes・Terraform あたりのエコシステムは Go で書かれている OSS が多いので、Go を勉強できたのは大きいです。

PHP は踏み込みきれなかったです。 Java を先に勉強しているとあまり踏み込めない (踏み込んで勉強する気持ちになりにくい) 言語なのかもしれません。

コーディング問題

競技プログラミングというほどでもないですが、

  • Aizu Online Judge
  • LeetCode

に手を出し、データ構造やアルゴリズムについて改めて勉強しました。

基本的なデータ構造・アルゴリズムは知っていましたが、初めて知ったものもあり勉強になりました。

時々練習したほうが腕が錆びないとも感じるので、今後も時々手を動かしていこうと思います。

自作

この半年では、

  • PC
  • CPU (ハードウェアエミュレータで)
  • アセンブラ
  • バーチャルマシン (OS の仮想化ではなく、JVM とかのほう)

を自作しました。

PC は、自作自体は別に難しくないのですが、メモリの規格についてなど結構勉強になりました。

また、もともと VR を一番の目的として組み立てたのですが、Linux の勉強用にも役立ちました。

Mac や Windows と比べて Linux のほうが開発環境が快適なため、プログラミングは Linux マシンでするようになりました。

その他、低レイヤの勉強として Nand2Tetris (コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方) に着手しました。

CPU・アセンブラ・バーチャルマシンまで実装し終えたので、残りのコンパイラと OS (というか標準ライブラリ) については来年の最初にやってしまおうと思います。

OSS

ちょっとしたコードやドキュメントの修正程度ではありますが、

にプルリクエストを出してマージしていただきました。

OSS には大変お世話になっているので、今後も貢献していきたいです。

VR

個人的に昨年あたりから注目している VR に、ついに手を出しました。

特に気になっていた NeosVR に手を出すため、7 月に PC を自作し、12 月についに Oculus Quest 2 を開封しました。

PC はもともと VR を一番の目的として組み立てたのですが、Linux の勉強用にも役立ち、また、M1 Mac で開発環境構築の手間が大きい問題も解決できました。

一番やってみたかった NeosVR にはまだ数回ログインした程度ですが、そのすごさは実感しました。

VR 関連では英語圏の方とコミュニケーションをとることも多いと分かったので、英語力不足も今後なんとかしたいです。

総括

2021 年後半でやったことをまとめると…

  • 全体

    • 技術書中心に 70 冊の本を読んだ
    • ブログを 61 記事書いた
  • 低レイヤ

    • CPU の高度な機能や、OS (特に Linux) について理解を深められた
    • PC を自作した
    • 『詳解 Linuxカーネル』を一周読んだ
    • LPIC レベル 3 と CCNA を取得した
    • 組み込みやデジタル回路について少し勉強できた
    • CPU (エミュレータで)・アセンブラ・バーチャルマシンを自作した
  • プログラミング

    • Python と Go をちゃんと書けるようになった
    • Aizu Online Judge と LeetCode に手を出した
    • OSS に少しだけ貢献できた
  • 応用系

    • 機械学習や MLOps 関連で手を動かし、公開勉強会を数回開催できた
    • 画像・動画・音声処理についてとっかかりを学べた
    • VR (特に NeosVR) を始められた

といったあたりになります。

ある程度時間をとって色々なことに手を出せて、有意義な半年でした。

今後も半年単位くらいで目標を立てたりふりかえりしたりしていこうと思います。