RosenavRosenav

開発ログ

Rosenav テキスト類似度・差分ツールの完全なイテレーション記録 —— アルゴリズムの調整も、使い勝手の改善も、すべてここに記録しています。

345tool エンジニアリングチーム • 最終更新 2026年6月13日

2026年6月13日

EEAT ホームページ改修 —— 類似度チェックを中心機能に

トップページの情報階層を整理し、コサイン類似度チェックを最初に提示するようにしました。以前は「ツールボックスの索引」のような構成でしたが、改修後はまず「このツールがどんな課題を解決するのか」に答え、そのあとで具体的な機能を示します。

11 段階の類似度解釈システム —— より細かな判断材料

以前はパーセンテージを示すだけで、ユーザー自身が「70% は似ているのか」を推し量る必要がありました。現在は 0〜100% を 11 の区間に分け、それぞれに平易な解説を添えているため、結果をそのまま判断に使えます。

WebApplication JSON-LD の拡張 —— キーワード網羅性の向上

構造化データのフィールドを補い、検索エンジンがこのページをチュートリアル記事ではなくオンラインツールとして正確に理解できるようにしました。

本番デプロイ —— Nginx・サイトマップ・GA4

正式なデプロイを完了しました:Nginx の設定、サイトマップの送信、GA4 の匿名統計の導入、そしてモバイル表示を項目ごとに確認しました。

2026年6月10日

escapeHtml の不具合修正 —— 「動いているように見える」空操作

差分結果のエスケープ関数が実際には機能していませんでした:エンティティを符号化してから再び復号してしまい、特殊文字がある場合に描画が壊れることがありました。ほとんどの普通のテキストは正常に表示されるため、非常に見つけにくい不具合でした。修正後は正しいエンティティ処理になっています。

重複削除パネルの高さ同期 —— syncDedupHeight

入力欄と出力欄で内容の長さが大きく異なると高さがずれていました。高さ同期のロジックを追加し、二つのパネルが常に揃うようにして、視線が上下に飛ぶ負担を減らしました。

既定タブの切り替えと文字数上限の検証

既定で開くタブを類似度チェックに変更し(以前はテキスト差分)、入力長の上限に対する強制検証も追加して、長すぎるテキストでページが重くならないようにしました。

2026年6月5日

コサイン類似度の公開 —— TF ベクトル化と色によるフィードバック

中核機能の実装:二つのテキストを単語頻度ベクトルに変換し、そのなす角のコサインを計算し、プログレスバーと色で類似の度合いを示します。これによりツールは「差分比較」から「類似度 + 差分」の二つの能力を持つようになりました。

3 タブのインターフェース —— 差分・類似度・重複削除と並べ替え

三種類の機能を同じ画面に積み上げるのではなく、三つのタブにまとめました。ユーザーは一度に一つの作業だけに向き合えばよく、画面の複雑さが大幅に下がります。

テキストエリアの操作性改善 —— 入力と出力の分離

出力結果は独立した読み取り専用パネルに移し、誤編集を防ぎました。入力欄にはプレースホルダーのヒントと文字数を追加し、初めて使う人が何を入れればよいか迷わないようにしました。

2026年6月3日

LCS 差分アルゴリズム —— 動的計画法による行単位の比較

動的計画法で最長共通部分列を求め、二つのテキストの最適な対応関係を導き出し、対応しなかった部分を追加・削除として示します。これがテキスト差分比較の計算基盤です。

CSS コンポーネント設計 —— テキストツールの視覚言語

パネル、タブ、ボタンの状態、統計バーといった共通のコンポーネントスタイルを整備しました。統一された視覚言語により、以降の機能追加で毎回デザインを作り直す必要がなくなります。

ブランド転換 —— パスワードチェッカーから Rosenav へ

このドメインはもともとパスワード強度チェックツールに使われていました。機能の重心がテキスト処理へ移るにあたり、ブランドの位置づけと名称を再定義し、既存の機能も新しいツール群に統合しました。

2026年6月1日

アルゴリズムの選定 —— LCS・コサイン類似度・単語頻度

コードを書き始める前に技術方針を固めました:差分比較には LCS、全体の類似度にはコサイン類似度と単語頻度ベクトルを使います。どちらも機械学習モデルに依存せず、純粋な数学計算だけでブラウザ内で完結します。

分かち書きの設計 —— CJK 言語に対応する Unicode 処理

英語は空白と句読点で単語に分けられますが、中国語・日本語・韓国語には単語間の空白がありません。そこで、CJK の文字範囲を認識して 1 文字ずつ処理し、ラテン文字のテキストは単語単位で分割するようにしました。これにより中国語の利用者も妥当な類似度結果を得られます。

ゼロサーバー構成 —— プライバシー優先という設計の前提

最初の一行から決めていました:バックエンドは設けない。テキストはブラウザ内だけで処理し、アップロードも保存も痕跡も残しません。これはプライバシーへの約束であると同時に、オフラインでも動作できる前提でもあります。

お問い合わせ

私たちは 345tool チームです

345tool は、純粋にクライアント側で動作し、プライバシーを最優先する高品質な Web ツールを作る独立開発チームです。Rosenav もその一つで、同じ原則に従っています:開けばすぐ使え、データを収集せず、不要な登録も求めません。

私たちのチームについて詳しく見る