ReactのViteでの環境構築は、npm create vite@latest my-app -- --template react-ts を実行し、npm install と npm run dev を続けるだけで完了します。 Viteは開発サーバーと本番ビルドをまとめて提供するツールで、create viteはそのひな形を作るコマンドです。

この記事では、create-vite 9.2.1 と Vite 8.3.2 で実際にプロジェクトを作り、対話プロンプト・開発サーバー・ビルドの出力をそのまま掲載しています。生成される全ファイルの役割、Node.jsの版が合わないときのエラー文、ポートが使用中のときの動き、--host の効果、create-react-app(CRA)との対応まで、手順として追える形でまとめました。

確認環境:Ubuntu 24.04(コンテナ)/Node.js 22.22.2/npm 10.9.7/create-vite 9.2.1/Vite 8.3.2/React 19.3.0/TypeScript 6.0.3/pnpm 10.28.0/yarn 1.22.22/bun 1.3.13。出力中のパスは /home/taro に、IPアドレスは環境に合わせて置き換えています。

create viteの早見表

パッケージマネージャー別のコマンド

React+TypeScript のひな形(react-ts)を作るコマンドです。4つとも実行し、どれも18ファイルが生成されることを確かめています。

ツール 作成コマンド 作成後に案内されるコマンド
npm npm create vite@latest my-app -- --template react-ts npm install → npm run dev
pnpm pnpm create vite my-app --template react-ts pnpm install → pnpm dev
yarn yarn create vite my-app --template react-ts yarn → yarn dev
bun bun create vite my-app --template react-ts bun install → bun dev

npm だけ、--template の前に区切りの -- が必要です。 これは「ここから先の引数は npm ではなく create-vite に渡す」という印です。テンプレートを指定しても、リンターの種類と「すぐインストールして起動するか」の2問は尋ねられます。質問を一切出さずに作りたいときは、末尾に --no-interactive を足します。

作ったあとによく使うコマンド

やりたいこと コマンド 既定の動き
開発サーバーを起動 npm run dev http://localhost:5173/ で起動
本番用にビルド npm run build 型チェックのあと dist フォルダに出力
ビルド結果を確認 npm run preview http://localhost:4173/ で dist を配信
コードを点検 npm run lint Oxlint を実行
ポートを変えて起動 npm run dev -- --port 3000 3000 番で起動
ほかの機器・コンテナの外から開く npm run dev -- --host すべてのアドレスで待ち受け

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

(記載例)出典:株式会社RJC「React環境構築をViteで行う手順|create viteの使い方」

始める前に確認すること:Node.jsの版

Vite 公式ガイドには「Vite は Node.js 20.19 以上、または 22.12 以上が必要」と書かれています。npm に登録されている情報でも、vite 8.3.2 と create-vite 9.2.1 の対応範囲は ^20.19.0 || >=22.12.0 でした。まず自分の版を確かめます。

node -v
v22.22.2
Node.js の版 対応
22.12 以上 そのまま使える
20.19 以上の 20 系 そのまま使える
上記より前の版 Node.js を更新してから始める

Nodeの版が合わないときのエラー文

対応範囲外の Node.js 18.20.8 で作成コマンドを実行すると、次のようになりました。

npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE   package: 'create-vite@9.2.1',
npm warn EBADENGINE   required: { node: '^20.19.0 || >=22.12.0' },
npm warn EBADENGINE   current: { node: 'v18.20.8', npm: '10.9.7' }
npm warn EBADENGINE }

> npx
> create-vite old-app --template react-ts --no-interactive

(create-vite のコードが1行表示されます)
SyntaxError: The requested module 'node:util' does not provide an export named 'styleText'
    at ModuleJob._instantiate (node:internal/modules/esm/module_job:123:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:191:5)
    at async ModuleLoader.import (node:internal/modules/esm/loader:337:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:106:12)

Node.js v18.20.8
npm error code 1

