2018年の最先端バックエンドエンジニアになるよっていう話
どうも最近アウトプットって大事かもな〜。と思っているナサです。 とは言っても、「やらなきゃ!」って思ってやるならそれは楽しめてないのでやらなくてもいいのでは?と思ってしまいますね。
この話をしだすとめっちゃ脱線する気がするので略!
- 本題
- Step 3 — Learn Package Manager
- Step 4 — Standards and Best Practices
- Step 5 — Security
- Step 6 — Practice
- Step 7 — Learn about Testing && Step 8 — Practical
- Step 9 — Learn about the Relational Databases
本題
この記事 には2018年の最先端バックエンドエンジニアになるためのロードマップが書いてあります。
少し前にこの記事を読んで「あ。この通りに進めてみよう!」と思いました。 ただやるだけじゃ味気ないですし、どうせならステップごとに何を学んだかアウトプットするのもいいかと思いまとめることにしました。
Step 1– Learn a Language
言語を選べってことですね。
僕はRustでやってみることにしました。 理由としては普段Ruby(Rails)でアプリケーション開発をするバイトをやっているので、全く違う物にしようと思ったからです。
既にバックエンド開発を行っていて、スクリプト言語を使っているのであれば、次は別のスクリプト言語ではなく、関数型言語もしくはマルチパラダイム言語から選択することをお勧めします。
はい。この言葉に従っただけですね。
GolangやElixirも考えたのですが このスライド をみて、「たくさん学びをくれるのか〜。Rustやるか〜」みたいな軽いノリで決めました。 まあ、言語選びって結局なんとなくですよね!(多分違うけど)
Step 2 — Practice what you have Learnt
ステップ2。なにか作れってことですね。
Rustの言語仕様を学びながらなにか作ろうと思ったのですが、バカには辛かったので言語仕様をざっと抑えることにしました。
このサイトが入門にはおすすめです!
RubyやDartを普段書いていたのですが、Rustのような強い型付けは初めてだったのでかなり苦戦しました。が新しい概念が多数あり新鮮な気持ちになりました。
普段やっている言語とぜんぜん違う言語を学ぶことはとっても面白いのでおすすめです。(これを書いていて、「プログラミングは手段か目的かみたいな話を思い出しました。どっちでもいいですね)
で、作ったやつがこいつらです。
trashコマンド
rmコマンドにエイリアスを貼って使うようのコマンドです。 rmで間違ってファイルを消してしまったときに「ゴミ箱に行けよ!」と思ったので、ファイルをゴミ箱に移動させるだけのコマンドを作りました。 ついでにゴミ箱を空にすることもできます。 はい。クソコマンド1号です。
メモコマンド
コマンドラインでメモをぱぱっと取るためのCliツールです。 メモテンプレートファイルを指定したりもできます。 まあまあ、そこそこに便利ですがパットしないツールです。
インタプリタ
これはまだ開発中なんですが、インタプリタを作ってます。 現状はifが使える電卓ですが、これから関数、forなども実装していきます。
Step 3 — Learn Package Manager
パッケージマネージャを学べと。 RustのパッケージマネージャにCargoというのがあります。 結構何でも揃ってる感のあるパッケージマネージャなので、ここでまとめようとすると、長くなるので略!
Step 4 — Standards and Best Practices
Rustの良い書き方を学べと。
概要 - Rust APIガイドライン ココらへんを見ながら学びました。
あとClippyというRustのlintを導入しました。この御方は結構便利な人で、「これ使ってねーだろボケ。」とか「match じゃなくてif letの方が可読性高いんじゃねボケ!」みたいに言ってくれます。
この御方をCIにいれてClippyさんの承認がないとマージできないようにしました。
Step 5 — Security
OWASPガイドラインを読めと。
これも長くなるので略!
Step 6 — Practice
パッケージを公開し他の人が使えるようにしろと。 GitHubのプロジェクトにPRを送ってみろと。
メモコマンドはRustのライブラリ(crateという)が集まるcargo.ioで公開しています。 (cargo publishコマンド一発で終わったので楽ちん)
PRもめっちゃ簡単なやつですが送ってみました。
PRがマージされると謎の貢献感がわきますね。
Step 7 — Learn about Testing && Step 8 — Practical
テストを書けと。
Rustはassertなどのテストツール(言い方合ってる?)が付いているので書きやすかったです。メモコマンドやtrashコマンドをはファイル操作が主なので、テストがめんどくさそうだと思い書いていません。 インタプリタはunitテスト、結合テストを書いています。
Step 9 — Learn about the Relational Databases
リレーショナルデータベースにデータを保存する方法を学べと。
これ以降はまだ未実行です