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
1k
[Developers Boost 2024] 4年半の現場経験から見えてきた、フロントエンドエンジニアに必要なスキル
sakamuuy
July 17, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
530
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
390
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
190
PHPカンファレンス 2024|共創を加速するための若手の技術挑戦
weddingpark
0
110
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.3k
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
620
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
200
Beyond ORM
77web
11
1.5k
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
410
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
220
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
160
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
6
1.3k
Featured
See All Featured
Building Your Own Lightsaber
phodgson
104
6.1k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Making the Leap to Tech Lead
cromwellryan
133
9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
330
A Philosophy of Restraint
colly
203
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Six Lessons from altMBA
skipperchong
27
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Music & Morning Musume
bryan
46
6.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年半だったように感じる 今後も新しい挑戦を続けて、よりエンジニアとして成長していきたい
ありがとうございました!