ソフトウェア
中級
スライス(スライス)
データを部分抽出する操作。Python / JavaScript の配列スライス、Mermaid Slice、3D プリント Slicing、Web デザインの画像分割等で使われる。
0 回閲覧
0 いいね
2026/5/2 更新
関連タグ
Python
JavaScript
3Dプリント
Pandas
OrcaSlicer
概要
スライス(Slice)は、データやオブジェクトの一部を抽出する操作を指し、文脈により多義的に使われる:
- 配列スライス: Python / JavaScript / Ruby 等の配列・文字列の部分抽出
- DataFrame スライス: Pandas / Polars / NumPy の行 / 列抽出
- 3D プリント スライシング: 3D モデル → レイヤー単位の G-code 生成
- 画像スライス: Web デザインで大画像を分割
- 時系列スライス: 時間範囲指定でデータ抽出
- GPU テンソルスライス: PyTorch / TensorFlow の部分計算
2026 年現在、最も頻出は配列スライスとデータ分析の DataFrame スライスで、AI / ML パイプラインでも標準操作となっている。
言語別スライス構文
Python
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr[2:5] # [2, 3, 4](start:stop)
arr[::2] # [0, 2, 4, 6, 8](step=2)
arr[::-1] # [9, 8, 7, ..., 0](逆順)
arr[-3:] # [7, 8, 9](後ろ 3 つ)
# 文字列も同様
s = "Hello"
s[1:4] # "ell"
JavaScript / TypeScript
const arr = [0, 1, 2, 3, 4, 5];
arr.slice(2, 5); // [2, 3, 4]
arr.slice(-2); // [4, 5]
arr.slice(); // 浅いコピー全体
// 不変版(ES2023+)
arr.toSpliced(2, 1); // 削除版を返す(元配列は不変)
// 文字列
"Hello".slice(1, 4); // "ell"
Pandas DataFrame
import pandas as pd
df = pd.DataFrame({"A": [1,2,3], "B": [4,5,6], "C": [7,8,9]})
df.iloc[0:2] # 行 0-1
df.iloc[:, 0:2] # 列 A-B
df.loc["row1":"row3"] # ラベルベース
df.loc[df["A"] > 1] # 条件抽出(ブールマスク)
NumPy
import numpy as np
a = np.arange(20).reshape(4, 5)
a[1:3, 2:4] # 2x2 部分行列
a[::2, ::2] # ステップスライス
PyTorch / TensorFlow
import torch
t = torch.arange(24).reshape(2, 3, 4)
t[0] # 最初のバッチ
t[:, 1, :] # 全バッチの 2 番目の行
t[..., -1] # 最後の次元の最後
3D プリント スライシング
3D モデル(STL / 3MF)→ 1 レイヤー(0.08-0.4mm)ごとに分割 → G-code 生成。
| ソフト | 形態 | 特徴 |
|---|---|---|
| OrcaSlicer | OSS | 2026 年の業界標準 |
| PrusaSlicer | OSS | Prusa MK4S / XL 用 |
| Bambu Studio | 公式 | Bambu Lab P1S / X1C / A1 |
| Cura | OSS | Ultimaker 系 |
| ChiTuBox | 商用 $169 | レジン系 |
| Lychee Slicer | 商用 $60/年 | レジン特化 |
スライシングの主要設定
| 設定 | 標準値 | 用途 |
|---|---|---|
| レイヤー高さ | 0.2mm | 標準 PLA |
| ノズル温度 | 215°C | PLA |
| インフィル密度 | 15-20% | 強度 vs 速度 |
| ウォール数 | 3 | 強度 |
| プリント速度 | 100-300mm/s | Klipper で高速化 |
| Adaptive Layer | ON | 凹凸面のみ薄レイヤー |
Web デザインの画像スライス
CSS Sprites / SVG / フィレット切り抜き等で大画像を効率配信。HTTP/2 普及で重要性は減少したが、HTML email / 一部の SaaS UI で残存。
/* CSS Sprite の例 */
.icon-home {
background-image: url('sprite.png');
background-position: -0px -32px;
width: 32px; height: 32px;
}
データ分析での頻出パターン
# 直近 30 日のデータ
df_recent = df[df['date'] >= pd.Timestamp.now() - pd.Timedelta(days=30)]
# 上位 10 行
df.head(10)
df.iloc[:10]
# 偶数行のみ
df.iloc[::2]
# 最初の 80% を train、残り 20% を test
n = len(df)
train, test = df.iloc[:int(n*0.8)], df.iloc[int(n*0.8):]
PC スペック要件
- 小規模配列スライス: 任意 PC で十分
- 大規模 DataFrame(GB 級): 64 GB RAM 推奨
- 3D プリントスライシング(複雑モデル): Ryzen 7 9700X / 32 GB RAM
- GPU テンソルスライス: RTX 4070 SUPER + 64 GB RAM
関連用語との違い
| 用語 | 違い |
|---|---|
| インデックス | 単一要素アクセス、スライスは範囲 |
| フィルタ | 条件抽出、スライスは位置指定 |
| マッピング | 全要素変換、スライスは選択 |
| 切り取り(Cut) | 元データから削除、スライスは非破壊 |
よくある質問
Q1: Python の [start:stop:step] で start 省略は何?
A: 0 の意。arr[:5] は arr[0:5] と同じ。stop 省略は配列末尾、step 省略は 1。
Q2: JavaScript で配列を浅くコピーする最速の方法は?
A: arr.slice() か [...arr] がほぼ同等。スプレッド構文の方が読みやすく、一般的なコード推奨。
Q3: 3D プリントのスライシングで一番品質に影響する設定は? A: レイヤー高さ。0.2mm(標準)→ 0.08mm(高精細)で品質劇的向上、印刷時間 2.5 倍。Adaptive Layer Height で「凹凸面だけ薄く」が現実的折衷案。
まとめ
- データの 部分抽出 操作、配列 / DataFrame / 3D / 画像で多用
- 言語別構文(Python
[:]、JSslice())を覚えれば応用が利く - 3D プリントは OrcaSlicer / PrusaSlicer がスライシング主軸