リストの並べ替え・重複削除・合成ツール
リストを貼り付け・ドロップ・他ツールから受け取り、その上にレシピを組み立てます。並べ替え、重複削除、絞り込み、番号の振り直し、2つ目のリストとの合成。各ステップは後からでも編集でき、追加するまで何も実行されず、リストがブラウザーの外に出ることはありません。
まだ操作がありません
リストは手つかずです。上から操作を選ぶとここに並び、並べ替え・調整・一時停止ができます。
使い方
リストを持ち込む
貼り付ける、.txtや.csvをページにドロップする、または別のツールから受け取ります。読み込まれるだけで、まだ何も適用されません。
操作を積み重ねる
選んだ操作は結果を上書きせずレシピに積まれます。順序を入れ替えたり、後から設定を変えたり、止めて何をしていたか確かめたりできます。
調整して測る
各ステップが何件を削除・書き換えたかを表示するので、「重複を削除」は確認できる数字になり、勘に頼りません。
持ち出す
コピー、ダウンロード、SQLのIN句やJSON配列への整形、あるいはスイート内の別ツールへそのまま送れます。
一方通行の編集ではなくレシピ
結果はリストと順序付きのステップ集合から導かれます。何も上書きされないので、2番目のステップを考え直すのは1クリックで済み、やり直しは不要です。
言語を尊重する並べ替え
比較はページの言語向けに作った1つのIntl.Collatorを通します。自然な数値順に加え、大文字小文字とアクセントの同一視も選べます。比較のたびに照合器を作り直すことはありません。
2つのリスト、5通りの合成
両方にあるものだけ、Aだけ、どちらも共有しないもの、和集合、あるいは1件ずつ交互に。必要に応じて大文字小文字と空白を同一視できます。
説明できる抽選
シャッフルと抽出はブラウザーの暗号論的乱数を使うため、結果は予測できません。シードを与えれば、それを知る人は誰でもまったく同じ抽選を再現できます。
大きなリストでも固まらない
2万件を超えると処理はバックグラウンドスレッドへ移り、40万文字を超えると推測せずに「実行」を押すのを待ちます。
必要な形で出力
1クリックで引用符付きCSV、JSON配列、SQLのIN句、JavaScript配列、Markdownリスト、HTMLのリスト項目に変換できます。囲み方を自分で決めることもできます。
小さいから速いのではなく、作りが速い
並べ替えはIntl.Collatorを1つ作り、処理全体で使い回します。単純なA-Z順ではその効果は小さく、ブラウザーは既定の照合器をもともとキャッシュしています。効いてくるのは有用なオプションを使うときで、6万行の場合、アクセントを同一視した自然な数値順は使い回した照合器なら約0.7秒、同じオプションを比較のたびにlocaleCompareへ渡すと約9秒かかり、およそ14倍の差になります。さらに2万件を超える処理はWeb Workerへ移るためページはスクロールし続け、取り消し履歴はテキストの複製ではなく手順を保存します。
送る先がないからプライベート
サーバーもアップロードもなく、内容に対する解析も、処理に関わる外部スクリプトもありません。リストはタブのメモリだけに存在し、タブを閉じることが削除ボタンです。
実際に手元にあるリストのために
結果はリストとレシピから導かれるので、どの操作も一方通行にはなりません。ステップを止めればその寄与がそのまま分かり、前に移動させることも、10個前に追加した番号付けの区切り文字を変えることも、直近30件の編集を取り消すこともできます。入力欄で文字を打っても作業が消えることはもうありません。
任意のリストを貼り付けて、必要な操作を積み重ねてください。五十音・数値・長さでの並べ替え、重複の削除または抽出、空項目の除去、空白の削り、大文字小文字の変換、テキストやregexでの絞り込み、番号の振り直し、接頭辞の追加、ランダムな当選者の抽出、2つ目のリストとの合成。各ステップはカードで、並べ替え・調整・停止ができます。
よくある質問
Q複数の操作を積み重ねられますか?+
それがこのツールの中心です。選んだ操作は上から下へ実行されるレシピのカードになります。カードの順序を入れ替え、後から設定を変え、1つ止めて何をしていたか確かめ、削除することもできます。結果は毎回、元のリストから導き直されます。何も上書きされません。
Q入力を編集すると操作が消えますか?+
消えません。リストとレシピは別物です。リストを編集すれば、同じレシピが新しいテキストに対してもう一度動きます。1文字打つだけで出力がリセットされていた旧版の唯一の本当の落とし穴が、これでなくなりました。
Qなぜ item10 が item2 より前に来るのですか?+
単純な文字順は「1」と「2」を1文字ずつ比較するからです。並べ替えカードを1-9に切り替えると自然な数値順になり、item2がitem10より前に来ます。「長さ」は項目の文字数順、Aaは大文字小文字とアクセントを同一視します。
Q2つのリストを比較するには?+
「リストBと合成」の操作を追加すると2つ目の入力欄が現れます。両方のリストにある項目だけ、Aだけ、どちらも共有しないもの、両方の和集合、あるいは交互に並べることができます。大文字小文字と空白の同一視は切り替え式なので、「Ana 」と「ana」を同じ項目として扱えます。
Qシャッフルは抽選に使えるほど公正ですか?+
はい。ブラウザーの暗号論的乱数源に対する棄却サンプリング付きのFisher-Yatesシャッフルなので、どの並びも等しく起こります。よくあるMath.randomの方法とは違います。抽選を証明したい場合はシードを入力してください。事前に公表しておけば、後から誰でもまったく同じ結果を再現できます。
Qどのくらい大きなリストを扱えますか?+
8MBまでのファイル、およそ50万行の通常テキストです。2万件を超えると処理はバックグラウンドスレッドへ移り、40万文字を超えるとツールは自動実行をやめて「実行」を待つので、巨大なものを貼り付けてもタブが固まることはありません。
Q手で直せますか?+
「手で編集」を押すと結果欄が編集可能になり、レシピは一時停止します。手作業の編集には独自の取り消し段階があり、「レシピに戻る」で導出結果に戻ります。最初からこの方法だけで作業し、操作を一切追加しないこともできます。
Qリストはどこかへ送信されますか?+
されません。すべての操作はタブ内で動く普通のJavaScriptです。サーバーは関与せず、内容を運ぶ通信もありません。ページを読み込んだ後はネットワークを切っても動作します。