読み方のポイントは2つです。

  • 先頭の EBADENGINE が本当の原因を教えてくれています。 required(必要な版)と current(今の版)が並んで表示されます。これは警告なので、処理はそのまま先へ進みます。
  • 続く SyntaxError ... styleText は、新しい Node.js にしかない機能を呼ぼうとして止まったものです。エラー文だけを見ると原因がわかりにくいので、上の警告とセットで読むのがコツです。

作成済みのプロジェクトで、開発サーバーだけを Node.js 18.20.8 で起動した場合も、同じ does not provide an export named 'styleText' で止まりました。どちらも Node.js を対応範囲の版に更新すると解消します。

対話形式でプロジェクトを作る

テンプレート名を覚えていなくても、引数なしで実行すれば質問に答える形で作れます。

npm create vite@latest

最後まで答えたときの画面です(フレームワークで React、種類で TypeScript、リンターで Oxlint を選び、最後の質問は No にしました)。

> npx
> create-vite

To create in one go, run: create-vite <DIRECTORY> --no-interactive --template <TEMPLATE>
│
◇  Project name:
│  my-app
│
◇  Select a framework:
│  React
│
◇  Select a variant:
│  TypeScript
│
◇  Which linter to use?
│  Oxlint
│
◇  Install with npm and start now?
│  No
│
◇  Scaffolding project in /home/taro/my-app...
│
└  Done. Now run:

  cd my-app
  npm install
  npm run dev

それぞれの質問で表示された選択肢は次のとおりです。矢印キーで選び、Enter で決定します。

質問 表示された選択肢 今回の選択
Project name 既定値は vite-project my-app
Select a framework Vanilla、Vue、React、Preact、Lit、Svelte、Solid、Ember、Qwik、Angular、Marko、Others React
Select a variant TypeScript、TypeScript + React Compiler、JavaScript、JavaScript + React Compiler、RSC、React Router v7、TanStack Router、RedwoodSDK、Vike TypeScript
Which linter to use? Oxlint、ESLint Oxlint
Install with npm and start now? Yes、No No

最後の質問を No にすると、ファイルの生成だけが行われ、続けて実行するコマンドが案内されます。

テンプレートを指定して作る

早見表のコマンドなら、名前・フレームワーク・種類の3問を省けます。

npm create vite@latest my-app -- --template react-ts

ターミナルで実行すると、残りの2問(Which linter to use? と Install with npm and start now?)だけが表示されました。質問を1つも出さずに作るには、--no-interactive を付けます。

npm create vite@latest my-app -- --template react-ts --no-interactive
> npx
> create-vite my-app --template react-ts --no-interactive

|
o  Scaffolding project in /home/taro/my-app...
|
—  Done. Now run:

  cd my-app
  npm install
  npm run dev

(出力のフォルダ名は my-app に置き換えています。)このときリンターは既定の Oxlint になります。手順書や自動化にはこの形が向いています。テンプレート名は、Vite 公式ガイドによると vanilla・vue・react・preact・lit・svelte・solid・qwik と、それぞれに -ts を付けた TypeScript 版が用意されています。

依存パッケージを入れて開発サーバーを起動する

案内された3つのコマンドを順に実行します。

cd my-app
npm install
npm run dev

npm run dev の出力です。

> my-app@0.0.0 dev
> vite


  VITE v8.3.2  ready in 267 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose

Local に表示された http://localhost:5173/ をブラウザで開くと、ひな形の画面が表示されます。 src/App.tsx を編集して保存すると、ブラウザを再読み込みしなくても画面に反映されます(HMR と呼ばれる仕組みです)。Chromium で開いたままボタンを1回押し、見出しの文字を書き換えて保存したところ、ページの読み込み回数は1回のまま見出しだけが変わり、ボタンの「Count is 1」も保たれていました。止めるときは、ターミナルで Ctrl + C を押します。

今回入った主なパッケージの版は次のとおりです。

パッケージ 版 役割
vite 8.3.2 開発サーバーとビルド
react / react-dom 19.3.0 React 本体
@vitejs/plugin-react 6.1.1 JSX の変換と、保存時の即時反映
typescript 6.0.3 型チェック
oxlint 1.86.0 コードの点検(リンター)

