Closed27

「フロントエンドの基礎知識がある」って何を知ってたら言えるの?

hajimismhajimism

本当に興味のある情報だけ食べて生きていきたいとは思うけれど、お仕事をいただくとなるとそうはいかないこともままある。フロントエンドのお仕事をいただく人が持つ「常識」って具体的にどんなんだろう?とふと疑問に思った。

hajimismhajimism

とりあえず自分が知ってるそれっぽい単語を思いついた順に並べてみる。

  • HTTP, サーバー, クライアント
  • Web API, REST, GraphQL
  • PWA
  • CDN
  • SSR, SSG
  • Cache
  • Webpack, バンドル・ビルドツール
  • npm, パッケージマネージャ
  • Virtual DOM
  • ESLint
  • HTML, CSS
  • JS, Node.js, TS
  • React, Vue,...
  • Next, Nuxt
  • Webアクセシビリティ
  • パフォーマンス最適化
  • BFF
  • Jamstack
  • 認証
  • Cookie
  • オブジェクト指向UI
  • オブジェクト指向プログラム
  • 関数型プログラミング
  • Storybook, UI snapshot
  • test
  • CI/CD
  • Error tracking

ツールの使い方を知っていることと概念を理解していることはまた別だからな...そこの境界線も難しい。

hajimismhajimism

そもそもHTML/CSS/JavaScriptだけでも広大だからな...
https://developer.mozilla.org/ja/docs/Learn/Front-end_web_developer
基礎ってなんだ?

hajimismhajimism

わからん。解釈の切り口を変えるか、統計的に処理するかどっちかだ

hajimismhajimism

J.S.ミルの名言思い出した
「教養ある人とは、Everythingについてひととおり知っていて、Somethingについてあまねく知っている人のことである」
今はたぶんフロントエンドで「Everythingについてひととおり知っていて」はどうすれば達成できるのかを知りたいんだと思う。

hajimismhajimism

有名なやつを眺めてみる
https://roadmap.sh/frontend/

hajimismhajimism

WebpackよりもViteやesbuildのほうが優先度高く設定されている。

hajimismhajimism

https://www.knowledgehut.com/blog/web-development/front-end-developer-roadmap

他の記事ではほとんどがこんな感じで「HTML/CSS/JS、JSライブラリを一通り学びましょう!それが終わったらAdvancedな内容に進みましょう!」という風に書いてある。自分もその流れで勉強しているからなんともいえないが、なんか違う気がするんだよなあ

hajimismhajimism

ツールの使い方に詳しくなっているだけな感じがする。もちろんそれも大事なんだけど。

hajimismhajimism

フロントエンドの歴史を知ればいいのかな
どういう課題があって、どういうツールが解決してきたか。それを一通り言えればいい気がする。詳細な使い方は必要になってから知ればいい。JQueryは歴史的に重要なんだろうけど自分は一生勉強しないと思うし。

hajimismhajimism

この切り口は良さそうだからフロントエンドの歴史を知りたい!っていう別のスクラップ立てよう

hajimismhajimism

過去の自分に読ませたいZenn本の構想をしてみる。ハンズオンしながらフロントエンドの基礎知識のindexingができるイメージ。

『ポケモン図鑑アプリを育てて、フロントエンドの基礎知識をゲットだぜ!』

hajimismhajimism

第一章

ポケモンAPIをクライアント側で叩いて好きな6体を表示するだけのアプリ。6体の指定はハードコーディングする。

学ぶこと

  • Web API(REST)
  • HTTP(サーバーとクライアントの区別)
  • 宣言的UI
  • Tailwind CSS。CSS in JSやCSS Moduleとの違いや、それぞれのメリデメなどの整理。
  • Suspence
hajimismhajimism

第二章

第一章で作ったやつのSSR、SSG版をそれぞれ作ってVercelにデプロイする。クライアント側でやることを減らしてパフォーマンスを改善するという基本的な方針を理解する。

学ぶこと

  • Next.js, Vercel
  • SSR, SSG
  • CDN, Cache
  • Server Component
hajimismhajimism

第三章

認証機能をつけてアカウントごとに6体を選べるようにする。「だったらSSGが最強じゃん!」ってなったあとにSSGでできないことを学ぶためにアプリをインタラクティブにする。バックエンドはFirebaseで作る。

学ぶこと

  • 認証(JWT?)
  • Firebase, Firestore(NoSQL), Cloud Functions?
  • Form
  • Global State
hajimismhajimism

第四章

わざと3章までのUIをイマイチにして、それを改善していく。モデルを意識させるために、1つのアカウントで複数のパーティを作れるようにして、ユーザープロフィールを編集できるようにする。

学ぶこと

  • オブジェクト指向UI
  • 画像のアップロード
  • 画像最適化
  • Storybook
  • Container/Presenter Pattern
  • UI libraryのどれか(執筆しやすいTailwindを使いたいのでdaisyとか?)
hajimismhajimism

第五章

次からプラットフォーム型のアプリになっていくので、アプリが大きくなる前に開発体制を整える。

学ぶこと

  • ESLint(Next.jsのデフォルトから更に盛り込んでいく)(Prettierだけは最初からやっておく。無いと辛いので。)
  • Testの種類と使い所
  • CI/CD(GitHub Actions, Vercel)
  • Error Tracking
hajimismhajimism

第六章

好きなパーティを作って公開できるプラットフォームにする。あえてRESTのつらみが生じるようなUIにしてGraphQLに変える。ユーザーの交流を想定してアプリっぽいことをいろいろ盛り込む。

学ぶこと

  • GraphQL
  • SEO(というかOGPの設定など)
  • Dynamic OG Image
  • PWA
  • ......
このスクラップは2023/01/08にクローズされました