ロードマップから計画を立てる。
先日、バックエンド開発のロードマップに乗っかる宣言をしました。
バックエンド開発のロードマップに乗っかってみる。 - 復活エンジニア!マイマイ's BLOG
今日は、原本からこの1年でやるべきことを洗い出して、スケジュールを組み立ててみましたので、ご報告。
と、その前に。勉強に取り組む今の私の状況を整理します。
- 基本、残業はない(あっても1時間程度(今のところ))
- 土日祝日はちゃんと休み
- 昨年個人で請け負ったシステムの改修案件を立ち上げ中(夏リリース予定)
- 勉強時間は、平日:4h(2h/d、2d)、土日祝日:8h(4h/d、2d)
というところを踏まえて立てた計画です。
23Stepあって、長いですが、お付き合いください。
- Step1.Pick a Language
- Step2.Practice what you learnt
- Step3.Learn Package Manager
- Step4.Standards and Best Practices
- Step5.Security
- Step6.Practice
- Step7.Learn about Testing
- Step8.Practical
- Step9.Learn Relational Databases
- Step10.Practical Time
- Step11.Learn a Framework
- Step12.Practical Time
- Step13.Learn a NoSQL Database
- Step14.Caching
- Step15.Creating RESTful APIs
- Step16.Authentication/Authorization Methodologies
- Step17.Message Brokers
- Step18.Learn a Search Engines
- Step19.Learn how to use Docker
- Step20.Knowledge of Web Servers
- Step21.Learn how to use Web Sockets
- Step22.Learn GraphQL
- Step23.Look into Graph Databases
Step1.Pick a Language
概要 | 言語の選択 |
---|---|
対象 | ・スクリプト言語(Python, Ruby, PHP, Node.js) ・機能的言語(Elixir, Scala, Erlang, Clojure, Haskell) ・その他(Java, .NET, Golang, Rust) |
今回やること | Node.js |
期間 |
2week |
Step2.Practice what you learnt
概要 | コマンドラインアプリケーションを作ってみる(ls) |
---|---|
対象 | Step1で選択した言語。 |
今回やること | Node.js |
期間 | 2week 2019/4/29 ~ 2019/5/12 (Step1と同時実施) |
Step3.Learn Package Manager
概要 | パッケージマネージャーを学ぶ |
---|---|
対象 | ・スクリプト言語(NPM(Node.js)) ・機能的言語(Leiningen(Clojure)) ・その他(maven(Java), Cargo(Rust)) |
今回やること | NPM(Node.js) |
期間 | 1week 2019/5/13 ~ 2019/5/19 |
Step4.Standards and Best Practices
概要 | 標準とベストプラクティス |
---|---|
対象 | 調査中(コミュニティで探す) |
今回やること | - |
期間 |
1week 2019/5/20 ~ 2019/5/26 |
Step5.Security
概要 | セキュリティについてのベストプラクティスに目を通す |
---|---|
対象 |
OWASPのガイドラインを読む (様々なセキュリティ上の問題とそれを避ける方法を理解する) |
今回やること | - |
期間 |
1week 2019/5/27 ~ 2019/6/2 |
Step6.Practice
概要 |
パッケージを作成し、ほかの人が使用できるように配布する |
---|---|
対象 | スクリプト言語(Npm registry(Node.js)) |
今回やること | GitHub Npm registry(Node.js) |
期間 |
2week 2019/6/3 ~ 2019/6/16 |
Step7.Learn about Testing
概要 |
テストの種類、目的の違いを理解する スタブ、モックなどのテスト用語も理解する |
---|---|
対象 | 自作アプリに単体テスト、結合テストを導入する方法を調べる |
今回やること | - |
期間 |
1week 2019/6/24 ~ 2019/6/30 |
Step8.Practical
概要 |
単体テストを導入する |
---|---|
対象 | Step6の実践的アプリ |
今回やること | - |
期間 |
1week 2019/7/1 ~ 2019/7/7 |
Step9.Learn Relational Databases
概要 |
RDBにデータを保存する方法を学ぶ。 まずは、DB用語(キー、インデックス、正規化、タプル等)を知る。 |
---|---|
対象 | MySQL, MariaDB, PostgreSQL |
今回やること | MySQL |
期間 |
2week 2019/7/8 ~ 2019/7/21 |
Step10.Practical Time
概要 | Step1~9までの知識を使って、簡単なアプリを作る |
---|---|
対象 | Node.js |
今回やること | 例)ブログ ・ユーザアカウント。登録とログイン。 ・ユーザは自分のブログを投稿できる。 ・ユーザは自分のブログ投稿を全部閲覧できる。 ・自分のブログ投稿は削除できる。 ・非公開ブログ投稿は自分だけが閲覧でき、他者からは見ることができない。 ・単体テスト、結合テストが書かれている。 ・クエリにはインデックスが適用されていることをクエリ分析で確認する。 |
期間 |
3week 2019/7/22 ~ 2019/8/11 |
Step11.Learn a Framework
概要 | フレームワークを学ぶ |
---|---|
対象 | ・Laravel, Symfony(PHP) ・Express.js, Hapi.js(Node.js) |
今回やること | Express.js(Node.js) |
期間 |
1week 2019/8/19 ~ 2019/8/25 |
Step12.Practical Time
概要 | フレームワークを実践する |
---|---|
対象 | Step10で作成したアプリ |
今回やること | ※テストも含むすべてを移行する |
期間 |
1week 2019/8/26 ~ 2019/9/1 |
Step13.Learn a NoSQL Database
概要 |
NoSQLについて学ぶ。(RDBとどう違うか、なぜ必要なのか等) いくつか調べて、機能とその違いを比較する |
---|---|
対象 | ・MongoDB ・Cassandra ・RethinkDB ・Couchbase |
今回やること | MongoDB |
期間 |
1week 2019/9/9 ~ 2019/9/15 |
Step14.Caching
概要 | アプリケーションレベルでキャッシュを実装する方法を学ぶ。 |
---|---|
対象 | Memcached |
今回やること | Step12で作成したアプリをキャッシュする。 |
期間 |
2week 2019/9/16 ~ 2019/9/29 |
Step15.Creating RESTful APIs
概要 | RESTを理解し、RESTfulなAPIを作成する方法を学ぶ。 |
---|---|
対象 | Roy Fieldingの論文原著を読む。 |
今回やること | - |
期間 |
2week 2019/9/30 ~ 2019/10/13 |
Step16.Authentication/Authorization Methodologies
概要 |
認証と認可の方法について学ぶ。 それぞれが何か、どう異なるか、どのような場合に使うかを理解する。 |
---|---|
対象 | ・Oauth ・Basic認証 ・トークン認証 ・JWT ・OpenID |
今回やること | ・Oauth ・Basic認証 ・トークン認証 ・JWT ・OpenID |
期間 |
2week 2019/10/14 ~ 2019/10/20 |
Step17.Message Brokers
概要 |
メッセージブローカについて学ぶ。 (いつ、なぜそれを使うのかを理解する。) |
---|---|
対象 | ・RabbitMQ ・Kafka |
今回やること | RabbitMQ |
期間 |
1week 2019/10/21 ~ 2019/10/27 |
Step18.Learn a Search Engines
概要 | サーチエンジンについて学ぶ。 |
---|---|
対象 | ・ElasticSearch ・Solr |
今回やること | ・ElasticSearch ・Solr |
期間 |
1week 2019/10/28 ~ 2019/11/3 |
Step19.Learn how to use Docker
概要 | Dockerについて学ぶ |
---|---|
対象 | Docker |
今回やること | Docker |
期間 |
1week 2019/11/4 ~ 2019/11/10 |
Step20.Knowledge of Web Servers
概要 |
各Webサーバの相違点、制限、利用可能な設定項目の違いを学ぶ。 上記の制限を最大限に活用したアプリケーションを作成する。 |
---|---|
対象 | ・Apache ・Nginx |
今回やること | ・Apache ・Nginx |
期間 |
3week 2019/11/11 ~ 2019/12/1 |
Step21.Learn how to use Web Sockets
概要 | Webソケットを使ってリアルタイムWebアプリを作成する方法を調べて、それを使ってサンプルアプリをいくつか作る。 |
---|---|
対象 | 前ステップで作成したブログアプリ |
今回やること | 投稿一覧に、リアルタイムで更新を反映する。 |
期間 |
2week 2019/12/2 ~ 2019/12/15 |
Step22.Learn GraphQL
概要 |
GraphQLを使ってAPIを作成する方法を学ぶ。 (RESTとの違い、REST2.0と呼ばれる理由を理解する) |
---|---|
対象 | GraphQL |
今回やること | GraphQL |
期間 |
1week 2019/12/16 ~ 2019/22 |
Step23.Look into Graph Databases
概要 | グラフモデルを理解する |
---|---|
対象 | ・Neo4j ・OrientDB |
今回やること | ・Neo4j |
期間 |
1week 2019/12/23 ~ 2019/12/29 |
なかなかボリュームあって、ちょっと分かりづらいですね。。。これらは後ほど、自分用のBacklogで管理する予定です。
週単位で作業計画立ててたら、バッファ期間も含めて、年内でロードマップはほぼ制覇出来そうです。実際は、もう1、2Stepありましたが、まずは上記の23Stepで。
あと、やっぱり職場でもAWSを勉強するように言われているので、AWSも勉強の対象に入れようと思います。
具体的になりました。あとは、この計画を実行に移すのみです。
頑張ります。