生成されるファイルの役割

react-ts テンプレートで生成されたのは、次の18ファイルです。

ファイル 役割 触る頻度
index.html 入口の HTML。src/main.tsx を読み込む タイトルや lang を変えるとき
package.json 依存パッケージと scripts(dev・build・lint・preview) パッケージを足すとき
vite.config.ts Vite の設定。最初は React プラグインだけ ポートや別名を設定するとき
tsconfig.json 下の2つを参照するだけの親ファイル ほぼ触らない
tsconfig.app.json src 配下(ブラウザで動くコード)の TypeScript 設定 型チェックの厳しさを変えるとき
tsconfig.node.json vite.config.ts(Node.js で動くコード)の TypeScript 設定 ほぼ触らない
.oxlintrc.json Oxlint のルール設定 ルールを足すとき
.gitignore Git に入れないもの(node_modules、dist、*.local など) ほぼ触らない
README.md テンプレートの説明 自分の説明に書き換える
public/favicon.svg ブラウザのタブに出るアイコン 差し替える
public/icons.svg ひな形の画面で使うアイコン集 不要なら削除
src/main.tsx 最初に動くコード。App を #root に描画する 全体を囲む部品を足すとき
src/App.tsx 画面の本体。ここから書き始める 毎日
src/App.css App 用のスタイル 書き換える
src/index.css 全体のスタイル 書き換える
src/assets/hero.png ひな形の画面の画像 不要なら削除
src/assets/react.svg React のロゴ 不要なら削除
src/assets/vite.svg Vite のロゴ 不要なら削除

特に大事な3つを見ておきます。

index.html は、プロジェクトの直下に置かれます。 Vite 公式ガイドが「index.html が中心にある」と説明しているとおり、この HTML が入口で、script タグで src/main.tsx を読み込みます。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>my-app</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

日本語のサイトにする場合は、lang="en" を lang="ja" に変えておくとよいでしょう。

src/main.tsx は、App を画面に取り付けるコードです。

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.tsx'

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <App />
  </StrictMode>,
)

package.json の scripts が、コマンドの正体です。

{
  "scripts": {
    "dev": "vite",
    "build": "tsc -b && vite build",
    "lint": "oxlint",
    "preview": "vite preview"
  }
}

npm run dev は vite を、npm run build は「TypeScript の型チェック(tsc -b)→ vite build」を実行していることがわかります。

public と src/assets の使い分けは次のとおりです。

置き場所 参照の仕方 ビルド後
public/ /favicon.svg のように絶対パスで書く 名前そのままで dist の直下にコピーされる
src/assets/ import logo from './assets/react.svg' のように import する react-CHdo91hT.svg のように、内容に応じた文字列が名前に付く

本番用にビルドして確認する

npm run build
> my-app@0.0.0 build
> tsc -b && vite build

vite v8.3.2 building client environment for production...
transforming...
✓ 20 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html                   0.45 kB │ gzip:  0.29 kB
dist/assets/react-CHdo91hT.svg    4.12 kB │ gzip:  2.06 kB
dist/assets/vite-BF8QNONU.svg     8.70 kB │ gzip:  1.60 kB
dist/assets/hero-CLDdwZDr.png    13.05 kB
dist/assets/index-D64VDMd1.css    4.10 kB │ gzip:  1.47 kB
dist/assets/index-BRDr3nmD.js   222.52 kB │ gzip: 69.27 kB

✓ built in 155ms

dist フォルダの中身が、サーバーに置く完成品です。 ビルド結果を手元で確かめるには preview を使います。

npm run preview
> my-app@0.0.0 preview
> vite preview

  ➜  Local:   http://localhost:4173/
  ➜  Network: use --host to expose
コマンド 対象 用途
npm run dev src のコードをその場で変換して配信 開発中の確認
npm run preview ビルド済みの dist を配信 公開前の最終確認

ポート5173が使用中のとき

開発サーバーを起動したまま、別のターミナルでもう1つ起動すると、次のようになります。

> my-app@0.0.0 dev
> vite

