8000 GitHub - g-kari/tools · GitHub
[go: up one dir, main page]

Skip to content
g-kariPublic

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,189 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tools - Web ツール集

様々な便利なWebツールを集めたサイトです。Cloudflare Workers上で動作します。

機能

エンコード・デコード、ハッシュ・暗号、JSON / YAML / XML、色変換、日付・時刻、画像・QR、ネットワーク系ツールなど 300 種類以上のツールを提供しています。

全ツールの一覧・カテゴリは app/routes/top.tsx の toolCatalog を参照するか、本番サイトのトップページで確認できます。

ツール一覧と Ctrl+K / Cmd+K の検索では、ツール名・説明・カテゴリ名・パスを検索できます。JSON 圧縮 のように空白で区切るとすべての語で絞り込みます。前後の空白、大文字小文字、全角英数字・半角かなの違いを吸収し、検索語はサーバーへ送信・保存しません。

検索ダイアログの結果はツール名を名前とするリンクの一覧です。Tab / Shift+Tab で中の操作を循環し、上下の矢印キーでも実際のリンクへ移動して Enter で開けます。検索欄の ↓ は次の候補、↑ は前の候補へ移動し、結果の先頭で ↑・末尾で ↓ を押すと検索欄へ戻ります。検索欄に戻ると先頭候補を選び直し、Enter で開けます。修飾クリック・中クリックでも標準のリンク操作ができます。Esc・閉じるボタン・外側クリックで取り消した後は、検索を開いたボタンや入力欄へ戻ります。

共通ナビゲーションのカテゴリは、ホバーで開いても入力欄や別のメニューのキーボードフォーカスを移しません。カテゴリボタンの Enter / Space / ↓ で最初のリンクへ移り、矢印・Home / End で選択、Esc でボタンへ戻れます。Tab / Shift+Tab は通常の次・前の操作へ進んで閉じます。ポインターが離れても、キーボードで操作中のリンクは閉じません。ツールの初期読み込み前の入力保持を保証する変更ではありません。

ワールドクロックは最初に時刻の読み込み表示を出し、画面の起動後にブラウザーの現在時刻・ローカルタイムゾーンを反映します。サーバーの時刻やタイムゾーンを現地時刻として表示せず、以後は従来どおり1秒ごとに更新します。

JSON Linesの整形・圧縮・JSON配列との相互変換は、数値の元の表記(大整数、小数、指数、負のゼロ)、文字列のエスケープ、キー順と重複キーを保持します。空白と配列の外枠だけを変更し、1レコード1行を維持します。無効な入力を許可するものではなく、重複キーの解釈や数値計算、元の空白の完全な復元は行いません。詳しくは JSON Linesのトークン保持 を参照してください。

JSON→GraphQL生成では、別階層の同名オブジェクトやルート名・組込みscalar名と衝突する子の型名に2以降の連番を付け、後のオブジェクトの項目を省略しません。入力キーと推論規則は変更せず、配列は従来どおり先頭要素だけを使用します。入力はブラウザー内だけで処理し、送信・保存しません。GraphQLで使用できないフィールド名・ルート型名の検証や改名は含みません。

主要カテゴリ:

  • エンコード/デコード系: Base16/32/36/58/62/64/85、URL エンコード、Unicode エスケープ、他
  • ハッシュ・暗号系: MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512、JWT Inspector、他
  • テキスト・データ系: JSON / YAML / XML / TOML 整形、正規表現チェッカー、diff、他
  • 色・デザイン系: RGB / HSL / CMYK / HEX 変換、グラデーション、カラーパレット、他
  • 日付・時刻系: タイムゾーン、Unix 時刻、和暦、タイマー、他
  • ネットワーク系: WHOIS、IP ジオロケーション、OGP、DNS、他
  • 画像・QR 系: QR コード生成・読み取り、画像圧縮、他

