シーケンス(シーケンス)
順序のある要素列の総称。プログラミングのデータ構造、DAW の MIDI シーケンス、UML シーケンス図、DNA 配列、データベース連番等で使われる多義語。
概要
シーケンス(Sequence)は、順序のある要素列を指す多義語で、文脈により全く異なる意味を持つ:
- プログラミングのデータ構造: 順序付きコレクション(Python list / tuple、JavaScript Array、Rust Vec、Go slice)
- MIDI / DAW のシーケンス: 音符イベントの時系列、シーケンサーで再生
- UML シーケンス図: オブジェクト間のメッセージ送受信を時間軸で可視化
- DNA / RNA 配列: 塩基(A/T/G/C)の連続、ゲノム解析の基本単位
- データベースのシーケンス: PostgreSQL の SERIAL / SEQUENCE、自動連番生成
- 数学: 数列、フィボナッチ数列等
2026 年現在、最も頻出はプログラミングの「シーケンス型 + Iterator パターン」で、関数型プログラミング(map / filter / reduce / find)が言語横断的な標準操作となっている。
言語別シーケンス型
Python
# シーケンス型
my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3)
my_range = range(1, 10)
my_string = "Hello"
# 関数型操作
squared = [x**2 for x in my_list]
filtered = list(filter(lambda x: x > 2, my_list))
total = sum(my_list)
# Iterator
for item in my_list:
print(item)
JavaScript / TypeScript
// シーケンス型
const arr: number[] = [1, 2, 3, 4, 5];
// 関数型操作
const squared = arr.map(x => x ** 2);
const filtered = arr.filter(x => x > 2);
const sum = arr.reduce((a, b) => a + b, 0);
// 2026 年標準: Iterator Helpers
const result = arr.values()
.filter(x => x > 1)
.map(x => x * 2)
.toArray();
Rust
let v: Vec<i32> = vec![1, 2, 3, 4, 5];
let squared: Vec<i32> = v.iter().map(|x| x * x).collect();
let total: i32 = v.iter().sum();
// Iterator chain
let result: Vec<i32> = v.iter()
.filter(|&&x| x > 2)
.map(|x| x * 10)
.collect();
Go
v := []int{1, 2, 3, 4, 5}
// for range
for _, x := range v {
fmt.Println(x)
}
// Go 1.23+ iter パッケージ
import "iter"
seq := slices.Values(v)
MIDI シーケンス
DAW で MIDI イベントを時系列に並べる。Note On / Note Off / Velocity / Pitch Bend / CC(Control Change)等のメッセージ列で構成。Standard MIDI File(.mid)が業界標準形式。
00:00:00 Note On C4 Velocity 100
00:00:00 Note On E4 Velocity 80
00:00:00 Note On G4 Velocity 90
00:00:01 Note Off C4 / E4 / G4
UML シーケンス図
オブジェクト間のメッセージ送受信を時間軸で可視化。Mermaid / PlantUML で記述可。
sequenceDiagram
participant User
participant Web
participant DB
User->>Web: POST /login
Web->>DB: SELECT user
DB-->>Web: user data
Web-->>User: JWT token
DNA 配列
ATCG(DNA)/ AUCG(RNA)の文字列。Python BioPython で操作。
from Bio.Seq import Seq
dna = Seq("ATGCGTACGTAGCTAGCTAGCAT")
print(dna.translate()) # タンパク質配列に変換
print(dna.complement()) # 相補鎖
PostgreSQL SEQUENCE
連番生成オブジェクト。SERIAL / IDENTITY カラムで自動利用。
CREATE SEQUENCE order_id_seq START 1000 INCREMENT 1;
CREATE TABLE orders (
id BIGINT DEFAULT nextval('order_id_seq') PRIMARY KEY,
...
);
-- 値取得
SELECT nextval('order_id_seq'); -- 1001
SELECT currval('order_id_seq'); -- 1001(現在値)
Iterator パターン(言語横断)
| 言語 | Iterator API |
|---|---|
| Python | iter() / next()、Generator |
| JavaScript | Symbol.iterator、Iterator Helpers (2024) |
| Rust | Iterator trait、.iter() / .into_iter() |
| Go | iter.Seq[T](1.23+) |
| Java | Iterator<T>、Stream API |
| C# | IEnumerable<T>、LINQ |
| Ruby | Enumerable モジュール |
性能特性
| 操作 | Python list | JS Array | Rust Vec | Go slice |
|---|---|---|---|---|
| 末尾追加 | O(1) | O(1) | O(1) | O(1) |
| 先頭追加 | O(N) | O(N) | O(N) | O(N) |
| ランダム参照 | O(1) | O(1) | O(1) | O(1) |
| 検索 | O(N) | O(N) | O(N) | O(N) |
| ソート | O(N log N) | O(N log N) | O(N log N) | O(N log N) |
PC 自作 / 個人開発との接点
- データ処理: Pandas / Polars で大規模シーケンス操作
- DTM: FL Studio / Ableton Live でMIDI シーケンス制作
- ゲノム解析: BioPython で DNA シーケンス処理
- ML 訓練: PyTorch DataLoader で訓練データシーケンス管理
関連用語との違い
| 用語 | 違い |
|---|---|
| 配列 | より広い概念、シーケンスは順序付き |
| リスト | 連結リスト等、シーケンスは抽象 |
| ストリーム | 遅延評価、シーケンスは即時 |
| イテレータ | アクセス手段、シーケンスはデータ |
よくある質問
Q1: Python list と tuple、どちらを使う? A: 可変が必要なら list、不変なら tuple。tuple は関数の戻り値・dict のキー使用可・スレッドセーフ。
Q2: JavaScript の新 Iterator Helpers は使うべき? A: 2024-2025 年 Chrome / Firefox / Safari で安定対応。Lodash 代替として急速に普及、新規プロジェクトでは積極的に使うべき。
Q3: PostgreSQL SEQUENCE は分散環境で安全? A: 単一 DB 内では安全。マルチマスター / シャーディング環境では UUID / ULID / Snowflake ID の方が確実。
まとめ
- 順序のある 要素列 の総称、プログラミングが最頻文脈
- 2026 年は Iterator パターン + 関数型操作 が言語横断標準
- 文脈別に データ構造 / MIDI / UML / DNA / DB 等で多義的に使われる