Port 5173 is in use, trying another one...

  VITE v8.3.2  ready in 285 ms

  ➜  Local:   http://localhost:5174/
  ➜  Network: use --host to expose

Vite は、ポートが使用中なら自動で次の番号(5174)に移ります。 エラーにはならないので、「5173 を開いたら別のアプリが表示された」というときは、起動時の Local の行を見直してください。

番号を固定したいときは、次の方法があります。

やりたいこと 書き方 実行結果
番号を指定する npm run dev -- --port 3000 Local: http://localhost:3000/ で起動
使用中なら止める npx vite --strictPort Error: Port 5173 is already in use で終了
設定ファイルに書く vite.config.ts の server.port 下の例のとおり

--strictPort を付けて、使用中のポートで起動したときの出力(先頭2行)です。

error when starting dev server:
Error: Port 5173 is already in use

毎回オプションを付けたくない場合は、vite.config.ts に書きます。

// vite.config.ts
import react from '@vitejs/plugin-react'
import { defineConfig } from 'vite'

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
  server: {
    host: true, // --host と同じ。コンテナや WSL の外からも開けるようにする
    port: 3000, // 既定の 5173 から変える
    strictPort: true, // 使用中なら別の番号に移らず、エラーで止める
  },
})

この設定で npm run dev を実行すると、Local: http://localhost:3000/ で起動しました。

コンテナやWSLの外から開けないときは--host

開発サーバーの出力にある Network: use --host to expose は、「今は自分自身(localhost)からしか開けません。外から開くには --host を付けてください」という意味です。Vite 公式ドキュメントでも、server.host の既定値は localhost で、0.0.0.0 または true にするとすべてのアドレスで待ち受けると説明されています。

コンテナの中で、--host なしとありの両方を確かめました。まず、なしの場合です(ポートは 8871 を指定しています)。

  ➜  Local:   http://localhost:8871/
  ➜  Network: use --host to expose
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8871/
# 200
curl http://192.0.2.2:8871/
# curl: (7) Failed to connect to 192.0.2.2 port 8871 after 0 ms: Couldn't connect to server

localhost 宛ては 200 が返りますが、同じマシンの IP アドレス宛てはつながりません。次に --host を付けます。

npm run dev -- --host
  ➜  Local:   http://localhost:8871/
  ➜  Network: http://192.0.2.2:8871/  eth0
curl -s -o /dev/null -w "%{http_code}\n" http://192.0.2.2:8871/
# 200

Network の行に URL が表示され、IP アドレス宛てでも 200 が返るようになりました。

状況 起こること 対応
同じマシンのブラウザで開く --host なしで開ける そのまま
Docker などコンテナの中で起動し、外のブラウザで開く 外からの通信は localhost 宛てではないので届かない --host を付け、コンテナのポートも公開する
同じネットワークのスマートフォンで確認する 同上 --host を付け、Network の URL を開く
WSL2 で起動する Vite 公式ドキュメントに「LAN から開くには host: true だけでは足りない」との注記がある --host に加えて、WSL 側のネットワーク設定を確認する

--host を付けると同じネットワークのほかの機器からも開けるようになるので、必要なときだけ付けるのがおすすめです。

create-react-appからの移行と対応表

React 公式ブログは 2025年2月14日の記事で、新しいアプリでの create-react-app(CRA)の利用を非推奨とし、フレームワーク、または Vite・Parcel・Rsbuild などのビルドツールへの移行を勧めると発表しました。CRA 自体はメンテナンスモードで動き続けるとされています。ここでは、CRA に慣れた方が Vite で迷わないよう、対応を表にまとめます。CRA 側の内容は CRA 公式ドキュメント、Vite 側の内容は今回の実行結果に基づいています。

