約 15 年前、私は旅行代理店、空港職員、航空会社向けのアプリを開発する会社で働いていました。また、UI コンポーネントとシングルページ アプリ機能のための独自の社内フレームワークも構築しました。 フィールド、ボタン、タブ、範囲、データテーブル、メニュー、日付ピッカー、選択、複数選択など、あらゆるものに対応するコンポーネントがありました。 div コンポーネントもありました。ちなみに、私たちの div コンポーネントは素晴らしく、すべてのブラウザで角を丸めることができました。信じられないかもしれませんが、当時はこれを行うのは簡単なことではありませんでした。

私たちの取り組みは、JS、Ajax、動的 HTML が私たちを未来に導く革命とみなされていた歴史のある時点で行われました。突然、ページを動的に更新し、サーバーからデータを取得できるようになり、他のページに移動する必要がなくなります。他のページに移動すると、速度が遅いと見なされ、2 つのページの間の画面上に大きな白い四角形が点滅します。 Jeff Atwood (StackOverflow の創設者) によって有名になった次のようなフレーズがありました。 「JavaScript で作成できるアプリケーションはすべて、最終的には JavaScript で作成されることになります。」— Jeff Atwood

当時の私たちにとって、これは実際にアプリを作成する勇気のように感じられました。 JS ですべてを行うことが全面的に承認されているように感じました。 そのため、私たちはすべてを JS で行い、他の方法を研究することにあまり時間を割きませんでした。私たちは、HTML と CSS で何ができるのかを正しく学ぶ動機をあまり感じませんでした。私たちは、Web を全体として進化するアプリ プラットフォームとして認識していませんでした。特にブラウザのサポートに関しては、私たちはこれを回避する必要があると考えていました。作業を完了するには、さらに JS を投げるだけで済みます。 時間をかけて、Web がどのように機能するのか、またプラットフォームで何が利用できるのかについて詳しく学ぶことができたでしょうか?確かに、本当に必要のない大量のコードを削除することもできたかもしれません。でも、当時はそこまでではなかったのかもしれません。 ご存知のとおり、当時はブラウザーの違いが非常に重要でした。この時代は、Internet Explorer が依然として有力なブラウザであり、Firefox が僅差で 2 位でしたが、Chrome の人気が急速に高まったため、市場シェアを失い始めていました。 Chrome と Firefox は Web 標準に関する合意に非常に優れていましたが、アプリが実行されている環境では、長い間 IE6 をサポートする必要がありました。 IE8 のサポートが許可されたときでも、ブラウザ間の多くの違いに対処する必要がありました。それだけでなく、当時の Web にはプラットフォームにそれほど多くの機能が組み込まれていませんでした。

今日まで早送りしてみましょう。状況は大きく変わりました。これらの機能がこれまでよりも多くなっただけでなく、それらが利用可能になる速度も速くなりました。 もう一度質問させてください。Web がどのように機能するのか、そしてプラットフォームで何が利用できるのかについて、時間をかけて学んでみてはいかがでしょうか。まったくその通りです。今日の Web プラットフォームを理解して使用する方法を学ぶと、他の開発者よりも大きな利点が得られます。 パフォーマンス、アクセシビリティ、応答性、それらすべてを一緒に取り組んでいる場合でも、単に UI 機能の出荷に取り組んでいる場合でも、責任あるエンジニアとしてそれを行いたい場合は、利用可能なツールを知っておくと、より早く、より適切に目標を達成することができます。 もうライブラリが必要ないかもしれないもの 現在ブラウザが何をサポートしているかを知った上で、問題は、何を捨てられるかということです。 2025 年に角を丸くするには div コンポーネントが必要ですか?もちろん、そんなことはありません。 border-radius プロパティは、現在使用されているすべてのブラウザーで、現時点で 15 年以上サポートされています。さらに凝ったコーナーを実現するコーナー形状も近々登場します。 すべての主要なブラウザで利用可能になり、コードベース内の既存の依存関係を置き換えるために使用できる比較的最近の機能を見てみましょう。 重要なのは、お気に入りのライブラリをすべてすぐに捨ててコードベースを書き直すことではありません。他のすべてについては、まずブラウザーのサポートを考慮し、プロジェクト固有の他の要素に基づいて決定する必要があります。次の機能は 3 つの主要なブラウザ エンジン (Chromium、WebKit、Gecko) に実装されていますが、ブラウザのサポート要件が異なるため、すぐには使用できない場合があります。ただし、これらの機能について学び、いつか使用する計画を立てるには今が良い時期です。 ポップオーバーとダイアログ Popover API、

