🐶

フロントエンドエンジニアとして働き始める前に勉強した事

2021/06/09に公開
2

今回学習した理由

私は今までWebアプリケーションの開発を行なうソフトウェアエンジニアとして、いわゆるバックエンド・フロントエンドの区切りなく開発に関わらせて頂きました。

しかし、この度転職をしまして、次の会社ではフロントエンドエンニアとして働かせて頂ける事となりました。

そこで、フロントエンドエンジニアとして実際に働き始める前にフロントエンドエンジニアが求められる事項に関して網羅的に学習をしておきたいと思ったのがきっかけです。

学習した事の概要

Developer RoadmapsFrontend Developerに沿ってフロントエンド知識全般の補填を行いました。(※今回は私が今まであまり注力を置いて学習してこなかった事項を重点的に学習しました)

あくまでも各項目の入門的な事項を学んだのでより深い知識は今後の業務+学習でつけていければと考えています。

そもそもフロントエンドエンジニアて何するの?

下記の本の特集1(フロントエンド エンジニアとしての基礎と準備)を読む事で、改めてフロントエンドエンジニアの仕事範囲・求められるスキル・理想像等を理解する事ができました。

https://www.amazon.co.jp/dp/B00ME9TTMA

HTML / CSS

基本的なHTMLとCSSを下記の本を参考に改めて体系的に学習しました。

https://www.amazon.co.jp/dp/B0176GNY26/ref=cm_sw_em_r_mt_dp_7R8M8JP0HBW2JH1KKTQC

CSS設計

下記の本や記事を参考にOOCSSBEMSMACSSといった基本的なCSS設計の学習を行いました。

https://www.amazon.co.jp/CSS設計完全ガイド-~詳細解説+実践的モジュール集-半田-惇志-ebook/dp/B0856YMH7L

https://snipcart.com/blog/organize-css-modular-architecture

https://css-tricks.com/bem-101

SEO

下記の本を読み、SEOの基礎的な考え方を学びました。

https://www.amazon.co.jp/dp/B00WG2KY0Q/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

アクセシビリティ

個人的な経験としまして、今までウェブアクセシビリティを強く意識して開発したことはありませんでした。

下記の記事や本を読むことでアクセシビリティがなぜ必要なのか、また何を基準にどのようにアクセシビリティにアプローチしていくべきか学ぶ事ができました。

https://www.amazon.co.jp/デザイニングWebアクセシビリティ-アクセシブルな設計やコンテンツ制作のアプローチ-太田良典/dp/4862462650

https://uxmilk.jp/84998

https://a11y-guidelines.ameba.design/

https://waic.jp/docs/jis2016/accessibility-plan-guidelines/201604/

デザイン基本

オブジェクト指向UIデザインを読むまでは、デザインに関して業務では大きく関与せず、自身の個人プロジェクトでは他のサイトを参考にしたり、フィーリング?で開発していた節がありました。

しかし、オブジェクト指向UIデザインを読む事でデザインに関して具体的に意識するポイント等をより理論的に理解する事ができました。

また、ノンデザイナーズ・デザインブックを読む事で実際にUIのデザインを行う際に軸にするポイント等が理解する事ができました。

結果的に、私自身ウェブデザインやUI/UXの開発に大してより興味が深まりました。

https://www.amazon.co.jp/dp/B0893RK6WC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

https://www.amazon.co.jp/dp/B01LW1BC2L/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

CSS PROCESSORS

Sassは以前にも使用した事はありましたが、最近はあまり使用する機会がなかったので、公式ドキュメントを改めて読み直して知識の補填を行いました。

https://sass-lang.com/

https://postcss.org/

Build Tools

Frontend Developerに記載されているBuild Toolsの内npm/Yarn/Prettier/ESlint辺は日頃から使用する機会が多くありました。

今回はやや古い記事(最近ではあまり使われないツールも含む)ですが、下記の記事を読み改めてJS周りBuild Toolsの概要(それぞれの役割)に関して学習しました。

https://www.freecodecamp.org/news/making-sense-of-front-end-build-tools-3a1b3a87043b/

Modern CSS

今までの業務ではstyled-componentsを使用する事が多かったです。その為公式ドキュメントを通して、styled-componentsの今まで使用していなかった用法の学習、またEmotion、CSS Modulesに関して学習を行いました。

https://styled-components.com/

https://emotion.sh/docs/introduction

https://github.com/css-modules/css-modules

https://www.javascriptstuff.com/css-modules-by-example/

State Management

Reduxは以前から使用したことがありましたが、Recoilは名前を知っていてQiitaの記事等で概要を見たことがある程度でしたので、この機に公式のドキュメントに目を通しました。
また、デモレベルですが使用してみました。

その他State Managementに関して参考になる下記の記事を拝読しました。

https://recoiljs.org/

