正規表現を生成AIに頼むときは、「使う言語と処理系」「マッチさせたい例と除外したい例を5件ずつ」「全体一致か部分一致か」の3点を渡し、出てきた式は必ずテストで確かめます。 正規表現は言語によって同じ式でも結果が変わるため、頼み方と確かめ方をセットにしておくと、安心して使える式になります。

この記事では、4本のプロンプトテンプレートと、例の表をそのまま流し込める検証コードを載せています。同じ式を Python と JavaScript で実行すると結果が分かれる例も、実行結果つきで示します。記号の一覧ではなく、AI への頼み方と検証に絞った内容です。

確認環境:Python 3.11.15(re、pytest 9.1.1)、Node.js 22.22.2、OpenJDK 21.0.10、Go 1.24.7。掲載したコードと出力は、この環境で実行したものです。確認日 2026-10-05。

この記事の結論

  • 渡すのは3点です。言語と処理系(例:Python 3.11 の re)、マッチさせたい例と除外したい例を5件ずつ、全体一致か部分一致か。
  • 同じ式でも言語で結果が変わります。 備品コードの式 ^[A-Z]{2}-\d{4}$ は、JavaScript では13件すべて期待どおり、Python では2件が期待と違う結果でした。
  • 確かめ方は、例の表をテストに流し込むことです。Python は pytest の parametrize、JavaScript は配列を回すだけで足ります。
  • 量指定子の入れ子は計測します。 ^(a+)+$ は26文字の入力で約3秒かかり、入れ子を外した式は一瞬で終わりました。

正規表現を AI に頼むときの早見表

渡すこと 書き方の例 渡さないとどうなるか
言語と処理系 Python 3.11 の re モジュール 後読みや名前付きグループの書き方が合わず、エラーになることがある
呼び出し方 re.fullmatch で使う、JavaScript の test で使う 全体一致のつもりが部分一致になる
全体一致か部分一致か 文字列全体が備品コードであること 前後に余分な文字があっても通る
マッチさせたい例 EQ-0001 など5件 条件のあいまいさが残る
除外したい例 小文字、桁違い、全角数字、末尾の改行など5件以上 境界の扱いが式の作り手まかせになる
文字の範囲 数字は半角の 0〜9 だけ \d が全角の数字にも一致する処理系がある
入力の長さ 最大200文字 長い入力で時間がかかる式に気づきにくい
出力の形 式、各部分の説明、一致する例、一致しない例 貼り付けや確認に手間がかかる

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

(記載例)出典:株式会社RJC「正規表現を生成AIで作るプロンプト|言語の指定とテスト方法」

プロンプトテンプレート4本

題材は架空の「備品コード」(英大文字2字、ハイフン、数字4桁)です。角かっこの部分を置き換えて使います。

1. 作成用

正規表現を1つ作ってください。

# 使う場所
- 言語と処理系:[Python 3.11 の re モジュール]
- 呼び出し方:[re.fullmatch]
- 一致の範囲:[文字列全体が一致すること/文の中から抜き出すこと]

# 条件
[英大文字2字、半角ハイフン、半角数字4桁。数字は 0〜9 だけで、全角は認めない]

# マッチさせたい例
[EQ-0001]
[PC-2026]
[AB-9999]
[ZZ-0000]
[MN-1234]

# 除外したい例
[eq-0001(小文字)]
[EQ-001(桁が足りない)]
[XEQ-0001(前に余分な文字)]
[EQ-1234(全角の数字)]
[EQ-0001 の後ろに改行]

# 決まり
- 入力は最大 [200] 文字。量指定子を入れ子にしない(例:グループの中と外の両方に + や * を付けない)。
- 指定した処理系で使えない機能は使わない。
- 例だけでは決められない点があれば、式を出す前に質問する。

# 出力形式
1. 正規表現(コードブロック1つ)
2. 部分ごとの説明(表)
3. 上の例それぞれについて、一致する/しないの見込み

2. 解説用

次の正規表現が何に一致するかを説明してください。

# 正規表現
[式をそのまま貼る]

# 使う場所
- 言語と処理系:[JavaScript(Node.js 22)]
- フラグ:[なし/i/m/u など]