項目 create-react-app Vite
作成コマンド npx create-react-app my-app --template typescript npm create vite@latest my-app -- --template react-ts
開発サーバー npm start npm run dev
既定の URL http://localhost:3000 http://localhost:5173/
本番ビルド npm run build npm run build
ビルドの出力先 build フォルダ dist フォルダ
ビルド結果の確認 ― npm run preview
テスト npm test テンプレートには含まれない(Vitest などを足す)
入口の HTML public/index.html プロジェクト直下の index.html
環境変数の接頭辞 REACT_APP_ VITE_
環境変数の読み方 process.env.REACT_APP_API_URL import.meta.env.VITE_API_URL
開発か本番かの判定 process.env.NODE_ENV import.meta.env.MODE・DEV・PROD
HTML 内での参照 %PUBLIC_URL%、%REACT_APP_〜% /favicon.svg のような絶対パス、%VITE_〜%
設定の変更 npm run eject(元に戻せない) vite.config.ts を編集

環境変数はVITE_で始める

移行でいちばんつまずきやすいのが環境変数です。プロジェクト直下に .env を作り、3種類の名前を書いて試します。

VITE_API_URL=https://api.example.com
REACT_APP_API_URL=https://api.example.com
SECRET_TOKEN=abc123
// src/App.tsx
function App() {
  return (
    <ul>
      <li>VITE_API_URL: {String(import.meta.env.VITE_API_URL)}</li>
      <li>REACT_APP_API_URL: {String(import.meta.env.REACT_APP_API_URL)}</li>
      <li>SECRET_TOKEN: {String(import.meta.env.SECRET_TOKEN)}</li>
      <li>MODE: {import.meta.env.MODE}</li>
      <li>DEV: {String(import.meta.env.DEV)}</li>
      <li>PROD: {String(import.meta.env.PROD)}</li>
      <li>BASE_URL: {import.meta.env.BASE_URL}</li>
    </ul>
  )
}

export default App

開発サーバーで表示した画面の文字を、Chromium(Playwright 1.56.0)で取り出した結果です。

VITE_API_URL: https://api.example.com
REACT_APP_API_URL: undefined
SECRET_TOKEN: undefined
MODE: development
DEV: true
PROD: false
BASE_URL: /

ビルドして preview で表示すると、MODE 以降が次のように変わりました。

MODE: production
DEV: false
PROD: true
BASE_URL: /

画面のコードに渡るのは VITE_ で始まる変数だけです。 REACT_APP_ のままの変数や接頭辞のない変数は undefined になります。ビルド後の JavaScript を検索しても、SECRET_TOKEN の値(abc123)は含まれていませんでした。Vite 公式ドキュメントも、この仕組みを「意図しない値の公開を防ぐため」と説明しています。なお、VITE_ を付けた値は誰でも見られるコードに含まれるので、パスワードや秘密の鍵は入れないでください。

TypeScript で補完を効かせるには、src/vite-env.d.ts に型を書きます。

// src/vite-env.d.ts
interface ImportMetaEnv {
  readonly VITE_API_URL: string
}

index.html の中では %VITE_API_URL% と書くと値に置き換わります。title に書いて確かめたところ、配信された HTML の title が https://api.example.com になりました。

.env ファイルは、Vite 公式ドキュメントによると次の4種類が読み込まれます。

ファイル 読み込まれる場面
.env 常に
.env.local 常に(Git には入れない)
.env.[mode] そのモードのとき(.env.production など)
.env.[mode].local そのモードのとき(Git には入れない)

生成された .gitignore には *.local が最初から入っているので、.local で終わるファイルは Git の対象外になります。

process.envをそのまま残すとどうなるか

CRA のコードを書き換えずに持ってきた場合を再現します。

// src/App.tsx
function App() {
  return <p>{process.env.REACT_APP_API_URL}</p>
}

export default App

npx tsc -b(npm run build の前半)の出力です。

src/App.tsx(2,14): error TS2591: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.

開発サーバーで開くと画面には何も表示されず、ブラウザ側では次のエラーが出ました。

process is not defined

ブラウザには process というオブジェクトが無いためです。 エラー文は型定義の追加を勧めていますが、移行の場合の直し方は「process.env.REACT_APP_〜 を import.meta.env.VITE_〜 に置き換え、.env の変数名も VITE_ に変える」ことです。

