天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

フロントエンド開発最前線 ~ Developer Experience を最大化するには ~に参加してきた

aws-dev-live-show.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

フロントエンド開発は近年、めまぐるしい変化を遂げています。React や Vue などのフレームワークの台頭、モバイルアプリ開発への対応、デプロイやテストの方法など、選択肢は増える一方です。これらを適切に選択し組み合わせ、サービスとして顧客に価値を提供するためには持続可能な開発が求められます。そのためには開発者体験 (Developer Experience) にも目を向け、これを最大化することが重要です。

今回は、安定した開発者体験を下支えするフロントエンド開発の方法について、実務経験豊富なパネリストと議論します。

会の様子

開発者体験とは?

少しアンブレラワードになってしまっているところもあるということで、開発者体験の定義がされました。

本イベントでは、「開発者が高速な仮説検証を行うための企業における環境や習慣、文化」と定義しているそうです。
また、GitHubでは、生産性*1+インパク*2+満足度*3という式で開発生産性が定義されているという話がありました。

開発者体験を考慮したフロントエンド技術の判断軸

生産性であれば、運用環境やテスト&デプロイの自動化、インパクトであればデプロイ容易性&可観測性やA/Bテスト、満足度であれば拡張性やメンテナンス性や学習コスト、コラボレーションであればチームのスキルセットやドキュメンテーション、バックエンドAPIの通信、心理的安全性などが挙げられるということでした。

また、松田さんはプロトタイプ開発を良くしているということで、シンプルな環境構築ができるか(SSRの採用など)を大切にしており、杉本さんは一定の期間運用されることが想定されるプロダクトを開発しているためチーム開発を異なる開発者がコミュニケーションをスムーズに取れるような技術/ツール選定を大切にしているということでした。

また、フロントエンドというタイトルでやっていますが、フロントエンドだけでなにか判断したりフロントエンドとバックエンドで綺麗に分離して考えるのではなく、バックエンドやシステム全体を考慮した技術選定を行うという話もありました。曖昧な領域があるときに、明確に責務を分離するのではなく、曖昧なものは曖昧なまま扱うのが重要なのではないかということでした。

フロントエンドのテスト

フロントエンドではテストピラミッドの考え方を適用するのが難しい(Service Testって何?がわからない)という話がありました。

フロントエンドのテストよりもまずはバックエンドテストを書きたくなるという話や、UI Testの重要性や意味合いはドメインによって全然変わってくるので、自分たちに合わせたものを考えていく必要性があるという話が出ていました。

また、テストはE2Eテスト, Integrationテスト, Unitテスト, Staticテストの種類があるという話がありました。

テスティングトロフィー

フロントエンドに関しては、カバレッジよりもユースケースを網羅していこうというテスティングトロフィーの考え方が紹介されました。

フロントエンドのデプロイ

フロントエンドのデプロイ時には、SPAであればCloudFrontとS3は鉄板で使うという話がありました。
一方で、SSRなどの場合は、API Gateway + Lambda, ECS, App Routerの組み合わせが多いということです。

VercelやNetlify, Cloudflare Pagesなどフロントエンドホスティングサービスは、ちょっと設定を書くだけでGitHubにPushするだけでデプロイされる開発者体験のよいサービスだという話がありました。

Q&A

講演中にはリアルタイムで質疑応答の時間がありました。以下、質問と回答を一問一答形式かつ常体で記載していきます。

UI TestでAPIが用意されていないときにどういう風にテストをしているか?
  • Mock Service Workerを使っている
  • ローカルにサーバー立てて環境変数で切り分けてテストするとかはやっていた
E2Eテストはどこまでやるべきか?
  • 変更のコストが非常に高いのでミニマムでいいと思っている
  • 開発者視点だとやりたくないと言葉に気をつけなければ思ってしまう
  • 必ず満たさなければいけないケースだけを書く

会全体を通した感想

フロントエンドというタイトルから連想できる内容からすると少しスコープが狭かった感じはありましたが、デプロイ周りはフロントエンドホスティングサービスを中心に最近のサービスの使用感が聞けたのは非常によかったです。

フロントエンドといいつつも、バックエンドなども含めて技術選定していくという話があったもの個人的には共感ができるポイントでした。

*1:コードベースにどれだけ迅速かつ簡単に変更できるか?

*2:イデアから本番環境への適用がどれだけスムーズか?

*3:環境、WF、ツールが開発者の満足度にどう影響するか?