# 出力形式
1. ひとことで言うと何に一致する式か
2. 左から順に、部分ごとの意味(表:部分、意味、例)
3. 一致する文字列の例を3つ、一致しない文字列の例を3つ
4. 指定した処理系で意味が変わる箇所、他の言語に移すときに書き換えが必要な箇所
5. 量指定子が入れ子になっている箇所の有無

3. 修正用

次の正規表現が、テストの一部で期待と違う結果になります。直してください。

# 現在の式と使い方
- 式:[^[A-Z]{2}-\d{4}$]
- 言語と処理系:[Python 3.11 の re モジュール]
- 呼び出し方:[PATTERN.match(text)]

# 期待と違った例(文字列、期待、実際の結果)
[EQ-1234、一致しない、一致した]
[EQ-0001 の後ろに改行、一致しない、一致した]

# 期待どおりだった例(直した後も変えないこと)
[EQ-0001 など、通っている例を貼る]

# 出力形式
1. 原因(どの部分が、なぜその結果になるか)
2. 直した式と、呼び出し方の変更があればその内容
3. 直す前と後の違い(表)

4. テストケース生成用

次の条件の正規表現を確かめるためのテストケースを作ってください。式は書かないでください。

# 条件
[英大文字2字、半角ハイフン、半角数字4桁。文字列全体が一致すること]

# 作ってほしい例
- マッチさせたい例:5件以上
- 除外したい例:10件以上。次の観点を必ず含める。
  - 桁や長さが1つ足りない、1つ多い
  - 大文字と小文字、全角と半角の違い
  - 前後に余分な文字、空白、改行が付いたもの
  - 空文字
  - 区切りの記号が違うもの

# 出力形式
タブ区切りで「文字列、期待する結果(True か False)、観点」の3列。見出し行を付ける。

式より先にテストケースを作ってもらい、内容を自分で見直してから式を頼むと、条件の抜けに早く気づけます。

例の表をそのまま流し込める検証コード

例の表(タブ区切り)

文字列 期待する結果  観点
EQ-0001 True    基本の形
PC-2026 True    別の英字
AB-9999 True    数字の最大
ZZ-0000 True    数字の最小
MN-1234 True    基本の形
eq-0001 False   小文字
EQ-001  False   桁が足りない
EQ-00012    False   桁が多い
XEQ-0001    False   前に余分な文字
EQ_0001 False   区切りが違う
EQ-1234 False   全角の数字
EQ-0001(末尾に改行)  False   末尾の改行
(空文字)   False   空文字

Python:re と pytest の parametrize

# test_regex.py  (pip install pytest → pytest -q test_regex.py)
import re
import pytest

# AI が出した式をここに貼る。備品コード:英大文字2字、ハイフン、数字4桁
PATTERN = re.compile(r"^[A-Z]{2}-\d{4}$")

def is_valid(text: str) -> bool:
    return PATTERN.match(text) is not None

# マッチさせたい例と除外したい例の表(文字列, 期待する結果)
CASES = [
    ("EQ-0001", True),
    ("PC-2026", True),
    ("AB-9999", True),
    ("ZZ-0000", True),
    ("MN-1234", True),
    ("eq-0001", False),        # 小文字
    ("EQ-001", False),         # 桁が足りない
    ("EQ-00012", False),       # 桁が多い
    ("XEQ-0001", False),       # 前に余分な文字
    ("EQ_0001", False),        # 区切りが違う
    ("EQ-1234", False),     # 全角の数字
    ("EQ-0001\n", False),      # 末尾に改行
    ("", False),               # 空文字
]

IDS = [f"{i:02d}" for i in range(1, len(CASES) + 1)]   # 表の何行目かを名前にする

@pytest.mark.parametrize("text, expected", CASES, ids=IDS)
def test_pattern(text, expected):
    assert is_valid(text) is expected

実行結果です。

$ pytest -q test_regex.py
..........FF.                                                            [100%]
=================================== FAILURES ===================================
_______________________________ test_pattern[11] _______________________________

text = 'EQ-1234', expected = False

    @pytest.mark.parametrize("text, expected", CASES, ids=IDS)
    def test_pattern(text, expected):