PORTの指定方法も変わる

環境変数 PORT で番号を指定していた場合も書き換えが必要です。Vite で PORT=3000 npx vite と実行したところ、起動したのは http://localhost:5173/ のままでした。Vite では --port 3000 か、vite.config.ts の server.port で指定します。

移行の手順チェックリスト

  • [ ] Node.js が 20.19 以上または 22.12 以上であることを確かめる
  • [ ] npm create vite@latest で新しいプロジェクトを作り、src の中身を移す
  • [ ] public/index.html の内容を、直下の index.html に移す(%PUBLIC_URL% は / 始まりのパスに直す)
  • [ ] process.env.REACT_APP_〜 を import.meta.env.VITE_〜 に置き換える
  • [ ] .env の変数名を VITE_ 始まりに変える
  • [ ] npm start を使っている手順書やスクリプトを npm run dev に直す
  • [ ] 配置先の設定で、出力フォルダを build から dist に変える

つまずいたときの逆引き表

症状・表示 原因 対応
npm warn EBADENGINE のあと styleText の SyntaxError Node.js の版が対応範囲外 Node.js を 20.19 以上または 22.12 以上にする
Port 5173 is in use, trying another one... 5173 番が使用中 表示された Local の URL を開く。固定したいなら --port
Error: Port 5173 is already in use --strictPort(または strictPort: true)で使用中 先に動いているサーバーを止めるか、番号を変える
ほかの機器やコンテナの外から開けない localhost だけで待ち受けている npm run dev -- --host
環境変数が undefined 名前が VITE_ で始まっていない 変数名を VITE_〜 に変える
process is not defined ブラウザで process.env を読んでいる import.meta.env に置き換える
error TS2591: Cannot find name 'process' 同上(型チェックの段階) 同上

よくある質問

Q. npm create vite@latest と npx create-vite は同じですか? A. 同じものが動きます。実行時の出力にも > npx > create-vite と表示されており、npm create が create-vite というパッケージを呼び出しています。

Q. JavaScript で始めたい場合はどうしますか? A. テンプレート名を react-ts から react に変えます。対話形式なら、Select a variant で JavaScript を選びます。

Q. リンターの質問で Oxlint と ESLint のどちらを選べばよいですか? A. 既定で選ばれているのは Oxlint で、今回のひな形では npm run lint が oxlint を実行する設定になりました。チームで ESLint の設定を共有している場合は ESLint を選ぶ、という決め方で十分です。

Q. 開発サーバーの画面を自動でブラウザに開けますか? A. Vite 公式ドキュメントによると、server.open を設定すると起動時にブラウザで開きます。

まとめ

  • 作成は npm create vite@latest my-app -- --template react-ts。npm だけ区切りの -- が必要
  • 続けて npm install → npm run dev で、http://localhost:5173/ に開発サーバーが立つ
  • Node.js は 20.19 以上または 22.12 以上。合わないと EBADENGINE の警告と styleText のエラーが出る
  • ポートが使用中なら自動で次の番号に移る。固定は --port、止めたいなら --strictPort
  • コンテナの外やほかの機器から開くには --host
  • CRA からの移行は start→dev、build→dist、REACT_APP_→VITE_、process.env→import.meta.env の4点を押さえる
  • 入口はプロジェクト直下の index.html。設定は vite.config.ts に書く

参考・出典

  • Vite 公式「Getting Started」 https://vite.dev/guide/
  • Vite 公式「Server Options」 https://vite.dev/config/server-options
  • Vite 公式「Env Variables and Modes」 https://vite.dev/guide/env-and-mode
  • React 公式ブログ「Sunsetting Create React App」 https://react.dev/blog/2025/02/14/sunsetting-create-react-app
  • Create React App 公式「Available Scripts」 https://create-react-app.dev/docs/available-scripts/
  • Create React App 公式「Adding Custom Environment Variables」 https://create-react-app.dev/docs/adding-custom-environment-variables/

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

(記載例)出典:株式会社RJC「React環境構築をViteで行う手順|create viteの使い方」

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