IT用語「STRIPS」を徹底解説!AIプランニングからRAID技術まで

ITの世界では、同じ言葉が全く異なる分野で使われることがよくあります。「STRIPS」もその一つです。この言葉は、人工知能(AI)の分野ストレージ(データ保存)技術の分野で、それぞれ重要な意味を持っています。

この記事では、初心者の方にも分かりやすく、2つの「STRIPS」について解説していきます。文脈によって意味が全く異なるため、この機会に両方の知識を深めていきましょう。

1. 人工知能(AI)におけるSTRIPS

AIの分野におけるSTRIPSは、「Stanford Research Institute Problem Solver」の頭文字を取ったもので、1971年にスタンフォード研究所(現在のSRIインターナショナル)のリチャード・ファイクスとニルス・ニルソンによって開発された自動計画システム、およびそのための形式言語を指します。 これは、AIが「ある状態」から「目標の状態」に到達するための行動計画を自動的に立てるための、古典的で非常に重要な考え方です。

例えば、「ロボットが部屋Aにある荷物を部屋Bに運ぶ」という課題があったとします。STRIPSは、この課題を解決するための一連の行動(例:「部屋Aへ移動する」「荷物を掴む」「部屋Bへ移動する」「荷物を置く」)を順序立てて計画します。

STRIPSの基本的な仕組み

STRIPSは、問題を以下の3つの要素で定義し、解決策を導き出します。

要素説明
状態 (State)世界の状況を表す事実の集まりです。「ロボットは部屋Aにいる」「荷物は部屋Aにある」「ロボットの手は空いている」などがこれにあたります。計画開始時の状態を初期状態 (Initial State)と呼びます。
ゴール (Goal)達成したい目標の状態です。「荷物が部屋Bにある」といった、最終的に目指すべき状況を定義します。
アクション (Action)状態を変化させるための行動です。各アクションは、さらに以下の2つの要素で定義されます。
  • 事前条件 (Preconditions): そのアクションを実行するために満たされているべき条件。(例:「荷物を掴む」ためには「ロボットの手が空いている」必要がある)
  • 効果 (Effects): アクションを実行した結果、状態がどう変化するか。(例:「荷物を掴む」と「ロボットの手は空いていない」「荷物はロボットが持っている」状態になる)

Pythonによる簡単なコード例

STRIPSの考え方をPythonで表現すると、以下のようになります。これは、アクションを定義するクラスの簡単な例です。

class Action: def __init__(self, name, preconditions, effects): self.name = name self.preconditions = set(preconditions) self.effects = set(effects) def is_achievable(self, state): """現在の手順でアクションが実行可能か""" return self.preconditions.issubset(state) def apply(self, state): """アクションを適用し、新しい状態を返す""" if self.is_achievable(state): # effectsには追加される命題と削除される命題('not'を接頭辞につけるなど)が含まれる new_state = state.copy() add_effects = {eff for eff in self.effects if not eff.startswith('not ')} del_effects = {eff.replace('not ', '') for eff in self.effects if eff.startswith('not ')} new_state.difference_update(del_effects) new_state.update(add_effects) return new_state return None
# 例:荷物を掴むアクション
# 初期状態: {'ロボットは部屋Aにいる', '荷物は部屋Aにある', 'ロボットの手は空いている'}
pickup_action = Action( name="pickup_box", preconditions=["ロボットの手は空いている", "荷物は部屋Aにある"], effects=["not ロボットの手は空いている", "ロボットが荷物を持っている"]
) 

このように、STRIPSはAIが論理的に行動計画を立てるための基礎的な枠組みを提供し、その後の多くのプランニングシステムに影響を与えています。

2. ストレージ技術におけるストライピング (Striping)

一方、ストレージ技術の文脈で「STRIPS」という言葉が使われる場合、それはAIとは全く関係なく、「ストライピング (Striping)」を指すことがほとんどです。 ストライピングは、複数の物理的なディスク(HDDやSSD)をまとめて、1つの大きな仮想ディスクとして扱うための技術であるRAID (Redundant Array of Independent Disks) の構成の一つです。

具体的には、データを細かく分割し、複数のディスクに同時に分散して書き込む技術のことを指します。この方式は「RAID 0」とも呼ばれます。

ストライピングの仕組みと特徴

ストライピングでは、例えば「A, B, C, D」というデータを保存する場合、ディスク1に「A」と「C」を、ディスク2に「B」と「D」を、というようにデータを交互に書き込みます。 これにより、1つのデータを書き込む際に複数のディスクが同時に動作するため、読み書きの速度が大幅に向上します。

メリットデメリット
高速なアクセス速度
データを複数のディスクに分散して同時に読み書きするため、処理速度が非常に速くなります。 ディスクの本数を増やすほど、理論的には速度が向上します。
耐障害性がない
データを保護する仕組み(冗長性)がないため、構成しているディスクのうち1台でも故障すると、全てのデータが読み取れなくなってしまいます。
ディスク容量を最大限に活用
複数のディスクの合計容量をそのままデータ領域として利用できるため、無駄がありません。
故障率の上昇
構成するディスクの台数が増えれば増えるほど、いずれかのディスクが故障する確率は高まります。

この特性から、RAID 0(ストライピング)は、速度が最優先されるが、データの消失が許容できる一時的な作業領域や、頻繁にバックアップを取ることを前提としたシステムなどで利用されます。 データの安全性を高める「RAID 1(ミラーリング)」など、他のRAIDレベルと組み合わせて使われることもあります。

まとめ

「STRIPS」という言葉は、文脈によって全く異なる意味を持つことを解説しました。

  • AIの分野では: 目標達成のための行動計画を自動生成するシステム (Stanford Research Institute Problem Solver) を指します。
  • ストレージの分野では: データを複数ディスクに分散して高速化するストライピング (RAID 0) という技術を指します。

ITの世界では、このように一つの用語が複数の意味で使われることが珍しくありません。どちらの意味で使われているのかを正しく理解することが、コミュニケーションを円滑にし、技術への理解を深める第一歩となります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です