みなさんこんにちは。はてなの記事、42本目になりました。久しぶりです!!
今回は、 freeCodeCamp 記録その2 の続きになります。 前回Blogに記事を書いてから、もう1年半が経っています....。
ここまでのみちのり
とはいえ、ほんとうに途中の何ヶ月かの中断を踏まえつつも、進めることは進めています。 とりあえず自分を褒めたい一心で、ここまでのCertificationの記録を挙げてみます。
初回のCertificationは除いて、4つ進みました。
20190523: JavaScript Algorithms and Data Structures Certification
And finally I've just get the "JavaScript Algorithms and Data Structures Certification". #freeCodeCamp #100DaysOfCode
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2019年5月23日
But I just learned the algorithm through JavaScript, so next, I must learn more about the front-end frameworks, libraries and so on. pic.twitter.com/z75d4C5zDA
20191007: Front End Libraries Certification
Here is my 3rd certificate for Front End Libraries at #freeCodeCamp! Thanks, @ossia and all the supporters!
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2019年10月6日
Almost a year has passed since I started this camp.
I still have not completed yet. So, really Baby-Steps! pic.twitter.com/ShdP0DBnqW
20200610: Data visualization Certification
This is the 4th certificate of data visualization using #freeCodeCamp.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年6月9日
It's been more than half a year since I started this Data Visualization course.
The next course is "API and Microservices" :)
Still really a baby step! pic.twitter.com/5KmYyECLvh
20201003: APIs and Microservices Certification
Now I completed the #freeCodeCamp APIs and Microservices certification!
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年10月3日
The 6th certification is "Quality Assurance".
And then, dive into the world of Python during the New Year holidays :) pic.twitter.com/H0d6frtc3j
- ここまでのみちのり
- JavaScript Algorithms and Data Structures (20190307 - 20190523)
- Front End Libraries (20190528 - 20191007)
- Data visualization (20191008 - 20200610)
- APIs and Microservices (2020719 - 20201003)
- やくにたっているのかな?
- つぎにすすみます!
JavaScript Algorithms and Data Structures (20190307 - 20190523)
いや、これはほんとうに難しかった! freeCodeCampは簡単な練習課題を進めたあとは、「プロジェクト」と称した4つから5つのコーディング課題を提出することが、コース終了の認定条件になります。
もちろん、学習メインで認定書は不要であれば、どんどん次のコースに進んでも構いません。 ですが、実際に手を動かしてみると、わたしに関しては全くと言っていいほど何から手をだしていいかわかりませんでした。
IT歴20年近いのに恥ずかしい。でもほんとうにそうなんです。メイン関数の書き方もわすれちゃうんですよね。 あとは、アルゴリズムをきちんと学習しているわけではないので、書籍やサイト、アルゴリズムの動画などを見て調べながら悪戦苦闘.....。
from:akiko_pusu #freeCodeCamp - Twitter Search な条件で検索をすると、その苦労っぷりが出てきます。
Since May 10, I’m learning “Intermediate Algorithm Scripting” Chapter of JavaScript. Though my progress is so slow, learning other terminologies through coding challenges is fun for me😊#freeCodeCamp #100DaysOfCode pic.twitter.com/wB1Hw6QxNu
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2019年5月13日
提出したコード
コードは基本的にはGitHubに登録しています。 また、静的に動かせるものは、Netlify上にポートフォリオ的に公開しています。JavaScript Algorithms and Data Structuresの認定課題は、以下に上げています。
FCC: JavaScript Algorithms and Data Structures Projects
やってみて
おそらく、最初の「Responsive Web Design」も、練習課題自体はサクサクと進めると思います。 認定課題はデザインが入るので、サーバサイドやバックエンド専門の方には、あなどることなかれ、なかなか難しいものがあるかもしれません。
こちらのJavaScript Algorithms and Data Structuresは、「あああ、アルゴリズムって大事なんだああ!」というのを実感したコースですし、ここをクリアしたCamperさんたちは凄いと思います。
また、取り組んでみて思ったのが、「配列がとにかく処理の基本」ということ。 このあたりはどんな言語でも同じですね。 JavaScriptで課題を組んではいますが、「あれれ、配列を扱うのに、こんなにいろんな関数があるのね!」という驚きとともに、さもありなんと納得したのでした。
Front End Libraries (20190528 - 20191007)
じつはこのコースは、いきなりReactとかReduxが出てきて、なかなか悩ましい箇所でもありました。 JavaScriptのフレームワークを使うため、シンプルなJavaScriptとHTMLとCSSでh完結せず、Node.jsを使ってパッケージを追加したりして環境を整えないと進めにくい....。
このコースに関しては、認定課題に関しては、環境構築を断念して、オンラインの codepen.io を使いました。 また、デザインも伴っての課題のため、そもそもどんなふうにHTMLをコーディングすればいいかも難儀しました。
最初のWeb Designのコース、そしてCSSのグリッドデザインあたりが、ここで効いてきます。 終了までに途切れ途切れで、かなり時間のかかったコースです。
After almost 3 weeks long blank, I could finally go back to my self-paced learning of #freeCodeCamp😅
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2019年9月20日
Anyway I finished React-Redux chapter and I'm starting to work towards complete the challenges! pic.twitter.com/JwKdGQ1z8N
提出したコード
これもGitHubに載せています。また、CodePen上のものを提出したり、Netlifyに上げたものを提出したり。
My second project for Front-End Library was also submitted.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2019年9月23日
This is the first time I have sent a task using React even though it's very simple one. #freeCodeCamp
Also I used Marked.js to compile and render Markdown text for the first time :) pic.twitter.com/mxg6TRMCKV
以下は、最後の課題の「Pomodoro Clock」になります。
freeCodeCamp: Front End Libraries Projects - project5 - React Pomodoro Clock
やってみて
(今思えばどれも)難しいのですが、画面実装も含めてかなり実践的な課題だったので、やってみたあとの達成感は「作品作った!」という気がしました。
Data visualization (20191008 - 20200610)
こちらはコース完了するまでに半年以上!!! そもそもD3.jsを初めてるかうことと、どうやらバージョンが大きく変わったため、参考にしたソースが動かなかったりで、非常に難儀したコースでした。
今もう一回やれ、と言われても自信がありません。たぶんD3.jsではないライブラリを使いたいです....。
コースの前半は、練習課題なのであまり困らずサクサクすすみましたが、11月から中断。 その後、COVID-19の件もあり、自宅で過ごす生活が続いたので、意を決して放置したコースを再開しました。
こんな時期なので、おうちにこもっているんだけれど、やっとfreeCodeCampを再開したです。
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年2月29日
表示名に攻略中って書いてるから、やらなくっちゃー。
It's hard time to work outside and play. ...
But because of this situation, I finally restarted learning #freeCodeCamp 😉
After a long vacation😉, I finished the "JSON API and Ajax" training. Using various APIs is so fun!
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年2月29日
Now is the time to complete the challenge of data visualization certification. #freeCodeCamp pic.twitter.com/yx6ojiEb6l
提出したコード
これもGitHubに載せています。D3.jsは完全にフロントエンドでブラウザに描画をさせる技術なので、こちらもNetlify上のポートフォリオに載せています。
I've completed #freecodeCamp Data Visualization project 2: Scatterplot Graph.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年3月10日
The next project is Heat Map.....
I have no idea how to draw it 🙄 pic.twitter.com/Ga4vAzkaYy
Data Visualization Projects - Visualize Data with a Treemap Diagram
Data Visualization Projects - Visualize Data with a Choropleth Map
やってみて
やってみて、「こんなものも描画できるのか!!!!」というのがまず驚きでした。 合衆国全域を描画できるとか、本当に感激.....。
そして、D3.jsのライブラリが生成するHTML(SVG)のコードを眺めると、ほんとうに細かいことの積み上げて出来ていて、それを正しく処理するのがプログラムなんだということがよく分かったコースでした。
APIs and Microservices (2020719 - 20201003)
この章からはサーバサイドの技術になります。Node.jsを使ってのコース。 個人的にはサーバサイドエンジニアのカテゴリでお仕事をしていますが、Node.js (+JavaScript) できっちり書いていくのは初めてです。
これはこれで進めていて楽しいコースでしたが、「非同期処理」の扱いに大変頭を悩ませたコースでした。 結果的には、「やって良かった!!」というコースです。
なぜなら、あまり馴染みのなかった分野に触れることができたので。
- Node.js / Express
- MongoDB
- 非同期処理
とくにMongoDBは、いわゆるNon-SQLなデータベースではありますが、一定のクエリを投げてデータを抽出するという点では、RDBと同じです。書き方は違うけれども、クエリの条件式を渡す際、SQLインジェクションと同じく適切でない文字列を渡すと全件検索や削除といった危険性がある。
Today's morning activity for URL Shortener Microserviceproject of #freeCodeCamp.
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年9月23日
The basic request, response, URL validation, and redirect are implemented.
The rest is to read / write to MongoDB :)
I still haven't understood the callback correctly >< pic.twitter.com/9B7S3ks1Dx
「あれ?そういえばMongoDBだと、SQL injectiontっていうのはちょっと違うのか?特殊文字のエスケープは要るとして...」と、ふと気になったら、やっぱり気をつけないと全件取得とかできちゃうのね^^;
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年9月27日
サニタイズのライブラリ使うとか型チェックなどなど。https://t.co/Ugi1cYB9hv
これは、やってみての「なるほど!」感でした。 練習課題ではそこまで意識した内容にはなっていませんが、認定課題に取り組んでいる際に、「あれ、これエスケープしとかないといけないんじゃないかな?」という思いを巡らせて、結果的にいろいろライブラリを探したり方法を調べたり、ということも行いました。
提出したコード
これもGitHubに載せています。実際のfreeCodeCampでのテストは、どうやら移行期間中らしく提出さえすれば通ってしまうものもありました。
以下は一部になります。
やってみて
サーバサイド、APIの実装だったので、これはとても楽しい! また、プロジェクトのシナリオもIN/OUTのみを意識してのコーディングなので、お仕事に近い感覚がありました。
なお、特に驚いたのが、提出課題をどうやってfreeCodeCamp側がテストするかといった点。
- 実装したAPIを提供するRepl.io のURLを入力してSubmitを押す
- ブラウザがテスト用のfreeCodeCampからのJavaScriptを読み込み、ブラウザ自身が提出したサイトにアクセスしてIN / OUTが正しいかをチェックする
こんな流れです。
freeCodeCampのURLを開いている画面で、提出したサイトのAPIをAjaxで叩いてチェックするということを行うので、サイトをまたがってのJavaScriptの実行になります。
このため、提出したサイト側に、CORSの設定が必要になります。
Yesterday I was struggling to pass the #freeCodecamp test. It seems code was no problem but the test always returned errors...😭
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年9月15日
Finally, I found the error message related to CORS in my browser's console.
I got it! pic.twitter.com/HX5Ueq7Fdj
Personally, it's quite interesting for me that fcc's test is based on the JavaScript test frameworks such as chai, mocha😃
— たかのあきこ@freeCodeCamp攻略中 (@akiko_pusu) 2020年9月15日
This approach enables us to test the freeCode camper's practice site via https://t.co/cmOr6QlIHR domain. Wow!
やくにたっているのかな?
もっと早く進めたり、もっと実用的な認定資格(ベンダー資格や国家資格)などに時間を充てたほうがいい、と思われるかもしれません。
ですが、今はその時ではない。 もうしばらく子どもたちのこともあるので、自分のために捻出できる時間と金銭には限りがあります。
好きなペースで進めながらも、なにか一つ達成しておきたいという気持ちから、とにかく続けています。
そして、以前書いた最初のfreeCodeCampに関する記事の中で、51歳からはじめてGoogle Developers Expertになられた方のお話がとても印象に残っています。 そこまではいかなくとも、近い世界を見てみたい、そんな気持ちも持ち続けています。
思い出しながらの取り組みですが、実のところは「役に立っている」というのは間違いありません。 仕事の中でコーディングが発生するとき、今まであまり意識できていなかったフロントエンド側の工夫、表現方法に関して一歩進んだ考え方ができるようになっています。
ここ2年の取り組みで、個人リポジトリでのコミットの中心は、サーバサイドではなくフロントエンドでした。 間違いなく、それまではわたし自身思い付けなかった方法、手を出したくても出来なかったことに、近づけているように思います。
つぎにすすみます!
ということで、大雑把ですが「やってますよ!」な記録でした。 後半に出てきた、テストの仕組みも次の Quality Assurance のコースで出てくるかもしれないので、とても楽しみです。
また、年末年始くらいには、その先のPythonのコースです。これも楽しみ!