「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」を使う必要があります。


ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
Visual Studio Codeの「Debugger for Chrome」でJavaScriptのデバッグを行う
WordPressで「予約投稿の失敗」となってしまう場合の対処方法
CSSのz-indexの確認や管理を便利にする方法
iCLUSTA+でWordPressのアップロード容量を上げたいときのメモ
JavaScriptのtest関数と正規表現でバリデーションチェックを行う
Movable Typeでコメントアウトして出力時に無視する方法
Visual Studio Codeで「.html」拡張子以外のファイルでもEmmetを使えるようにする
gulpでSSI(サーバーサイドインクルード)を使用する「connect-ssi」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
AirPodsで片耳を外しても再生が止まらないようにする方法
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法