Line Sorter

テキスト行をアルファベット順・逆順・文字数順・ランダムに並べ替え

サンプルを試す

入力行

並べ替え後の行

ローカルで実行 · シークレットの貼り付けも安全
並べ替え後の行がここに表示されます…

行ソートとは?

行ソートとは、テキストブロックの各行を特定のルール(アルファベット順、逆順、行の長さ、またはランダムシャッフル)に従って並べ替える処理です。ログファイル、CSVデータ、設定ファイルのリスト、その他の順序が重要なプレーンテキストコンテンツを扱う際に、行をオンラインでソートすることはよくあるタスクです。この操作は、テキストを改行文字で分割し、生成された配列に比較関数を適用して、並べ替えた行を結合します。

ほとんどのプログラミング言語はデフォルトで辞書順比較(文字のUnicodeコードポイントによる比較)を使って文字列をソートします。これはつまり、大文字が小文字より前に来る(「Banana」が「apple」より前)こと、数字が文字より前になることを意味します。ロケール対応のソート(自然ソートまたは照合順序とも呼ばれる)は、言語固有のルールを適用することでこれを修正します。JavaScriptの`localeCompare()`、Pythonの`locale.strxfrm()`、`LC_COLLATE`を指定したPOSIXの`sort`コマンドはいずれもロケール対応の順序付けを提供します。

文字数順のソートは、リスト内の最短または最長のエントリを見つけたり、ログ出力の外れ値を特定したり、複雑さの順に項目を整理したりする際に便利です。逆順ソートは既存の行の順序を反転させるだけで、Z-Aアルファベット順のソートとは異なります。ランダムシャッフルは各行にランダムなソートキーを割り当て、実行するたびに異なる順序を生成します。同じ入力に対してモードを切り替えることで、スクリプトを個別に作成するよりも高速に処理できます。

なぜこの行ソートツールを使うのか?

テキストを貼り付けてソートモードを選ぶだけで、すぐに結果が得られます。コマンドラインのセットアップ、スクリプトファイル、パッケージのインストールは不要です。

即時ソート
入力または貼り付けと同時に結果が表示されます。6種類のソートモードを切り替えながら、再実行なしで出力を比較できます。
🔒
プライバシー重視の処理
すべてのソート処理はJavaScriptを使ってブラウザ内で実行されます。テキストはデバイス上に留まり、サーバーへのアップロードもログへの記録も行われません。
🔀
6種類のソートモード
A-Z、Z-A、文字数の少ない順、文字数の多い順、逆順、ランダムシャッフル。1つの入力で、最もよく使われる行の並べ替えタスクに対応できます。
📋
アカウント不要
ページを開くだけで並べ替えを開始できます。サインアップ、拡張機能、デスクトップアプリは一切不要で、モダンブラウザを搭載した任意のデバイスで動作します。

行ソートツールの活用事例

フロントエンド開発
CSSクラスのリスト、インポート文、i18n翻訳キーをアルファベット順にソートします。一貫した順序付けにより、バージョン管理でのマージコンフリクトが減り、コードレビューが迅速になります。
バックエンドエンジニアリング
コミット前に`package.json`、`requirements.txt`、`go.mod`の依存関係リストを整理します。`CREATE TABLE`文の作成やスキーマの差分比較時に、SQLの列名をソートします。
DevOpsとインフラ
`.env`ファイルの環境変数名、KubernetesのConfigMapエントリ、Terraformの変数ブロックをソートします。アルファベット順にすることで、レビュー時に重複や漏れを発見しやすくなります。
QAとテスト自動化
テスト出力ログをタイムスタンプまたはメッセージでソートして、障害を素早く特定します。テスト入力データをランダムシャッフルして、アプリケーションの動作が挿入順序に依存していないか検証します。
データエンジニアリング
スキーママイグレーションスクリプトを作成する前に、CSVのヘッダーや列リストを整理します。データパイプラインで切り捨てられた行や異常に長い値を見つけるために、データサンプルの行を文字数順にソートします。
学生・学習者
語彙リスト、参考文献、学習ノートをアルファベット順にソートします。別のアプリをインストールせずに、フラッシュカードの行をシャッフルしてランダムな復習セッションを実施できます。

行ソートモードのリファレンス

このツールは6種類のソートモードをサポートしています。以下の表は各モードの説明、使用する比較方法、および入力リスト(apple、banana、cherry、date、fig)に対するサンプル結果を示しています。

モード説明JSメソッド出力例
A-ZAlphabetical ascendinglocaleCompare()apple, banana, cherry
Z-AAlphabetical descendinglocaleCompare() reversedcherry, banana, apple
Length (short)Shortest line firsta.length - b.lengthfig, date, apple, banana
Length (long)Longest line firstb.length - a.lengthbanana, apple, date, fig
ReverseFlip line order, no reorderingArray.reverse()Last line becomes first
RandomRandomized comparator (biased)Math.random() - 0.5Different every run

内部で使われているソートアルゴリズム

JavaScriptで`Array.sort()`を呼び出すと、V8エンジン(Chrome、Node.js)は2019年以降Timsortを使用します。他のランタイムは異なるアルゴリズムを使います。以下の表は、各言語の標準ライブラリで使われる代表的なソートアルゴリズムを比較したものです。いずれも、通常の入力(10万行未満)においてこのツールの行ソート処理を1ミリ秒以内に完了します。

アルゴリズム使用言語時間計算量備考
TimsortPython, Java (Arrays.sort)O(n log n)Stable, fast on partially sorted data
QuicksortC stdlib, V8 (older)O(n log n)In-place, unstable by default
Merge sortMost stable-sort implementationsO(n log n)Stable, predictable, uses extra memory
IntrosortC++ std::sort, .NETO(n log n)Hybrid: quicksort + heapsort fallback
Radix sortFixed-length keys, integersO(nk)Non-comparative, linear for short keys

