ローマ数字変換ツール
普通の数字とローマ数字を双方向に変換できます。2026はMMXXVIになり、MMXXVIは2026と読み戻せます。標準でない書き方は推測せずに拒否するので、年号や章番号を正しく保てます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 1
- 計算モード
- To roman
- 結果
- I
- 入力値
- 1
アラビア数字の整数(1 から 3999)とローマ数字を双方向で変換します。
7つの文字と6つの引き算の組
ローマ数字は7つの文字を使います。Iが1、Vが5、Xが10、Lが50、Cが100、Dが500、Mが1000です。さらに6つの組では、小さい文字を大きい文字の前に置いて引き算を表します。IVは4、IXは9、XLは40、XCは90、CDは400、CMは900です。数を書くときは、この13の値のうちまだ収まる最大のものを選んで記号を書き、その値を引く操作を、残りがなくなるまで繰り返します。こうして2026はMMXXVIになり、結果は常に標準の最も短い形になります。
ローマ数字が今も使われる場面
映画のクレジットや銘板、本の扉では出版年や製作年を表し、目次や契約書ではI、II、IIIのように章や条項の番号に使われます。普通の数字に読み戻せば、古い参照を並べ替えるのに役立ちます。ゼロを表す数字はなく、古典的な記号で書ける最大の値は3999、つまりMMMCMXCIXです。読み取りでは、IIIIやICのような標準でない書き方を推測せずに拒否するため、入力ミスが気づかないうちに誤った数字になることはありません。
入力の扱いと 1..3999 の範囲
0 は存在せずそれを表す数字もなく、3999(MMMCMXCIX)が古典的な記号で表現できる最大値です。まず大文字化されますので "mmxxvi" のような大小混在や小文字も受け付けられ、その後 M・D・C・L・X・V・I の文字のみが現れるよう選別されます。応答は正規化した入力文字列と変換した結果を返します。
活用例
著作権と版の年
出版年や映画の年をローマ数字(例:2026 を MMXXVI)で表示し、クレジット・銘板・扉ページに用います。
アウトラインと条項の番号付け
I・II・III 形式の節の見出しを生成したり、旧来のローマ数字の参照を整数へ解析して並べ替えに用いたりします。
よくある質問
どの範囲の数値に対応していますか?
1 から 3999 までの整数です。0 を表す数字はなく、3999(MMMCMXCIX)が最大の古典的な値です。
IIII や IC を受け付けますか?
いいえ。 解析の後に数値を再エンコードして正確な一致を要求しますので、唯一の正準の綴りだけが有効です。
ゼロを表すローマ数字はありますか?
いいえ。ローマ数字にはゼロの記号がないため、変換できる最小の値は1です。ゼロ、負の数、小数は範囲外として拒否されます。
ローマ数字を小文字で入力できますか?
はい。読み取る前に大文字へ変換するため、mmxxvi と MMXXVI は同じ結果になります。大文字と小文字を気にせず、そのまま入力できます。
ローマ数字はどのように数値へ読み戻されますか?
左から右へ読み、まずCMやIXのような2文字の引き算の組を探し、なければ1文字ずつ読んで値を足し合わせます。I、II、IIIと番号の付いた古い参照を並べ替えるときに便利です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/roman \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_roman","value":"2026"}'const res = await fetch("https://api.kit.forhosting.com/dev/roman", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_roman",
"value": "2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/roman",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_roman",
"value": "2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/roman", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_roman","value":"2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_roman","value":"2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/roman", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"mode": "to_roman",
"value": "2026"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.roman",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min | 1 |
max | 3999 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
mode=to_roman は数値をローマ数字の文字列に変え、mode=to_arabic はローマ数字の文字列を数値へ解析し、正準でない綴りをすべて拒否します。
貪欲な減算式の変換
双方向とも、13 個の記号の組からなる 1 つの順序付き値の表を使います。M=1000、CM=900、D=500、CD=400、C=100、XC=90、L=50、XL=40、X=10、IX=9、V=5、IV=4、I=1 です。mode=to_roman はその表を大きいものから小さいものへたどり、残りの値がその重み以上である間は各記号を付け加え、進みながら減算しますので、2026 は MMXXVI に、4 は IIII ではなく IV になります。mode=to_arabic は文字列を左から右へ走査し、1 つの記号に頼る前に 2 文字の減算の組(CM や IX のような)を照合し、重みを合計します。この貪欲な方式こそが、出力を加算的な繰り返しではなく、適切な減算表記を用いた常に標準的な最短形にするものです。
入力の扱いと 1..3999 の範囲
value フィールドは文字列として記載されていますが、to_roman は素の整数や全桁の文字列も受け付け、それを Number で強制変換してから 1..3999 内の整数であるか検査します。その閉区間の外はいずれも invalid_input を送出します。to_arabic では value は文字列でなければなりません。
解析時の厳格な正準の検証
その往復の検査が、素朴なパーサーなら静かに受理してしまう IIII・VV・IC のような不正だが合計可能な文字列を拒否します。唯一の正準の綴りだけが再エンコードを生き延びるためです。to_arabic は記号を合計する以上のことをします。解析の後、その数値を to_roman で再エンコードし、その結果が大文字化した入力と正確に等しいことを要求し、さらに解析した値が 1..3999 に収まることを確認します。余計な文字、空の文字列、範囲外の値はいずれも、型のないクラッシュではなく型付きの invalid_input エラーを送出します。
連携の活用例
ユーザー入力の数字の検証
to_arabic を使い、厳格な正準形で書かれている場合にのみローマ数字の文字列を受け付け、IIII や IC を拒否します。
技術的な質問
小文字のローマ数字の入力を受け付けますか?
はい。to_arabic はまず文字列を大文字化しますので、"mmxxvi" は "MMXXVI" と同じに扱われます。
数値を文字列として渡せますか?
to_roman ではできます。"1990" のような全桁の文字列は数値に強制変換されます。to_arabic はローマ字の文字列を期待します。
無料ですか、また API の費用はいくらですか?
ブラウザ widget は無料です。API は前払いの KIT 残高で $0.002 から使い、失敗したタスクは課金されません。