見出し画像

noteのフロントエンドのざっくり歴史まとめ

この記事では、noteがリリースされた2014年当初から現在までのフロントエンド技術の移り変わりをざっくりと振り返ります。

Angular 1.x 系からスタートしたnoteは、その後Nuxt.jsへの移行、さらにはNext.js + Svelteを活用したリアーキテクチャの道を歩んできました。

フロントエンド領域がめまぐるしく変化する中で、なぜこれらの選択をしてきたのか、どんな課題があったのかなどをまとめました。

※ この記事で扱う内容は、2014年〜2025年1月時点での内容です

Angular 1.x系でnoteをリリースした背景

2014年当初の状況

noteがリリースされた2014年は、フロントエンドフレームワークがまだ混沌としていた時代でした。Reactは登場していたものの、企業での採用実績やノウハウがそこまで多くはなく、Vue.jsはまだ黎明期。AngularJS(Angular 1.x)のコミュニティは大きく、多機能なフレームワークとして知られていました。

なぜAngular 1.x系を選んだのか

  • 複雑なUIを少ない労力で構築できる
    双方向データバインディングをはじめとするAngularJSの仕組みは、入力フォームの多いUIやSPAのような複雑な画面を素早く作るのに適していました。

  • 当時のトレンドと大規模なコミュニティ
    ドキュメントやサンプルが豊富で、学習コストを抑えやすかったという点も大きなメリットでした。

課題:パフォーマンス面での悩み

リッチな機能を多数実装する中で、JavaScriptによる処理の負荷が高くなりがちでした。とくに古いスマートフォンやPCではパフォーマンスに難が出てしまい、ユーザー体験にも影響する場面が増えていました。

関連記事

AngularJS 1.3へのアップデート

Nuxt.jsへの刷新

移行検討のきっかけ

大規模化していたAngular 1.xプロジェクトをそのまま保守・拡張していくには、限界を感じるようになりました。特に以下の点が課題でした。

  1. 実行効率の悪化
    CPU負荷が高くなり、ユーザビリティが下がる。

  2. 5年でフロントエンド技術が大きく進化
    ReactやVue.jsをはじめとした新しいフレームワークが進化し、SSR(サーバーサイドレンダリング)や静的サイトジェネレーションなどのベストプラクティスが確立してきた。

なぜNuxt.jsを選んだのか

当初はAngular 2系(現:Angular)へのアップデートも検討していましたが、最終的にはVue.jsベースのNuxt.jsを採用しました。

  • SSRへの対応のしやすさ
    Nuxt.jsはSSRを取り入れやすく、SEOやページの初期表示速度に有利でした。

  • Vue.jsの学習コスト
    Angularより軽量なVue.jsを学習することで、開発者の参入障壁が低くなるメリットがありました。

Nuxt.jsへの完全移行

  • 2021年にNuxt移行が完了
    大規模なリプレイスにもかかわらず、Nuxt.jsによる開発効率向上を実感しながら移行が完了しました。

  • Nuxt2系から3系への壁
    Nuxt 3系が登場した際、2系からの移行コストや互換性の問題が大きいことが判明しました。

結果、今後のメンテナンス性や機能拡張を考慮し、段階的にNext.jsへ切り替えていく方針へと舵を切ることになりました。

関連記事

noteのフロントエンドをNuxt.jsへ刷新します

noteのNuxt.jsへの移行が完了し次世代のフロントエンド構築を進めています

Nuxt.js 刷新プロジェクトまとめマガジン

Next.js + Svelteによるフロントエンドの再構築

Next.jsとSvelteを選択した理由

  • Next.jsの成熟とエコシステム
    ReactベースでSSR/SSGが標準搭載されているため、柔軟かつ拡張しやすい構成がとれる。

  • Svelteを共通コンポーネントに採用
    VueやReactと並んで近年注目度が上がっているSvelteは、ランタイムのフットプリントが小さく、パフォーマンスにも寄与する。

    • NuxtとNextのどちらでも同じコンポーネントを使えるように、Svelteを使って一部を共通コンポーネントとする試みを行っている。

実際の移行進捗

  • 機能ごとの切り出し
    エディタや設定ページなどをNext.jsで独立したアプリとして構築。ビルド・デプロイが高速化。

  • 開発工数の削減
    ページ/コンポーネント単位で移行を進めることで、いきなりすべてをリプレイスするよりも安定的かつ計画的に進められている。

  • パフォーマンス向上
    CPU負荷が下がり、表示速度や操作性が向上。特に古い端末での表示速度が改善。

関連記事

Next.js + SvelteによるnoteのフロントエンドApp分割

noteのフロントエンドリアーキテクチャの進捗を報告します

モノレポ化による開発体験の向上

モノレポ導入の背景

フロントエンドの複数アプリを同時並行で開発・運用するにあたって、依存関係や共通設定の管理が複雑化していました。モノレポ化することで以下のようなメリットが得られます。

  • 依存パッケージの一元管理

  • 開発者体験(DX)の向上

  • 各アプリ間のコード共有や更新が簡単になる

ESLintからBiomeへの移行

  • 統一的なコードスタイルと品質チェック
    これまではESLintを活用していましたが、Biomeへの移行により、さらに軽量かつ高速な静的解析が実現できました。

  • モノレポと組み合わせた効率化
    依存関係やルール設定を一括管理し、開発チーム全体の生産性を上げています。

関連記事

モノレポ導入による開発体験の向上と効率化

ESLintからBiomeに移行しました

デザインシステムとアクセシビリティへの取り組み

デザインシステムの導入

  • 「誰もがつかえる」プロダクトを目指して
    コンポーネント指向のフロントエンド設計が進む中、一貫したUI/UXを提供するためのデザインシステムを導入しています。

  • 発端と現在
    初期はバラバラに管理されていたデザインルールも、現在はFigmaやStorybookなどを活用し、チーム全体で共有できる仕組みを整えています。

アクセシビリティ向上

  • ユーザー中心のプロダクト開発
    多様なユーザーが快適に利用できるよう、WCAGなどのガイドラインに即した改修を継続。

  • モノレポやデザインシステムとの相乗効果
    デザインシステムにアクセシビリティ要件を組み込むことで、個々の開発者があらためて対策する手間を削減し、結果として品質が高まっています。

関連記事

「誰もがつかえる」を目指したnoteのデザインシステムの導入とこれから

noteのアクセシビリティ向上 2024年まとめ

まとめ

noteのフロントエンド技術は、Angular 1.x系による初期リリースから始まり、Nuxt.jsへと移行し、さらにNext.js + Svelteによるコンポーネント単位の再構築へと歩みを進めてきました。

技術進化のスピードが速いフロントエンド領域で、常にユーザビリティと開発効率を両立させながら挑戦を続けています。

  • Angular 1.x系のメリットと限界

  • Nuxt.jsによるSSR対応とパフォーマンス改善

  • Next.js + Svelteで実現する段階的なリプレイス

  • モノレポ化とBiome導入による開発体験向上

  • デザインシステムとアクセシビリティへの継続的な取り組み

今後も、フロントエンド技術やユーザー要件の変化に合わせ、最適解を模索しながらnoteのUI/UXを高めていく予定です。引き続きご注目いただければ幸いです。

▼noteの技術記事が読みたい方はこちら


note社で働くことに興味がある方は、ぜひカジュアル面談からご応募ください