2020年の学習と2021年やりたいこと

年末年始あたりに投稿しようと思っていましたが、大分遅れてしまいました、供養。

2020年に取り組んだもの

  • React - The Complete Guide (incl Hooks, React Router, Redux) - Udemy
    主にサーバーサイド、インフラをメインにしていますが、フロントもある程度できるようになっておきたいというのと、近い将来業務でもフロントの開発をすることになりそうということでやってみました。
    Vueに関しても少々触ったことがあるのですが、Reactの方がTypeScriptとの相性がよい点、Vueと比べてプリミティブなためJSやライブラリの仕組みを理解する必要があり結果的に勉強になる点からReactを集中的に勉強することにしました。
    ただ、当初自分にとってReactの仕組みやReduxの考え方にはハードルが高くQiitaの記事などをいくつ読んでもわかったようなわからないような感じでした。
    そのため、Udemyの動画を見ながら写経することにしたのですが、日本語だと選択肢があまり多くないため英語のコースも含めて検討したところ、このMaximilianさんのコースは評価が高く、Reactを網羅的に学習できそうだったので選びました。
    モダンJSの記法からReactの仕組み、Reduxの考え方を解説しながら最終的にReact Hooks, React Sagaまでカバーしてアプリケーションを開発することで網羅的な学習をすることができました。
    ビデオ自体が全部で約40時間ほどあり、写経・デバック等含めて100時間くらいは使った気がしますが、かなりReactに慣れました。

  • Understanding TypeScript - Udemy
    上記と同様でUdemyのMaxilimianさんのコースです。 こちらもわかりやすかったですが、ボリュームはReactほどなく、TypeScriptを使いこなすにはやはり実践で型システムをガンガン使っていくしかないのかなという印象

  • りあクト! TypeScriptで始めるつらくないReact開発
    Udemyのコースでは、valina jsでのコースだったため、TSとReactの感触をつかむために読みました。 ただ、React, Redux, JS/TS自体の話はUdemyでほとんど網羅できていたと思う。

  • DNSをはじめよう ~基礎からトラブルシューティングまで
    DNSの基本的な仕組みから、代表的なレコードの役割を学ぶことが出来た。 雰囲気でRoute 53を触っていたが、これを読んだおかげで大分自信をもってRoute 53をいじれるようになった。

  • SSLをはじめよう ~「なんとなく」から「ちゃんとわかる!」へ~
    httpsの重要性やSSL証明書の仕組みを学ぶことができた。 重要な技術だがDNSほど普段細々とした作業もないので、実作業などではまだ活きる場面に出会ってない。

  • Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
    社内の一部でGoを採用するため、こちらで勉強させていただきました。 シンプルな文法と標準ライブラリの機能が充実していること、非同期処理が手軽にかけること、コンパイルが早くテスト、ベンチが外部依存なしにできることなどなどかなり魅力的な言語でした。 RubyRailsデファクトになっていることとは対照的にGoでは、あまり厚いフレームワークを使わない傾向があると思います。 こちらの書籍では基本的に標準ライブラリを利用してWeb アプリケーションの構築工程が解説されおり、標準ライブラリの仕組みやインターフェースになれることが出来ます。 外部のライブラリを使う場合も標準ライブラリでのインターフェースが踏襲されていることも多いので、標準ライブラリになれておくことは重要なようです。

  • Pragmatic Terraform on AWS
    実務でインフラを0から組むことがあり、IaSを一気に推し進めるためterraformの導入を決めました。 使い方やディレクトリ構成の指針として活用させていただきました。 AWSのサンプルコードが豊富でかなり助かりました。

  • 低レイヤを知りたい人のためのCコンパイラ作成入門
    これはまだ「電卓レベルの言語の作成」までしか終わってませんが、写経して実際に手元で動かしながら取り組んでいます。 この教材に出会うまでコンパイラがどうゆう仕組みで動いているか、ほとんど想像できない状態でしたが、構文解析アセンブリの出力がどうゆうものなのかある程度理解することが出来ました。 これまで、アセンブリを触ることは全くなかったのですが、低レイヤへのとっかかり、Cやmakeに慣れる機会としてかなり良かったです。 今後も時間があれば続きをやりたいと思います。

  • HTML5&CSS3デザイン 現場の新標準ガイド【第2版】
    上述のUdemyのReactの教材では、HTML/CSSに関しては突っ込んだ話はないので、現状を把握するために読みました。 どちらかというと辞書的な使い方が想定されるような書籍ですが、読み切れないボリュームではないのです。 これまでなんとなく使っていたHTMLタグの使用や把握していなかったCSSプロパティを頭にいれることで、フロントエンドの実務でキャッチアップがかなりスムーズになったと思います。

  • Web API: The Good Parts
    大量のAPIを開発する機会があり、体系的な教材が欲しかったので読みました。 Web APIを設計する上での、エンドポイントの考え方、レスポンスのスキーマの考え方などいくつかの指針を得ることが出来た。 また、HTTPにおいてのセキュリティについても記載があり、特にHTTPのセキュリティヘッダに関してはこれまで意識する機会がなかったので役に立ちました。

  • ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
    これまでDDDについては、Evans本を読んだり(途中まで)、記事などで断片的に情報を仕入れていましたが、こちらの書籍は読みやすく具体的なサンプルコードが豊富で DDDのとっかかりとしてかなりよいと思いました。 ただ、DDDの本質的な部分は深く説明されているわけではないので、やはり概念的な部分を深く理解するにはEvans本やその他の本を参照しながら実際にトライアンドエラーを繰り返していかないといけないという印象

2021年やりたいこと

今年は、今のところ「オブジェクト指向のこころ」、「体系的に学ぶ 安全なWebアプリケーションの作り方」を読みました。 あと前々から興味のあったRustに入門するため「実践Rustプログラミング入門」を読み進めてます。 公式のドキュメントある程度読んだことがあるのですが、こうゆう書き方・ライブラリがよく使われますみたいなのが書かれていて結構よいです。 今後は「Linuxの仕組み」、「マスタリングTCP/IP」、「Real Wold HTTP」あたりを読みたい、普段使っている技術の中身を知るのが面白いというのと、ブラックボックスにしておきたくないというのがある。 競プロやってみないのでその勉強もしたいなーという感じです。