>       assert is_valid(text) is expected
E       AssertionError: assert True is False
E        +  where True = is_valid('EQ-1234')

test_regex.py:32: AssertionError
_______________________________ test_pattern[12] _______________________________

text = 'EQ-0001\n', expected = False

    @pytest.mark.parametrize("text, expected", CASES, ids=IDS)
    def test_pattern(text, expected):
>       assert is_valid(text) is expected
E       AssertionError: assert True is False
E        +  where True = is_valid('EQ-0001\n')

test_regex.py:32: AssertionError
=========================== short test summary info ============================
FAILED test_regex.py::test_pattern[11] - AssertionError: assert True is False
FAILED test_regex.py::test_pattern[12] - AssertionError: assert True is False
2 failed, 11 passed in 0.02s

13件のうち2件が期待と違いました。 原因は2つです。

期待と違った例 原因 直し方
EQ-1234(全角の数字)が一致した Python の \d は、文字列のパターンでは全角を含む Unicode の数字に一致する(公式ドキュメントの記載) [0-9] と書く。または re.ASCII フラグを付ける
末尾に改行の付いた文字列が一致した $ は文字列の末尾だけでなく、末尾の改行の直前にも一致する re.fullmatch で呼び出す

直した式と呼び出し方です。変えたのは2行だけです。

PATTERN = re.compile(r"[A-Z]{2}-[0-9]{4}")

def is_valid(text: str) -> bool:
    return PATTERN.fullmatch(text) is not None
$ pytest -q test_regex_fixed.py
.............                                                            [100%]
13 passed in 0.01s

JavaScript:配列を回して確かめる

// check_regex.js  (node check_regex.js)
// AI が出した式をここに貼る。備品コード:英大文字2字、ハイフン、数字4桁
const PATTERN = /^[A-Z]{2}-\d{4}$/;

// マッチさせたい例と除外したい例の表 [文字列, 期待する結果]
const CASES = [
  ["EQ-0001", true],
  ["PC-2026", true],
  ["AB-9999", true],
  ["ZZ-0000", true],
  ["MN-1234", true],
  ["eq-0001", false],
  ["EQ-001", false],
  ["EQ-00012", false],
  ["XEQ-0001", false],
  ["EQ_0001", false],
  ["EQ-1234", false],
  ["EQ-0001\n", false],
  ["", false],
];

let ng = 0;
for (const [text, expected] of CASES) {
  const actual = PATTERN.test(text);
  const mark = actual === expected ? "OK" : "NG";
  if (mark === "NG") ng++;
  console.log(`${mark}\t${JSON.stringify(text)}\t期待=${expected}\t結果=${actual}`);
}
console.log(`${CASES.length - ng}/${CASES.length} 件が期待どおり`);
process.exitCode = ng === 0 ? 0 : 1;
$ node check_regex.js
OK  "EQ-0001"   期待=true 結果=true
OK  "PC-2026"   期待=true 結果=true
OK  "AB-9999"   期待=true 結果=true
OK  "ZZ-0000"   期待=true 結果=true
OK  "MN-1234"   期待=true 結果=true
OK  "eq-0001"   期待=false    結果=false
OK  "EQ-001"    期待=false    結果=false
OK  "EQ-00012"  期待=false    結果=false
OK  "XEQ-0001"  期待=false    結果=false
OK  "EQ_0001"   期待=false    結果=false
OK  "EQ-1234"   期待=false    結果=false
OK  "EQ-0001\n" 期待=false    結果=false
OK  ""  期待=false    結果=false
13/13 件が期待どおり

同じ式 ^[A-Z]{2}-\d{4}$ が、JavaScript では13件すべて期待どおりでした。 JavaScript の \d は半角の 0〜9 だけに一致し、m フラグのない $ は末尾の改行の前には一致しないためです。式を別の言語に持っていくときは、同じ表でもう一度テストします。最後の行で終了コードを 0 か 1 にしているので、自動のチェックにも組み込めます。

match・search・fullmatch の違い

やりたいこと Python JavaScript
文字列全体が一致するか re.fullmatch 式を ^ と $ で挟んで test
先頭から一致するか re.match 式の先頭に ^ を付けて test
どこかに含まれるか re.search そのまま test
一致した部分をすべて取り出す re.findall、re.finditer g フラグを付けて matchAll