HTML 要素、および ::backdrop 疑似要素は、ポップアップへの依存関係を取り除くのに役立ちます。ツールチップ、およびダイアログ ライブラリ (Floating UI、Tippy.js、Tether、React Tooltip など)。 これらは、すぐに使えるアクセシビリティとフォーカス管理を処理し、CSS を使用して高度にカスタマイズ可能で、簡単にアニメーション化できます。 アコーディオン
要素、相互に排他的な要素の name 属性、および ::details-content 擬似要素により、Bootstrap Accordion や React Accordion コンポーネントなどのアコーディオン コンポーネントが不要になります。 ここでプラットフォームを使用するということは、HTML/CSS を知っている人であれば、最初に特定のライブラリの使用方法を学ばなくても、コードを理解することが容易になることを意味します。また、ライブラリの重大な変更やそのライブラリの廃止の影響を受けないことも意味します。そしてもちろん、ダウンロードして実行するコードが少なくなります。相互に排他的な詳細要素を開く、閉じる、またはアニメーション化するために JS は必要ありません。 CSS 構文 より組織化された CSS コードベースのためのカスケード レイヤー、よりコンパクトな CSS のための CSS ネスティング、新しいカラー関数、相対色、およびカラーミックス、abs()、sign()、pow() などの新しい Maths 関数は、CSS プリプロセッサ、Bootstrap や Tailwind などのユーティリティ ライブラリ、さらにはランタイム CSS-in-JS ライブラリへの依存関係を減らすのに役立ちます。 長年にわたり最も要望の多かった機能の 1 つであるゲームチェンジャー :has() により、より複雑な JS ベースのソリューションが不要になります。 JSユーティリティ findLast() や at() などの最新の Array メソッド、difference()、intersection()、union() などの Set メソッドを使用すると、Lodash などのライブラリへの依存関係を減らすことができます。 コンテナクエリ コンテナ クエリを使用すると、UI コンポーネントがビューポート サイズ以外のものに応答できるようになるため、さまざまなコンテキスト間で再利用しやすくなります。 これには、JS を多用した UI ライブラリを使用する必要はなくなり、ポリフィルを使用する必要もなくなりました。 レイアウト グリッド、サブグリッド、フレックスボックス、またはマルチカラムは長い間存在していましたが、State of CSS 調査の結果を見ると、開発者は新しいものを採用することに非常に慎重で、採用するまでに非常に長い時間を待つ傾向があることは明らかです。 これらの機能は長い間ベースラインであり、Bootstrap のグリッド システム、Foundation Framework のフレックスボックス ユーティリティ、Bulma 固定グリッド、マテリアライズ グリッド、Tailwind 列などへの依存関係を取り除くために使用できます。 枠組みを捨てろと言っているわけではありません。あなたのチームがそれを採用したのには理由があり、それを削除することは大きなプロジェクトになる可能性があります。しかし、サードパーティのラッパーを使用せずに Web プラットフォームが何を提供できるかを考えてみると、多くのメリットが得られます。 近い将来必要なくなるかもしれないもの ここで、近い将来ライブラリが必要なくなるもののいくつかを簡単に見てみましょう。つまり、以下のものは大量採用の準備が整っていませんが、それらを認識し、将来の使用の可能性を計画することは役立ちます。 アンカーの位置決め CSS アンカーの位置決めは、他の要素に対するポップオーバーとツールチップの位置決めを処理し、ページの移動、スクロール、サイズ変更を行っている場合でも、それらを常に表示できるようにします。 これは、前述の Popover API を大幅に補完するもので、パフォーマンス重視の JS ソリューションからの移行がさらに容易になります。 ナビゲーションAPI Navigation API は、シングルページ アプリのナビゲーションを処理するために使用でき、React Router、Next.js ルーティング、または Angular ルーティング タスクを大幅に補完したり、置き換えたりすることができます。 遷移APIの表示 View Transitions API は、ページのさまざまな状態間をアニメーション化できます。シングルページ アプリケーションでは、これにより状態間のスムーズな遷移が非常に簡単になり、Anime.js、GSAP、Motion.dev などのアニメーション ライブラリを削除するのに役立ちます。 さらに嬉しいことに、この API は複数ページのアプリケーションでも使用できます。 以前、私が 15 年前に働いていた会社でシングルページ アプリを構築したのは、ナビゲーション中にページがリロードされて白く点滅するのを避けるためだったと述べたことを覚えていますか?当時その API が利用可能であったなら、単一ページのフレームワークやアプリ全体の膨大な初期ダウンロードを必要とせずに、美しいページ遷移効果を実現できたでしょう。 スクロール駆動のアニメーション スクロール駆動のアニメーションは、時間の経過とともにではなく、ユーザーのスクロール位置に応じて実行されるため、ストーリーテリングや製品ツアーに最適なソリューションになります。 少しやりすぎている人もいますが、うまく使えば、これは非常に効果的な設計ツールとなり、ScrollReveal、GSAP Scroll、または ScrollReveal などのライブラリを削除するのに役立ちます。うわー.js。 カスタマイズ可能な選択 カスタマイズ可能な select は、アクセシビリティとパフォーマンスの利点を確保しながら、外観とコンテンツを完全にカスタマイズできる通常の

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free