日々是精進。(はてな館)

日々ネットで調べたり、付箋に書き留めたものをアップしています。子育てで中断しながらも、年に数回投稿しています。皆様の恩恵に感謝しつつ。

日々の記録を残しています。皆様の恩恵に感謝しつつ。

freeCodeCamp 記録その4 / 2年半経過しました!

みなさんこんにちは。2021年、はてなの記事も47本目になりました。 今回は、 https://daily-postit.hatenablog.com/entry/2020/10/04/114506 の続きになります。

f:id:akiko-pusu:20210320130553j:plain

ここまでのみちのり

プライベートでもいろいろあったのですが、コロナ禍とあまり大きくスタイルは変わらず、お出かけはそこまでできないので、マイペースで進めていました。時々呟いていた内容を貼るだけになりますが、自分の振り返り用にまとめておきます。

Quality Assuranceの完了

Chaiでのテスト

前回の記事で、途中まで進んでいた Quality Assurance 。このコースでは、Chaiを使ったNode.js / JavaScriptのテストについて学びました。 お仕事ではRubyを使っているので、RSpecには慣れていたのですが、他の言語でもテストの書き方が学べたのは、とても楽しい経験でした。

グリーンが返ってくるのは、なんにせよ嬉しいです!

特に、ブラウザのテスト、E2Eテストに近いものは「Seleniumでブラウザを起動して実施するもの」と思っていたわたしにとっては、目からウロコでした。 実際には、この方法は、その時仕事でVue.jsを扱っていたので、テストコード記載にあたっても非常に役に立っています。

また、CORSの設定は必要であるものの、ブラウザからJavaScriptを実行し、テスト対象のWebアプリケーションに対してリクエストを発行し、そのレスポンスをテストするという、chai-http というやり方も、「なるほど!」と思えるものでした。

Advanced Node and Express

2020年10月の半ばごろに、次の章に進みました。 もう少し実践的なNode.jsでのアプリケーション作成になります。

はじめは replit.it というWebベースの開発環境&デプロイツールを使って課題を書いて、freeCodeCampの課題のURLから、作成した課題のアプリケーションに対してテストリクエストを送って、動作チェックをして、パスすれば次に進むというやり方で進めていました。

MongoDB Universityにも入門してみる

さて、このコースではExpressベースのアプリケーションとして、バックエンドでMongoDBを使っています。 さすがに仕組みがわからないと、どういうコードを書いたらいいのかわからない....。

ということで、脱線にはなりますが、10月の後半から、MongoDB Universityというオンラインの学習コースにも並行して取り組むようにしました。

それまではずっとRDBMSを利用していたので、こういったNoSQLデータベースを真面目に触れる機会がありませんでした。このタイミングで、ちょっとじっくり学習したいなと思い、取り組んでいます。

別の記事になりますが、Zennで記事を書くトレーニングとして、12月には「ひとりMongoDB アドベントカレンダー」というものにチャレンジしてみました。

zenn.dev

コース完了のためのプロジェクトに苦戦する!

データベースに関しては、MongoDB Universityでの学習を進めた分、遠回りではありましたけれども、やって良かった!と思いました。Issue Tracker, Personal Libraryといった、いわゆるCRUDなアプリケーションに関しては、1つ基本がわかればなんとか同じように進めることができました。

ただ、12月はMongoDBの方を中心に学習していたので、少し進みは遅く...。完走は年明けに持ち越し確定でした。

さて、お正月休みを利用してなんとか3つ進んだあと、次の課題は「数独の解を出す」というアプリケーション!! データベースは必要ないのですが、Solverを作成する(いわゆるアルゴリズムを考える)というところが重点の課題。

これには非常に苦戦しました....。

なんとかSudoku Solverを終わらせる!

1月後半から2月上旬にかけては、プライベートでも佳境に...。 「数学的な考え方がわからないと解けない!」と、時々如実に思い知らされるfreeCodeCampです。 結城先生の本も読みながら、ネットに公開していただいている、数独のSolverのプログラムを参考にしながら、なんとか再開。

数ヶ月かけてゆっくり進めているので、実はfreeCodeCamp側のコンテンツ、課題をチェックするためのソースコードもどんどん変わっていたりします。 先月はパスしたテストも、今月はパスしない!みたいなこともあり、プロジェクトの課題がグリーンになるための条件を、freeCodeCamp側のリポジトリも確認しながら調整していきました。

この数独Solverがわたしには極め付けに難易度が高かったのですが、その後のAmerican / Britishトランスレータは、そこまでではなかったので、続けて完了することができました。

ホワイトデーに完了!

なんとかめでたく、プロジェクト課題5つがテストをパスし、コース完了となりました。 長かった...。

いろいろ覚えたこと

Node.jsでWebアプリケーションを作るのは、この半年ぐらいが初めてでした。 まだまだ本格的な書き方がわからなかったり、「Railsでやってたバリデーションとかはどうするの??」といった疑問も出てきています。

  • Chai / Chai-http
  • Node.js / Express
  • MongoDB
  • Replt
  • Gitpod

上記のようなライブラリ、フレームワークWebサービスに触れることが出来たのも、なかなか良かったと思います。

特に、後半はローカル開発環境(Mac) で記載したアプリケーションを GitpodというWebベースの統合開発環境を使ってデプロイし、freeCodeCamp側のテストを通すといったことも行いました。

この環境はとても素晴らしく(語彙が足りないです...)、こちらに関しても、別にQiitaやZennに記事を書いてみましたので、もし良かったら眺めていただければと思います。

qiita.com

ここまでの2年半くらいで変わったこと

やっと6つコースが終わりました。 始めた当初、この次のコースは "Information Security" だったのですが、2年半の間にPythonのコースが追加されました。機械学習、データ分析のコースです。

また、課題を進めている間にも、freeCodeCampのリポジトリがどんどん変わっていっています。 以前と同じではないテスト、追加された課題もあります。 ポータルに関しても、最初はグリーンを貴重にしていたのですが、現在はここ1年の事情を反映してか、モノクロベースになっています。

また、この2年半で、テストを実行する環境、特にWebベースでの開発環境、配信環境といったものが非常に進化している印象を受けました。

コロナ禍の中にあって、オンライン学習を支える技術が本当に進化していると思っています。

なお、わたし自身の英語力は上がったのか?というと、実はTOEICのスコアが全く変わりません....。 (3回くらいは受けているのですが)

それでも、特にMongoDBを触れる機会が出来たのは、1つ大きな学びでした。

つぎにすすみます!

ということで、大雑把ですが、ひきつづき「やってますよ!」な記録でした。

春先にお仕事を変えまして、とてもヒーヒーしている状況ですが、おそらくお仕事とは違う分野を学ぶことも、きっとなにかにつながると信じていますので、引き続き念願?のPythonコースに進んでみます。