MarkdownテーブルのCSVインポートは引用符内のカンマ・二重引用符("")・空白を保持し、不正な引用符とヘッダーより多い列は位置付きのエラーにします。セル・ヘッダー内の改行と、バックスラッシュの直後に | がある値は現在の編集・Markdown出力で保持できないため、未対応としてインポートを拒否します。失敗時は入力と現在の表を保持します。先頭の非空ヘッダーの引用符外にタブがあればTSV、それ以外はCSVです。CSV内のタブだけでは形式を変えません。TSVの同一セル内で閉じる引用符は文字として扱い、引用符付き改行・タブや先頭の引用符が閉じないセルは拒否します。引用符で始まる曖昧なヘッダーはCSVとして検証します。引用符外の前後空白と空行は除去し、不足列は空文字で補います。既存の手入力・Markdown出力は変更しておらず、表の完全な可逆性や既存のバックスラッシュ付き | の出力不具合を解決するものではありません。

JSON→SQL CREATE TABLE生成では、キーをスネークケースに変換した後の列名の重複をエラーにします(例: userName と user_name)。追加するidカラムと入力列の重複も拒否し、元キー・衝突列と修復方法を表示します。入力キーを変更するか、追加idとの衝突なら「id カラムを追加する」をオフにして再生成できます。列を自動改名したり省略したりはしません。失敗時は入力を保持して旧SQLを消去し、コピーを無効にします。

JSON Schema生成では __proto__ も通常のJSONキーとして properties に保持し、ネストや配列でも元キー名を変えません。生成する required・型・追加プロパティ拒否の条件は維持します。JSON→Zod生成とは別の処理です。入力はブラウザー内だけで処理し、送信・保存しません。

JSON Schemaバリデーターの required と properties は、入力JSON自身のキーだけを存在判定に使います。__proto__・constructor・toString なども、必須なら欠落をエラーにし、任意なら欠落した項目の型検査を行いません。存在する項目の型検査やネスト・配列内での検証は維持します。入力はブラウザー内だけで処理し、送信・保存しません。

JSON→Zod生成では、ハイフン・空白・引用符・改行などを含むJSONのキーを文字列リテラルとして出力し、元のキー名を保持します。__proto__ はオブジェクトリテラルの特殊な挙動を避けるため ["__proto__"] と出力し、スキーマのshapeに保持します。Zod自体の解析方針は変更しておらず、Zod 3.25.76では __proto__ がparse結果から省かれます。通常の英数字・_・$の識別子は従来の表記を維持します。型推論やルート変数名の検証は変更していません。

テキスト差分比較は元・新しいテキストの行番号を表示します。「変更箇所の前後3行だけ表示」で長い未変更部分を省略でき、それぞれの省略部分は表示・折りたたみできます。コピーには表示状態にかかわらず全行の差分を含みます。入力はブラウザー内だけで処理し、送信・保存しません。比較アルゴリズムと処理できる入力規模は従来どおりです。

UUID生成は既定のv4に加え、RFC 9562のv7(48ビットのUnix時刻+74ビットの暗号学的乱数)を選べます。1〜100件の生成、大文字・ハイフンなし表示、個別・一括コピーに対応します。選択したバージョンは次の生成に適用し、結果には実際に生成したバージョンを表示します。v7には生成時刻が含まれ、同じミリ秒の生成や時計が戻った場合の単調な並び順は保証しません。秘密のトークンには使わないでください。生成はブラウザー内で完結し、生成値を送信・保存しません。

Base32/hexのデコードは小文字・空白・末尾の=の省略に対応します。不完全な文字数・不正な=の位置や数・非alphabet文字を拒否し、末尾の未使用ビットが0ではない非正規表現も補正せずエラーにします。この未使用ビットの厳格検査はツールの方針で、すべてのRFC 4648デコーダーに必須という意味ではありません。入力を保持して理由と入力し直す案内を表示し、エラー時は出力・Copy・入れ替えを無効にします。エンコード・バイナリの16進表示・ブラウザー内だけの処理は維持します。TOTPのシークレットなど実際の秘密情報をテストに使わないでください。

JSON Schema生成では、異なる配列要素の推論結果を anyOf で結合します。たとえば [1,1.5] の整数は integer と number の両方に適合しますが、どれか1つ以上に適合すれば受理されます。従来の oneOf 出力からキーワードが変わるため、生成結果の構造を利用するコードではご注意ください。単一スキーマの配列・型推論・全キーの required・additionalProperties: false は維持し、既存バリデーターや手書きの oneOf の排他的な意味は変更しません。入力はブラウザー内で処理し、送信・保存しません。