コード例

JavaScript、Python、Go、コマンドラインで行をプログラム的にソートする方法を示します。各例では、アルファベット順、文字数順、逆順のソートを扱っています。

JavaScript
const text = `banana
apple
cherry
date
fig`

// Sort A-Z (locale-aware)
const az = text.split('\n').sort((a, b) => a.localeCompare(b)).join('\n')
// → "apple\nbanana\ncherry\ndate\nfig"

// Sort by line length, shortest first
const byLen = text.split('\n').sort((a, b) => a.length - b.length).join('\n')
// → "fig\ndate\napple\nbanana\ncherry"

// Reverse line order (no alphabetical sorting)
const reversed = text.split('\n').reverse().join('\n')
// → "fig\ndate\ncherry\napple\nbanana"

// Remove duplicates and sort
const unique = [...new Set(text.split('\n'))].sort().join('\n')
Python
text = """banana
apple
cherry
date
fig"""

lines = text.splitlines()

# Sort A-Z (case-insensitive)
az = sorted(lines, key=str.lower)
# → ['apple', 'banana', 'cherry', 'date', 'fig']

# Sort by line length
by_len = sorted(lines, key=len)
# → ['fig', 'date', 'apple', 'banana', 'cherry']

# Reverse original order
rev = lines[::-1]
# → ['fig', 'date', 'cherry', 'apple', 'banana']

# Shuffle randomly
import random
random.shuffle(lines)  # modifies in place
Go
package main

import (
	"fmt"
	"sort"
	"strings"
)

func main() {
	text := "banana\napple\ncherry\ndate\nfig"
	lines := strings.Split(text, "\n")

	// Sort A-Z
	sort.Strings(lines)
	fmt.Println(strings.Join(lines, "\n"))
	// → apple\nbanana\ncherry\ndate\nfig

	// Sort by length
	sort.Slice(lines, func(i, j int) bool {
		return len(lines[i]) < len(lines[j])
	})
	fmt.Println(strings.Join(lines, "\n"))
	// → fig\ndate\napple\nbanana\ncherry
}
CLI (bash)
# Sort lines A-Z
sort file.txt

# Sort lines Z-A (reverse)
sort -r file.txt

# Sort numerically (first field)
sort -n data.txt

# Sort by line length (awk + sort + cut)
awk '{ print length, $0 }' file.txt | sort -n | cut -d' ' -f2-

# Shuffle lines randomly
shuf file.txt          # GNU coreutils
sort -R file.txt       # alternative (not truly uniform)

# Sort and remove duplicates
sort -u file.txt

よくある質問

A-Zソートと自然ソートの違いは何ですか?
A-Zソート(辞書順)はUnicodeコードポイントで文字を比較します。つまり「item10」は「item2」より前にソートされます。文字「1」のコードポイントが「2」より小さいためです。自然ソートは埋め込まれた数字を数値として扱うため、「item2」が「item10」より前になります。このツールは`localeCompare()`によるロケール対応の辞書順ソートを使用しており、アクセント文字を正しく処理しますが、数字の自然ソートは行いません。
行をソートする際にテキストはサーバーに送信されますか?
送信されません。すべてのソート処理はJavaScriptの`Array.sort()`メソッドを使ってブラウザ内で実行されます。テキストはデバイスから外に出ることはありません。DevToolsのNetworkタブを開いてテキストを貼り付けてソートする際にリクエストが発生しないことを確認して検証できます。
このツールは何行まで処理できますか?
数万行でも問題なく動作します。V8のTimsortの実装では、現代のハードウェアで10万行を100ミリ秒以内に処理できます。数メガバイトを超えるファイルには、UNIXの`sort`コマンドのようなCLIツールがより効率的です。ディスクベースのマージソートと複数スレッドを活用できるためです。
大文字と小文字を区別しないソートはどのように機能しますか?
このツールは`{ sensitivity: 'base' }`オプションを指定した`String.localeCompare()`を使用しており、比較で大文字と小文字を区別しません。「Apple」と「apple」は別々のグループではなく、まとめてソートされます。デフォルトの`localeCompare()`は大文字と小文字を区別するため、区別しない動作にするには明示的なオプションが必要です。大文字が先に来る厳密な大文字小文字区別ソートが必要な場合は、`-f`フラグなしのUNIX `sort`コマンドがその動作を提供します。
行のソートと重複の削除を同時に行えますか?
このツールは行をソートしますが、重複の削除は行いません。重複行を削除するには、同じカテゴリの重複行削除ツールをご利用ください。まずここでテキストをソートしてから、その結果を重複削除ツールに貼り付けることで、きれいで一意なソート済みリストを作成できます。
逆順ソートとZ-Aソートの違いは何ですか?
逆順ソートは元の行の順序を反転させます。最後の行が最初になり、最後から2番目が2番目になるといった具合です。アルファベット比較は行われません。Z-Aソートは元の順序に関わらず、行を降順のアルファベット順に並べます。入力がすでにA-Z順にソートされている場合、逆順とZ-Aは同じ結果になりますが、ソートされていない入力に対しては結果が異なります。
特定の列やフィールドで行をソートするにはどうすればよいですか?
このツールは行全体の内容でソートします。特定の列(例:タブ区切りファイルの2番目のフィールド)でソートするには、`-k`フラグを使ったUNIX `sort`コマンドを使用します:`sort -t$'\t' -k2,2 file.txt`。Pythonではキー関数を使います:`sorted(lines, key=lambda x: x.split('\t')[1])`。