https://leerob.io/blog/react-state-management#past

https://azu.github.io/slide/2016/react-meetup/large-scale-javascript.html

https://techlog.voyagegroup.com/entry/2017/08/31/102915

https://enappd.com/blog/difference-between-redux-and-flux/106/

テスト

下記の3つは一通り業務で使用した事がありましたが、最近enzymeをあまり使用していなかったので、復習し直しました。

https://jestjs.io/

https://enzymejs.github.io/enzyme/

https://testing-library.com/docs/react-testing-library/intro/

WebComponents

正直Webcomponentsという名前だけは聞いたことがある程度の理解しかありませんでしたが、下記の記事等を読むことでWebComponentsの基本的な考え方等を理解することができました。

https://dev.to/steveblue/it-s-not-about-web-components-vs-react-5137

https://nulab.com/ja/blog/cacoo/web-components/

CSS Frameworks

BootstrapやMaterialUIは触ったことがありましたが、Tailwind CSSとChakraUIは触ったことがなかったので入門しました。

https://tailwindcss.com/

https://chakra-ui.com/

フロントエンドパフォーマンス

やや被る部分もありましたが、個人的に非常に関心の高い分野だったので両方とも拝読させて頂きました。

なぜパフォーマンスを気にする必要があるのかから始まり、ブラウザでWebサイトが表示されるまでの基本的な処理、その各処理事にパフォーマンスを改善する方法等を理解する事ができました。

https://www.amazon.co.jp/Webフロントエンド-ハイパフォーマンス-チューニング-久保田-光則/dp/4774189677

https://www.amazon.co.jp/Webページ速度改善ガイド-使いやすさは「速さ」から始まる-WEB-PRESS-plus/dp/477419400X

Progressive WebApps(PWA)

下記の記事や動画を参考にPWAの概要から理解し、以前作成したReactのアプリをPWA化することで理解を深めました。

https://www.netguru.com/codestories/pwa-ios

https://www.codica.com/blog/how-to-create-pwa-with-react/

https://web.dev/pwa-checklist/

https://www.youtube.com/watch?v=sFsRylCQblw

GraphQL

以前から業務でGraphQLとApolloを使用していましたので、今回はドキュメントをざっと読み直すに留めました。

個人的に両者共に公式のドキュメントがとても理解しやすく学習しやすいと感じました。

https://graphql.org/

https://www.apollographql.com/docs/

SSR(Server Side Rendering)

下記の本はタイトル通りBFFに関しての本なのですが、SSR(Server Side Rendering)にも触れられており、とても参考になりました。

https://www.amazon.co.jp/dp/B07J2W6374

SSG(Static Site Generation)

以前個人のブログをGatsbyで作成しましたが、SSGの概要に関して改めて下記の記事を読んで復習しました。

https://www.cloudflare.com/learning/performance/static-site-generator

Desktop App

Electronでデスクトップアプリを作成する為に公式のドキュメントにざっくりと目を通し、下記のYoutubeのチュートリアルをやってみました。

ElectronではWebの技術(HTML, CSS, JS)を使用するので、Webアプリを開発する要領で開発する事ができ、個人的にすんなりと開発を行うことが出来ると感じました。

https://www.electronjs.org/

https://www.electronforge.io

https://www.youtube.com/watch?v=3yqDxhR2XxE

Web Assembly(WASM)

改めて基本概念の学習を行い、Rustを使用して実際に簡単なチュートリアルを行いました。

https://developer.mozilla.org/en-US/docs/WebAssembly

https://medium.com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6

https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm

https://qiita.com/umamichi/items/c62d18b7ed81fdba63c2

https://qiita.com/kawamou/items/7c56827e1e9a4795c026

No Code・Low Code

ノーコードとローコードに関してそれぞれの特徴等から学び、実際にいくつかのサービスを使用してみました。

https://qiita.com/kento_gm/items/34c46a9bc6b3017c9345

https://mendix.buildsystem.jp/mx-blog-understand-no-code-vs-low-code-development-tools/

https://medium.com/@rrhoover/the-rise-of-no-code-e733d7c0944d

【翻訳】外注したら約400万円かかるシステムを、コーディングなしで自前でつくったお話

参考

https://roadmap.sh/frontend

https://github.com/stevekinney/frontend-architecture-topics

Discussion

ken7253ken7253

非常に広い領域の内容がまとまっていて参考になりました!
自分も参考にさせていただこうかと思います!

アクセシビリティのガイドラインについては2016年版のものがありましたのでそちらのほうがよりソースとして正確性があるかなと思いましたのでもしよろしければご確認下さい!
https://waic.jp/docs/jis2016/accessibility-plan-guidelines/201604/
また、下記の記事がリンク切れ?のようなのでもし記事のリンクがあれば見てみたいので確認していただけるとありがたいです!