[Developers Boost 2024] 4年半の現場経験から見えてきた、フロントエンドエンジニアに必要なスキル
by
sakamuuy
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
4年半の現場経験から見えてきた、フロ ントエンドエンジニアに必要なスキル 坂村洋輔
Slide 2
Slide 2 text
自己紹介 ● 坂村洋輔 ● 1994年5月3日生まれ ● 簡単な経歴 ○ 新卒でITベンダーに入社し、 2年半ほどエンジニアとして就業 ○ Web開発をやりたい気持ちから ニジボックスに入社し、 約4年半が経過 ● 興味のある技術 ○ Webフロントエンド ○ Node.js, Rust
Slide 3
Slide 3 text
本日お話しすること
Slide 4
Slide 4 text
ニジボックスに入社してから4年半、 その中で担当案件やポジションも変わっていった
Slide 5
Slide 5 text
一口にフロントエンドエンジニアといっても、 仕事内容は現場によって多種多様
Slide 6
Slide 6 text
現場やポジションによって 「求められていること」も変化する
Slide 7
Slide 7 text
それに加えて、技術的にもフロントエンド開発は 学ぶことがたくさんある
Slide 8
Slide 8 text
フロントエンド開発は学ぶことがたくさんある ネットワーク A11y ブラウザ HTML, CSS, JavaScript, WebAPI ビルドツール, Linter Package Manager などなど...... セキュリティ テスト フレームワーク,ラ イブラリ
Slide 9
Slide 9 text
求められることは変化してい くし、 勉強することもたくさんあるし 大変......
Slide 10
Slide 10 text
エンジニアの価値発揮ってどんな事があるだろう🤔 プレイヤーとして、組織のリーダーとしての経験を踏まえて、お伝えで きるところをありのまま伝えたい
Slide 11
Slide 11 text
経歴
Slide 12
Slide 12 text
ニジボックス入 社 前職もエンジニアでは あったが、toCのフロント エンド開発は未経験 エンハンス案 件 HTML, JavaScript, CSS(SCSS) を利用し た開発がメイン スタディサプリ TypeScript, Next.js, GraphQLなどを利用 した開発 小学講座の 開発開始 大型エンハンスリリー スにむけて開発する チームに移動 現在 ニジボックス側のグルー プリーダーになる
Slide 13
Slide 13 text
エンハンス案件
Slide 14
Slide 14 text
エンハンス開発 ● リクルートグループが運営するWebアプリケーションのエンハンス ● HTML, SCSS, JavaScriptを利用して、サイト本体のエンハンス開発やLP の作成が主な開発内容 ● フロントエンドエンジニアは基本一人で一案件を担当し、開発を進める ○ そのため、同案件の担当ディレクターさんやデザイナーさんとのコミュニケーションがとても 重要
Slide 15
Slide 15 text
振り返ると価値発揮につながっていたと感じること ● 納期を見据えた適切なタイミングでの報連相 ● ピクセルパーフェクトなデザイン再現 ● プロダクトのルールに則った可読性の高いコーディング ● メンバー追加のための受け入れ体制強化 ● 技術力向上、スムーズな案件進行のためのドキュメント整備 ● などなど......
Slide 16
Slide 16 text
スタディサプリ
Slide 17
Slide 17 text
スタディサプリ 小学生、中学生向けの新規Webアプリケーションの開発
Slide 18
Slide 18 text
スタディサプリ
Slide 19
Slide 19 text
案件概要 ● スタディサプリ小学講座、中学講座の新規Webアプリケーション開発 ● 基本スクラム開発をベースに、チーム状況に合わせてアレンジしながら開発
Slide 20
Slide 20 text
技術スタック ● フロントエンド ○ Next.js ○ Apollo Client ● バックエンド(サービスが複数存在) ○ Express ○ Apollo Server ○ Prisma ○ Ruby on Rails
Slide 21
Slide 21 text
参画当初は何もわからなかった
Slide 22
Slide 22 text
いろいろなことが初めてだった ● 実務でのモダンフロントエンド開発 ● スクラム開発 ● GitHubを利用したチーム開発 ● GraphQL ● CI/CD ● Docker ● AWS ● などなど.......(たぶんもっとあった)
Slide 23
Slide 23 text
とにかく質問ばかりだった
Slide 24
Slide 24 text
当時優しくフォローしてくださったエンジニアの皆様には本当に頭が 上がりません😭
Slide 25
Slide 25 text
できそうなところはとにかく手を上げた それほど難しくない作業 や、小さいissueなどは積 極的に着手した。
Slide 26
Slide 26 text
どうやったら未熟な自分がチームの役に立てるかを 意識しながら動いた ● 小さなissueや作業タスクを積極的に取っていく ● 率先してPR reviewをする ○ 他のエンジニアが書いたコードを読んで理解し、質問や自分の意見を述べること は何よりの勉強 ● わからないことがあったら騒ぐ
Slide 27
Slide 27 text
どうやったら未熟な自分がチームの役に立てるかを 意識しながら動いた ● 小さなissueや作業タスクを積極的に取っていく ● 率先してPR reviewをする ● わからないことがあったら騒ぐ チームの役に立ってる...?
Slide 28
Slide 28 text
相談した内容はチャットツールに残る ● なにか問題が起きたときは、他のメンバーもそこで詰まることが多い ● 自分以外のメンバーが同じ箇所で詰まったときも、 チャットを見返すことで解決できることもある ● つまり、相談することはそのまま共有ナレッジの蓄積につながっていく
Slide 29
Slide 29 text
ガンガン質問、相談してこうぜ!(自戒)
Slide 30
Slide 30 text
ここからはいくつか対応した案件の具体例を紹介
Slide 31
Slide 31 text
スライドコンテンツ実装
Slide 32
Slide 32 text
スライドコンテンツとは
Slide 33
Slide 33 text
小学生向けに開発した新しい学習コンテンツ ● 従来の学習コンテンツと異なり、問題に回答するだけでなく、動画や音声が 多く活用され、よりインタラクティブに学習できるコンテンツ
Slide 34
Slide 34 text
着手時点ではまだ要件も固まっていなかったり、仕様も複雑だった り、高難度なissue
Slide 35
Slide 35 text
基本ペアプロで開発を進めた ● 仕様はコンテンツ制作を担当する別チームとデザイナーと開発チームで相 談しながら決定 ● 開発タスクはissueリードのエンジニアの方と相談しながら基本ペアプロで進 めた ● 常に同期的に作業ができるわけではない ○ 一人でissueを持って対応するのとは違うスキルが必要 ○ 非同期ではあるが、常にコンテキストを共有して作業するイメージ ○ 設計はもちろん、作業の順序や内容についてあらかじめ同意を取っておくことが大事
Slide 36
Slide 36 text
バックエンドタスクへの染み出しもやっていった
Slide 37
Slide 37 text
もともと自分にやっていきがあった 前職や副業ではバックエンド の経験もある。自分の今後の キャリアを考えていったときに バックエンドのスキルも伸ば していきたし、実務経験も積 んでいきたい。
Slide 38
Slide 38 text
バックエンドのタスクも担当させていただくことに ● 設計から実装、テスト作成まで担当した ● 各フェーズでは先輩エンジニアの方にこまめにレビューしていただいた
Slide 39
Slide 39 text
経験できて良かったこと ● 後方互換性を担保した設計、開発の難しさを実感 ○ エンハンス開発だからこその難しさを経験できてよかった ● 複数サービスをまたいだ開発
Slide 40
Slide 40 text
他方面への染み出し ● フロントエンドエンジニアだからといって、バックエンドのことやUI、デザイン のことを全く知らなくて良い訳では無い ● やっていきがある人が少しずつ染み出していくことで、チームの能力も ちょっとずつ広がっていく UI/UXの知識 バックエンドの知 識 フロントエンド チーム
Slide 41
Slide 41 text
ブラウザ依存のBug対応
Slide 42
Slide 42 text
縦書き表示のコンテンツが存在する
Slide 43
Slide 43 text
縦書き表示のWebコンテンツが少ないこともあり、ブラウザ依存の Bugに遭遇することが多い
Slide 44
Slide 44 text
再現性が低かったり、手順によって事象が変わったりするため調査 が大変
Slide 45
Slide 45 text
たとえば
Slide 46
Slide 46 text
縦書き表示のコンテンツは左から右にスクロール
Slide 47
Slide 47 text
縦書き表示のコンテンツは左から右にスクロール ボタンタップの際にスクロール が右端にリセットされてしまう
Slide 48
Slide 48 text
地道にブラウザやライブラリの挙動を調査......
Slide 49
Slide 49 text
地道な調査ができることも重要なスキル ● 開発者ツールのパフォーマンスタブやネットワークタブを使ってデバッグで きることもスキルの一つ ● ライブラリやブラウザの挙動を細かく追いかけることで解決できた
Slide 50
Slide 50 text
組織的な取り組み
Slide 51
Slide 51 text
メンバーが成長できる環境 ● 社内研修 ● 社内LT ● 他プロジェクトに参画しているメンバーとの知見共有 ● スキルシート ● メンバーの育成 ● などなど......
Slide 52
Slide 52 text
メンバーが成長できる環境 ● 社内研修 ● 社内LT ● 他プロジェクトに参画しているメンバーとの知見共有 ● スキルシート ● メンバーの育成 ● などなど......
Slide 53
Slide 53 text
メンバーの育成の背景 ● バックエンドエンジニアとして同プロジェクトに参画しているメンバーが、フロ ントエンドの案件を担当することに ● モダンフロントエンド開発の知識をより定着させ、実務をスムーズに進めるこ とができるようになることが目標
Slide 54
Slide 54 text
メンバーの育成計画 スキルシートで 学習開始前の スキル感を把 握 スキルに自信 のない項目を どう学習進め たら伸ばせる かの相談 実際に学習 わからない箇 所があれば週 1の1on1や Slackで都度 解消 もう一度スキル シートに回答し てもらい、成長 度合いを測る 繰り返し
Slide 55
Slide 55 text
実際にやってみてわかったこと ● 適切な学習の題材選定の難しさ ● スキルシートに沿って偏りなく学習を進めることを意識することが必要 ● 自分の計画性の甘さに気づいた
Slide 56
Slide 56 text
題材の選定 スキルシートの項目を伸ばす、という目標に対してただ漠然と「アプリケーション を作ってみましょう」では弱い この項目を伸ばすには、こういう機能が作れるようになるとカバーできそう、と見 込んでおく必要 これは自分が体験しておかないとなかなかわからないこと。特に業務でやらない ような範囲は日頃の勉強が大事
Slide 57
Slide 57 text
伸ばしたい項目にフォーカスした動き 項目ごとに理解できていな い箇所をリストアップしてもら い、そこの理解度を挙げら れるような質問会を開いた
Slide 58
Slide 58 text
自分の計画性の甘さに気付いた 単にこのスキルシートの項目を伸ばしていきましょう、では甘かった 育成は業務に入ってからの負担減が一つの目的 だからこそ、業務に入る前にスキルシートの「どの項目」を「どの程度」まで理解し ている状態にしたい、という詳細な計画が必要だったな、と学んだ
Slide 59
Slide 59 text
まとめ
Slide 60
Slide 60 text
約4年半のニジボックス人生を振り返って プレイヤーとして、グループリーダーとして、多くの経験をさせてもらった 振り返ってみると少しずつ新しいことに挑戦してきた4年半だったように感じる 今後も新しい挑戦を続けて、よりエンジニアとして成長していきたい
Slide 61
Slide 61 text
ありがとうございました!