処理が終わらなくなる式の見分け方と計測コード

量指定子(+ や *)を付けたグループの中に、さらに量指定子がある式は、一致しない入力に対して組み合わせを何通りも試すことになり、入力が少し長くなるだけで時間が大きく伸びます。OWASP の解説ページは、こうした式の特徴を「繰り返しの付いたグループ」の中に「繰り返し」または「重なりのある選択」があること、と説明しています。

見分けるポイント 例 書き直しの方向
繰り返しの中に繰り返し (a+)+、([a-zA-Z]+)* 外側か内側の量指定子を1つにする
繰り返しの中に、重なりのある選択 (a|aa)+、(a|a?)+ 選択肢どうしが同じ文字で始まらないようにする
省略できる区切りをはさんだ繰り返し (\w+\s?)+ 区切りを必須にして \w+(\s\w+)* の形にする

計測コード(Python)

# redos.py  入力を1文字ずつ長くして、かかる時間の伸び方を見る
import re
import time

PATTERNS = {
    "入れ子の量指定子": r"^(a+)+$",
    "入れ子を外した式": r"^a+$",
}

for label, pattern in PATTERNS.items():
    regex = re.compile(pattern)
    print(label, pattern)
    for n in range(18, 27, 2):
        text = "a" * n + "!"            # 最後の1文字で一致しなくなる入力
        start = time.perf_counter()
        regex.match(text)
        elapsed = time.perf_counter() - start
        print(f"  {n}文字\t{elapsed:.4f}秒")
入れ子の量指定子 ^(a+)+$
  18文字  0.0122秒
  20文字  0.0477秒
  22文字  0.1881秒
  24文字  0.8197秒
  26文字  3.1657秒
入れ子を外した式 ^a+$
  18文字  0.0000秒
  20文字  0.0000秒
  22文字  0.0000秒
  24文字  0.0000秒
  26文字  0.0000秒

入力が2文字増えるたびに、かかる時間が約4倍になっています。 計測で見るのは時間の絶対値ではなく、この伸び方です。同じ計測を Node.js 22.22.2 で行うと、26文字で 0.4547 秒、入れ子を外した式は 0.0000 秒でした。

もう少し身近な形の式でも同じことが起きます。単語の並びを表す ^(\w+\s?)+$ は、Python で20文字 0.0908 秒、24文字 1.4608 秒、28文字 23.1939 秒でした。^\w+(\s\w+)*\s?$ に書き直すと、3つとも 0.0000 秒で、通常の入力(reserve the projector)にはどちらの式も一致しました。

後戻りをしない処理系(RE2 系)での結果

Go の regexp パッケージは RE2 と同じ文法を受け付け、入力の長さに比例する時間で動くことがパッケージの説明に書かれています。同じ式を Go 1.24.7 で計測した結果です。

package main

import (
    "fmt"
    "regexp"
    "strings"
    "time"
)

func main() {
    re := regexp.MustCompile(`^(a+)+$`)
    for _, n := range []int{18, 26, 1000, 100000} {
        text := strings.Repeat("a", n) + "!"
        start := time.Now()
        re.MatchString(text)
        fmt.Printf("%d文字\t%.4f秒\n", n, time.Since(start).Seconds())
    }
}
18文字    0.0000秒
26文字    0.0000秒
1000文字  0.0001秒
100000文字    0.0061秒

10万文字でも 0.0061 秒でした。その代わり、RE2 系では後方参照や先読み・後読みが使えません(次の章の表)。

計測を AI に頼むときの一文

作成用プロンプトの「決まり」に次の一文を足すと、式と一緒に確認用の入力も出してもらえます。

この式で最も時間がかかりそうな入力(一致しそうで最後に一致しなくなる文字列)を1つ挙げ、長さを変えて計測するコードも付けてください。

処理系ごとの差の対応表

同じ内容の式を4つの処理系で実行した結果です。「エラー」は式の読み込み時にエラーになったことを表します。

