復活エンジニア!マイマイ’s BLOG

SEに復帰した女SEマイマイの更なる成長記録

ロードマップから計画を立てる。

先日、バックエンド開発のロードマップに乗っかる宣言をしました。

バックエンド開発のロードマップに乗っかってみる。 - 復活エンジニア!マイマイ's BLOG

 今日は、原本からこの1年でやるべきことを洗い出して、スケジュールを組み立ててみましたので、ご報告。

 と、その前に。勉強に取り組む今の私の状況を整理します。

  • 基本、残業はない(あっても1時間程度(今のところ))
  • 土日祝日はちゃんと休み
  • 昨年個人で請け負ったシステムの改修案件を立ち上げ中(夏リリース予定)
  • 勉強時間は、平日:4h(2h/d、2d)、土日祝日:8h(4h/d、2d)

 というところを踏まえて立てた計画です。

23Stepあって、長いですが、お付き合いください。

 

Step1.Pick a Language

概要 言語の選択
対象 スクリプト言語Python, Ruby, PHP, Node.js)
・機能的言語(Elixir, Scala, Erlang, Clojure, Haskell)
・その他(Java, .NET, Golang, Rust)
今回やること Node.js
期間

2week
2019/4/29 ~ 2019/5/12

 

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

概要

パッケージを作成し、ほかの人が使用できるように配布する

GitHubからいくつかプロジェクトをピックアップして、プルリクエストを送ってみる

対象  スクリプト言語(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も勉強の対象に入れようと思います。

 

具体的になりました。あとは、この計画を実行に移すのみです。

頑張ります。