Base58(Bitcoin / Flickr)とBase62(標準 / 小文字優先)のバイト変換は、全ゼロの入力も1バイトにつき1個のゼロ記号(Base58は 1、Base62は 0)で保持します。従来の全ゼロ入力で余分な記号・バイトが付く不具合を修正しており、以前の不正な出力を自動判定・補正はしません。空入力・先頭ゼロを含む通常のデータ・空白の除去は維持します。Base62の整数変換は別の処理で変更していません。 8000 入力はブラウザー内だけで処理し、送信・保存しません。

JSON→XML変換では、@attributes 内の属性値に含まれる &・<・二重引用符をエスケープします。&amp; や &#65; のような入力も文字列として保持し、XMLの実体参照として解釈させません。属性名の検証、XMLで使えない制御文字の扱い、属性の改行・タブの完全な往復は対象外です。入力はブラウザー内だけで処理し、送信・保存しません。

YAML→JSON変換は、ページの起動処理が終わる前に入力欄へ入れたテキストも、起動時に一度だけ現在の入力値から引き継ぎます。初回の変換やインデント変更で入力が消えることを防ぎます。以後の編集・クリア・変換モードの切り替えとパース規則は従来どおりで、入力をサーバーへ送信・保存しません。ページ全体を移動した後の復元や、他のツールの起動前入力を保証するものではありません。

CSV→SQL変換は、ページの起動完了前に編集したCSVと変換オプションを一緒に一度だけ引き継ぎ、SQL・統計・エラーとコピー/クリアの状態へ反映します。最初のオプション操作で起動処理が始まっても、選んだ設定を初期値へ戻しません。以後の編集・オプション変更・クリア・サンプル読み込みとCSVの解析規則は維持します。入力を送信・保存せず、ページ移動後の復元や他のツールの起動前入力は対象外です。

URLビルダーでは、パスの先頭の / を省略してもホスト名と分離して組み立てます。たとえばホスト名 example.com・パス api/v1/users は https://example.com/api/v1/users になります。ポート・ユーザー情報・クエリ・フラグメントの入力と、既存のエンコードやルートパスの扱いは維持します。生成したURLへ自動アクセスせず、入力はブラウザー内だけで処理します。

テキスト・バイナリ変換のデコードでは、4ビットと8ビットのグループが混在する入力を拒否します。すべて8ビット、またはすべて4ビット(2グループで1バイト)にそろえて入力し直してください。混在を自動結合・補正せず、部分的な結果も返しません。スペース・コンマ・改行などの区切り、UTF-8の検査、エンコードは維持します。詳しくは バイナリのグループ幅と修復方法 を参照してください。

JSON→TypeScript生成では、ハイフン・空白・引用符・改行・空文字などのキーを文字列リテラルとして出力し、元の名前を保持します。通常の英数字・_・$の識別子は従来の表記を維持します。ネスト型名は使用可能な識別子にし、空の候補はValue、数字で始まる候補はType接頭辞を使い、同名候補は番号で分離します。interface/type・optionalの選択と既存の推論規則は維持します。ルート型名の任意入力の検証や、配列内の全オブジェクトの型統合は対象外です。入力はブラウザー内だけで処理し、送信・保存しません。

Base85デコードは、ASCII85の末尾1文字と、32ビットの範囲を超えるASCII85・Z85のグループを拒否します。入力を確認して修正すると再変換でき、エラー時は部分出力・コピー・入れ替えを無効にします。ASCII85の正しい端数と z によるゼロ圧縮は維持し、未対応の y 省略形は受理しません。入力はブラウザー内だけで処理します。

cURL→fetch/axios変換は、URL・HTTPメソッド・ヘッダー名/値・JSON以外の本文に含まれる引用符・バックスラッシュ・制御文字をJavaScript文字列として保持します。生成はブラウザー内だけで行い、入力URLへ通信しません。シェル構文の解析範囲、JSON本文の既存の正規化、HTTPリクエストの実行可能性そのものは変更・保証しません。

ページの起動前に編集したcURL入力とfetch/axios・TypeScript設定も、一度だけ一緒に引き継ぎます。初回のモード変更で入力が消えず、その後のクリア・サンプル・再入力も保持します。