機能 式の例 Python 3.11(re) JavaScript(Node.js 22) Java 21 Go 1.24(RE2 系)
先読み \d+(?=円) 一致 一致 一致 エラー
後読み(固定の長さ) (?<=No\.)\d+ 一致 一致 一致 エラー
後読み(長さが変わる) (?<=No\.\s*)\d+ エラー 一致 一致 エラー
名前付きグループ(P あり) (?P<y>\d{4}) 一致 エラー エラー 一致
名前付きグループ(P なし) (?<y>\d{4}) エラー 一致 一致 一致
後方参照 (\w)\1 一致 一致 一致 エラー
\d が全角の数字に一致するか \d+ と「123」 一致する 一致しない 一致しない 一致しない
\w が日本語に一致するか \w+ と「備品」 一致する 一致しない 一致しない 一致しない
Unicode の文字種(漢字) \p{Han} など エラー u フラグを付けた \p{Script=Han} で一致 \p{IsHan} で一致 \p{Han} で一致
強欲な量指定子 a++b 一致 エラー 一致 エラー
$ が末尾の改行の前に一致するか ^abc$ と「abc+改行」 一致する 一致しない 一致する 一致しない

実際に表示されたエラー文です。AI に修正を頼むときは、この文をそのまま貼ります。

処理系 式   エラー文
Python  (?<=No\.\s*)\d+ look-behind requires fixed-width pattern
Python  (?<y>\d{4})-(?<m>\d{2}) unknown extension ?<y at position 1
Python  \p{Han}+    bad escape \p at position 0
JavaScript  (?P<y>\d{4})-(?P<m>\d{2})   Invalid regular expression: /(?P<y>\d{4})-(?P<m>\d{2})/: Invalid group
JavaScript  a++b    Invalid regular expression: /a++b/: Nothing to repeat
Java    (?P<y>\d{4})-(?P<m>\d{2})   Unknown inline modifier
Go  \d+(?=円)    error parsing regexp: invalid or unsupported Perl syntax: `(?=`
Go  (?<=No\.)\d+    error parsing regexp: invalid named capture: `(?<=No\.)\d+`
Go  (\w)\1  error parsing regexp: invalid escape sequence: `\1`
Go  a++b    error parsing regexp: invalid nested repetition operator: `++`

RE2 の文法の一覧(公式 Wiki)でも、後方参照、先読み、後読み、強欲な量指定子、アトミックグループは NOT SUPPORTED と書かれています。RE2 系の処理系を使うときは、プロンプトに「RE2 で使える機能だけで書く。先読み・後読み・後方参照は使わない」と書き添えます。

正規表現で書くか、文字列関数や解析器に任せるかの判断基準

条件 選ぶもの 例
決まった文字で始まる・終わる・含むかを見るだけ 文字列関数 startswith、endswith、in
決まった区切りで分けるだけ 文字列関数(split) ハイフン区切りのコードを分ける
文字の種類と並びに決まりがある短い文字列 正規表現 備品コード、郵便番号の形
文の中から決まった形を抜き出す 正規表現 ログの行から日時を取り出す
形だけでなく値の正しさも確かめたい 正規表現で形を見てから専用の関数 日付、数値の範囲
入れ子の構造や引用符の決まりがある形式 専用の解析器 CSV、JSON、HTML、URL

「形は正規表現、意味は専用の関数」の例です。

# parser.py  形は正規表現、意味は専用の関数で確かめる
import re
from datetime import date

