フロントエンドカンファレンス沖縄にオンラインで参加しました

昨日開催されたフロントエンドカンファレンス沖縄にオンラインで参加しました。

フレームワークやUI/UX等、Webフロントエンド開発に関わる全ての人を対象としたカンファレンスでエンジニア・デザイナー問わず楽しめる内容でした。

今回は現地参加枠とオンライン参加枠の両方が設定されており、僕はオンラインで参加しました。

全ての発表を見られたわけではないのですが、どの発表も勉強になりました。

個人的に最初に行われた基調講演「レガシーフレームワークからの移行」は特に興味深かったです。

僕が今担当しているプロジェクトもVue2からVue3(Nuxt2からNuxt3)への移行を予定しており、その調査段階にいるからです。

Vue3へのアップデートは破壊的変更も多いため、別のフレームワークに移行するぐらいの気持ちでやらないと、と思っているため非常に勉強になりました。

レガシーフレームワークからの移行

移行への経緯

内容としてはAngular2でフロントを構築したプロダクトをNuxt3に移行した際の話でした。

プロダクト立ち上げ時に選択した技術的意思決定が以下のような理由から現在の状況に合わなくなった為、移行を検討したということです。

  • セキュリティリスク
  • 生産性の低さ
  • 採用面

このうち、特に最後の採用面という点は技術的な側面と同じぐらいレガシーフレームワークから脱却する大きな理由の1つかなと思います。

エンジニア採用が難しくなっている昨今において、どういう技術を採用しているかは求職者への重要なアピールポイントであるからです。

優秀なエンジニアを集めるためにも使用する言語やフレームワークの見直しは必要ですし、適宜アップデートや場合によっては移行することも必要だと思います。

どのように移行したか

実際に移行した際の話ですが、当初の見積もりよりも大幅に工数が増えたそうです。

その要因をまとめると、

  • バックエンドもScalaからRailsに移行⇒フロントエンドの課題に向き合う余力なし⇒移行自体遅れる
  • フロントエンドにドメインロジックが強く組み込まれていた
  • 新機能開発と並行

等がありました。

「フロントエンドにドメインロジックが強く組み込まれていた」については、これめちゃくちゃあるパターンだと思います。

本来バックエンドで処理すべきロジックがフロントにも漏洩しているというケースは普段は顕在化しないけど、こういう移行の時に大きな問題になり得ます。

普段の開発の際にバックエンドとフロントエンドの責務をしっかり切り分けて実装すること、そしてそうしたアーキテクチャを維持することが大事だと改めて感じました。

スライド中にあった「技術的負債が重なると更なる負債に」という言葉がとても重く感じました。。

「新機能開発と並行」については、ある程度どちらかを犠牲にするしか無いのかなと思います。

新機能開発をガガッと進める時期とフレームワーク移行を進める時期に分けて集中的に行わないと、リソースが分散されてどちらも中途半端になりそうです。

これについてはスライドの終盤で現在進めている移行プロジェクトにおいて既存仕様での移行に専念し、機能追加は移行後に対応する方針に改善したという話がありました。

まとめ

フレームワークの移行には技術的課題よりマネジメント的課題の方が多く、しっかり向き合って改善するには覚悟と気合が必要」とおっしゃっていた通り、フレームワークの移行は生半可な気持ちで完遂できるプロジェクトじゃないなと改めて感じました。

また移行自体が長期間に渡ることを前提にスケジュールを組んでいく必要があると思います。特にLTSがいつまでかは常々チェックしておき、その前に移行なりアップデートなりを完了させるようにしなければと思います。

一方でこれもおっしゃっていた通り、「新しい技術を使ってプロダクトを作るよりレガシーな技術を新しい技術に切り替えていくスキルのほうが市場価値高いのでは」と僕も思いますし、これをやり遂げたら大きなノウハウを手に入れることができると思うのでしっかりやっていきたいと思います。

その他の発表

その他では「バックエンドエンジニアが行うSvelte + Vite なフロントエンド構築」も面白かったです。

Svelteは以前から名前はちらほら聞いていたのですが、今回の発表を見てめっちゃ簡潔に書けそうで面白そうと思ったので自分でも試してみたいと思います。

他にも登壇資料がこちらでまとめてあるのでぜひチェックしてみてください。

【随時更新】フロントエンドカンファレンス沖縄 スライドまとめ - Qiita