これはアソビュー Advent Calendar 2021の2日目の記事です🎄
アソビューでフロント周りのテックリードをやってる井上です。ここ一年で海外ドラマ(主にSF)にどっぷりハマってしまい、現在Netflix、Amazon Prime、Disney+、Apple TVに並行課金してます。年末も見たいものが目白押しでやめ時がわからないですね。😨
さて、最近デザインシステム(のためのコンポーネントライブラリ)を構築している中でSVGアイコンの扱い方について見直したのでそちらについて共有したいと思います。
👴 画像ファイルの思い出
5、6年かもっと前の時代のフロントエンドではアイコンなどのリクエストのレイテンシを短くするためにCSSスプライトなど使って1つのpngファイルから分割したりしていましたね。懐かしい。。
そのうちベクター形式の画像であるSVGがどのブラウザでも使えるようになり、React、Vueなどコンポーネント志向なライブラリが台頭してきてからは、シンプルなアイコンなどはSVG画像を使って容量を小さく抑えつつ、(material UIやフラットデザインの流行も影響してるとは思います)コンポーネントのchunk分割に合わせてコンポーネントの中で分割するような形が主流になったと思ってます。今回はそんなSVG画像で作ったアイコンのReact内での取り扱いについてです。
📕 主要ライブラリのSVGアイコンの扱い方について
create-react-appやNext.jsなどはデフォルトでそれぞれのやり方でSVGを直接importできます。
Nextの場合(ちょっとbabelの設定が必要)
create-react-appもだいたい同じ感じです。(内部的にはsvgr使ってるんですね)