DATE_SHAPE = re.compile(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")

for text in ["2026-10-05", "2026-02-30", "2026-13-01", "2026/10/05"]:
    shape_ok = DATE_SHAPE.fullmatch(text) is not None
    try:
        date.fromisoformat(text)
        real_ok = True
    except ValueError:
        real_ok = False
    print(f"{text}\t正規表現={shape_ok}\tdate.fromisoformat={real_ok}")
2026-10-05  正規表現=True   date.fromisoformat=True
2026-02-30  正規表現=True   date.fromisoformat=False
2026-13-01  正規表現=True   date.fromisoformat=False
2026/10/05  正規表現=False  date.fromisoformat=False

2月30日や13月は、形としては合っていても日付としては存在しません。こうした確認まで正規表現に持たせると式が長くなるので、日付の関数に任せます。

CSV も同じです。引用符の中にカンマがある行を split で分けると列がずれ、csv モジュールでは正しく3列になりました。

import csv, io
line = 'EQ-0001,"プロジェクター, 小型",第2会議室'
print(line.split(","))
print(next(csv.reader(io.StringIO(line))))
['EQ-0001', '"プロジェクター', ' 小型"', '第2会議室']
['EQ-0001', 'プロジェクター, 小型', '第2会議室']

AI に頼む前に、次の一文で方法そのものを相談するのも有効です。

次の処理をしたいです。正規表現、文字列関数、専用の解析器のどれが合うかを1つ選び、理由を2文で答えてください。コードはまだ書かないでください。

[やりたい処理と、入力の例を3つ]

確かめて分かったこと

  • 同じ式と同じ13件の表で、JavaScript は全件が期待どおり、Python は2件が期待と違いました。 言語を伝えずに頼むと、この差がそのまま残ります。
  • Python の \d と \w は、全角の数字や日本語にも一致しました。 JavaScript、Java、Go では一致しませんでした。半角だけにしたいときは [0-9] と書くのが、どの処理系でも同じ結果になる書き方です。
  • 名前付きグループの書き方は2通りあり、処理系によって受け付ける形が違いました。 P ありは Python と Go、P なしは JavaScript と Java と Go です。
  • 長さが変わる後読みは、JavaScript と Java 21 では一致し、Python ではエラーでした。
  • $ の扱いは2つに分かれました。 Python と Java は末尾の改行の前にも一致し、JavaScript と Go は一致しませんでした。全体一致は、Python なら fullmatch を使うと確実です。
  • 入れ子の量指定子は、Python と Node.js の両方で入力が2文字増えるごとに約4倍の時間になりました。 Go では10万文字でも一瞬でした。

よくある質問

Q. ChatGPT や Claude で正規表現は作れますか? A. 作れます。言語と処理系、マッチさせたい例と除外したい例、全体一致か部分一致かの3点を渡すと、条件に合った式になりやすくなります。出てきた式は、例の表をテストに流して確かめてから使います。

Q. AI が作った正規表現が動かないときは? A. まず、使っている言語と処理系を伝えたかを確かめます。エラー文が出ている場合はその文を、結果が期待と違う場合は「文字列、期待、実際の結果」の3つを修正用プロンプトに貼ります。

Q. 正規表現のテストはどうやって行いますか? A. マッチさせたい例と除外したい例を表にして、1件ずつ結果を比べます。Python なら pytest の parametrize、JavaScript なら配列を回すコードで、表をそのまま使えます。

Q. 全体一致と部分一致の違いは? A. 全体一致は文字列の最初から最後までが式に合うこと、部分一致は文字列のどこかに式に合う部分があることです。入力チェックには全体一致、文章からの抜き出しには部分一致を使います。

Q. 正規表現の処理が遅いときは? A. 量指定子が入れ子になっていないかを確かめます。一致しない入力を1文字ずつ長くして時間を測り、伸び方が急なら、外側か内側の量指定子を1つにする形へ書き直します。

まとめ

  • 言語と処理系、例を5件ずつ、全体一致か部分一致かの3点を渡して頼みます。
  • プロンプトは作成用・解説用・修正用・テストケース生成用の4本を使い分けます。
  • 出てきた式は、例の表をテストに流して確かめます。 期待と違った行が、そのまま修正用プロンプトの材料になります。
  • 同じ式でも処理系で結果が変わります。 \d、$、後読み、名前付きグループは特に差が出るところです。
  • 量指定子の入れ子は、入力の長さを変えて計測します。 伸び方が急なら書き直します。
  • 形は正規表現、値の正しさや入れ子の構造は専用の関数や解析器に任せます。

参考・出典

  • Python 公式ドキュメント「re — Regular expression operations」 https://docs.python.org/3/library/re.html
  • RE2 公式 Wiki「Syntax」 https://github.com/google/re2/wiki/Syntax
  • OWASP「Regular expression Denial of Service - ReDoS」 https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
  • Go 標準ライブラリ regexp パッケージの説明(go doc regexp、Go 1.24.7)

(いずれも 2026-10-05 に確認)

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

(記載例)出典:株式会社RJC「正規表現を生成AIで作るプロンプト|言語の指定とテスト方法」

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