きゃらめるの備忘録

Salesforceに関してお勉強したことをまとめるブログ。目指せ週1更新~~~!

私のJavaScriptデベロッパー試験まとめ

こんにちは、きゃらめるです。
年明け一発目のブログですが、今日で1月が終わってしまいますね…早いものです。
最近はお家にお迎えしたハムスターに夢中です。この子を見ていると時間が溶ける…

さて今更ですが、今月JavaScriptデベロッパー試験に合格いたしました!
やったー!
JSデベロッパー試験は、昨年秋頃に日本語での受験が開始したばかりのデベロッパー向け試験です。
まだ情報が少ない中での受験でしたが、先人の皆様の情報に助けられたので、
私自身もどんな勉強をしたのか、まとめておこうと思います。

JavaScriptデベロッパーの資格とは

通常の資格試験と同様の多岐選択問題に合わせて、「Lightning Web Components Specialist」のスーパーバッジを取得することで取得できます。
多岐選択問題ではSalesforceの知識は一切問われません
Salesforce側の知識はスーパーバッジの方で確認&取得します。

試験問題とスーパーバッジの内容はあまり関係がないので、取得順は正直どちらがいいのか分かりません…。
私は、多岐選択試験→スーパーバッジの順番でしたが、スーパーバッジもなかなかしんどかったので、試験終わってもまだ道のりが…という気持ちになりました。

勉強中、参考にさせていただいた記事など

まだ受験した方が少ない中、すでに受験&合格しておられた宮本さんの記事は本当に参考になりました!!必読です!
qiita.com
また、いつも通りアンダーソンさんの想定問題集にもお世話になりました!
keneloper.com
もう一点、JavaScriptの勉強用問題集を使いました!こちらで構文等の確認ができます。
github.com

私の勉強方法

(1)試験ガイドを読み、試験範囲と割合を確認
試験範囲の内容から、自分の理解度が何パーセントくらいかを書き出しました。
このチェックは勉強の途中にも行って、分からない部分・分かった部分を明確にしていきました。

(2)JSデベロッパー試験関連の記事を読む
ここらへんで宮本さんの記事に出会いました。躓きポイントを理解しつつ、参考文献にあるトレイルとトレイルミックスを進めることに決めました。

(3)Trailheadを進める
まずは(2)で知ったトレイルミックスを開始しました。
Salesforce 開発者の JavaScript スキル
・Modern JavaScript Development
ここらへんがJSの基礎部分が分かるので勉強になりました。
特に、「Salesforce 開発者の JavaScript スキル」にある「JavaScriptランタイム」の考え方を覚えておくと、非同期処理が理解しやすいのでおススメです!

(4)JavaScriptガイドを読む
試験ガイドに記載してあるJavaScriptガイドを読みました。
developer.mozilla.org
ここらへんで一番時間をかけた気がします。
JS Binを使って、コードを動かしながら理解を深めました。
JS Bin - Collaborative JavaScript Debugging
(個人的には簡単なScript実行だとCodePenよりJS Bin派です。)

非同期処理も、このガイドで本格的に学びました。(Trailheadも併用。)
そもそも同期処理と非同期処理の考え方とは?というところから、Promiseの書き方、async/awaitの書き方を学びました。
※2021.01.30開催のJapanDreamin' のCodeyセッションで、ぴたデジ株式会社のまたえさんが発表しておられた内容が勉強内容そのままでした!
アーカイブが公開されたら、受験を考えておられる方はぜひ見てみてください!^^

(5)Qiitaや個人ブログを読む
ガイドやTrailheadでも理解ができない部分はQiitaや個人ブログを読んで補完しました。
JSの基礎知識部分なので、Salesforceの技術よりも記事が豊富です!ありがたい!

このタイミングで以下の記事に出会いました。
本当に読んでおいてよかったなと思った記事です。
qiita.com
JSで値が代入される時、参照しているハコの「中身」を変えるのではなく、参照しているハコ「自体」を変えてしまう、
ということだそうです。
正直、試験中もこの参照の考え方をメモに書きながらコードを追っていました。
ぜひとも一読ください!

(6)問題集を解く
アンダーソンさんのブログの問題集や、JSの構文の問題集などを使って知識の確認を行いました。
宮本さんの記事にあったトレイルは、総まとめになっているので、こちらも確認しました。

(3)~(6)については、試験範囲のトピック毎に、それぞれの手段を使って勉強していました。
理解した内容は、ノートやiPadのメモに書き出して、とにかくアウトプットしました。個人的にはこのアウトプットはおススメです!
特に概念理解のときには、絵を書くと分かりやすいです。

JavaScriptに困惑したポイント

私が勉強を始めて、困惑したあたりを残しておきます笑

  • 変数や関数の巻き上げについて

varを使うと、変数や関数を巻き上げる(コードの下部で定義した変数名をコード上部で使用する)ことができます。混乱しかないです。

  • thisの範囲

アロー関数を使った場合とその他の関数の定義方法を使った場合で、thisの範囲が異なる、というのも一つのポイントです。
今、thisはどこを指しているのか?ということは常に意識して問題を解いていました。

  • 型強制

JSは、動的型付けなので、開発者側で型を指定しません。JS側が、よしなに型をつけてくれます。
例えば、console.log(true+1); を実行すると、2が返ります。
これは、Booleanのtrueの後ろに+があること、その後に数字の1がきていることから、JSがtrueを数字に変換するために起こります。
問題集を解きまくって慣れるようにしましたが、試験の型強制問題を間違えたので何も言えません…。

JSはES6を境にいろいろ変わっている部分があります。
正直、あまり意識して書けていなかったので、ES6以降の構文周りで知らない書き方も多々出てきました。(分割代入とか特に。)
ここらへんは新しく勉強し直した感じです。

勉強した結果

重たそうなNode.jsの話が一切出てきませんでしたね。
正直、Node.jsの勉強に着手する前に、そのほかのトピックを理解するのでいっぱいいっぱいで、package.jsonとかのあたりだけをさらっと見て試験に臨みました。
全然違うところがでました。
(バージョンのつけ方辺りはちゃんと勉強しておけばよかったです…。)

基本的に、変数・データ型・関数・オブジェクト・非同期処理あたりをしっかりめに勉強した形です。
でも結局ここが配点も高い&問題の根幹になってくるので、しっかり勉強するのがお勧めです!

結果としては以下のような感じでした。
f:id:calamel_nuts:20210130185249p:plain
トピック毎の配分を含めて計算すると74%でした。Node.js…。
正直、試験中に自信があった問題は60問中30問でした…。よく取れた。

さいごに

JSデベロッパーを受験してみて思ったのは、「私は今までなんてふわふわした理解でJSを書いていたのだ…」という後悔というか…恐怖というか…
そういう意味でも、受験できてよかった資格だったかと思います!!
今後受験される方も増えるのではないでしょうか。
どう勉強していいかよく分からない、という方にとって、この体験が参考になれば幸いです!