ホーム > システムアーキテクト試験 > 2014年
システムアーキテクト試験 2014年 午前2 問20
WebブラウザやHTTPを用いず、独自のGUIとデータ転送機構を用いた、ネットワーク対戦型のゲームを作成する。
仕様の(2)の実現に用いることができる仕組みとして、適切なものはどれか。
〔仕様〕
(1)ゲームは囲碁や将棋のように2人のプレーヤの間で行われ、ゲームの状態はサーバで管理する。プレーヤはそれぞれクライアントプログラムを操作してゲームに参加する。
(2)プレーヤが新たな手を打ったとき、クライアントプログラムはサーバにある関数を呼び出す。サーバにある関数は、その手がルールに従っているかどうかを調べて、ルールに従った手であればゲームの状態を変化させ、そうでなければその手が無効であることをクライアントプログラムに知らせる。
(3)ゲームの状態に変化があれば、サーバは各クライアントプログラムにその旨を知らせることによってGUIに反映させる。
ア:CGI
イ:PHP
ウ:RPC(正解)
エ:XML
解説
ネットワーク対戦型ゲームのサーバ関数呼び出しに適した仕組み【午前2 解説】
要点まとめ
- 結論:サーバ上の関数をクライアントから直接呼び出すにはRPCが最適です。
- 根拠:RPCはネットワーク越しに関数呼び出しを可能にし、HTTPやブラウザを介さずに双方向通信が行えます。
- 差がつくポイント:CGIやPHPはHTTPベースであり、XMLはデータ形式であって通信手段ではない点を理解しましょう。
正解の理由
選択肢の中で、クライアントプログラムがサーバ上の関数を直接呼び出す仕組みとして適切なのはウ: RPCです。RPC(Remote Procedure Call)は、ネットワークを介してリモートの関数や手続きを呼び出す技術であり、仕様(2)の「クライアントがサーバの関数を呼び出し、処理結果を受け取る」要件に合致します。HTTPやWebブラウザを使わずに独自のGUIと通信機構で実装可能です。
よくある誤解
CGIやPHPはサーバサイドのスクリプト技術であり、HTTPリクエストに応答する形で動作するため、独自の通信機構には向きません。XMLはデータの記述形式であり、通信プロトコルではありません。
解法ステップ
- 問題文の仕様(2)を確認し、「クライアントがサーバの関数を呼び出す」点を把握する。
- 各選択肢の特徴を整理し、HTTPやブラウザを使わないことを考慮する。
- CGIはHTTPリクエストに応答する仕組みであるため不適。
- PHPもサーバサイドスクリプトでHTTP依存が強い。
- XMLはデータフォーマットであり、通信手段ではない。
- RPCはネットワーク越しに関数呼び出しが可能で、仕様に合致する。
選択肢別の誤答解説
- ア: CGI
HTTPリクエストに応答してプログラムを実行する仕組みであり、独自の通信機構には不向きです。 - イ: PHP
サーバサイドスクリプト言語であり、HTTPを介して動作するため仕様(2)には適しません。 - ウ: RPC
リモートの関数を直接呼び出せるため、仕様に最も適した仕組みです。 - エ: XML
データの構造を記述するマークアップ言語であり、通信手段や関数呼び出しの仕組みではありません。
補足コラム
RPCは分散システムでよく使われる技術で、クライアントがあたかもローカルの関数を呼び出すようにリモートの処理を実行できます。近年ではgRPCやJSON-RPCなど多様なRPC実装があり、ゲームのリアルタイム通信や状態管理にも活用されています。
FAQ
Q: CGIとRPCの違いは何ですか?
A: CGIはHTTPリクエストに応答してプログラムを起動する仕組みで、RPCはネットワーク越しに関数を直接呼び出す技術です。
A: CGIはHTTPリクエストに応答してプログラムを起動する仕組みで、RPCはネットワーク越しに関数を直接呼び出す技術です。
Q: XMLは通信プロトコルとして使えますか?
A: XMLはデータの記述形式であり、通信プロトコルではありません。ただし、XMLを使った通信プロトコル(例:SOAP)は存在します。
A: XMLはデータの記述形式であり、通信プロトコルではありません。ただし、XMLを使った通信プロトコル(例:SOAP)は存在します。
関連キーワード: RPC, リモートプロシージャコール, ネットワーク通信, クライアントサーバモデル, ゲームプログラミング, HTTP非依存通信