info 当サイトはアフィリエイト広告を利用しています
キャリアブログ

コーダーからフロントエンドエンジニアになって、現場でつまずいたこと4選

私はコーダーを4年ほど経験した後、
Reactを扱うフロントエンドエンジニアに転向しました。

コーダーからフロントエンドエンジニアになるまでは、転職活動も結構苦労しましたし、
実際に現場で働き始めてからも、初めての内容の仕事ばかりで慣れるまでにかなり時間がかかりました。

今はフロントエンドエンジニアとして働き始めて2年ほど経ち、
一人で出来る仕事も増えてきて、状況も落ち着いてきました。

そこで本記事では、これまでの2年間を振り返り、
どういったところで最初躓いたのか、苦労したのかについて書いていきたいと思います!

check_circle この記事の対象者

  • コーダーからフロントエンドエンジニアへの転向を目指している方
  • コーダーとフロントエンドエンジニアの業務の違いについて知りたい方
  • コーダーとフロントエンドのどちらを目指そうか悩んでいる方

よくコーダーもフロントエンドエンジニアとして扱われることがあり、
定義が曖昧なところがあると思いますが、
この記事では以下のように定義してお話しを進めます。

【コーダー】Webサイト制作のコーディングに関わるエンジニア(マークアップエンジニアという方が意味合いが似ているかも)

【フロントエンドエンジニア】Webアプリケーション開発(フロント)のコーディングに関わるエンジニア

コーダーからフロントエンドエンジニアになって、現場でつまずいたこと4選

まずは早速結論から書きます。

check_circle

  • 技術不足による実装の壁
  • 静的ページから動的アプリケーションの開発による考慮事項の多さ
  • 実装力だけでなく、設計力も重要視される
  • スクラムによるプロダクト開発

技術不足による実装の壁


これは当たり前の話ではありますが、
コーダー時代とは使用技術が大きく違っていたので、実装面でかなり苦労しました。

コーダー時代の主な使用技術

  • HTML
  • CSS
  • jQuery / 時々JavaScript
  • WordPress

フロントエンドエンジニアの主な使用技術

  • HTML
  • CSS Modules / Vanilla Extract
  • React(Next.js / React Router v7)
  • TypeScript
  • 様々な外部ライブラリ(Jotai / Mantine / MUI / Zod)

このように共通している部分はあるものの、使用技術の多さでいうとフロントエンドの方がかなり多いです。

どういうところで苦労したのか簡単にですが、書いていこうと思います。

Reactフレームワークの独自仕様とライフサイクル

Reactフレームワークにはそれぞれ独自の仕様があります。

またライフサイクルと言って、コンポーネントが生成されてから削除されるまでの一連の流れがあり、
そういったReact独自の概念についても、しっかり理解しておかなければなりません。

私の場合、公式ドキュメントを何回も読んだり、ブログ記事を何本も読んだりしながら、
かつ実務経験を重ねることで今ではやっと理解できるようになってきました。
(それでも50〜60%くらい?全然自信がありません...)

まだまだ知らない部分も多く、もっと深く知るにはあと何年もかかりそうだと思っています。

ちょこすこーん

もしこれからReactを勉強されていきたい方は、コードを書くだけではなく、Reactそのものの概念についてもしっかりと理解を深めていっていただけたらと思います◎

TypeScript

Typescriptも最初の頃は本当に苦労しました...😖

コーダーだとJavaScriptに触れる機会はあっても、
TypeScriptに触れる機会はほとんどないはずです。

型定義や型解決がとても苦手で、最初は分からなさすぎて泣きながら仕事をしてました。

ちょこすこーん

私の場合、1年くらいしてやっと一人でTypeScriptを書けるようになった記憶です

TypeScriptについては、色んな方のYoutubeを視聴したり、公式ドキュメントを読みながら少しずつ理解を深めていきました。

静的ページから動的アプリケーションの開発による考慮事項の多さ


コーダー時代は、デザイン通りに見た目を実装することがゴールでした。

デザイナーさんと連携を取りながら、忠実にデザインを再現し、
時にはサイトにアニメーションを施しながら、見た目にこだわった緻密な作業が多かったと思います。

しかしフロントエンドエンジニアになってからは、
作る対象がWebアプリケーションになったため、見た目だけにこだわるのではなく、
様々なことを考慮して開発を進めていかなくてはなりませんでした。

例えば以下のような点です。

check_circle

  • UXの作り込み:読み込み中のローディング表示やボタン連打防止対策、フォームの親切設計など、ユーザー操作に関連する細かい制御が必要
  • エラーハンドリング:「データ取得や更新に失敗したとき」「予想外のエラーが発生したとき」など正常系以外のエラー状況を考慮した作り込みが必要
  • API連携:バックエンド側で実装されたエンドポイントを呼び出し、フロント側で処理を行ったりとAPI通信の実装が必要

このようにアプリケーションとしての作り込みが必要になってくるため、
コーダー時代と比べて遥かに多くのことについて考えながら、仕事を進めていく必要があると感じています。

そのため最初の頃は、実装時の考慮漏れが度々発生し、コードレビュー時に指摘を貰うことが多かったです。

ちょこすこーん

静的なページを作るのと、動的なアプリケーションを作るのでは考える視点というのがかなり違います

実装力だけでなく、設計力も重要視される


コーダーだったときは、もちろん実装スキルという点で知識が必要だったかと思いますが、
フロントエンドエンジニアになると、「設計力」というものの方が重要になってくると感じています。

