【訳】2018年のデキるバックエンドエンジニアになれる為のロードマップ
- 初めに
- 目的
- Disclaimer
- 参考図
- バックエンドエンジニアのロードマップ
- 1.まずは一つ言語をピックアップしよう
- 2.学習した内容を練習しよう
- 3.パッケージマネジャーを勉強しよう
- 4.開発標準とベストプラクティスを知ろう
- 5.成果物として、パッケージとライブラリーを作成して公開しよう
- 6.テスト技法を勉強しよう
- 7.ステップ5にて作成した成果物に対して、ユニットテストを書こう
- 8.関係型データベースを学ぼう
- 9.DBを利用して練習しよう!
- 10.フレームワークを学ぼう
- 11.フレームワークを利用して、ステップ9で作成したアプリケーションを作り直そう
- 12.NoSQLデータベースを学ぼう
- 13.キャッシュイングを勉強しよう
- 14.RESTful APIを作成しよう
- 15.認証/認可の仕組みを知ろう
- 16.メッセージブローカを知ろう
- 17.検索エンジンを勉強しよう
- 18.Dockerを勉強しよう
- 19.Webサーバーの基礎を知ろう
- 20.Webソケットの利用方法を勉強しよう
- 21.GraphQLを知ろう
- 22.GraphQLデータベースをさらっとみよう
- 23.ステップ1−22メンションしていないの雑
初めに
最近は、「エンジニアロードマップ」というGithubプロジェクトはかなり人気集めている。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
github.com
日本の同僚たちにも共有したが、やはり英語という壁が強そうので、なかなか伝わっていないところあると思う。
そこで、「和訳しよう」というアイデアが出た。
中国人なのになんで日本語へ訳するのかというツッコミは勘弁してください
まだやる気あるうちに、早めに終わらせたい。
FEルートはすでにQiita記事あるため飛ばす。
2018年の最先端フロントエンドエンジニアになろう - Qiita
目的
このロードマップは、「FE/BE/DevOpsを勉強したいが、どうすれば良いのかはわからない人」に対して、「こんな感じで勉強すればいい」というルートを示すマップである。
すでに勉強ルートある方にも、代替案として参考できる。
Disclaimer
このロードマップの目的は、大枠についてのアイデアを提供し、次に学ぶべき技術について混乱しないように、トレンディな技術について道標を示すことです。
ひとつのツールがある作業に適していても、他の作業には適していない可能性があること、そして最新技術が必ずしもよりよいものではないことがあることを覚えておく必要があります。
参考図
さて、ルートの訳に始めよう。
バックエンドエンジニアのロードマップ
1.まずは一つ言語をピックアップしよう
バックエンド開発経験なし初心者にとって、スクリプト型言語から着手したほうがいいかと。特に入門しやすいNode.js 又は PHP はオススメ。
すでにスクリプト言語で開発している方は、他のスクリプト型言語ではなく、GolangとかRustとかClojureに着目しよう。スクリプト型言語と違う体験ができるはず。
2.学習した内容を練習しよう
選定言語を使って実践し、コマンドライン程度のアプリケーションを作ろう。
3.パッケージマネジャーを勉強しよう
選定言語のパッケージマネジャーを勉強しよう。
例えば
なんでパッケージマネジャーを勉強すべき?
パッケージマネジャーは、外部ライブラリーを利用する際依存関係を管理するもの。
そして自分の成果物(パッケージなど)をデプロイする際にも必要。
4.開発標準とベストプラクティスを知ろう
全ての言語は、自分の標準とベストプラクティスがあるはずので、それを勉強しよう。
例えば、PHPなら、PHP-FIGとPSRsある。
Node.JSなら色んなコミュニティから定義されたベストプラクティスある。
(訳者注) ベストプラクティスって一体なに?
ベストプラクティスは、「最優良事例」という意味合いで、「品質を担保できる為の開発ガイドライン」として理解できるかも。
例:
セキュリティーを注意
セキュリティー関連のベストプラクティスは必ず読んでください。
OWASPの上位セキュリティー脅威を読んで、選んだ言語での対策方法を理解しよう。
5.成果物として、パッケージとライブラリーを作成して公開しよう
学んだ開発標準とベストプラクティスを意識した上で、パッケージとライブラリーを作成して、他人にも利用できる為に公開しよう。
6.テスト技法を勉強しよう
テストは色んな種類あるが、とりあえず単体と結合テストの考え方から始めよう。
そしてmockやstubなどのテスト用語を理解しよう。
選定した言語により、目的がそれぞれ異なるテストフレームワークは複数ある。Googleした上で、自分のニーズに一番合わせるものを選ぼう。
戦争を起こさせたくないため、他の言語のテストフレームワークは自分で調べた上で選んでください。
(訳者注:Javaなら、JUnitとTestNGはメイン)
8.関係型データベースを学ぼう
下記のように複数データベース製品あるが、一つを分かるようになったら、他の製品も勉強しやすくなる。
オススメとして、MySQL (訳者注:無料/Lightwave/インストールしやすいため)を選らぼう。
もちろん、他の製品との相違点や利用シナリオも勉強しよう。
9.DBを利用して練習しよう!
今までに学んだ知識を全て利用し、簡単なアプリケーションを作ろう!
新規登録とログインとCRUD程度の機能は必須だろう。
例えば、下記の機能あるブログを作成しよう。
- 誰でも新規登録できる
- 新規登録と伴い、公開するプロファイルページも作成される
- 記事の新規投稿 / 編集 / 削除 / 下書き / 公開機能
11.フレームワークを利用して、ステップ9で作成したアプリケーションを作り直そう
12.NoSQLデータベースを学ぼう
まずは、「NoSQLとは」を理解してください。
そして、「関係型データベースとの相違点」と「なぜNoSQLは必要か」を理解しよう。
さらに、NoSQLの複数製品の異同点を調べた上で、とりあえずMongoDBで進めよう。
- MongoDB
- RethinkDB
- Cassandra
- Couchbase
13.キャッシュイングを勉強しよう
下記のどっちかを利用し、アプリケーション層のキャッシュイング仕組みを勉強しよう。
- Redis
- Memcached
ステップ11にて作成したアプリケーションに、キャッシュイングを適用してみよう。
14.RESTful APIを作成しよう
まずはRESTということを理解し、RESTful APIの作成方法を勉強しよう。
Roy Fieldingが作成したRESTfulに関する論文も読んでください。
(訳者注:英語読めるなら読んでいいかと・・・読めないと、日本語の資料を読んでくださいね)
16.メッセージブローカを知ろう
メッセージブローカについて勉強し、「なぜ(訳者注:なぜメッセージブローカは必要か、どのような場面は必要か)」
色んな製品あるが、下記の二つがオススメ。
- RabbitMQ (一番推し)
- Kafka
17.検索エンジンを勉強しよう
アプリケーションの負荷が高くなると、簡単なクエリでもDBへの高負荷になり得る。
その場合、検索エンジンを利用しなければならない。
- ElasticSearch
- Solr
- Sphinx
18.Dockerを勉強しよう
20.Webソケットの利用方法を勉強しよう
21.GraphQLを知ろう
正直いうとこれは非必須だが、気軽に了解してみて、「新REST」と期待される理由を理解しよう。
22.GraphQLデータベースをさらっとみよう
非必須だが、「GraphQLとは」レベルで分かるようになれば。