freeCodeCamp 記録その4 / 2年半経過しました!
みなさんこんにちは。2021年、はてなの記事も47本目になりました。 今回は、 https://daily-postit.hatenablog.com/entry/2020/10/04/114506 の続きになります。
ここまでのみちのり
プライベートでもいろいろあったのですが、コロナ禍とあまり大きくスタイルは変わらず、お出かけはそこまでできないので、マイペースで進めていました。時々呟いていた内容を貼るだけになりますが、自分の振り返り用にまとめておきます。
Quality Assuranceの完了
Chaiでのテスト
前回の記事で、途中まで進んでいた Quality Assurance 。このコースでは、Chaiを使ったNode.js / JavaScriptのテストについて学びました。 お仕事ではRubyを使っているので、RSpecには慣れていたのですが、他の言語でもテストの書き方が学べたのは、とても楽しい経験でした。
グリーンが返ってくるのは、なんにせよ嬉しいです!
特に、ブラウザのテスト、E2Eテストに近いものは「Seleniumでブラウザを起動して実施するもの」と思っていたわたしにとっては、目からウロコでした。 実際には、この方法は、その時仕事でVue.jsを扱っていたので、テストコード記載にあたっても非常に役に立っています。
また、CORSの設定は必要であるものの、ブラウザからJavaScriptを実行し、テスト対象のWebアプリケーションに対してリクエストを発行し、そのレスポンスをテストするという、chai-http というやり方も、「なるほど!」と思えるものでした。
Now I'm learning Quality Assurance with Chai course of #freeCodeCamp. Methods for assertion are so many than I expected. It's so fun😃
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月6日
Good testing is one of the key factors to ensure psychological safety in development, I think. pic.twitter.com/XUKYlk3Hyk
This is the first functional test script using "chai-http".
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月7日
I can run it in the terminal to see the response, status code, response text :)
Then try running the same script in your browser.#freeCodeCamp pic.twitter.com/UM2wKpUrmx
Completed the "Quality Assurance with Chai" course of the #freeCodeCamp.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月10日
I'm using RSpec or Minitest at work. So this section was fun because I could write the tests in a different language :) pic.twitter.com/PuKVwvtzBA
Memo: How to test my project from the browser which renders #freeCodeCamp domain's page content.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月30日
My project is running on another domain, and the browser tries to send the cross-domain request.
To allow it, my project sets the HTTP header "Access-Control-Allow-Origin". pic.twitter.com/KEJ7qnSpR1
Advanced Node and Express
2020年10月の半ばごろに、次の章に進みました。 もう少し実践的なNode.jsでのアプリケーション作成になります。
はじめは replit.it というWebベースの開発環境&デプロイツールを使って課題を書いて、freeCodeCampの課題のURLから、作成した課題のアプリケーションに対してテストリクエストを送って、動作チェックをして、パスすれば次に進むというやり方で進めていました。
After self-study about Express.js for a few days, I finished the first two tasks for Advanced Node and Express.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月13日
What I learned: The default template root directory is "views". Express requires a template engine name when using res.render () etc...😊#freeCodeCamp pic.twitter.com/R11yFUrDtE
I'm finally halfway through the "Advanced Node and Express" course. And I hope to complete it by the end of next week and hope to complete projects in October 💪
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月17日
Also, I'm going to start the "Coding Interview Prep" of #freeCodeCamp. pic.twitter.com/usfPeUkTgQ
I've finished 16/22 steps of "Advanced Node and Express".
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月18日
Now my Express sample app implements the GitHub authentication via passport.js and the "passport-github" module😃#freeCodeCamp pic.twitter.com/k43VeS3Idw
MongoDB Universityにも入門してみる
さて、このコースではExpressベースのアプリケーションとして、バックエンドでMongoDBを使っています。 さすがに仕組みがわからないと、どういうコードを書いたらいいのかわからない....。
ということで、脱線にはなりますが、10月の後半から、MongoDB Universityというオンラインの学習コースにも並行して取り組むようにしました。
I'm new to MongoDB :)
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月19日
From last week, I started learning it through the MongoDB Atlas and MongoDB University.
Here is a dashboard with sample data using the MongoDB Atlas platform. pic.twitter.com/bOTDfHEOPc
MongoDB Universityは短いビデオ、確認テストでまず進んだので、ボリューム的にちょうどいいなと思ったら。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月19日
「ブラウザからWeb IDEを使ってMongoDBに接続して課題を進めていきましょう!」という流れになってきて、これもオドロキ!
mongo shellを使って接続、Run Testで課題のテストを実施です。 pic.twitter.com/ugpS5Kwg3Z
それまではずっとRDBMSを利用していたので、こういったNoSQLデータベースを真面目に触れる機会がありませんでした。このタイミングで、ちょっとじっくり学習したいなと思い、取り組んでいます。
別の記事になりますが、Zennで記事を書くトレーニングとして、12月には「ひとりMongoDB アドベントカレンダー」というものにチャレンジしてみました。
コース完了のためのプロジェクトに苦戦する!
データベースに関しては、MongoDB Universityでの学習を進めた分、遠回りではありましたけれども、やって良かった!と思いました。Issue Tracker, Personal Libraryといった、いわゆるCRUDなアプリケーションに関しては、1つ基本がわかればなんとか同じように進めることができました。
Since this weekend, I'm working on the issue-tracker project for #freeCodeCamp QA certification. Now I can connect to my MongoDB cluster on MongoDB Atlas and get issues.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年11月1日
BTW, VSCode can connect and preview the remote MongoDB database. Very useful😍 pic.twitter.com/JvWpVM5HBh
I've just complete "Issue Tracker" project based on Express as #freeCodeCamp "Quality Assurance Projects".
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年11月15日
The next project is "Personal Library".ditor and Express server :)
The next project is "Personal Library" 💪 pic.twitter.com/hR03SlzFSo
ただ、12月はMongoDBの方を中心に学習していたので、少し進みは遅く...。完走は年明けに持ち越し確定でした。
freeCodeCampの課題が止まっている。。。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年12月31日
少しMongoDB学習したので、なんとかクリアしてこのコースのCertigficationを取得するぞう! pic.twitter.com/Cdo4nlfDKd
freeCodeCampで前回Issue Trackerの課題を提出したのが去年の11月...。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年1月6日
2ヶ月くらい間が空きましたが、その間はMongoDB University側のカリキュラムを進めてた感じです。
でも、MongoDBのクエリの書き方やアグリゲーションを学習したおかげで、今回の課題は割とスムーズに進みました😊 pic.twitter.com/JeRyLxXdte
さて、お正月休みを利用してなんとか3つ進んだあと、次の課題は「数独の解を出す」というアプリケーション!! データベースは必要ないのですが、Solverを作成する(いわゆるアルゴリズムを考える)というところが重点の課題。
これには非常に苦戦しました....。
ということでfCCの次の課題をやろうと思ったんだけど、"Sudoku Solver” を作れってことで、数独なのね。。。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年1月9日
あああ苦手なやつー。
単純なCRUDじゃないので、辛いw pic.twitter.com/oxm9nJo7XA
なんとかSudoku Solverを終わらせる!
1月後半から2月上旬にかけては、プライベートでも佳境に...。 「数学的な考え方がわからないと解けない!」と、時々如実に思い知らされるfreeCodeCampです。 結城先生の本も読みながら、ネットに公開していただいている、数独のSolverのプログラムを参考にしながら、なんとか再開。
こちらも!
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年1月10日
結城先生の本😊
わたしは書いて計算しないと理解できないので、万年筆と使い切ってないノート使い倒すつもりで読んでいこう。 pic.twitter.com/eau0lJlLsz
mongoと思ったけど、かなり手を出さずに止めてたfreeCodeCampの課題をちょっと再開。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年3月4日
実装全く思いつかなくてスタックしてたので、サンプルコードコメント付けながら読んで動かしている感じ。
テストが通るように修正をあとちょっと。 pic.twitter.com/BaYtVvSCNy
しつこく書き直して、なんとか朝活でテストも通ったーー😊#freeCodeCamp https://t.co/AZDpX3CNpv https://t.co/XMf9O6RIHB pic.twitter.com/4BmGPXACjR
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年3月7日
数ヶ月かけてゆっくり進めているので、実はfreeCodeCamp側のコンテンツ、課題をチェックするためのソースコードもどんどん変わっていたりします。 先月はパスしたテストも、今月はパスしない!みたいなこともあり、プロジェクトの課題がグリーンになるための条件を、freeCodeCamp側のリポジトリも確認しながら調整していきました。
この数独Solverがわたしには極め付けに難易度が高かったのですが、その後のAmerican / Britishトランスレータは、そこまでではなかったので、続けて完了することができました。
ホワイトデーに完了!
なんとかめでたく、プロジェクト課題5つがテストをパスし、コース完了となりました。 長かった...。
I've just got the certificate of Quality Assurance course at #freeCodeCamp !
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年3月14日
This is the 6th certification since I started my journey in November 2018 :)
Still continue to learn withbaby steps. pic.twitter.com/024dsjazmw
いろいろ覚えたこと
Node.jsでWebアプリケーションを作るのは、この半年ぐらいが初めてでした。 まだまだ本格的な書き方がわからなかったり、「Railsでやってたバリデーションとかはどうするの??」といった疑問も出てきています。
上記のようなライブラリ、フレームワーク、Webサービスに触れることが出来たのも、なかなか良かったと思います。
特に、後半はローカル開発環境(Mac) で記載したアプリケーションを GitpodというWebベースの統合開発環境を使ってデプロイし、freeCodeCamp側のテストを通すといったことも行いました。
おはようございます。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2021年1月3日
ちょっとだけ朝活、昨日ローカルのMacで動かしてたExpressの課題をGitpod上で動かしてみることに。
環境変数を設定して途中までですがテストもOK。
割当たったURLを使ってfreeCodeCamp側でのテストも走りました!
これでブラウザだけで続きができるぞう。#freeCodeCamp #Gitpod pic.twitter.com/PEoj0LLtta
この環境はとても素晴らしく(語彙が足りないです...)、こちらに関しても、別にQiitaやZennに記事を書いてみましたので、もし良かったら眺めていただければと思います。
Today I tried the new feature of #Gitpod, and I could run the famous "nyan-cat" container within my workspace😊
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年12月26日
What a wonderful developer experience.
Thanks to all the developers! https://t.co/bxuAOBWXWI pic.twitter.com/zRiAAEvYRs
ここまでの2年半くらいで変わったこと
やっと6つコースが終わりました。 始めた当初、この次のコースは "Information Security" だったのですが、2年半の間にPythonのコースが追加されました。機械学習、データ分析のコースです。
また、課題を進めている間にも、freeCodeCampのリポジトリがどんどん変わっていっています。 以前と同じではないテスト、追加された課題もあります。 ポータルに関しても、最初はグリーンを貴重にしていたのですが、現在はここ1年の事情を反映してか、モノクロベースになっています。
また、この2年半で、テストを実行する環境、特にWebベースでの開発環境、配信環境といったものが非常に進化している印象を受けました。
コロナ禍の中にあって、オンライン学習を支える技術が本当に進化していると思っています。
なお、わたし自身の英語力は上がったのか?というと、実はTOEICのスコアが全く変わりません....。 (3回くらいは受けているのですが)
それでも、特にMongoDBを触れる機会が出来たのは、1つ大きな学びでした。
つぎにすすみます!
ということで、大雑把ですが、ひきつづき「やってますよ!」な記録でした。
春先にお仕事を変えまして、とてもヒーヒーしている状況ですが、おそらくお仕事とは違う分野を学ぶことも、きっとなにかにつながると信じていますので、引き続き念願?のPythonコースに進んでみます。