テキスト置換は「正規表現」がOFFのとき、検索・置換後の両方を文字列として扱います。置換後の $$・$&・$`・$'・$1・バックスラッシュも入力どおりに残し、全件置換・最初の1件のどちらでも同じ規則です。以前は通常モードでも一部のドル記号をJavaScriptの置換記号として解釈していました。置換記号やキャプチャ参照を使う場合は正規表現をONにしてください。正規表現モードの既存の置換規則・マッチ数・大文字小文字区別・空欄での削除は変更しません。入力はブラウザー内だけで処理し、送信・保存しません。

INIパーサーのセクション名とキーは、__proto__・constructor・toString・hasOwnProperty も通常の入力データとして保持します。INI→JSON、JSON→INI、重複キーの配列化、構造ビューと統計で名前を省略したり、継承元のオブジェクトを変更したりしません。従来の文字列化・コメント・引用符・グローバルキーとセクション名の衝突時の規則は変更せず、INI全体の完全な可逆性は保証しません。入力はブラウザー内だけで処理し、送信・保存しません。

.envパーサーのYAML出力は、値を常に引用符付きの文字列として保持します。3000・true・null・日付・先頭ゼロ・大整数・引用符を、数値や真偽値などへ自動変換しません。TRUE / True / true や __proto__ などのキーも区別し、重複キーは既存の案内どおり最後の値を出力します。従来の引用符なしの出力とは表記が変わります。入力のパース規則・JSON出力・Shell export出力は変更しておらず、.env全体や他形式の完全な可逆性を保証するものではありません。入力はブラウザー内だけで処理し、送信・保存しません。

新しいツールを追加するには

docs/tools-guide.md にテンプレートと手順をまとめています。最小限のチェックリストは .claude/rules/new-tool.md にあります。

技術スタック

  • ランタイム: Cloudflare Workers
  • フレームワーク: TanStack Start (React + TanStack Router)
  • 言語: TypeScript
  • ビルドツール: Vite 7
  • テスト: Vitest(ユニットテスト)、Playwright(E2Eテスト)

セットアップ

必要な環境

  • Node.js 18以上
  • npm

インストール

npm install

開発サーバーの起動

npm run dev

ビルド

npm run build

プレビュー

npm run preview

デプロイ

Cloudflare Workersにデプロイする前に、Cloudflareアカウントを作成し、Wranglerでログインしてください。

npx wrangler login
npm run deploy

テスト

ユニットテスト

# テスト実行
npm test

# ウォッチモード
npm run test:watch

# カバレッジレポート生成
npm run test:coverage

ダミー画像のconversion unit testsは、lockfileに対応する導入済みresvg WASMを使い、PNG/JPEG/WebPの実encoderとdecode後の寸法を確認します。外部assetへの実通信は行わず、既知fontの取得失敗を明示して既存のno-font fallbackを検証します。未知URLはtest failureにします。これは実Robotoの見た目、実CDNの到達性・可変assetの互換性、Cloudflare runtimeの動作を検証したものではありません。詳しくは 画像変換テストのoffline境界 を参照してください。

E2Eテスト

npm run test:e2e

プロジェクト構成

.
├── app/
│   ├── router.tsx        # ルーター設定
│   ├── client.tsx        # クライアントエントリ
│   ├── ssr.tsx           # SSRエントリ
│   ├── start.tsx         # TanStack Start設定
│   ├── styles.css        # 共通スタイル(各ツールCSSをimport)
│   ├── styles/tools/     # 各ツール専用CSS
│   ├── components/       # 共通Reactコンポーネント
│   ├── hooks/            # 共通カスタムフック
│   ├── utils/            # 共通ユーティリティ
│   ├── functions/        # TanStack Start サーバーファンクション
│   └── routes/           # 各ツールのルート(300以上。top.tsxで一覧管理)
├── docs/                 # 開発者向けドキュメント
│   ├── tools-guide.md            # 新ツール追加ガイド
│   └── cloudflare-cache-rules.md # CDNキャッシュ方針
├── .claude/rules/        # AI向けプロジェクトルール
├── tests/
│   ├── unit/             # ユニットテスト (Vitest)
│   └── e2e/              # E2Eテスト(Playwright)
├── package.json
├── tsconfig.json
├── vite.config.ts        # Vite設定
├── vitest.config.ts      # Vitest設定
├── playwright.config.ts  # Playwright設定
└── wrangler.jsonc        # Cloudflare Workers設定

ライセンス

このプロジェクトはMITライセンスの下で公開されています。

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0