シェルスクリプトのif条件式とは、[ ](test)・[[ ]]・(( )) のいずれかで「真か偽か」を判定し、その終了ステータス(0が真)でifの分岐を決める仕組みです。 文字列は =、数値は -eq、ファイルの存在は -e/-f/-d を使う、という3つを押さえれば、日常のスクリプトの大半は書けます。

この記事では、条件式の全演算子を1つの早見表にまとめ、すべて bash 5.2.21 で実行した結果(true/false) を載せています。さらに、[ ] と [[ ]] と (( )) の違い、=~ 正規表現と BASH_REMATCH、unary operator expected や [: missing ']' などのよくあるエラーを実際に再現して直す手順、sh(dash)で [[ が使えない理由、case や && || との使い分けまで扱います。if文の基本構文やシェルスクリプト全体の書き方は別記事「シェルスクリプトの書き方」に任せ、ここでは条件式そのものに集中します。

if条件式の早見表

迷ったら bash では [[ ]]、数値計算は (( ))、sh 互換が必要なら [ ] を使います。 下の表はすべて bash 5.2.21(Ubuntu、GNU coreutils 9.4)での確認結果です。

やりたいこと 書き方(bash推奨) sh互換の書き方 真になる条件
文字列が等しい [[ $a == "abc" ]] [ "$a" = "abc" ] 完全一致
文字列が異なる [[ $a != "abc" ]] [ "$a" != "abc" ] 不一致
空文字か [[ -z $a ]] [ -z "$a" ] 長さ0
空でないか [[ -n $a ]] [ -n "$a" ] 長さ1以上
辞書順で小さい [[ $a < $b ]] [ "$a" \< "$b" ] ロケールの照合順
前方一致・後方一致・部分一致 [[ $f == *.txt ]] case を使う パターンに一致
正規表現 [[ $s =~ ^[0-9]+$ ]] expr や grep -E 正規表現に一致
数値が等しい (( a == b )) [ "$a" -eq "$b" ] 整数として等しい
数値が大きい/以上 (( a > b )) (( a >= b )) -gt -ge 整数比較
数値が小さい/以下 (( a < b )) (( a <= b )) -lt -le 整数比較
数値が異なる (( a != b )) -ne 整数比較
ファイルかディレクトリが存在 [[ -e $p ]] [ -e "$p" ] 種類を問わず存在
通常ファイルが存在 [[ -f $p ]] [ -f "$p" ] 通常ファイル
ディレクトリが存在 [[ -d $p ]] [ -d "$p" ] ディレクトリ
サイズが0より大きい [[ -s $p ]] [ -s "$p" ] 中身がある
読める/書ける/実行できる -r -w -x 同じ 権限がある
シンボリックリンク [[ -L $p ]] [ -L "$p" ](-h も同じ) リンクそのもの
新しい/古い [[ $a -nt $b ]] [[ $a -ot $b ]] 同じ 更新日時の比較
変数が定義済み [[ -v name ]] [ -n "${name+x}" ] 空でも定義済みなら真
かつ/または/否定 && || !([[ ]] 内) [ ] && [ ]、! 論理演算

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

(記載例)出典:株式会社RJC「シェルスクリプトif条件式一覧|bash文字列比較・ファイル存在確認早見表」

[ ]・test・[[ ]]・(( )) の違いを比較表で整理する

[ は test コマンドの別名、[[ は bash の構文(キーワード)、(( は算術評価です。 見た目は似ていますが、作りが違うため、クォートの要否やエラーの出方が変わります。

項目 [ ] / test [[ ]] (( ))
正体 コマンド(組み込み+/usr/bin/[) bash のキーワード 算術評価の構文
POSIX sh(dash)で使える 使える 使えない 使えない($(( )) の展開は可)
変数のクォート 必須("$a") 原則不要 不要($ も省略可)
単語分割・グロブ展開 される されない ―
文字列の < > \< \> とエスケープ そのまま書ける 数値比較になる
パターン一致(*.txt) できない == の右辺で可 ―
正規表現 =~ できない できる ―
AND / OR -a -o(非推奨)か [ ] && [ ] && || && ||
数値比較 -eq -lt など -eq -lt など == < >= など
主な用途 sh 互換スクリプト bash の文字列・ファイル判定 整数の比較・計算

[ はコマンドなので、[ の後ろと ] の前にスペースが必要です。[ という名前のコマンドに引数を並べ、最後の引数が ] という決まりになっているためです。

$ type [ [[
[ is a shell builtin
[[ is a shell keyword
$ type '(('
bash: line 1: type: ((: not found

(( は type では見つかりませんが、bash の複合コマンドとして解釈されます。

速度の違い(参考)

[[ ]] はコマンド呼び出しではなく構文なので、繰り返しが多いループでは少し速くなります。bash 5.2.21 で10万回比較した結果です。

time (for i in $(seq 100000); do [ "$i" = x ]; done)
time (for i in $(seq 100000); do [[ $i = x ]]; done)
real    0m0.279s   # [ ]
real    0m0.127s   # [[ ]]

差は10万回で0.15秒ほどなので、速度より読みやすさで [[ ]] を選ぶのがおすすめです。

文字列比較の演算子一覧(実行結果つき)

文字列の等号は =([[ ]] では == も可)、空チェックは -z/-n です。 次のスクリプトを bash 5.2.21 で実行しました。

#!/usr/bin/env bash
t(){ if eval "$1"; then r=true; else r=false; fi; printf '%-32s -> %s\n' "$1" "$r"; }
a=apple; b=banana; empty=""
for e in '[ "$a" = apple ]' '[ "$a" == apple ]' '[ "$a" != "$b" ]' \
         '[ -z "$empty" ]' '[ -n "$a" ]' \
         '[[ "$a" < "$b" ]]' '[[ "$a" > "$b" ]]' '[ "$a" \< "$b" ]'; do t "$e"; done
[ "$a" = apple ]                 -> true
[ "$a" == apple ]                -> true
[ "$a" != "$b" ]                 -> true
[ -z "$empty" ]                  -> true
[ -n "$a" ]                      -> true
[[ "$a" < "$b" ]]                -> true
[[ "$a" > "$b" ]]                -> false
[ "$a" \< "$b" ]                 -> true
演算子 意味 [ ] [[ ]] 備考
= 等しい 可 可 POSIX 標準
== 等しい bash では可 可 dash では unexpected operator
!= 異なる 可 可
-z 長さ0 可 可 未定義変数も真
-n 長さ1以上 可 可 [ ] では必ずクォート
< > 辞書順比較 \< \> 可 数値比較ではない

< > は辞書順(文字の並び順)の比較なので、数値に使うと意図と違う結果になります。

x=10; y=9
[ $x -gt $y ]                    -> true
(( x > y ))                      -> true
[ "$x" \> "$y" ]                 -> false   # "1" と "9" を文字で比べている
[[ $x > $y ]]                    -> false

数値は -gt か (( ))、文字列は == < と使い分けると迷いません。

数値比較の演算子一覧(実行結果つき)

整数の比較は -eq -ne -gt -ge -lt -le、または (( )) の中で == != > >= < <= を使います。

x=10; y=9
[ $x -eq 10 ]                    -> true
[ $x -ne $y ]                    -> true
[ $x -gt $y ]                    -> true
[ $x -ge 10 ]                    -> true
[ $x -lt $y ]                    -> false
[ $x -le 10 ]                    -> true
(( x > y ))                      -> true
(( x == 10 ))                    -> true
[[ $x -gt $y ]]                  -> true
[ ] / [[ ]] (( )) 意味(英語の由来)
-eq == equal:等しい
-ne != not equal:異なる
-gt > greater than:より大きい
-ge >= greater or equal:以上
-lt < less than:より小さい
-le <= less or equal:以下

(( )) の中では変数の $ を省略でき、&& || もそのまま使えます。 ただし、扱えるのは整数だけです。小数を比べたいときは awk や bc を使います。

v=1.5
if awk -v v="$v" 'BEGIN{exit !(v > 1)}'; then echo "1より大きい"; fi

ファイル存在確認の演算子一覧(実行結果つき)

存在確認は -e(なんでも)、-f(通常ファイル)、-d(ディレクトリ)の3つを目的で選びます。 次の準備をしてから全演算子を確かめました(root で実行)。

echo hello > file.txt          # 中身あり
: > empty.txt                  # 0バイト
mkdir -p dir
ln -sf file.txt link           # シンボリックリンク
printf '#!/bin/sh\n' > run.sh; chmod +x run.sh
touch -d '2026-01-01' old.txt
touch -d '2026-06-01' new.txt
[ -e file.txt ]                  -> true
[ -e nofile ]                    -> false
[ -f file.txt ]                  -> true
[ -f dir ]                       -> false
[ -d dir ]                       -> true
[ -s file.txt ]                  -> true
[ -s empty.txt ]                 -> false
[ -r file.txt ]                  -> true
[ -w file.txt ]                  -> true
[ -x run.sh ]                    -> true
[ -x file.txt ]                  -> false
[ -L link ]                      -> true
[ -h link ]                      -> true
[ -f link ]                      -> true
[ new.txt -nt old.txt ]          -> true
[ old.txt -ot new.txt ]          -> true
[ link -ef file.txt ]            -> true
演算子 真になる条件 使いどころ
-e 存在する(種類は問わない) 「何かある」か確認
-f 通常ファイル 設定ファイル・入力ファイル
-d ディレクトリ 出力先フォルダ
-s サイズが0より大きい 空ファイルを除外
-r 読み取り可能 入力前の確認
-w 書き込み可能 出力前の確認
-x 実行可能(ディレクトリなら入れる) コマンドの存在確認
-L / -h シンボリックリンク リンク切れの検出
-p 名前付きパイプ FIFO の確認
-S ソケット デーモンのソケット
-b / -c ブロック/キャラクタデバイス /dev 配下
-t FD FD が端末につながっている 対話か判定([ -t 0 ])
A -nt B A の更新日時が B より新しい 再ビルドの要否
A -ot B A の更新日時が B より古い 古い成果物の検出
A -ef B 同じ実体(同じ inode) リンク先の一致確認

押さえておきたい3つの挙動です。

  • -f や -e はシンボリックリンクの先を見ます。 上の例で [ -f link ] が true なのはリンク先の file.txt が通常ファイルだからです。リンク先が消えた「リンク切れ」は [ -L p ] && [ ! -e p ] で検出できます。
  • root で実行すると -r -w はほぼ常に true になります(権限チェックを素通りするため)。権限の確認は一般ユーザーで試すと正確です。
  • -nt は片方が存在しないとき、存在する方を「新しい」とみなします(bash のマニュアルの CONDITIONAL EXPRESSIONS に記載)。

ファイル存在確認のコピペ例

#!/usr/bin/env bash
conf="./app.conf"
outdir="./out"

if [[ -f $conf ]]; then
  echo "設定ファイルを読み込みます: $conf"
else
  echo "設定ファイルがありません: $conf" >&2
fi

# ディレクトリが無ければ作る
[[ -d $outdir ]] || mkdir -p "$outdir"

# リンク切れを検出
for p in ./*; do
  if [[ -L $p && ! -e $p ]]; then echo "リンク切れ: $p"; fi
done

論理演算(AND・OR・NOT)の書き方

bash では [[ 条件1 && 条件2 ]]、sh 互換なら [ 条件1 ] && [ 条件2 ] と書きます。 -a -o は POSIX で非推奨(廃止予定)とされているので、新しく書くときは && || を使います。

[ -f file.txt ] && [ -d dir ]    -> true
[ -f file.txt -a -d dir ]        -> true
[[ -f file.txt && -d dir ]]      -> true
[ -f nofile ] || [ -d dir ]      -> true
[[ -f nofile || -d dir ]]        -> true
[ ! -e nofile ]                  -> true
[[ ! -e nofile ]]                -> true
(( x > 5 && y < 5 ))             -> false

グループ化は [[ ]] ならそのまま ( )、[ ] なら \( \) とエスケープします。

[[ 1 -eq 1 && ( 2 -gt 3 || 3 -gt 2 ) ]] && echo group      # group
[ 1 -eq 1 -a \( 2 -gt 3 -o 3 -gt 2 \) ] && echo group2     # group2

変数が定義されているか確認する(-v と -z の違い)

「空文字」と「未定義」を区別したいときは [[ -v 変数名 ]] を使います(bash 4.2 以降)。-z は両方とも真になります。

unset a; b=""
[[ -v a ]] && echo a-set || echo a-unset
[[ -v b ]] && echo b-set
arr=(1 2); [[ -v arr[1] ]] && echo idx1
a-unset
b-set
idx1

-v には $ を付けず、変数名を書く点に注意します。sh 互換で同じことをするなら [ -n "${a+x}" ](定義済みなら x に置き換わる)を使います。

=~ 正規表現と BASH_REMATCH の使い方

[[ 文字列 =~ 正規表現 ]] で拡張正規表現(ERE)に一致するか判定でき、( ) で囲んだ部分は配列 BASH_REMATCH に入ります。

#!/usr/bin/env bash
d="2026-10-02"
if [[ $d =~ ^([0-9]{4})-([0-9]{2})-([0-9]{2})$ ]]; then
  echo "all=${BASH_REMATCH[0]} y=${BASH_REMATCH[1]} m=${BASH_REMATCH[2]} d=${BASH_REMATCH[3]}"
fi

email="user@example.com"
re='^[^@]+@[^@]+\.[a-z]+$'
[[ $email =~ $re ]] && echo "email ok"
[[ $email =~ "$re" ]] && echo "quoted match" || echo "quoted: literal, no match"
all=2026-10-02 y=2026 m=10 d=02
email ok
quoted: literal, no match
ポイント 説明
BASH_REMATCH[0] 一致した全体
BASH_REMATCH[1] 以降 ( ) で囲んだグループの順番
右辺はクォートしない "$re" と囲むと正規表現ではなく文字列として比較される
複雑な正規表現は変数に入れる re='...' にしてから =~ $re と書くとエスケープで迷わない
\d は使えない ERE なので [0-9] や [[:digit:]] を使う

正規表現を変数に入れて、右辺はクォートなしで書く。これが =~ を安定して使うコツです。

パターンマッチ(== *.txt)で前方一致・部分一致を判定する

[[ ]] の == の右辺はグロブ(ワイルドカード)として扱われるので、拡張子や部分一致を手軽に判定できます。

f="report.txt"
[[ $f == *.txt ]] && echo "glob match"
[[ $f == "*.txt" ]] && echo "quoted glob" || echo "quoted glob: literal, no match"
[ "$f" == *.txt ] && echo "[ glob" || echo "[ : no glob match"
[[ $f == report.@(txt|csv) ]] && echo "extglob ok"
s="Hello World"
[[ ${s,,} == hello* ]] && echo "case-insensitive ok"
[[ $s == *World* ]] && echo "contains"
glob match
quoted glob: literal, no match
re.sh: line 12: [: too many arguments
[ : no glob match
extglob ok
case-insensitive ok
contains

3行目の [ ] では *.txt がカレントディレクトリのファイル名に展開され、too many arguments になりました。 [ ] はパターンマッチに対応していないので、sh 互換で書くときは case を使います。

やりたいこと 書き方
前方一致 [[ $s == abc* ]]
後方一致 [[ $s == *.log ]]
部分一致 [[ $s == *error* ]]
いずれかの拡張子 [[ $f == *.@(jpg|png) ]]
大文字小文字を無視 [[ ${s,,} == *error* ]](${s,,} で小文字化)
パターンではなく文字として比較 右辺をクォート [[ $s == "*" ]]

よくあるエラーを再現して直す

ここからは、実際に bash 5.2.21 で再現したエラー文と直し方です。

unary operator expected(空の変数)

変数が空のとき、クォートしない [ $name = "admin" ] は [ = "admin" ] になり、引数が足りずにエラーになります。

name=""
if [ $name = "admin" ]; then echo admin; else echo other; fi     # 直す前
if [ "$name" = "admin" ]; then echo admin; else echo other; fi   # 直した後
if [[ $name = "admin" ]]; then echo admin; else echo other; fi   # bash ならこれも可
err.sh: line 3: [: =: unary operator expected
other
other
other

数値比較でも同じです。

n=""
[ $n -eq 0 ]      -> [: -eq: unary operator expected
[ "$n" -eq 0 ]    -> [: : integer expression expected

クォートすれば構文エラーは消えますが、空文字は整数ではないので integer expression expected が出ます。 数値として扱う前に ${n:-0} で既定値を入れると安定します。

[ "${n:-0}" -eq 0 ] && echo zero    # zero

[ の前後スペース忘れ(command not found / missing ])

[ はコマンド名なので、くっつけると別の名前のコマンドを探しにいきます。

if [$a = 1]; then ...     -> [1: command not found
if [ $a = 1]; then ...    -> [: missing `]'
if [ $a=2 ]; then ...     -> 常に真になる(エラーは出ない)

3つ目は見落としやすいパターンです。 $a=2 はスペースが無いので「1=2 という1つの文字列」になり、[ 文字列 ] は「空でなければ真」なので、常に真になります。演算子の前後にも必ずスペースを入れます。

= と -eq の混同

= は文字列として、-eq は整数として比べます。 先頭に0が付いた値で違いがはっきり出ます。

v=010
[ "$v" = 10 ]  && echo "str eq"  || echo "str ne"
[ "$v" -eq 10 ] && echo "int eq" || echo "int ne"
(( v == 10 )) && echo "arith eq" || echo "arith ne (octal: $((v)))"
str ne
int eq
arith ne (octal: 8)

(( )) では 010 が8進数として解釈され8になります。 日付の 08 09 などを (( )) で扱うと ((: 08: value too great for base (error token is "08") というエラーになるので、(( 10#$v == 10 )) のように 10# を付けて10進数を指定します。

数字以外を -eq に渡したときのエラーも確認しました。

[ "abc" -eq 1 ]   -> [: abc: integer expression expected
[ 1.5 -gt 1 ]     -> [: 1.5: integer expression expected

空白を含むファイル名(binary operator expected)

f="my file.txt"
[ -e $f ]         -> [: my: binary operator expected
[ -e "$f" ]       -> 正しく判定

[ ] では変数を必ず "$f" とクォートする、これで空の変数と空白入りの値の両方に対応できます。

sh(dash)で [[ が使えない

Ubuntu や Debian では /bin/sh が dash を指しています。

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 31  2024 /bin/sh -> dash
x=a
if [[ $x == a ]]; then echo yes; fi
if [ "$x" == a ]; then echo yes2; fi
$ dash d.sh
d.sh: 2: [[: not found
d.sh: 3: [: a: unexpected operator

sh script.sh で実行したり、1行目が #!/bin/sh だったりすると dash で動くため、[[ や == が使えません。 直し方は次の2つです。

方法 書き方
bash で動かす 1行目を #!/usr/bin/env bash にして bash script.sh か ./script.sh で実行
POSIX の書き方にする [[ ]] を [ ]、== を =、パターンマッチを case に置き換える

エラー早見表

エラー文 主な原因 直し方
unary operator expected 空の変数をクォートしていない "$var" とクォート、または [[ ]]
integer expression expected 整数でない値を -eq などに渡した ${n:-0}、数値チェック、小数は awk
binary operator expected 空白入りの値をクォートしていない "$var" とクォート
too many arguments グロブ展開や単語分割で引数が増えた クォート、パターンは [[ ]] か case
[1: command not found [ の後ろのスペース忘れ [ $a = 1 ]
missing `]' ] の前のスペース忘れ [ $a = 1 ]
[[: not found dash で実行している bash で実行、または [ ] に書き換え
unexpected operator dash で == を使った = に変える
value too great for base 08 09 を算術評価した 10#$v

if の代わりに && || と case を使い分ける

1行で済む処理は && ||、値で3つ以上に分けるなら case、それ以外は if が読みやすくなります。

for f in a.txt b.csv c.tar.gz d; do
  case "$f" in
    *.txt|*.md) echo "$f: text" ;;
    *.csv)      echo "$f: csv" ;;
    *.tar.gz)   echo "$f: archive" ;;
    *)          echo "$f: other" ;;
  esac
done
a.txt: text
b.csv: csv
c.tar.gz: archive
d: other
書き方 向いている場面 例
if 複数行の処理、else を含む分岐 設定ファイルの読み込み
A && B A が成功したときだけ B [[ -d $d ]] && cd "$d"
A || B A が失敗したときだけ B [[ -d $d ]] || mkdir -p "$d"
case 1つの値をパターンで多分岐 拡張子、サブコマンド、yes/no

A && B || C は if-else と同じではありません。 B が失敗すると C も実行されます。

true && false || echo "fallback ran (A && B || C pitfall)"
fallback ran (A && B || C pitfall)

B が失敗する可能性があるときは if A; then B; else C; fi と書くと、意図どおりに動きます。

コピペ用テンプレート

引数チェック・ファイル確認・数値比較をまとめたテンプレートです。 set -euo pipefail と組み合わせても空変数で止まらないよう、${1:-} で既定値を入れています。

#!/usr/bin/env bash
set -euo pipefail
file="${1:-}"
if [[ -z $file ]]; then echo "usage: $0 FILE" >&2; exit 2; fi
if [[ ! -f $file ]]; then echo "not found: $file" >&2; exit 1; fi
if [[ ! -s $file ]]; then echo "empty: $file"; exit 0; fi
lines=$(wc -l < "$file")
if (( lines > 3 )); then echo "big: $lines lines"; else echo "small: $lines lines"; fi

実行結果(bash 5.2.21)です。

$ bash tmpl.sh; echo "exit=$?"
usage: tmpl.sh FILE
exit=2
$ bash tmpl.sh nofile; echo "exit=$?"
not found: nofile
exit=1
$ bash tmpl.sh empty.txt
empty: empty.txt
$ seq 5 > five.txt; bash tmpl.sh five.txt
big: 5 lines

sh(dash)でも動かしたい場合の書き換え表です。

bash の書き方 POSIX sh の書き方
[[ -z $file ]] [ -z "$file" ]
[[ ! -f $file ]] [ ! -f "$file" ]
(( lines > 3 )) [ "$lines" -gt 3 ]
[[ $f == *.txt ]] case "$f" in *.txt) ... ;; esac
[[ $s =~ ^[0-9]+$ ]] case "$s" in ''|*[!0-9]*) 偽 ;; *) 真 ;; esac
[[ -v name ]] [ -n "${name+x}" ]
set -o pipefail dash 0.5.12 では set: Illegal option -o pipefail(実行して確認)

よくある質問

Q. [ ] と [[ ]] はどちらを使えばよいですか? A. bash で動かす前提なら [[ ]] がおすすめです。クォート漏れによるエラーが起きにくく、&& やパターンマッチ、正規表現も使えます。/bin/sh で動かす必要があるスクリプト(コンテナの最小イメージや init スクリプトなど)では [ ] を使います。

Q. ファイルとディレクトリのどちらかが存在すればよいときは? A. [[ -e $path ]] を使います。 -e は種類を問わず存在すれば真です。通常ファイルに限るなら -f、ディレクトリに限るなら -d を選びます。

Q. 文字列に特定の文字が含まれるか判定するには? A. [[ $s == *文字列* ]] で部分一致を判定できます。 sh 互換なら case "$s" in *文字列*) ... ;; esac と書きます。大文字小文字を区別しないときは ${s,,} で小文字にしてから比べます。

Q. 小数を比較したいときはどうしますか? A. [ ] も (( )) も整数専用なので、awk を使います。 awk -v v="$v" 'BEGIN{exit !(v > 1)}' の終了ステータスを if の条件に書けば、1.5 と 1 のような比較ができます。

まとめ

  • if は条件の終了ステータス(0が真)で分岐する。[ ] は test コマンド、[[ ]] は bash の構文、(( )) は整数の算術評価
  • 文字列は =/==、数値は -eq 系か (( ))、存在確認は -e/-f/-d を目的で選ぶ
  • [ ] では変数を必ずクォートする。空の変数で unary operator expected、空白入りで binary operator expected になる
  • =~ の右辺はクォートせず、正規表現は変数に入れる。グループは BASH_REMATCH で取り出せる
  • [[ $f == *.txt ]] でパターンマッチができる。sh 互換なら case を使う
  • sh(dash)では [[ と == が使えないので、#!/usr/bin/env bash で bash を指定する
  • A && B || C は if-else とは別物。B が失敗しうるときは if で書く

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

(記載例)出典:株式会社RJC「シェルスクリプトif条件式一覧|bash文字列比較・ファイル存在確認早見表」

株式会社RJCでは、シェルスクリプトの条件式のような毎日使う基礎を、仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社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で一緒に開発しながら、 成長を楽しみませんか?