Sass(SCSS)とは、変数・ネスト・mixin・関数などを使ってCSSを書きやすくし、最終的に普通のCSSへ変換(コンパイル)して使う言語です。 現在の公式実装は Dart Sass で、npm の sass パッケージとして配布されています。ファイルを分けるときは、従来の @import ではなく @use と @forward(モジュールシステム) を使うのが今の標準です。

この記事では、2026年10月1日時点の最新版 Dart Sass 1.105.1 で、すべてのサンプルを実際にコンパイルし、「SCSS → 出力されたCSS」を並べて載せています。さらに、@import から @use への移行チェックリストと sass-migrator の実行結果、よく出る警告・エラー文の原文と直し方、フォルダ構成例、CSS変数・ネイティブCSSネストとの使い分けまでまとめました。

Sass(SCSS)の機能早見表

やりたいこと SCSSの書き方 出力されるCSS(要点)
値を使い回す $main: #2563eb; → color: $main; color: #2563eb;(値に置き換わる)
入れ子で書く .card { .title {…} } .card .title {…}
親セレクタを参照 &:hover / &--active / .dark & .card:hover / .card--active / .dark .card
別ファイルを読む @use "colors"; 読み込み自体は出力されない
名前空間を付けて使う colors.$primary / @use "colors" as c; 値に置き換わる
読み込み時に設定を上書き @use "colors" with ($primary: #16a34a); 上書き後の値になる(!default 必須)
まとめて公開 _index.scss に @forward "variables"; 出力されない
スタイルの部品化 @mixin name($arg: 初期値) {…} → @include name; 中身がその場に展開される
呼び出し側のブロックを差し込む mixin内に @content; @include x { … } の中身が入る
共通スタイルを継承 %base {…} → @extend %base; セレクタがまとめられる
値を計算して返す @function rem($px) { @return … } 計算結果だけが出る
条件分岐・繰り返し @if / @each / @for クラスを一括生成
割り算・色・マップ操作 math.div() / color.adjust() / map.get() @use "sass:math"; などが必要
コンパイル npx sass src/style.scss dist/style.css 監視は --watch src/scss:dist/css

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Sass(SCSS)の使い方|@use・mixinをコンパイル結果付きで解説」

Sassの最新状況(Dart Sass 1.105.1)と非推奨の予定

Sass は Dart Sass が唯一の公式実装で、@import とグローバル関数は非推奨(将来削除予定)です。 公式ドキュメントの「Breaking Change: @import and global built-in functions」で次のように案内されています。

項目 内容(公式ドキュメントより)
非推奨になった版 Dart Sass 1.80.0 から @import とグローバル組み込み関数で警告が出る
削除予定 Dart Sass 3.0.0(1.80.0 から2年以上あとのリリース予定)
対象のグローバル関数 darken() lighten() map-get() percentage() など、モジュール外で呼ぶ関数
置き換え先 @use / @forward、sass:color sass:map sass:math などの組み込みモジュール
自動移行ツール sass-migrator module --migrate-deps <入口ファイル>
一時的に警告を止める --silence-deprecation=import / --silence-deprecation=global-builtin

今から書くコードは最初から @use と組み込みモジュールで書いておくと、3.0.0 になってもそのまま動きます。 古いチュートリアルにある @import 前提の書き方は、下の移行手順で置き換えられます。

インストールとコンパイルの方法

npm で sass を入れ、npx sass 入力 出力 でコンパイルします。 以下は検証に使った環境です。

node -v          # v22.22
npm init -y
npm i -D sass
npx sass --version
1.105.1 compiled with dart2js 3.13.5

よく使うコマンド一覧

やりたいこと コマンド
標準出力に表示 npx sass --no-source-map src/style.scss
圧縮して出力 npx sass --style=compressed src/style.scss dist/style.min.css
読み込みパスを追加 npx sass --load-path=node_modules src/style.scss dist/style.css
ソースマップなし --no-source-map
非推奨警告をエラー扱い --fatal-deprecation=import

npx sass src/scss:dist/css を実行すると、dist/css には style.css と style.css.map だけができました。ファイル名が _ で始まるファイル(パーシャル)は単独では出力されず、読み込まれる部品として扱われます。

package.json に登録しておくと便利です。

{
  "scripts": {
    "sass:dev": "sass --watch src/scss:dist/css",
    "sass:build": "sass --style=compressed --no-source-map src/scss:dist/css"
  }
}

Node.js から呼ぶ場合は import * as sass from "sass"; sass.compile("style.scss", { style: "compressed" }).css で同じ結果が得られます。

変数($)で値を使い回す

$名前: 値; で定義し、コンパイル時に値へ置き換わります。 CSSには変数が残りません。

$main-color: #2563eb;
$radius: 8px;

.button {
  background: $main-color;
  border-radius: $radius;
}
/* コンパイル結果 */
.button {
  background: #2563eb;
  border-radius: 8px;
}

ネストと &(親セレクタ)の書き方

& は「親セレクタそのもの」に置き換わります。 擬似クラス、BEMの修飾子、親側の条件、メディアクエリの入れ子まで1か所にまとめられます。

.card {
  padding: 16px;

  .title {
    font-size: 1.25rem;
  }

  &:hover {
    box-shadow: 0 2px 8px rgb(0 0 0 / 0.15);
  }

  &--active {
    border-color: #2563eb;
  }

  .dark & {
    background: #1f2937;
  }

  @media (width >= 768px) {
    padding: 24px;
  }
}
/* コンパイル結果 */
.card {
  padding: 16px;
}
.card .title {
  font-size: 1.25rem;
}
.card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.card--active {
  border-color: #2563eb;
}
.dark .card {
  background: #1f2937;
}
@media (width >= 768px) {
  .card {
    padding: 24px;
  }
}

&--active は文字列として連結され、.dark & のように後ろに置くと親側の条件になります。 なお rgb(0 0 0 / 0.15) は rgba(0, 0, 0, 0.15) として出力されました(意味は同じです)。

宣言を子ルールの後に書いたとき

Dart Sass 1.105.1 では、子ルールの後ろに書いた宣言は「書いた順番どおり」に別ブロックで出力されます。 CSSネイティブのネストと同じ並び順になります。

.a {
  color: red;
  &:hover { color: blue; }
  margin: 0;
}
/* コンパイル結果 */
.a {
  color: red;
}
.a:hover {
  color: blue;
}
.a {
  margin: 0;
}

宣言は子ルールより前にまとめて書くと、出力が1ブロックにまとまり読みやすくなります。

@use でファイルを読み込む(名前空間・as・with)

@use で読み込んだ変数・mixin・関数は「ファイル名.メンバー名」で参照します。 これが @import との一番大きな違いで、どこから来た値かが一目でわかり、名前の衝突も起きません。

部品ファイル _colors.scss(先頭の _ は「パーシャル」の印)を用意します。

// _colors.scss
$primary: #2563eb !default;
$text: #111827 !default;

@function alpha($color, $a) {
  @return rgba($color, $a);
}

基本:ファイル名がそのまま名前空間になる

// main.scss
@use "colors";

.link {
  color: colors.$primary;
  background: colors.alpha(colors.$primary, 0.1);
}
/* コンパイル結果 */
.link {
  color: #2563eb;
  background: rgba(37, 99, 235, 0.1);
}

as で短い名前にする/as * で省略する

@use "colors" as c;
.link { color: c.$primary; }
@use "colors" as *;
.link { color: $primary; }

どちらも出力は .link { color: #2563eb; } でした。as * は短い反面どこ由来か見えにくいため、自作の設定ファイル程度に絞るのがおすすめです。

with で読み込み時に値を上書きする

@use "colors" with ($primary: #16a34a);
.link { color: colors.$primary; }
/* コンパイル結果 */
.link {
  color: #16a34a;
}

with で上書きできるのは、読み込まれる側で !default を付けた変数だけです。 付けていないとエラーになります(後述)。

@use のルール一覧

ルール 内容
書く位置 ファイルの先頭(@forward と変数定義以外より前)
拡張子と _ 省略できる(@use "colors" で _colors.scss を探す)
名前空間 既定はファイル名。as 名前 / as * で変更
非公開メンバー $-secret のように - か _ で始めると外から参照できない
組み込みモジュール @use "sass:math"; のように sass: を付ける

@forward で部品をまとめて公開する

@forward は「読み込んだものを、さらに外へ公開する」ための命令です。 _index.scss にまとめておくと、使う側は1行の @use で済みます。

scss/
├── abstracts/
│   ├── _variables.scss
│   ├── _mixins.scss
│   └── _index.scss
└── main.scss
// abstracts/_variables.scss
$gap: 16px !default;
$breakpoints: (sm: 576px, md: 768px, lg: 1024px) !default;
// abstracts/_mixins.scss
@use "sass:map";
@use "variables" as v;

@mixin mq($key) {
  @media (width >= map.get(v.$breakpoints, $key)) {
    @content;
  }
}
// abstracts/_index.scss
@forward "variables";
@forward "mixins";
// main.scss
@use "abstracts" as a;

.grid {
  gap: a.$gap;

  @include a.mq(md) {
    gap: a.$gap * 2;
  }
}
/* コンパイル結果 */
.grid {
  gap: 16px;
}
@media (width >= 768px) {
  .grid {
    gap: 32px;
  }
}

@use "abstracts" はフォルダ内の _index.scss を自動で探します。 @forward "variables" show $gap;(一部だけ公開)も使えます。

@mixin と @include の使い方(引数・@content)

mixin は「スタイルのまとまり」に名前を付け、@include した場所へ中身を展開する仕組みです。 引数・初期値・キーワード引数・@content が使えます。

@mixin flex-center($direction: row, $gap: 0) {
  display: flex;
  flex-direction: $direction;
  justify-content: center;
  align-items: center;
  gap: $gap;
}

@mixin hover {
  &:hover,
  &:focus-visible {
    @content;
  }
}

.box {
  @include flex-center;
}

.stack {
  @include flex-center(column, 8px);
}

.nav-link {
  color: #374151;
  @include hover {
    color: #2563eb;
  }
}
/* コンパイル結果 */
.box {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  gap: 0;
}

.stack {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 8px;
}

.nav-link {
  color: #374151;
}
.nav-link:hover, .nav-link:focus-visible {
  color: #2563eb;
}
書き方 意味
@include flex-center; 引数なし(初期値を使う)
@include flex-center(column, 8px); 順番どおりに渡す
@include flex-center($gap: 4px); 名前を指定して一部だけ渡す
@include hover { … } ブロックの中身が mixin 内の @content に入る

mixin は呼んだ回数だけ同じ宣言が出力されます。 出力の重複を減らしたいときは次の @extend が候補になります。

@extend と %placeholder の使い方

@extend はセレクタをまとめて、同じ宣言を1回だけ出力します。 % で始まるプレースホルダーセレクタは、それ自体はCSSに出力されません。

%btn-base {
  padding: 8px 16px;
  border: 0;
  border-radius: 6px;
}

.btn-primary {
  @extend %btn-base;
  background: #2563eb;
}

.btn-secondary {
  @extend %btn-base;
  background: #6b7280;
}
/* コンパイル結果 */
.btn-secondary, .btn-primary {
  padding: 8px 16px;
  border: 0;
  border-radius: 6px;
}

.btn-primary {
  background: #2563eb;
}

.btn-secondary {
  background: #6b7280;
}

mixin と extend の選び方

比べる点 @mixin / @include @extend / %placeholder
引数 渡せる 渡せない
出力 呼んだ場所ごとに宣言が複製される セレクタがまとめられ宣言は1回
メディアクエリ内での利用 使える 外側のセレクタは継承できない(エラー)
向いている用途 ブレークポイント、引数で変わる部品 引数のない共通の土台

迷ったら mixin を選ぶと挙動が読みやすく、gzip 圧縮で重複分のサイズ差も小さくなります。

@function で計算する(px → rem の実例)

@function は値を計算して @return で返します。 割り算は / ではなく math.div() を使います。

@use "sass:math";

@function rem($px, $base: 16px) {
  @return math.div($px, $base) * 1rem;
}

h1 { font-size: rem(32px); }
p  { margin-bottom: rem(24px); }
/* コンパイル結果 */
h1 {
  font-size: 2rem;
}

p {
  margin-bottom: 1.5rem;
}

@if・@each・@for で条件分岐とクラス生成

@each はマップ(キーと値の組)やリストを回し、#{}(インターポレーション)でクラス名に埋め込めます。

@use "sass:map";

$theme: dark;
$colors: (primary: #2563eb, success: #16a34a, danger: #dc2626);

body {
  @if $theme == dark {
    background: #111827;
    color: #f9fafb;
  } @else {
    background: #fff;
    color: #111827;
  }
}

@each $name, $color in $colors {
  .text-#{$name} {
    color: $color;
  }
}

@for $i from 1 through 3 {
  .mt-#{$i} {
    margin-top: $i * 4px;
  }
}
/* コンパイル結果 */
body {
  background: #111827;
  color: #f9fafb;
}

.text-primary {
  color: #2563eb;
}

/* .text-success、.text-danger も同様に出力 */

.mt-1 {
  margin-top: 4px;
}

/* .mt-2(8px)、.mt-3(12px)も同様に出力 */

@for $i from 1 through 3 は3を含み、from 1 to 3 は3を含みません。@while もありますが、ほとんどは @each と @for で足ります。

組み込みモジュール(sass:math / color / map / list)一覧

組み込み関数は @use "sass:math"; のように読み込み、math.div() の形で呼びます。

@use "sass:math";
@use "sass:color";
@use "sass:map";
@use "sass:list";
@use "sass:string";

$base: #2563eb;
$sizes: 12px 14px 16px;
$z: (modal: 100, toast: 200);

.demo {
  width: math.percentage(math.div(1, 3));
  height: math.round(10.6px);
  padding: math.max(4px, 8px, 6px);
  color: color.adjust($base, $lightness: -10%);
  background: color.scale($base, $lightness: 80%);
  border-color: color.mix($base, #fff, 50%);
  outline-color: color.change($base, $alpha: 0.5);
  z-index: map.get($z, toast);
  font-size: list.nth($sizes, 2);
  --size-count: #{list.length($sizes)};
  --keys: #{map.keys($z)};
  --has-modal: #{map.has-key($z, modal)};
  --upper: #{string.to-upper-case("abc")};
}
/* コンパイル結果 */
.demo {
  width: 33.3333333333%;
  height: 11px;
  padding: 8px;
  color: rgb(7.2829131653%, 29.8599439776%, 79.3837535014%);
  background: rgb(82.9019607843%, 87.7647058824%, 98.431372549%);
  border-color: #92b1f5;
  outline-color: rgba(37, 99, 235, 0.5);
  z-index: 200;
  font-size: 14px;
  --size-count: 3;
  --keys: modal, toast;
  --has-modal: true;
  --upper: ABC;
}

color.adjust() や color.scale() の結果は #xxxxxx ではなく rgb(…%…) の形で出力されました。 これは計算結果が整数に丸められず、精度を保ったまま出力されるためで、ブラウザではそのまま正しく表示されます。list.nth() の番号は1から数えます。

モジュール よく使う関数 旧グローバル関数
sass:math div percentage round ceil floor max min abs percentage() round()
sass:color adjust scale mix change channel darken() lighten() mix() rgba()
sass:map get merge has-key keys values remove map-get() map-merge()
sass:list nth length append join index nth() length()
sass:string / sass:meta to-upper-case unquote / type-of load-css to-upper-case() type-of()

darken($c, 10%) を移行するときは、警告文に出る候補 color.adjust($color, $lightness: -10%)(同じ結果) か color.scale($color, $lightness: -18.75%)(割合で調整) を使います。

@import から @use への移行手順と sass-migrator

@import を単純に @use へ書き換えるだけでは動きません。 変数の参照に名前空間が必要になり、部品ファイル側にも @use が必要になるためです。

移行チェックリスト

# 確認すること 対応
1 @import "x"; を @use "x"; にする 先頭に移動する
2 変数・mixin・関数の参照 x.$var / @include x.name / x.fn() に変える
3 部品ファイルが他の部品の変数を使っている 部品側にも @use を書く(各ファイルが自分で読み込む)
4 設定値を上書きしていた(読み込み前に変数を定義) 読み込まれる側に !default、使う側で with (...)
5 グローバル関数(darken map-get など) sass:color sass:map などに置き換え
6 / での割り算 math.div() か calc() に
7 何度も @import して同じCSSが重複していた @use は1回だけ出力されるので重複が消える
8 外部ライブラリが @import 前提 新しい版を確認、なければ --silence-deprecation=import で一時対応
9 @import url(...)(Webフォント等のCSS読み込み) CSSの @import としてそのまま出力される

sass-migrator を実行した結果

移行前のファイルです(base/_variables.scss には $primary: #2563eb; と $gap: 16px; だけが入っています)。

// base/_mixins.scss
@mixin card {
  padding: $gap;
  border: 1px solid darken($primary, 10%);
}
// style.scss
@import "base/variables";
@import "base/mixins";

.card {
  @include card;
  width: percentage(1 / 3);
  z-index: map-get((a: 1), a);
}
npm i -D sass-migrator
npx sass-migrator module --migrate-deps style.scss

sass-migrator 2.6.1 で実行すると、3ファイルが次のように書き換わりました。

// style.scss(移行後)
@use "sass:map";
@use "sass:math";
@use "base/variables";
@use "base/mixins";

.card {
  @include mixins.card;
  width: math.percentage(1 / 3);
  z-index: map.get((a: 1), a);
}
// base/_mixins.scss(移行後)
@use "sass:color";
@use "variables";

@mixin card {
  padding: variables.$gap;
  border: 1px solid color.adjust(variables.$primary, $lightness: -10%);
}

_mixins.scss に @use "variables"; が自動で足され、darken() も color.adjust() へ置き換わりました。 _variables.scss は変更なしです。移行前後でコンパイルしたCSSを diff で比べると完全に同一でした。

ただし 1 / 3 の割り算は残ったため、続けて division 移行も実行します。

npx sass-migrator division style.scss
  width: math.percentage(math.div(1, 3));

module と division の2回を流すと、警告ゼロの状態になります。 実行前は Git でコミットしておくと、差分を確認しながら進められます。

よく出る警告・エラー文と直し方

すべて Dart Sass 1.105.1 で再現した実際のメッセージです。

DEPRECATION WARNING [import]

DEPRECATION WARNING [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

More info and automated migrator: https://sass-lang.com/d/import

→ @use に書き換えます。 すぐに直せない外部ライブラリ由来なら --silence-deprecation=import、依存パッケージ内の警告だけなら --quiet-deps で表示を抑えられます。

DEPRECATION WARNING [global-builtin] / [color-functions]

DEPRECATION WARNING [global-builtin]: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use map.get instead.
DEPRECATION WARNING [color-functions]: darken() is deprecated. Suggestions:

color.scale($color, $lightness: -18.75%)
color.adjust($color, $lightness: -10%)

→ 警告文に書かれた置き換え先をそのまま使います。 @use "sass:map"; などの読み込みも忘れずに追加します。

DEPRECATION WARNING [slash-div]

DEPRECATION WARNING [slash-div]: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(100px, 3) or calc(100px / 3)

→ math.div(100px, 3) にします。 font: 16px/1.5 のようなCSS本来の / はそのままで問題ありません。

Error: Undefined variable.

@use "old"; のあとに .a { color: $primary; } と書くと出ます。→ @use した変数は名前空間が必要です。 old.$primary と書くか、@use "old" as *; にします。

Error: @use rules must be written before any other rules.

→ @use をファイル先頭へ移動します。 スタイルルールの後ろには書けません。

Error: This variable was not declared with !default in the @used module.

@use "old" with ($primary: red); で、old 側の変数に !default がないと出ます。→ 読み込まれる側の変数に !default を付けます($primary: #2563eb !default;)。

Error: Private members can't be accessed from outside their modules.

→ $-secret のように - で始まる変数は非公開です。 外から使うなら名前を $secret に変えます。

Error: You may not @extend selectors across media queries.

→ メディアクエリの中では、外側のセレクタを @extend できません。 mixin に置き換えると解決します。

Error: Missing argument $size.

@mixin box($size) を @include box; と引数なしで呼ぶと出ます。→ 引数を渡すか、mixin 側に初期値を付けます(@mixin box($size: 100px))。

おすすめのフォルダ構成

「設定(変数・mixin)」「土台」「部品」「レイアウト」に分け、入口の style.scss から @use します。

src/scss/
├── abstracts/        # CSSを出力しない設定(変数・mixin・関数)
│   ├── _variables.scss
│   ├── _mixins.scss
│   ├── _functions.scss
│   └── _index.scss   # @forward でまとめる
├── base/             # リセット・タイポグラフィ
│   ├── _reset.scss
│   └── _typography.scss
├── components/       # ボタン・カードなどの部品
│   ├── _button.scss
│   └── _card.scss
├── layout/           # ヘッダー・フッター・グリッド
│   ├── _header.scss
│   └── _footer.scss
└── style.scss        # 入口(ここだけ CSS として出力)

入口の style.scss は @use "base/reset"; @use "components/button"; のように並べ、部品側は @use "../abstracts" as a; で設定を読みます。

各部品ファイルが必要な設定を自分で @use するのが @use 時代の書き方です。@import のように入口で1回読めば全体で使える、という形にはなりません。

CSS変数・ネイティブCSSネストとの使い分け

Sass の変数はコンパイル時に値が確定し、CSS変数はブラウザ上で動的に変わります。 両方を組み合わせるのが一般的です(CSS変数そのものの使い方は別記事で扱っているため、ここでは使い分けに絞ります)。

やりたいこと Sass CSSだけ おすすめ
ダークモードなど実行時に値を切り替える 不可(値はビルド時に確定) CSS変数で可 CSS変数
メディアクエリの条件に変数を使う $bp で可 CSS変数は使えない Sass
ネストで書く 可 ネイティブネストが主要ブラウザで利用可 どちらでも
ループでクラスを一括生成 @each @for で可 不可 Sass
引数付きの部品化 mixin で可 不可 Sass
ビルド不要で動かす 不可(コンパイルが必要) 可 CSS
JavaScript から値を読む・変える 不可 可 CSS変数

組み合わせると、Sass のマップから CSS変数を一括生成できます。

$colors: (primary: #2563eb, success: #16a34a);

:root {
  @each $name, $value in $colors {
    --color-#{$name}: #{$value};
  }
}
/* コンパイル結果(上の@eachと同じ仕組み) */
:root {
  --color-primary: #2563eb;
  --color-success: #16a34a;
}

「設計時に決まる値と繰り返し生成」は Sass、「実行時に変わる値」は CSS変数と覚えると判断しやすくなります。

よくある質問

Q. Sass と SCSS の違いは何ですか? A. どちらも Sass の書き方(構文)です。SCSS は {} と ; を使うCSSに近い書き方で、拡張子は .scss。インデントで書く構文は .sass です。現在はSCSSが主流で、この記事もSCSSで書いています。

Q. @import はいつ使えなくなりますか? A. 公式では Dart Sass 3.0.0 で削除予定で、3.0.0 は 1.80.0 から2年以上あとに出ると案内されています。現時点の 1.105.1 では警告付きで動きますが、sass-migrator で早めに @use へ移行しておくと安心です。

Q. node-sass や LibSass で書いたコードは動きますか? A. LibSass は開発が終了しており、公式の実装は Dart Sass(npm の sass)です。/ の割り算などは警告になるため、sass-migrator division で書き換えるとスムーズです。

まとめ

  • Sass(SCSS)はCSSに変数・ネスト・mixin・関数を足し、コンパイルしてCSSにする言語。公式実装は Dart Sass(npm の sass、検証時 1.105.1)
  • ファイル分割は @use と @forward。参照は ファイル名.$変数、設定の上書きは with と !default
  • mixin は引数と @content で柔軟に、@extend は %placeholder で出力をまとめる。迷ったら mixin
  • @import とグローバル関数は 3.0.0 で削除予定。sass-migrator module --migrate-deps と division で移行でき、出力CSSは移行前と同一だった
  • 割り算は math.div()、色は color.adjust()、マップは map.get() と組み込みモジュールで書く
  • 警告・エラー文は置き換え先が書かれているので、その指示どおりに直すのが近道
  • 実行時に変わる値は CSS変数、ビルド時の生成や部品化は Sass と使い分ける

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Sass(SCSS)の使い方|@use・mixinをコンパイル結果付きで解説」

株式会社RJCでは、Sass のモジュール設計を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?