マニュアルや技術書を読んでいると、データの「処理」に関係するさまざまな言葉を目にする。並行、並列、分散……。これらは同じ処理でもどのような違いがそれぞれあるものなのか。
日本のIT業界で「並行」としている言葉は、IT英語で「concurrent」と言う。concurrentを「Dictionary.com」で調べると、「Acting in conjunction, cooperating.(同時に行なうこと、協力すること)」とある。つまり、複数の作業を同時期に実行することだ。たとえば、1つのCPUやプログラムでいくつものタスクを達成しなければならない場合、各タスクの作業を細分化して交互に処理していくことで、結果的に全タスクを「効率的にこなす」のが狙いだ。一見、同時にいくつもの作業をしているようで、実際は小さな作業を順々に行なっているので「論理的並行(logically concurrent)」とも呼ばれる。OSのマルチタスク(CPUの処理時間を極めて短い単位に分割し、順番に複数のアプリケーションソフトに割り当てる)もconcurrentな処理の1つと考えられる。
一方、1つの大きなタスクを達成するための作業を分担することで効率化を図る処理もある。日本語で「並列」、IT英語では「parallel」と呼ばれている処理だ。parallelには「Being an equal distance apart everywhere.(常に等間隔で離れている状態=平行線)」という意味がある。この理屈が転じてコンピュータサイエンスでは、1つの大きなタスクを達成するために複数のシステム、あるいはCPUなどが同時に作業していることを表す言葉となっている。複数の装置による実行が「時間的に重なりあって行なわれる」ことから「物理的並行(physically concurrent)」とも言われる。こうすることで「高速化を図る」ことがparallelの狙いだ。
これと似た処理をネットワークを利用して行なうのが、「分散」──IT英語で「distributed」だ。distributeは「To spread or diffuse over an area; scatter.(ある範囲に広めるか拡散すること; ばらまくこと)」という意味がある。すなわち、1つの大きなタスクを達成するための作業を細かく分け、ネットワーク上のいくつものコンピュータに割り振って実行する処理状態を表している。担当する作業はコンピュータによって異なっても、最終目標は共通している。たとえば、膨大な計算量を要する宇宙からの電波の解析を、世界中の家庭用パソコンで分散して行なうSETI@home(注1)は、distributedな処理の代表例である。このように、スーパーコンピュータでも膨大な時間がかかる計算を、インターネット上の多数のパソコンに小分けして処理することを「分散コンピューティング(distributed computing)」と言う。
注1:SETI@home(セティアットホーム)
1999年にカリフォルニア大学バークレー校が開発した、宇宙からの電波を解析し、地球外生命体からの通信を探索するシステム。自然界で発生しえない強さや帯域幅をもつ電波を探索するためのシステムだが、正確にこのような電波をふるい分けるには膨大な計算が必要になるため、分散コンピューティング方式が採用された。
これら並行、並列、分散に限らず、日本語ではイマイチ区別しにくいIT用語は、元となった英語の意味で考えるとその違いが浮かび上がってくる。エンジニアとしては些細なことでも、「およそ知っているはず」ではなく「しっかり理解している」ようにしておきたい。
Illustration:Aiko Yamamoto
この連載の記事
-
第49回
ビジネス
内部統制周辺で見かける「assessment」 -
第48回
ビジネス
エンジニアがデータをやり取りするときの重要単語 -
第47回
ビジネス
文脈で対象が異なる「peripherals」 -
第46回
ビジネス
IT英語で登場する「redundancy」は、いい意味? 悪い意味? -
第45回
ビジネス
帰ってきたIT英語~layoutを表現する単語たち~ -
第44回
ビジネス
IT業界の「diversity」を今から理解しておこう -
第43回
ビジネス
「query」が期待するものは何? -
第42回
ビジネス
ITでは、なぜ「バーチャル」が多用されるのか -
第41回
ビジネス
技術文書に頻出する「foobar」って何だ? -
第40回
ビジネス
ウワサがウワサを呼ぶソーシャルネットワーク・ワード「buzzword」って何だ!? -
第39回
ビジネス
いま流行りの「Gadget」が映し出すITトレンドとは? - この連載の一覧へ