システムアーキテクト 2023年 午前2 問22
問題文
WebブラウザやHTTPを用いず、独自のGUIとデータ転送機構を用いた、ネットワーク対戦型のゲームを作成する。仕様の(2)の実現に用いることができる仕組みはどれか。
〔仕様〕
(1)ゲームは囲碁や将棋のように2人のプレーヤの間で行われ、ゲームの状態はサーバで管理する。プレーヤはそれぞれクライアントプログラムを操作してゲームに参加する。
(2)プレーヤが新たな手を打ったとき、クライアントプログラムはサーバにある関数を呼び出す。サーバにある関数は、その手がルールに従っているかどうかを調べて、ルールに従った手であればゲームの状態を変化させ、そうでなければその手が無効であることをクライアントプログラムに知らせる。
(3)ゲームの状態に変化があれば、サーバは各クライアントプログラムにその旨を知らせることによってGUIに反映させる。
選択肢
ア:CGI
イ:PHP
ウ:RPC(正解)
エ:XML
ネットワーク対戦型ゲームのサーバ関数呼び出しに適した仕組み【午前2 解説】
要点まとめ
- 結論:サーバ上の関数をクライアントから直接呼び出すにはRPCが最適です。
- 根拠:RPCはネットワーク越しに関数呼び出しを可能にし、手続き型の通信を実現します。
- 差がつくポイント:CGIやPHPはHTTPベースの処理、XMLはデータ形式であり、関数呼び出しの仕組みではありません。
正解の理由
選択肢の中で、クライアントプログラムがサーバにある関数を直接呼び出す仕組みはRPC(Remote Procedure Call)だけです。RPCはネットワークを介してリモートの関数を呼び出し、結果を受け取ることができるため、ゲームのルールチェックや状態更新に適しています。CGIやPHPは主にHTTPリクエストに応答するサーバサイド技術であり、XMLはデータの記述形式であるため、仕様(2)の「関数呼び出し」に該当しません。
よくある誤解
CGIやPHPはサーバ処理に使われるため、関数呼び出しもできると誤解されがちですが、これらはHTTPリクエストに対する応答処理であり、直接的な関数呼び出しの仕組みではありません。
解法ステップ
- 仕様(2)で「クライアントがサーバの関数を呼び出す」とある点を確認する。
- 関数呼び出しをネットワーク越しに実現する技術を思い出す。
- CGIやPHPはHTTPリクエスト処理、XMLはデータ形式であることを除外する。
- RPCがリモートの関数呼び出しを可能にする仕組みであると判断する。
- よって正解はRPC(ウ)と決定する。
選択肢別の誤答解説
- ア: CGI
HTTPリクエストに応じてサーバ側でプログラムを実行する仕組みであり、関数呼び出しの直接的な仕組みではありません。 - イ: PHP
サーバサイドスクリプト言語であり、HTTP経由で動作します。関数呼び出しの仕組みではなく、Webアプリケーション開発に使われます。 - ウ: RPC
ネットワーク越しにリモートの関数を呼び出す仕組みで、仕様(2)に最も適しています。 - エ: XML
データの構造を記述するマークアップ言語であり、関数呼び出しの仕組みではありません。
補足コラム
RPCは分散システムでよく使われる技術で、クライアントがリモートサーバの関数をあたかもローカル関数のように呼び出せる点が特徴です。近年ではgRPCやJSON-RPCなどの進化版も登場し、効率的な通信を実現しています。
FAQ
Q: CGIとRPCの違いは何ですか?
A: CGIはHTTPリクエストに応じてプログラムを起動する仕組みで、RPCはネットワーク越しに関数を直接呼び出す仕組みです。
A: CGIはHTTPリクエストに応じてプログラムを起動する仕組みで、RPCはネットワーク越しに関数を直接呼び出す仕組みです。
Q: XMLはなぜ関数呼び出しに使えないのですか?
A: XMLはデータの記述形式であり、通信や処理の仕組みではないため、関数呼び出しの役割は持ちません。
A: XMLはデータの記述形式であり、通信や処理の仕組みではないため、関数呼び出しの役割は持ちません。
関連キーワード: RPC, リモートプロシージャコール、ネットワーク通信、クライアントサーバモデル、分散処理、HTTP, CGI, PHP, XML

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

