Mima Design MemottoWEB DESIGNER · mima

Sassの@useと@forwardでモジュール管理を整理する方法

Sassでスタイルを増やしていくと、変数やミックスインの置き場所が曖昧になり、同じ定義を複数ファイルへコピーしがちです。特にWebサイトとスマートフォン向け画面を並行して制作すると、読み込み順や名前の衝突が保守性を下げる原因になります。

@useと@forwardを役割ごとに使い分ければ、Sassのファイルを小さなモジュールとして管理できます。デザイントークン、レイアウト、コンポーネントを整理しながら、公開するAPIまで制御できるのが大きな利点です。

機能 主な役割 名前空間 代表的な用途
@use モジュールを読み込む 付く 変数やMixinを安全に利用する
@forward モジュールを再公開する 利用側で付く エントリーポイントを作る
@import 旧式の一括読み込み 付きにくい 新規コードでは原則避ける

@useが解決するグローバル管理の問題

@useは、別のSassファイルを現在のファイルから利用可能にします。たとえばstyles/_colors.scssに色を定義し、@use "styles/colors";と書くと、colors.$primaryのように名前空間を付けて参照できます。

名前空間があることで、$primaryという変数が複数のモジュールに存在しても衝突しません。短い名前を使いたい場合は@use "styles/colors" as c;と記述し、c.$primaryのように別名で呼び出せます。

// _colors.scss
$primary: #2563eb;
$surface: #f8fafc;

// button.scss
@use "../styles/colors";

.button {
  background: colors.$primary;
}

@forwardで公開範囲を設計する

@forwardは、読み込んだモジュールの変数やMixinを、別のファイルから再公開する仕組みです。styles/_index.scssを窓口にすれば、利用側が複数のファイルパスを意識せずに済みます。

// styles/_index.scss
@forward "colors";
@forward "spacing";
@forward "mixins";

// main.scss
@use "styles" as design;

.card {
  color: design.$primary;
}

@forwardは定義を自分のファイル内で使う命令ではありません。自身でも利用したい場合は、同じファイルで@useも記述します。この違いを理解すると、公開用の入口と内部実装を分離できます。

フォルダ構成で役割を明確にする

実務では、基礎値をまとめるsettings、Mixinや関数を集めるtools、UI部品を置くcomponentsのように分類すると管理しやすくなります。たとえば、次のような構成が扱いやすい形です。

scss/
├── styles/
│   ├── _colors.scss
│   ├── _spacing.scss
│   ├── _mixins.scss
│   └── _index.scss
├── components/
│   ├── _button.scss
│   └── _card.scss
└── main.scss

main.scssでは@use "styles";と各コンポーネントを呼び出します。コンポーネント側が必要な依存関係を自分で宣言すれば、読み込み順に左右されにくくなり、ファイル単体での確認や再利用も容易になります。

公開する変数と内部用の値を分ける

すべての変数を外部へ公開すると、後から名前を変更しにくくなります。@forwardではshowやhideを使い、公開するメンバーを制限できます。

@forward "colors" show $primary, $surface;
@forward "spacing" hide $debug-size;

さらに、@forward "colors" as color-*;のように接頭辞を加えることも可能です。複数のデザインシステムを組み合わせる場合や、同名の変数を区別したい場合に役立ちます。公開APIを小さく保つことが、Sassファイルの変更に強い設計につながります。

レガシーコードから段階的に移行する

既存プロジェクトで@importが大量に使われている場合、すべてを一度に書き換える必要はありません。まず色、余白、ブレークポイントなどの共通値をモジュール化し、主要なエントリーポイントから@useへ移行すると影響範囲を抑えられます。

Sassの設計を見直す際は、実際の制作記録や開発経験も参考になります。PhoneGap関連の実装をまとめたPhoneGapの記事一覧のように、技術テーマごとに知識を整理しておくと、古い構成を更新する際の判断材料を見つけやすくなります。

コンパイルとチーム運用で確認する

@useと@forwardは、Dart Sassを前提に利用します。導入後はCLIやビルドツールの設定を確認し、非推奨警告を放置しないことが重要です。未使用変数、循環参照、意図しないCSS出力も、移行時に確認しておきます。

命名規則とフォルダの責務をREADMEに残し、プルリクエストでは「新しい共通値をどこへ置くか」「外部公開が必要か」を確認できるようにします。Web制作やアプリ開発の記録を発信するポートフォリオのように、コードだけでなく設計意図も残すと、後から見返したときの理解が深まります。

Sassのモジュール化は、構文を置き換える作業ではなく、依存関係と公開範囲を整える作業です。まずは共通変数を@useで安全に読み込み、次に@forwardで入口を統一してみてください。UI部品やレスポンシブ設定を一つずつ移行すれば、日々の制作でも効果を実感できます。スマートフォン画面の細かな調整では、iPhoneケースのレビューのような実機視点の記録も活用しながら、設計と検証を継続していきましょう。