桐生あんずです

新卒エンジニア1年目のブログです。日常やプログラミングについて書いてます。

JavaScript研修を受けて身に付いたこと

入社してから2週間ほどJavaScriptメインで研修を受けさせていただいて大変勉強になったので、印象に残った出来事や参考になった文献を書き残しておきます。

ESLintの使い方を覚えた

簡単に説明すると規約に沿っていないJavaScriptのコードの記述に対して指摘してくれたり--fixオプションを叩くだけで自動整形してくれる超絶便利なツール。

qiita.com

今まではあまり使う機会がなかったのだけれど、今回の研修のカリキュラムでESLintの導入を丁寧に解説していただいて使い方を覚えることができた。ちなみに今の所はJavaScript Standard Styleのルールを適用して使っています。

Node.jsでCLIツールを作れるようになった

研修の課題では、CLI上でカレンダーを表示できるアプリケーション(要はcalコマンドみたいなやつ)や、CLI上でecho '"hoge" | node memo.jsと打つとsqlite3のDBに保存されて、node memo.js -r といったようなコマンドライン引数の内容によってメモの一覧・詳細・削除が実行できるアプリケーションを作った。

CLI上で標準入力を読み込んだりコマンドライン引数の中身をチェックする処理はJavaScriptではあまり書いた事がなくて調べながらやっていたのだけれど、処理を用意する上で便利なライブラリがそこそこ用意されていて面白かった。

例えば、コマンドライン引数のオプション処理の中身を簡単にチェックしたい時はminimistというモジュールを使うなどしていた。

github.com

対話形式のインターフェースを用意したくなった場合も、inquierやcacjsなどといったライブラリを使うことで簡単に実装できる。

www.npmjs.com

qiita.com

最初は分からないことも多かったけれど、便利なライブラリを使いつつCLIでのアプリケーション作成ならではの利点として比較的短めのコードですぐ動かす事もできるのでJavaScriptを改めて学ぶのに良い学習方法だったと思う。

Promise/Async Functionの概念をじっくり学ぶ事ができた

また、CLI上のメモアプリを作る上で使用したNode.jsのsqlite3モジュールのDB処理は非同期処理で用意されているので、処理を指定した通りの順番で動かすようにする必要があり、その際にPromiseとasync/awaitの概念について格闘しながら勉強して実装することができた。

苦しい闘いだったけれど確実に身になる経験だったと思う……。 学ぶ上ではJavaScript PrimerとPromise本が非常に役立った。

jsprimer.net

azu.github.io

JavaScript Primerは書籍版がもうすぐ発売なので気になる人はぜひ買いましょう。

JavaScript Primer 迷わないための入門書

JavaScript Primer 迷わないための入門書

自作npmをpublishした

個人的にはこれが一番楽しかった課題で、「自作npmをアイデアを用意して作ってみよう」というお題を最後の課題として出していただき、CLI上で動くスロットゲームを作ってnpmライブラリとして出してみた。

kiryuanzu.hatenablog.com

数日経ってチェックしてみたら全世界から204回ほどDLしてびっくりした。先ほど見たら合計DL回数が300回以上になっていてどの界隈の人々が触ってくれているのかめちゃくちゃ気になっている。

また、研修中にかなり丁寧にレビューしていただきどんどんとコードがブラッシュアップされていって本当にありがたかった。

例えば、今まで文字列の結合を行う際に頑張って+を使って連結させていたのだけれど、テンプレート文字列という便利構文があることを教えていただいたのでこれからはこっちを使おうと思った。

テンプレート文字列 - JavaScript | MDN

まとめ

今までJavaScriptというと個人開発やバイト先で感覚で頑張って書く事が多かったのだけれど、研修を受けたことでかなり理解度が上がって本当に良い体験だった。

上記の話以外でも、追加課題としてVue.jsの基本的な書き方や設計などにも改めて触れることができたりと、一気にインプットが進んだと思う。

ただ、業務に関わっていくにはまだまだ基本の分野ではあると思うので、今回研修で受けた事を思い出しつつ今後も学習を続けていきたいです。