DevOpsエンジニア@poly_soft先日2018年の最先端フロントエンドエンジニアになろうという記事を訳したのですが、そのリポジトリにはバックエンドとDevOpsのロードマップ画像も置いてあります。バックエンドのテキストにはTODOの1行だけで、動きがありませんでした。解説が追加されないかなー、と思ってたら別の人がやってたのを見付けました。2018の日本語訳です。2018こんにちのWeb開発の様相は、数年前とは全く別物です。Web開発には多すぎる選択肢があって何をすればいいのか迷います。それが、これらのステップを視覚的に表し、段階的にWeb開発を行っていくためのガイドラインを作ろうと考えた理由のひとつでした。2018というタイトルの投稿がありました。そこではバックエンドとDevOpsについても最新のロードマップを提供することを約束しました。この記事はその約束に従って、最新バックエンド開発者のロードマップについて記述するものです。フロントエンドのロードマップを見ていないのであれば、先にそちらを見てきてください。我々はまたDevOpsについても取り組んでおり、できれば来週までにそれもリリースしたいと考えています。該当のリポジトリはこちらで、また記事も別途公開する予定です。これ以上長々と話すのはやめて、さっそく始めましょう。全てのロードマップは画像に表示されていますが、各ステップについて以下で解説していきます。画像にはHTML/CSSについての知識は記載されていませんが、基本的なHTML/CSS文法については理解しておくことをお勧めします。Language言語を選ぶとなると、たくさんの選択肢が存在します。カテゴリを分けて、決定しやすいようにしました。バックエンドの開発を始めたばかりの初心者であれば、スクリプト言語の中から選択することをお勧めします。それらは多くの需要があり、迅速に学習することができるからです。フロントエンドの知識があるならNode.jsを学ぶのが簡単でしょう。そこには多くのマーケットも存在します。バックエンド開発を行っていて、スクリプト言語を使っているのであれば、次は別のスクリプト言語ではなく、関数型言語もしくはマルチパラダイム言語から選択することをお勧めします。PHPやNode.jsを使っているのであれば、PythonやRubyではなく、ErlangやGolangを試してみてください。それはあなたの能力を伸ばすのに間違いなく役立ち、新しい視野を開いてくれます。Learnt学習するためには練習しかありません。言語を選び、基礎を理解したら、言語を使ってください。小さなアプリケーションをたくさん作りましょう。ここに少しだけアイデアを列挙しておきます。・bashのコマンドと同じ機能を実装する。・Redditから/r/programmingへの投稿を取り出してJSONで保存するコマンドを作成する。・ディレクトリ構造をJSONフォーマットに書き出すコマンドを作成する。・↑の逆にJSONからディレクトリ構造を再現するコマンドを作成する。・毎日実施したいことを考え、それを自動化する。Manager言語の基礎を理解し、サンプルアプリをいくつか作成したら、次はパッケージマネージャを利用する方法を調べます。パッケージマネージャは、自作アプリで外部ライブラリを使用するのに役立ち、自作のライブラリを他のユーザに公開するためにも役立ちます。PHPを選んだのであればComposerを、Node.jsを選んだのであればNPMかYarnを、PythonならPipを、RubyならRubyGemsです。どの言語を選んだのであれ、その言語についてのパッケージマネージャの使い方を学びましょう。Practices各言語には、それぞれの実装標準とベストプラクティスが存在します。選んだ言語のそれを勉強してください。PHPにはPHP-FIGとPSRsがあります。Node.jsにはコミュニティ毎に異なるガイドラインが数多く存在し、他の言語でも似たようなものです。Securityセキュリティについてのベストプラクティスには必ず目を通しましょう。OWASPのガイドラインを読み、様々なセキュリティ上の問題と、それらを避ける方法を理解してください。Practiceここまで学んできたことによって、言語そのもの、標準とベストプラクティス、セキュリティ、パッケージマネージャの使い方がわかりました。今度はパッケージを作成し、他の人が使用できるように配布してみましょう。作成するときは、標準やベストプラクティスには必ず従ってください。registryです。それができたら、次はGitHubからいくつかプロジェクトをピックアップして、プルリクエストを送ってみます。以下のような・学んできたベストプラクティスでコードをリファクタリングする。Testingテストにはいくつかの種類が存在します。それらの目的の違いについて理解してください。自作アプリに単体テストと結合テストを導入する方法を調べましょう。スタブ、モックなど様々なテスト用語を理解しましょう。Practicalこれまで書いてきた実践的アプリ、特にStep6の対象について、単体テストを導入します。書いたテストのカバレッジを分析します。Databasesリレーショナルデータベースにデータを保存する方法を学びましょう。学習する対象を選ぶ前に、いくつかのデータベース用語を知っておく必要があります。キー、インデックス、正規化、タプル等です。データベースには幾つもの選択肢があります。言語を学んでいる途中なので、DBについては楽なものを選ぶと良いでしょう。有望な選択肢はMySQL、MariaDB(MySQLのフォークでほとんど同じ)、PostgreSQLですが、MySQLが最もよいでしょう。Time今まで学んできたことを全て使うときがやってきました。これまでの知識全てを使って、簡単なアプリを作成してください。どんなアイデアを選んでもかまいませんが、たとえばブログを選んだとしたら以下のような機能を実装してください。