ソフトウェア
中級

シーケンス(シーケンス)

順序のある要素列の総称。プログラミングのデータ構造、DAW の MIDI シーケンス、UML シーケンス図、DNA 配列、データベース連番等で使われる多義語。

0 回閲覧
0 いいね
2026/5/2 更新
関連タグ
プログラミング
Iterator
Python
JavaScript
MIDI

概要

シーケンス(Sequence)は、順序のある要素列を指す多義語で、文脈により全く異なる意味を持つ:

  1. プログラミングのデータ構造: 順序付きコレクション(Python list / tuple、JavaScript Array、Rust Vec、Go slice)
  2. MIDI / DAW のシーケンス: 音符イベントの時系列、シーケンサーで再生
  3. UML シーケンス図: オブジェクト間のメッセージ送受信を時間軸で可視化
  4. DNA / RNA 配列: 塩基(A/T/G/C)の連続、ゲノム解析の基本単位
  5. データベースのシーケンス: PostgreSQL の SERIAL / SEQUENCE、自動連番生成
  6. 数学: 数列、フィボナッチ数列等

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
Pythoniter() / next()、Generator
JavaScriptSymbol.iterator、Iterator Helpers (2024)
RustIterator trait、.iter() / .into_iter()
Goiter.Seq[T](1.23+)
JavaIterator<T>、Stream API
C#IEnumerable<T>、LINQ
RubyEnumerable モジュール

性能特性

操作Python listJS ArrayRust VecGo 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 等で多義的に使われる
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/2