プラットフォーム (コンピューティング)
コンピュータにおけるプラットフォーム (英: platform) とは、主に、オペレーティングシステム (OS) やハードウェアといった基礎部分を指す。コンピューティングプラットフォーム (英: computing platform) と呼ばれることもある。
概要
編集一般的なコンピュータ・プログラム(アプリケーションソフトウェア)の実行ファイル(バイナリ)は、実行環境であるそれぞれのOSに依存し、例えばWindows、macOS、Linuxなどの各OS上でのみ動作する専用のバイナリとして構築(ビルド)される。また、特定のプロセッサ(CPUやGPU)向けのネイティブ機械語コードを生成するプログラミング言語で開発されたソフトウェアは、互換性のあるハードウェア上でしか動作しない。例えば、PowerPCプロセッサ用のLinux上では、PowerPCプロセッサ用のMac OS X向けあるいはx86/x64プロセッサ用のLinux向けAdobe Readerは動作しない。また、x86/x64プロセッサ用のWindows上では、ARMアーキテクチャのプロセッサ (ARM32/ARM64) 用にビルドされたWindowsネイティブアプリケーションは動作しない。ただし、ABIエミュレーションレイヤーを持つOSなど、異なるプロセッサ向けのバイナリを動作させることができる環境もある。
プラットフォーム非依存とクロスプラットフォーム
編集特定のOSやハードウェアに依存しないことをプラットフォーム非依存 (英: platform-independent) と言う。例えば、Javaは各プラットフォームにおいてJavaアプリケーションが動作する仮想のプラットフォームを実装することによって、プラットフォーム非依存を実現させている。ちょうど異なるプラットフォーム上に介在としてJavaプラットフォームという仮想化された共通プラットフォームがあり、共通プラットフォーム上でJavaアプリケーションが動作する。プロセッサ命令セットはJavaバイトコードおよびJava仮想マシンによって抽象化される。
またプラットフォームの差異をミドルウェアで吸収し、複数のプラットフォームで動作するように設計したソフトウェアをクロスプラットフォームと呼ぶ。
マイクロソフトの.NET FrameworkもJavaとよく似たアプリケーション開発・実行プラットフォームであり、プロセッサに依存しない共通中間言語を生成することができ、共通言語基盤の仕様に従った共通言語ランタイム上で動作する。.NET FrameworkはWindows専用であるが、のちにMonoや.NET CoreによってWindows以外のOSにも移植され、クロスプラットフォームとなった。
プログラムのソースコードを実行時に翻訳・解釈するスクリプト言語や動的プログラミング言語で書かれたソフトウェアもプラットフォーム非依存・クロスプラットフォームであることが多い。
OpenCLプラットフォーム
編集OpenCLではInstallable Client Driver (ICD) Loaderの仕組みによって、1つのシステム上に複数のベンダーによる実装すなわち複数のOpenCLドライバーが共存できるようになっている[1]。このOpenCL実装のことをプラットフォームと呼ぶ。各OpenCLプラットフォームは、OpenCL対応ハードウェアの抽象化であるOpenCLデバイスを複数持つことができる。