「Dart Sass」「LibSass」「Ruby Sass」などSassの種類や記法に関するまとめ

Dart SassやLibSass、Ruby Sassなど、Sassにもいくつか種類があります。
2022年7月現時点ではDart Sassが主流ですが、それ以外との具体的な違いに関してまとめておきます。
Sassの種類
「Sassの種類」といっても2つの側面があります。
1つは「記法」で書き方の問題です。
2つ目はSassをコンパイルしている「言語」の問題です。
最近は記法の方は「SCSS記法」が一般的になっているので、現在Sassの種類に関する話をするときは言語を指す場合が多いです。
記法
記法に関しては「SASS記法(全て大文字になるので注意)」と「SCSS記法」の2種類しかありません。
また、SASS記法は全く浸透せず、2022年現在では見ることはまずありません。
浸透しなかった大きな原因は、記法がCSSと共存できなかったことです。
SCSS記法は通常のCSSと同じように記述できて、それに追加する形でSass独自の機能が使えます。
.main{
.wrap{
max-width: 980px;
width: 100%;
margin: 0 auto;
padding: 0 20px;
}
}それに対してSASS記法はインデントを使うことで、波括弧は省略して記述します。
.main
.wrap
max-width: 980px;
width: 100%;
margin: 0 auto;
padding: 0 20px;記述量は括弧が減る分だけ少なくなりますが、いままで作ってきたCSSをコピペで持って行けなかったり、いままでCSSの書き方に慣れている人からすると別物という印象を与えてしまいます。
SassとSASSの読み方の違い
Sassの場合は「サス」と読みますが、記法を表す全て大文字のSASSの場合は「エスエーエスエス」はと読みます。
SCSSの場合は「エスシーエスエス」になります。
言語
Sassは用意したSassファイル(SASS記法なら.sass、SCSS記法なら.scssファイル)をCSSにコンパイルする必要があります。
このコンパイルするときに、どの言語を使用しているかによってSassの名前が変わります。
| 名前 | 言語 | 特徴 |
|---|---|---|
| Dart Sass | Dart | 現在公式が推奨しているSass |
| LibSass | C言語 / C++ | Node.jsのnode-sassでもLibSassが使われているが、現在公式では非推奨 |
| Ruby Sass | Ruby | 2006年に発表された最初のSassだが、2019年3月26日にサポート終了 |
Ruby Sassは既にサポート終了なので、いま使うとなるとDart SassかLibSassのどちらかです。
ただ、2022年現在で公式が推奨しているのはDart Sassです。
言語によって、使える機能も変わってくるので、LibSassをそのままコピペでDart Sassに持ってきてもそのままでは使えず、細かい調整が必要になります。
Ruby Sassの特徴
発表された2006年当時はRubyが急成長しており、多くの人に使われ普及しました。
しかし、Ruby製であることによるコンパイルの遅さや、他ツールとの連携の問題が出てきます。
その結果、開発も徐々に活発には行われなくなり、2019年の3月26日にサポート終了しました。
コンパイルには名前の通りRubyのインストールが必要で、一緒に「Compass」と呼ばれるフレームワークが使われていました。
Compassを使えばよく使う便利なCSSを一気に読み込めたり、ファイル監視なども行えました。
この辺りは過去に記事にしているので、そちらもご覧ください。
古いプロジェクトの場合は見かける可能性もありますが、サポートは終了しているので移行は必要です。
ただし、このCompassを使っている場合はCompass専用の記述があり、Sassファイルをそのまま別Sassで使えるようにするには移行作業が少し面倒です。
出力されたCSSをもとに分割して新たなSassファイルを作成するのがいいでしょう。
LibSassの特徴
Ruby Sassの「コンパイルが遅い」「他ツールとの連携が難しい」問題を解決するために開発されたのが「LibSass」です。
LibSassで使われている言語はCやC++で、動作の速さや連携のしやすさを念頭にして開発されています。
ちなみに、LibSass自体はライブラリのような形で、このLibSassを使用するためラッパーがいろんな言語で存在しています。
フロントエンド開発でよく利用されているNode.js向けの「node-sass」は、LibSassをNode.jsで使えるようにしたラッパーになります。
普及して非常に多くの人に利用されていましたが、複雑なSassの実装をC++で開発できる人間は少なく、徐々に機能追加は行われなくなりました。
そして、2020年10月に非推奨 となり、今後は新機能の追加は行われないことになっています。
Dart Sassの特徴
LibSassの次に開発されたのが「Dart Sass」です。
Dart Sassはアプリ開発で話題なFlutterでもベースになっているDart製のSassで、パフォーマンスをある程度担保しつつ、他ツールとの連携のしやすさと開発のしやすさを兼ね備えたSassです。
いままで「node-sass」を利用していた人は、Dartからコンパイルした「sass」を使用するのが移行として手軽です。
現在が開発が盛んに行われていて、公式でも推奨されています。
LibSassから細かい変化もあり、大きなところでいくと別ファイルをインポートするための「@import」の代わりに「@use」を使う必要があります。


.htaccessを使って、httpからhttpsへリダイレクトする設定方法
npm-scriptsでSCSSをコンパイルする環境を構築する方法
全角スペースを可視化してくれるVisual Studio Codeの拡張機能「zenkaku」
Google Maps APIをローカル開発環境で使用するときの制限設定方法
gulp-sass 5の「does not have a default Sass compiler」エラーを解消する
HTTP/2が設定されているはずなのに、ブラウザ上でHTTP/1.1になってしまう場合はセキュリティソフトを確認
MAMPでローカル開発環境にWordPressをインストールする手順
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
Vue CLI 3でfaviconの設定をする方法
W3 Total Cacheをレスポンシブデザインのテーマで使用する時の注意ポイント!!【WordPress】
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」