というのも、アプリケーションとして長期的に運用していく必要があるため、
その場限りのコードではなく、運用保守しやすかったり、拡張性に富んだコードというのを意識して実装に取り組む必要があると感じています。

一人で勝手に実装を進めるのではなく、
事前に画面仕様書を作成したり、チームで話し合いながら実装計画について相談した上で、実装に取り掛かるというシーンが多いです。

check_circle 設計時に意識している観点

  • 機能追加や仕様変更があった際、影響範囲を最小限に抑えられる設計になっているか
  • アーキテクチャに沿ったファイル/ディレクトリ構成になっているか
  • 適切なコンポーネント設計になっているか
  • 使用する技術が適切か(例えば外部ライブラリを使う場合など)

このように都度チームメンバーで連携をとり、合意形成をとりながら作業を進めていくシーンが多いように感じています。

スクラムによるプロダクト開発


この内容は少し本題から逸れるかもしれませんが、苦労した点でもあるので書きたいと思います。

アプリケーションを開発している企業では、スクラム開発を導入しているところが多いかもしれません。

私はフロントエンドエンジニアとして入社した企業で、初めてスクラム開発という開発の進め方を経験しました。

しかしこのスクラム開発というのが、慣れるまでは結構しんどかったです。

スクラム開発とは

スクラム開発を知らない方向けに、Googleで検索して出たものですが、内容を引用しておきます。

スクラム開発は、少人数のチームが「スプリント」と呼ばれる1〜4週間の短期間で、計画、設計、実装、テストを繰り返し、高品質な製品を迅速に届けるアジャイル開発のフレームワークです。

ラグビーのようにチームワークを重視し、機能改善や仕様変更に柔軟に対応できる点が特徴です。

つまりスクラム開発というメソッドに則って、素早くユーザーに価値が届けられるようにチーム開発を進めていくというものです。

何よりもチームワークが重要視されるので、個人のみの頑張りよりもチームとしての成果や結果が求められる傾向が強いと感じています(完全なる個人的意見ですが🙏)

スクラム開発の何が大変だったか

スクラム開発というものを進めるためには、ある程度の知識が必要になってくるのです。

例えば、

  • スクラム開発の専門用語を理解する
  • スクラム開発の定期イベントの趣旨を理解する(定期イベントは4つほどありました)
    など

しっかりとスクラム開発のメソッド・進め方があるので、
それらを理解していないとチーム開発が円滑に進められなくなり、実作業にも影響してくることがありました。

ちょこすこーん

そのため私の場合は、スクラム開発に関する書籍を数冊読んで、頑張って理解するように努めました。
未経験領域のReact開発に加え、並行してスクラム開発についても学ばないといけなかったので、最初の頃は本当にしんどかったです💦

【番外編】 コーダーからフロントエンドエンジニアになって、楽になったこと


番外編として、これまでの話とは反対にコーダーからフロントエンドエンジニアになって楽になったことについて書こうと思います!

SEOについてあまり考えなくても良くなった

Webサイト制作の場合、検索エンジンに正しく評価され、上位表示させるためのSEOを意識した実装が重要になってくるかと思います。

例えば以下のような点です。

check_circle SEOを意識した実装

  • セマンティックなマークアップ
  • メタタグの設定
  • 表示速度改善によるLCP(Largest Contentful Paint)の最適化

私は現在、主に契約したユーザーのみがログインして利用する「企業向けアプリケーション」の開発を行っています。
検索対象ではないクローズドな環境のため、以前ほどシビアにSEOを気にすることがなくなりました。

ただし、アプリケーションによっては変わらず上位検索表示を意識しないといけないプロダクトもあると思うので、そこは状況によりけりだとは思いますが。

ちょこすこーん

どちらかというと今はアクセシビリティであったり、アプリとしての使い易さを意識することが増えました◎

アニメーションを実装することがほとんどなくなった

コーダー時代は、「スクロールに応じたコンテンツのフェードイン表示」や「画像のアニメーション動作」「カルーセルやアコーディオン表示」など、
様々なアニメーションを実装する機会がありました。

jQueryを使ったりしながら、実装することが多かったです。

しかし今はUIライブラリ(MantineMUI)を使ったりすることが多いので、
自力でゼロからコードを書くというよりかは、
すでに完成された外部のUIコンポーネントをインポートして、組み合わせながら使う
ということが多いように感じています。

ちょこすこーん

Reactを使っている場合、jQueryを併用することはまずありません。Reactと相性の良いUIライブラリを使用するか、プロダクト独自のUIコンポーネントを作り、それらを使い回すというのが主流だと思います◎

コーダー時代の経験はフロントエンドエンジニアになっても活かせます


前章で書いたように、コーダーのときの方が今思うと大変だったこともあります。
しかしコーダーとして働いていたときに得た経験やスキルは、今でも活かすことができています。

例えばデザインに忠実なコーディングができるという点では、一つアドバンテージになっていると感じています。

check_circle 今でも活きているコーダー時代の強み

  • CSSに対する理解度: ライブラリ(MUIなど)の微調整や、複雑なレイアウト崩れの解決が早くできる。
  • デザインの意図を汲み取る力: 「なぜこの余白なのか」を理解しているため、デザイナーさんとのコミュニケーションがスムーズにとれる。
  • デザイナーさんからの信頼度:デザインの細部まで意識してコーディングができるので、デザイナーさんに喜んでもらえる。

ちょこすこーん

アプリケーション開発をしていると、機能開発や既存改修に追われることが多いですが、こういったデザインコーディングの力は今でも役立っています💪

最後までお読みいただきありがとうございました。
参考になれば嬉しく思います!

タイトルとURLをコピーしました