Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Developers Boost 2024] 4年半の現場経験から見えてきた、フロントエンド...
Search
sakamuuy
July 17, 2024
Programming
0
910
[Developers Boost 2024] 4年半の現場経験から見えてきた、フロントエンドエンジニアに必要なスキル
sakamuuy
July 17, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
subpath importsで始めるモック生活
10tera
0
300
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
280
イベント駆動で成長して委員会
happymana
1
320
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
4
640
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
24k
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
CSC509 Lecture 09
javiergs
PRO
0
140
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
最新TCAキャッチアップ
0si43
0
140
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Docker and Python
trallard
40
3.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Side Projects
sachag
452
42k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Transcript
4年半の現場経験から見えてきた、フロ ントエンドエンジニアに必要なスキル 坂村洋輔
自己紹介 • 坂村洋輔 • 1994年5月3日生まれ • 簡単な経歴 ◦ 新卒でITベンダーに入社し、 2年半ほどエンジニアとして就業
◦ Web開発をやりたい気持ちから ニジボックスに入社し、 約4年半が経過 • 興味のある技術 ◦ Webフロントエンド ◦ Node.js, Rust
本日お話しすること
ニジボックスに入社してから4年半、 その中で担当案件やポジションも変わっていった
一口にフロントエンドエンジニアといっても、 仕事内容は現場によって多種多様
現場やポジションによって 「求められていること」も変化する
それに加えて、技術的にもフロントエンド開発は 学ぶことがたくさんある
フロントエンド開発は学ぶことがたくさんある ネットワーク A11y ブラウザ HTML, CSS, JavaScript, WebAPI ビルドツール, Linter
Package Manager などなど...... セキュリティ テスト フレームワーク,ラ イブラリ
求められることは変化してい くし、 勉強することもたくさんあるし 大変......
エンジニアの価値発揮ってどんな事があるだろう🤔 プレイヤーとして、組織のリーダーとしての経験を踏まえて、お伝えで きるところをありのまま伝えたい
経歴
ニジボックス入 社 前職もエンジニアでは あったが、toCのフロント エンド開発は未経験 エンハンス案 件 HTML, JavaScript, CSS(SCSS)
を利用し た開発がメイン スタディサプリ TypeScript, Next.js, GraphQLなどを利用 した開発 小学講座の 開発開始 大型エンハンスリリー スにむけて開発する チームに移動 現在 ニジボックス側のグルー プリーダーになる
エンハンス案件
エンハンス開発 • リクルートグループが運営するWebアプリケーションのエンハンス • HTML, SCSS, JavaScriptを利用して、サイト本体のエンハンス開発やLP の作成が主な開発内容 • フロントエンドエンジニアは基本一人で一案件を担当し、開発を進める
◦ そのため、同案件の担当ディレクターさんやデザイナーさんとのコミュニケーションがとても 重要
振り返ると価値発揮につながっていたと感じること • 納期を見据えた適切なタイミングでの報連相 • ピクセルパーフェクトなデザイン再現 • プロダクトのルールに則った可読性の高いコーディング • メンバー追加のための受け入れ体制強化 •
技術力向上、スムーズな案件進行のためのドキュメント整備 • などなど......
スタディサプリ
スタディサプリ 小学生、中学生向けの新規Webアプリケーションの開発
スタディサプリ
案件概要 • スタディサプリ小学講座、中学講座の新規Webアプリケーション開発 • 基本スクラム開発をベースに、チーム状況に合わせてアレンジしながら開発
技術スタック • フロントエンド ◦ Next.js ◦ Apollo Client • バックエンド(サービスが複数存在)
◦ Express ◦ Apollo Server ◦ Prisma ◦ Ruby on Rails
参画当初は何もわからなかった
いろいろなことが初めてだった • 実務でのモダンフロントエンド開発 • スクラム開発 • GitHubを利用したチーム開発 • GraphQL •
CI/CD • Docker • AWS • などなど.......(たぶんもっとあった)
とにかく質問ばかりだった
当時優しくフォローしてくださったエンジニアの皆様には本当に頭が 上がりません😭
できそうなところはとにかく手を上げた それほど難しくない作業 や、小さいissueなどは積 極的に着手した。
どうやったら未熟な自分がチームの役に立てるかを 意識しながら動いた • 小さなissueや作業タスクを積極的に取っていく • 率先してPR reviewをする ◦ 他のエンジニアが書いたコードを読んで理解し、質問や自分の意見を述べること は何よりの勉強
• わからないことがあったら騒ぐ
どうやったら未熟な自分がチームの役に立てるかを 意識しながら動いた • 小さなissueや作業タスクを積極的に取っていく • 率先してPR reviewをする • わからないことがあったら騒ぐ チームの役に立ってる...?
相談した内容はチャットツールに残る • なにか問題が起きたときは、他のメンバーもそこで詰まることが多い • 自分以外のメンバーが同じ箇所で詰まったときも、 チャットを見返すことで解決できることもある • つまり、相談することはそのまま共有ナレッジの蓄積につながっていく
ガンガン質問、相談してこうぜ!(自戒)
ここからはいくつか対応した案件の具体例を紹介
スライドコンテンツ実装
スライドコンテンツとは
小学生向けに開発した新しい学習コンテンツ • 従来の学習コンテンツと異なり、問題に回答するだけでなく、動画や音声が 多く活用され、よりインタラクティブに学習できるコンテンツ
着手時点ではまだ要件も固まっていなかったり、仕様も複雑だった り、高難度なissue
基本ペアプロで開発を進めた • 仕様はコンテンツ制作を担当する別チームとデザイナーと開発チームで相 談しながら決定 • 開発タスクはissueリードのエンジニアの方と相談しながら基本ペアプロで進 めた • 常に同期的に作業ができるわけではない ◦
一人でissueを持って対応するのとは違うスキルが必要 ◦ 非同期ではあるが、常にコンテキストを共有して作業するイメージ ◦ 設計はもちろん、作業の順序や内容についてあらかじめ同意を取っておくことが大事
バックエンドタスクへの染み出しもやっていった
もともと自分にやっていきがあった 前職や副業ではバックエンド の経験もある。自分の今後の キャリアを考えていったときに バックエンドのスキルも伸ば していきたし、実務経験も積 んでいきたい。
バックエンドのタスクも担当させていただくことに • 設計から実装、テスト作成まで担当した • 各フェーズでは先輩エンジニアの方にこまめにレビューしていただいた
経験できて良かったこと • 後方互換性を担保した設計、開発の難しさを実感 ◦ エンハンス開発だからこその難しさを経験できてよかった • 複数サービスをまたいだ開発
他方面への染み出し • フロントエンドエンジニアだからといって、バックエンドのことやUI、デザイン のことを全く知らなくて良い訳では無い • やっていきがある人が少しずつ染み出していくことで、チームの能力も ちょっとずつ広がっていく UI/UXの知識 バックエンドの知 識
フロントエンド チーム
ブラウザ依存のBug対応
縦書き表示のコンテンツが存在する
縦書き表示のWebコンテンツが少ないこともあり、ブラウザ依存の Bugに遭遇することが多い
再現性が低かったり、手順によって事象が変わったりするため調査 が大変
たとえば
縦書き表示のコンテンツは左から右にスクロール
縦書き表示のコンテンツは左から右にスクロール ボタンタップの際にスクロール が右端にリセットされてしまう
地道にブラウザやライブラリの挙動を調査......
地道な調査ができることも重要なスキル • 開発者ツールのパフォーマンスタブやネットワークタブを使ってデバッグで きることもスキルの一つ • ライブラリやブラウザの挙動を細かく追いかけることで解決できた
組織的な取り組み
メンバーが成長できる環境 • 社内研修 • 社内LT • 他プロジェクトに参画しているメンバーとの知見共有 • スキルシート •
メンバーの育成 • などなど......
メンバーが成長できる環境 • 社内研修 • 社内LT • 他プロジェクトに参画しているメンバーとの知見共有 • スキルシート •
メンバーの育成 • などなど......
メンバーの育成の背景 • バックエンドエンジニアとして同プロジェクトに参画しているメンバーが、フロ ントエンドの案件を担当することに • モダンフロントエンド開発の知識をより定着させ、実務をスムーズに進めるこ とができるようになることが目標
メンバーの育成計画 スキルシートで 学習開始前の スキル感を把 握 スキルに自信 のない項目を どう学習進め たら伸ばせる かの相談
実際に学習 わからない箇 所があれば週 1の1on1や Slackで都度 解消 もう一度スキル シートに回答し てもらい、成長 度合いを測る 繰り返し
実際にやってみてわかったこと • 適切な学習の題材選定の難しさ • スキルシートに沿って偏りなく学習を進めることを意識することが必要 • 自分の計画性の甘さに気づいた
題材の選定 スキルシートの項目を伸ばす、という目標に対してただ漠然と「アプリケーション を作ってみましょう」では弱い この項目を伸ばすには、こういう機能が作れるようになるとカバーできそう、と見 込んでおく必要 これは自分が体験しておかないとなかなかわからないこと。特に業務でやらない ような範囲は日頃の勉強が大事
伸ばしたい項目にフォーカスした動き 項目ごとに理解できていな い箇所をリストアップしてもら い、そこの理解度を挙げら れるような質問会を開いた
自分の計画性の甘さに気付いた 単にこのスキルシートの項目を伸ばしていきましょう、では甘かった 育成は業務に入ってからの負担減が一つの目的 だからこそ、業務に入る前にスキルシートの「どの項目」を「どの程度」まで理解し ている状態にしたい、という詳細な計画が必要だったな、と学んだ
まとめ
約4年半のニジボックス人生を振り返って プレイヤーとして、グループリーダーとして、多くの経験をさせてもらった 振り返ってみると少しずつ新しいことに挑戦してきた4年半だったように感じる 今後も新しい挑戦を続けて、よりエンジニアとして成長していきたい
ありがとうございました!