SESのReact案件では、参画先が変わるたびにコーディング規約、レビューの進め方、担当範囲が変わることがあります。そこで必要なのは、どの現場でも同じやり方を押し通すことではなく、変えてよい部分と守るべき基準を自分の言葉で整理することです。
この記事では、クライアントの開発チームに参画し、その現場の体制やルールに沿って働く形を「SES」と呼びます。SES全体の特徴を先に整理したい方は、SESで働くメリットとデメリットもあわせて確認してください。
この記事でわかること
- 現場が変わっても持ち運べる、Reactエンジニアの判断軸
- 小さな改善提案を、相手の負担を増やさずに進める方法
- 参画前に確認したい案件選びの質問
- 経験を誇張せず、再現可能な強みとして伝える自己PRの型
- アクセシビリティ、テスト、パフォーマンスを学ぶ順序
SESのReactエンジニアが迷いやすい理由
Reactの書き方だけを覚えても、現場で迷いがなくなるとは限りません。同じ技術を使っていても、プロダクトの規模、既存コード、リリース体制、チームの習慣によって妥当な選択は変わるからです。
| よくある悩み | 背景 | 最初の一手 |
|---|---|---|
| 技術選定に関わりにくい | 採用済みの構成や移行計画を優先する必要がある | 全面的な置き換えではなく、困りごとを一つに絞って提案する |
| レビューの速度や粒度が違う | 承認者、責任範囲、繁忙度がチームごとに異なる | PRの目的、変更範囲、確認方法を先に書く |
| 成果を外部に示しにくい | 顧客情報や非公開コードを持ち出せない | 公開可能な範囲で、課題・判断・工夫を抽象化して記録する |
| 担当範囲が広がる | フロントエンドとAPI、CI、CSSの境界が曖昧な場合がある | 期待される成果と担当外の作業を、着手前に確認する |
| 仕様変更に振り回される | 画面は要望の変化が表れやすい | 決定理由、保留事項、影響範囲を短い合意メモに残す |
ここでいう合意メモは、長い議事録ではありません。「何を決めたか」「なぜそうしたか」「どこまで影響するか」を数行で残す記録です。判断の経緯が見えると、後から仕様が変わったときも、責任追及ではなく差分の確認から話を始められます。
現場が変わっても通用する四つの判断軸
1.HTMLの意味とアクセシビリティを守る
見た目が同じでも、divをクリック可能にしたものとbuttonでは、キーボード操作や支援技術への伝わり方が異なります。まずHTMLの標準要素で意味を表し、必要な場合にだけARIA属性を補います。
アクセシビリティは仕上げの工程ではなく、コンポーネントの責務を明確にする設計上の基準です。テストの組み立て方まで深めたい方は、アクセシビリティテストの進め方も参考になります。
2.テストは利用者の操作から考える
関数単位のテストだけでなく、「入力する」「送信する」「エラーを読んで直す」といった利用者の行動を確認します。E2Eテストとは、画面操作から処理完了までの一連の流れを通して確かめるテストです。重要な経路を少数に絞り、壊れたときの影響が大きい操作から守ります。
3.パフォーマンスは計測してから直す
再レンダリングや処理時間を推測だけで最適化すると、コードの複雑さだけが増えることがあります。まず遅さが起きる操作と条件を特定し、計測結果を残してから改善します。改善後も同じ条件で測り、変化を確認します。
4.状態を役割で分ける
モーダルの開閉のような画面表示の状態と、取得データ、読み込み中、エラーなどの状態を一つにまとめると、変更の影響を追いにくくなります。状態の持ち主と更新理由を分けるだけでも、テスト対象と責任範囲が見えやすくなります。
Reactそのものの役割や学ぶ順序を確認したい場合は、Reactを学ぶメリットと基本的な考え方から読むと、実務上の判断と結び付けやすくなります。
React実務で見直したいコード例
外部処理を始めたら、対応する終了処理を書く
useEffect(() => {
const timerId = window.setInterval(() => {
refreshStatus();
}, 5000);
return () => {
window.clearInterval(timerId);
};
}, []);
useEffectでタイマー、イベント購読、接続などを開始した場合は、それを止めるクリーンアップ処理を対にします。クリーンアップは画面から消えるときだけでなく、依存値が変わって処理をやり直す前にも必要になります。
useMemoは「重そうだから」ではなく、計測結果で判断する
const filteredItems = useMemo(
() => expensiveFilter(items, query),
[items, query]
);
useMemoは計算結果を依存値が変わるまで再利用するための最適化です。すべての派生値に付けるものではなく、計算が実際に遅い場合や、参照の安定が別の最適化に必要な場合に検討します。正しさを保つ仕組みとして依存しないことも大切です。
操作できる要素には、その役割を持つHTMLを使う
<button type="button" onClick={onSubmit}>
登録
</button>
ボタンには、フォーカスできること、キーボードで操作できること、役割が支援技術へ伝わることなど、操作に必要な性質が備わっています。見た目の都合でdivにクリック処理を付ける前に、標準要素で表現できないかを確認します。
フォームのエラーは、対象項目と結び付ける
<label htmlFor="email">メールアドレス</label>
<input
id="email"
aria-invalid={Boolean(error)}
aria-describedby={error ? "email-error" : undefined}
/>
{error && (
<p id="email-error" role="alert">
{error}
</p>
)}
aria-describedbyで入力欄と説明を関連付け、エラーがあるときはaria-invalidを指定します。role='alert'は、操作後に新しく表示された重要なエラーを支援技術へ伝える目的で使います。常に表示する説明文まで、すべてアラートにする必要はありません。
小さな改善提案を通しやすくする手順
DXはDeveloper Experienceの略で、ここでは開発者が実装、確認、共有を進めやすい状態を指します。大きなツール導入だけでなく、セットアップ手順やPRテンプレートを整えることもDX改善です。
- 困りごとを観察する。「レビューが遅い」ではなく、「確認方法が書かれておらず、レビュワーが環境を作るところから始めている」のように状況を具体化します。
- 変更を最小単位にする。全体のルール変更ではなく、まず一つのPRテンプレートや一つの画面で試します。
- 確認方法を添える。変更前後の手順、影響範囲、戻し方を短く示します。
- 結果を残す。採用されたかどうかだけでなく、困りごとが減ったか、別の負担が増えていないかを振り返ります。
PR(Pull Request)は、変更内容をチームに確認してもらう単位です。本文には、目的、主な変更、確認手順、影響範囲、未対応事項を書くと、レビュワーが判断を始めやすくなります。画面変更では、必要に応じて静止画や短い操作記録を添えます。
案件選びは技術名より、開発の習慣を見る
ReactやNext.jsのバージョンだけでは、学びやすさや働きやすさは判断できません。面談ですべてを質問するのではなく、自分が譲れない条件を三つほど選び、具体的な運用を聞きます。
| 確認する観点 | 質問例 | 回答で見る点 |
|---|---|---|
| 期待役割 | 参画後の最初の一か月で、何を任せる予定ですか | 成果、担当範囲、相談相手が具体的か |
| コードレビュー | 誰が、どの観点で承認しますか | 属人化の程度と、フィードバックを受ける機会 |
| リリース | 変更はどの流れで本番へ反映されますか | 確認手順、切り戻し、障害時の分担 |
| テスト | 単体、結合、E2Eをどのように使い分けていますか | 本数ではなく、守る対象が説明されているか |
| デザイン連携 | 仕様変更はどこに記録し、実装へ反映しますか | Figma、Issue、コードの対応関係 |
| アクセシビリティ | キーボード操作やフォームエラーをどう確認しますか | 実装とテストの担当が決まっているか |
| 学習と改善 | 振り返りで決まった改善は、誰が管理しますか | 話し合いが実際のタスクにつながっているか |
理想的な回答だけを求める必要はありません。課題を把握し、優先順位を共有できるチームかどうかを見ることが大切です。
伝わる自己PRは「再現できる働き方」で組み立てる
ツール名を並べるだけでは、現場でどのように動く人なのかが伝わりません。自己PRは、課題、行動、確認した結果、次の現場でも再現できる工夫の順で組み立てます。
担当と課題:[担当した機能]で、[困っていた状況]がありました。
判断と行動:私は[確認したこと]を踏まえ、[具体的な変更]を行いました。
結果:[確認できた変化]を、[計測・レビュー・利用者の反応など]で確かめました。
再現性:この経験から、別の現場でも[持ち運べる判断軸や進め方]を実践できます。
数値を使う場合は、自分で説明できる計測条件と事実だけを書きます。顧客名、画面、コードなどの公開可否は、所属先と参画先のルールを優先してください。非公開の成果は、機密情報を除いて課題と判断の構造だけを説明するか、公開可能な題材で作り直します。
参画後の90日を三段階で考える
最初の30日:現場の前提を理解する
- コーディング規約、レビュー観点、リリース手順を読む
- 仕様の決定場所と、相談相手を確認する
- 既存コードがそうなっている理由を、変更前に調べる
次の30日:小さな成果を安定して届ける
- 変更範囲を小さく保ち、確認方法がわかるPRを作る
- 指摘された内容を、自分用のチェックリストに反映する
- アクセシビリティ、テスト、計測のうち一つを日常の確認に加える
その次の30日:再発する困りごとを一つ改善する
- 繰り返し起きている手戻りを選ぶ
- 小さく試せる改善案と、元に戻す方法を用意する
- チームの合意を得て試し、結果を共有する
日数どおりに進めることが目的ではありません。「理解する」「安定して届ける」「改善する」の順序を守ることで、前提を知らないまま大きな変更を提案する失敗を避けやすくなります。
キャリアは肩書きより、責任の広げ方で考える
- UI設計を深める:コンポーネント、デザインシステム、アクセシビリティを通じて、画面品質の基準を作る。
- 機能を一通り担当する:フロントエンドに加えてAPIや認証の境界を理解し、小さな機能を最後まで追う。
- チームの技術判断を支える:レビュー観点、テスト方針、計測方法を整え、複数人が同じ基準で判断できるようにする。
- プロダクト判断へ近づく:利用者の課題と事業上の目的を理解し、作る機能の優先順位に関わる。
- 知識を横断して伝える:設計レビュー、教育、導入支援を通じて、複数のチームを支える。
どの方向にも上下はありません。今の経験から一段だけ責任を広げ、その経験を説明できる形で残すことが、次の選択肢につながります。
よくある質問
技術選定に関われない現場では、何を学べばよいですか
採用技術の新しさだけでなく、コンポーネントの責務、HTMLの意味、状態の流れ、テスト可能性を見直してください。これらはライブラリが変わっても使いやすい判断軸です。
useMemoは積極的に使ったほうがよいですか
一律には勧められません。まず通常の実装を読みやすく保ち、遅さや不要な再計算が計測で確認できた箇所に使います。利用中の環境やチーム方針も確認してください。
面談の質問は多いほどよいですか
数より優先順位です。期待役割、レビュー、リリースなど、自分の成長と働き方に直結する項目を選び、抽象的な方針ではなく実際の流れを聞きます。
顧客案件をポートフォリオに載せられない場合はどうしますか
非公開情報を載せることは避け、公開できる範囲で課題と判断の流れを説明します。必要なら、同じ技術的な論点を公開可能な小さな題材で再現し、自分のコードとして示します。
まとめ
- 現場ごとの差をなくすのではなく、持ち運べる判断軸を作る
- アクセシビリティ、テスト、計測、状態の責務を基礎にする
- 改善提案は、困りごとを具体化し、小さく試して結果を残す
- 案件選びでは、技術名よりレビューやリリースの実際を聞く
- 自己PRは、課題、行動、確認結果、再現性の順で組み立てる
SESで成長を続ける鍵は、どの現場にも同じ正解を持ち込むことではありません。前提を理解し、守るべき品質を見極め、小さな改善を積み重ねることです。まずは次のPRで、目的と確認方法を一段わかりやすく書くところから始めてみてください。
この記事に関連する株式会社greedenの取り組み
現場ごとにルールが変わるSESでは、自分の判断軸と対話の型が力になります。株式会社greedenは、Reactを含むシステム開発を要件定義から保守・改善まで支援し、現場に合う実装と運用を丁寧に組み立てています。
