個以上)の誤訳があることが判明しています。情報の利用には注意してください。正確な語句に改訳できる方を求めています。情報の伝達を目的とする,順序付けられた文字列である。並列コンピューティング、オブジェクト指向、プロセス間通信で使われる通信方式である。プロセスもしくはオブジェクトといったモデルではメッセージ(ゼロ以上のバイト、複雑なデータ構造、プログラムコードも含む)を送ったり受けたりできる。メッセージを待つことによって同期することもできる。メッセージパッシングに基づく主なモデルとしてアクターモデルやプロセス代数がある。データを配送できる通信方法である。RMI)、シグナル、データパケットなどがある。通報受渡し機構を設計するとき、下記のような方針から設計方針を選択する。個々のメッセージの送受信を確実に行うかどうかメッセージが送信した順序通りに受信されることを保証するかどうかメッセージのやりとりは一対一、一対多(マルチキャストもしくはブロードキャスト)、多対一(クライアントサーバモデル)か通信の同期が必要か重要な理論上の基礎であるアクターモデル、プロセス計算といった並行計算はメッセージパッシングを基礎としている。メッセージパッシングを使った並行システムは、言語内の機能としてメッセージパッシングする場合と言語からの一連のライブラリ呼び出しで実現する場合がある。前者の例は多くの分散オブジェクトシステムが含まれる。メッセージパッシングの概念は、グラフモデル上のベイズ推定などでも使われている。Windowsなどのオペレーティングシステムにおいて、メッセージとは、オペレーティングシステム上で動くアプリケーションに対して、オペレーティングシステムが管理しているデバイスあるいは別のプロセスやスレッドからの入力を伝えるために送られる、ひとかたまりのデータ集合のことである。メッセージを送受信することを通知とも呼ぶ。オペレーティングシステムはメッセージをメッセージキューに保管し、アプリケーションはメッセージキューに保管されていたメッセージを受け取り、それを元に処理を行う。位置をマウスで左クリック」という情報をオペレーティングシステムが感知した場合、オペレーティングシステムはその情報をメッセージキューに保管する。アプリケーションはそのメッセージを受け取って対応した処理を行う。アプリケーションは常にオペレーティングシステムからのメッセージを待機するようなイベント駆動方式のプログラムになっており、この一連のプログラムの機構をメッセージループという。メッセージキューを定期的に監視・確認するポーリング方式でメッセージループが実装されることもある。ような遠隔メソッド呼び出しあるいはそれに類するものはメッセージパッシングシステムである。メッセージパッシングシステムは共有のないシステムと呼ばれている。メッセージパッシング型のシステムは、メッセージという抽象化によってその下位に存在する状態変化や実装などを隠蔽するものだからである。メッセージパッシングモデルはデータを端末(アクター、プロセス、スレッドなど)に送信するような通達方式で、プログラミング言語で典型的に定義されている。そのようなメッセージングはSOAPによってWebサービスの中で使われている。この考え方はパケットより大きく、任意に信頼性や耐久性や安全性やトランザクションを追加したものを除く高いレベルのメッセージデータグラムである。メッセージもまた一般的に同じ向きのプロセス間通信に使われる。別の一般的に使われる技術はストリームもしくはパイプで、そのようなデータは初歩的なデータアイテムの一連として送信される(仮想回線の高等レベルでは)。同期通信と非同期通信[編集]同期メッセージパッシングシステムでは送信者と受信者がお互いにメッセージの転送を待つ。送信者は受信者がメッセージを受信するまでプログラムを再開できない。同期通信は二つの利点がある。利点の一つ目はメッセージ転送において送信者と受信者で同期をとるため、プログラムを単純化できることである。利点の二つ目はバッファを必要としないことである。メッセージはいつでも受信側に保存される。送信者は受信者の準備が完了するまで送信を待つためである。非同期メッセージパッシングシステムは受信者から送信者に準備ができる時間を待たずにメッセージを送る。非同期通信の利点はお互いに待つことがないので、お互いの計算処理をオーバーラップして行える。同期通信は送信者がいつも受信者が続ける前にメッセージを応答したことを確実にする非同期通信をベースに築かれている。非同期通信はバッファを必要とするが、そのバッファが満杯になると問題の原因になる。送信者をブロックするか今後のメッセージを切り捨てるか判断をしなければならない。送信者をブロックすれば、予期しないデッドロックを引き起こすかもしれない。メッセージを捨てた場合通信の信頼性は無くなる。メッセージパッシングと関数呼び出しの比較[編集]メッセージパッシングはプログラム間で情報を受け渡すためのもうひとつの通信方法、つまりCallと対比されるべきである。この通信形式はメッセージパッシングと比較して少なくとも三つの大きな違いがある。通信速度ローカリティメッセージパッシングではどの引数も、新しいメッセージの中にコピーするのに十分なメモリを余計に必要とする。これはオリジナルの引数のサイズの大小によらない。したがって、もし引数のうちのひとつがwebページを記述する10,000オクテットのHTML文字列だとすると、受信プログラム(ローカルプログラムでないならば)に完全にコピーされなければならない(そしてさらに送信されなければならないだろう)。対照的に、callの手法ならば、それぞれの引数に対して4から8バイト分のアドレスしか必要としない。汎用レジスタならば追加の記憶領域はゼロであり、送信時間もゼロである。これはもちろん分散システムでは不可能である。アドレス空間における(絶対)アドレスは、リモートプログラムでは通常意味をなさないからである。calleeが前もってcallerのメモリの正確な(少なくとも一部の)コピーを有していたならば、相対アドレスが利用できるかもしれない。programmingSOAPSmalltalk他のプログラミングモデルへの影響[編集]オブジェクト指向の幾つかの専門用語の中にメッセージはオブジェクトにコントロールを渡すという意味で使われる。オブジェクトがそのメッセージに応答したならばそれはそのメッセージに対するメソッドを持っている。詳しくはオブジェクト指向プログラミングを参照すること。純粋なオブジェクト指向ではメッセージパッシングは排他的にダイナミックディスパッチに投げられる様に機能する。同じメッセージを二回同じオブジェクトに送信した場合、普通そのメソッドを二回請求する結果となる。名前と引数が同じならば二つのメッセージは同じメッセージタイプと考えられている。オブジェクトは自分のメソッド本体から他のオブジェクトにメッセージを送信できる。彼の視点のオブジェクト指向プログラミングの中ではオブジェクトよりも重要なコンセプトだが、人々はよくそのポイントと場所を見逃し、オブジェクト自体に重点をおきすぎ、十分メッセージをその間に送ってないと主張した[3]。ライブ分散オブジェクトのプログラミングモデルはこの所見を踏まえて作られた。それは分散型データフローのコンセプトを使い複雑な分散型システムの振る舞いをメッセージパターンの(高レベル)機能スタイル仕様書とみなした。幾つかの言語では、あるオブジェクトがメッセージを処理するメソッドを持っていなくとも、それを持っているであろう他のオブジェクトを知っている場合に、メソッド呼び出しを1つのオブジェクトから他のオブジェクトに転送、もしく委譲することをサポートしている。メッセージ転送を参照。1977年、カール・ヒューイットは計算制御構造は「メッセージパッシングのパターン」と見ることができると主張した[4]。Smalltalk系統の言語におけるメッセージ[編集]Smalltalk及びSelfやObjective-CなどSmalltalk系統のオブジェクト指向言語においてメッセージは、メソッドを起動するセレクターと引数の組み合わせ、およびセレクターと引数を合わせたオブジェクトを示す[5]。2が前者のメッセージとなる。C++系統の言語におけるメンバー関数の呼び出しに類似しているが、Smalltalk系統の言語はメンバー関数の実装部分にあたるメソッドとメッセージは独立した存在であり、メッセージはクラスに紐づかない。セレクターとメソッドは一対一ではなく一つのメソッドに複数のセレクターを取り付けることができ、セレクターが異なるメッセージを同じメソッドで処理することができるTemplate:Enf。メッセージと対応したメソッドが一切存在しないオブジェクトでもメッセージを受信することが可能になっているTemplate:Enf。2018年9月20日閲覧。2018年9月3日閲覧。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。