戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 春期 午後 問05


農産物の検査管理システムに関する次の記述を読んで、設問1〜3に答えよ。

 K社は、農産物を検査し、結果を報告する検査業務を実施している。検査の申込者の情報、検査を依頼された農産物(以下、検査農産物という)の情報、及び検査項目ごとの検査結果の情報は、検査管理システムで管理する。   〔検査農産物の検査業務の流れ〕  検査農産物の検査業務の流れは、次のとおりである。 (1) 担当者は、申込者から検査農産物と検査項目を受け付ける。一つの検査農産物に対して五つまでの検査項目を受け付ける。 (2) 担当者は、申込者が新規の場合、申込者の情報を検査管理システムに登録する。 (3) 担当者は、検査農産物の情報を検査管理システムに登録する。ただし、検査項目は登録しない。 (4) 担当者は、受け付けた検査項目の検査を実施する。受け付けた全ての検査項目の検査が終了した後、検査結果の情報を、検査項目ごとに検査管理システムに一括して登録する。 (5) 担当者は、検査管理システムに登録された検査結果を確認して、申込者に検査結果を報告する。   〔検査管理システムの説明〕  検査管理システムの構成を、図1に示す。検査管理システムは3台のサーバから成り、各サーバは個別にデータベース(以下、DBという)をもつ。各DBへの情報の登録には、各サーバの申込情報登録ツール、利用者情報登録ツール及び検査結果登録ツールを利用する。  申込者に報告する検査結果を確認するために、担当者は報告用アプリケーションを利用する。報告用アプリケーションは、各サーバが提供しているWebインタフェースのAPI(以下、WebAPIという)である情報取得用WebAPIと認証関連WebAPIだけを利用して、各DBにアクセスする。  担当者は、報告用アプリケーションに自身の利用者IDとパスワードを入力して、検査管理システムにログインする。報告用アプリケーションは、ログイン処理に認証関連WebAPIを利用し、ログインに成功したら認証サーバからアクセス用のID(以下、アクセスIDという)を取得する。アクセスIDは、認証情報として認証DBに格納され、ログアウトするまで管理される。報告用アプリケーションは、アクセスIDを情報取得用WebAPIの引数に指定して、各DBから必要な情報を取得する。
基本情報技術者試験(令和元年 午後 問5 図1)
〔検査管理システムが管理する情報〕  検査管理システムが管理する情報と項目を、図2に示す。各情報は、個別のID(利用者ID、検査IDなど)を付与される。各情報は、いずれかのDBだけに格納されている。各サーバがもつDBは、そのサーバが提供している情報取得用WebAPI(表1参照)又は認証関連WebAPIと、登録ツールだけからアクセスできる。よって、申込DBに格納されている情報は、図2に示す情報のうち、aである。
〔情報取得用WebAPIの説明〕  申込情報管理サーバと検査結果管理サーバが提供している情報取得用WebAPIの説明を、表1に示す。  情報取得用WebAPIは、指定された引数に基づいて処理を実行し、取得した情報を戻り値とする。  引数の指定方法には、情報取得用WebAPIによって、個別のIDを指定する方法、IDのリストを指定する方法、開始番号を指定する方法の3通りがある。情報取得用WebAPIの引数が開始番号の場合、格納されている情報を整列し、整列後の並びの先頭の情報を1件目とし、開始番号の位置から最多で10件を取得して戻り値とする。例えば、検査結果情報が25件ある場合、開始番号が1のときは整列後の並びの1〜10件目を、開始番号が11のときは11〜20件目を、開始番号が21のときは21〜25件目を戻り値とする。  情報取得用WebAPIは、処理開始時に、認証関連WebAPIを利用して、引数に指定されたアクセスIDが認証情報として管理されているかどうかを確認する。管理されていない場合は、処理を受け付けない。ここで、表1中のWebAPI仕様の処理の説明では、アクセスIDの確認処理の説明は省略している。

設問1:

問題文を見る
 本文中及び図2中のに入れる正しい答えを、解答群の中から選べ。   aに関する解答群  ア:認証情報及び申込者情報  イ:認証情報及び利用者情報  ウ:認証情報、申込者情報及び検査農産物情報  エ:検査農産物情報  オ:申込者情報  カ:申込者情報及び検査農産物情報   b, cに関する解答群  ア:アクセスID  イ:検査ID  ウ:検査項目名  エ:検査農産物ID  オ:申込者ID  カ:利用者ID

模範解答

a:カ、b:オ、c:エ

解説

解答の導き方

まず、どの情報がどのデータベースに入るかを整理します。データベース(Database:情報を整理して保存し、必要な情報を取り出す仕組み)は、ここではDBと略されています。
図1では、「申込情報登録ツール」は申込情報管理サーバに、「利用者情報登録ツール」は認証サーバに、「検査結果登録ツール」は検査結果管理サーバにアクセスします。つまり、登録する情報は、それぞれのサーバがもつDBに格納されます。
さらに、表1では、申込情報管理サーバのgetOffererInfoが申込者情報を、getProductInfoが検査農産物情報を、申込DBから取得すると説明されています。一方、検査結果管理サーバのWebAPIは、検査結果情報を検査結果DBから取得します。WebAPIのAPI(Application Programming Interface:ソフトウェア同士が機能を呼び出すための窓口)は、ここでは各サーバから情報を取得するために使われています。
認証サーバには、利用者情報や、ログイン後に管理される認証情報が格納されます。したがって、申込DBに入るのは申込者情報と検査農産物情報です。これに当たるaの選択肢はカです。
次に、図2の検査農産物情報にあるbを考えます。検査農産物は、ある申込者から依頼されたものです。そのため、検査農産物情報には、どの申込者が依頼したのかを示す申込者IDが必要です。bにはオが入ります。
最後に、検査結果情報にあるcを考えます。業務の流れでは、一つの検査農産物に対して、検査項目ごとに結果を登録します。また、検査項目は「五つまで」受け付けます。つまり、一つの検査農産物について、複数の検査結果情報が作られることがあります。
そこで、それぞれの検査結果情報に検査農産物IDを持たせれば、どの検査農産物の結果なのかを特定できます。検査結果情報には検査IDもありますが、これは検査結果情報ごとに付くIDです。検査農産物との対応を示すIDとして、cにはエが入ります。
図2で下線が付いている項目は主キー(表の中で一つの情報を特定する項目)です。ここでは、検査農産物IDが検査農産物情報を、検査IDが検査結果情報をそれぞれ特定します。これらとは別に、申込者IDや検査農産物IDを持たせることで、情報どうしのつながりを表せます。このように、別の情報を参照するために使うIDは、外部キー(別の情報を特定するために持たせる項目)として考えられます。

誤りやすいポイント

  • 申込DBに認証情報まで含めること
    認証情報や利用者情報は、認証サーバが管理します。申込情報管理サーバが扱う情報と混同しないようにします。
  • 検査結果情報に申込者IDを入れること
    検査結果は、まず検査農産物に対応します。申込者情報は、検査農産物情報にある申込者IDをたどって確認できます。
  • 検査IDと検査農産物IDを同じ役割だと考えること
    検査IDは個々の検査結果情報を区別します。検査農産物IDは、その結果がどの検査農産物に対するものかを示します。

FAQ

Q: 検査結果情報に検査農産物IDを持たせるのはなぜですか?
A: 一つの検査農産物に対して複数の検査項目の結果が登録されるためです。各結果に検査農産物IDがあれば、どの農産物の結果かを確認できます。
Q: 検査結果情報に申込者IDを直接持たせなくてもよいのですか?
A: 検査農産物情報に申込者IDがあるため、検査結果情報から検査農産物情報をたどれば、申込者も確認できます。この設問では、検査結果と検査農産物の対応を示すIDを考えます。
Q: 主キーと外部キーは、どう違いますか?
A: 主キーは、その情報自体を一つに特定する項目です。外部キーは、別の情報とのつながりを示すために、その別の情報を特定するIDです。

関連キーワード: データベース、主キー、外部キー、1対多の関係、API

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 次の記述中のに入れる正しい答えを、解答群の中から選べ。    報告用アプリケーションには農産物検査結果表示機能があり、この機能は、1件の検査農産物IDを入力して“表示”ボタンをクリックすると、画面に情報を表示する。農産物検査結果表示機能が表示する画面の例を、図3に示す。検査結果の情報が登録済みの検査農産物の検査農産物IDを入力した場合、“表示”ボタンをクリックしてから画面の表示が完了するまでには、表1に示す情報取得用WebAPIの実行が最低d回必要である。ここで、実行時にエラーは発生しないものとする。
基本情報技術者試験(令和元年 午後 問5 図3)
dに関する解答群  ア:2  イ:3  ウ:4  エ:5  オ:6  カ:7  キ:8

模範解答

d:イ

解説

解答の導き方

画面に表示するには、検査農産物の情報、申込者の情報、検査結果の情報をそろえる必要があります。図3には、検査農産物名や申込者の団体名などに加えて、検査項目ごとの検査結果が表示されています。
  1. 検査農産物の情報を取得します。
    入力された検査農産物IDを使って、表1の「getProductInfo」を1回実行します。このAPIから検査農産物情報を取得でき、申込者情報を調べるための申込者IDも得られます。
  2. 申込者の情報を取得します。
    1で得た申込者IDを使って、「getOffererInfo」を1回実行します。これにより、団体名や住所など、画面に表示する申込者情報を取得できます。
  3. 検査結果を取得します。
    入力された検査農産物IDを使って、「getResultInfoForProduct」を1回実行します。このAPIは、指定した検査農産物に対応する全ての検査結果情報を取得します。図3のように、検査項目ごとの結果を表示するために必要です。
したがって、必要な情報取得用WebAPIの実行回数は、1回ずつの合計で 回 です。
なお、ログイン後に使うアクセスIDが有効かどうかの確認には認証関連WebAPIも利用されます。しかし、設問が数えているのは表1に示された情報取得用WebAPIの実行回数です。そのため、この認証確認は数に含めません。

誤りやすいポイント

  • 検査農産物の情報だけで画面を作れると考えること
    申込者の団体名などは申込者情報から取得するため、検査農産物情報とは別に取得が必要です。
  • 検査結果を1件ずつ取得すると考えること
    「getResultInfoForProduct」は、指定した検査農産物に対応する全ての検査結果を取得します。検査結果の件数分だけAPIを実行する必要はありません。
  • アクセスIDの確認も実行回数に加えること
    アクセスIDの確認は認証関連WebAPIによる処理です。設問で数える情報取得用WebAPIとは別です。

FAQ

  • Q: 「getResultInfo」ではなく「getResultInfoForProduct」を使うのはなぜですか。
    A: 「getResultInfo」は検査IDを指定して結果を取得します。一方、「getResultInfoForProduct」は検査農産物IDを指定するだけで、その農産物の全ての検査結果を取得できます。設問では検査農産物IDが入力されるので、後者を使えば結果をまとめて取得できます。
  • Q: 「getOffererInfo」は、なぜ「getProductInfo」の後に実行するのですか。
    A: 申込者情報を取得するには申込者IDが必要です。そのIDを検査農産物情報から得てから、「getOffererInfo」に渡します。
  • Q: 「getProductInfo」と「getOffererInfo」は、どちらも同じ申込情報管理サーバにあるのに、2回必要なのですか。
    A: 同じサーバにあっても、別の種類の情報を取得するAPIです。検査農産物情報と申込者情報の両方が必要なので、それぞれのAPIを実行します。

関連キーワード: WebAPI、データベース、主キー、外部キー、認証

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 次の記述中のに入れる正しい答えを、解答群の中から選べ。    担当者から、検査農産物IDの検査結果を個別に閲覧するのではなく、一覧形式で閲覧したいという要望が挙がった。要望を受けて、報告用アプリケーションに検査結果リスト表示機能を追加する。  検査結果リスト表示機能では、表1に示す情報取得用WebAPIを利用して、登録されている検査結果の情報(以下、農産物検査結果情報という)を全て一覧形式で表示する。1行の表示内容は、各農産物検査結果情報の一覧全体中での位置を示す番号と、農産物検査結果情報の内訳として、団体名、検査農産物ID、検査ID、検査項目名、検査結果及び検査日である。一覧にするとき、最近実施した検査の検査結果が先に表示されるように、検査日の降順に整列する。検査結果リスト表示機能が表示する画面の例を、図4に示す。ここで、実行時にエラーは発生しないものとする。
基本情報技術者試験(令和元年 午後 問5 図4)
 検査結果リスト表示機能は、1画面に最多で10件の農産物検査結果情報を表示する。画面に表示されていない農産物検査結果情報を表示するときは、ボタン“前へ”又は“次へ”をクリックして表示の対象を切り替える。  この機能では、初期表示時の開始番号を1として画面を表示する。ボタン“前へ”又は“次へ”をクリックすると、開始番号に−10又は10を加算して、画面を再表示する。画面表示のたびに、開始番号及び情報取得用WebAPIを利用して表示する情報を取得する場合、情報取得用WebAPIをeという順番で1回ずつ実行する。   eに関する解答群  ア:listOffererInfo、listProductInfo、getResultInfoForProduct  イ:listProductInfo、getOffererInfo、getResultInfoForProduct  ウ:listProductInfo、listOffererInfo、getResultInfoForProduct  エ:listResultInfo、getOffererInfo、getProductInfo  オ:listResultInfo、getProductInfo、getOffererInfo

模範解答

e:オ

解説

解答の導き方

画面の各行には、検査結果に加えて、検査農産物IDと団体名も表示します。必要な情報がどこにあるかを確認し、順番に取得する方法を考えます。
  1. 最初に、表示する検査結果を取得します。
    表示は「最近実施した検査の検査結果が先」で、開始番号を変えて画面を切り替えます。表1のlistResultInfoは、開始番号を指定して検査結果を取得するWebAPI(APIをWeb経由で利用する仕組み)です。API(Application Programming Interface:ソフトウェア同士が情報をやり取りするための窓口)は、必要な情報を取得するための機能として使われます。
    listResultInfoは、検査結果を検査日、検査IDの降順に並べ、開始番号から最多で10件を返します。そのため、最初にこのWebAPIを実行すれば、画面に表示する検査結果を取得できます。検査結果には検査農産物IDも含まれています。
  2. 次に、検査農産物情報を取得します。
    画面には検査農産物IDを表示します。また、検査農産物情報からは、その検査農産物を申し込んだ申込者のIDを得られます。そこで、検査結果から得た検査農産物IDを使ってgetProductInfoを実行します。
    1画面に表示する検査結果は最多で10件です。getProductInfoには検査農産物IDのリストを10件まで指定できるので、表示する検査結果に対応した検査農産物情報を取得できます。
  3. 最後に、申込者情報を取得します。
    画面に必要な団体名は、申込者情報に含まれています。申込者IDは検査農産物情報から得られるため、そのIDを使ってgetOffererInfoを実行し、団体名を取得します。
必要な情報を取得する流れは、「検査結果 → 検査農産物情報 → 申込者情報」です。したがって、WebAPIはlistResultInfo、getProductInfo、getOffererInfoの順に実行します。この順番に当たる選択肢はオです。

誤りやすいポイント

  • getResultInfoForProductは、指定した検査農産物に対応する検査結果を取得するWebAPIです。開始番号を使って検査結果全体を順に表示する目的には合いません。
  • listProductInfoやlistOffererInfoは、それぞれ検査農産物や申込者の情報を開始番号で一覧取得します。この設問では、表示する検査結果に関係する情報を取得する必要があるため、まずそれらの情報を一覧取得するのではありません。
  • 団体名を先に取得することはできません。申込者IDを得るには、検査結果から検査農産物情報を取得する必要があります。
  • 画面を切り替えると開始番号が変わります。まず、その番号に対応する検査結果を取得し、続いて、その検査結果の表示に必要な情報を取得します。

FAQ

Q: listResultInfoの並び順は、問題文で求められている並び順と同じですか?
A: はい。問題文では検査日が降順となるように求めています。listResultInfoは検査日、検査IDの降順で取得するため、検査日が新しいものから表示できます。
Q: 画面に表示する検査結果が10件なら、検査農産物情報も必ず10件取得しますか?
A: 必ず10件とは限りません。同じ検査農産物に対する検査結果が複数ある場合、検査結果が10件でも、対応する検査農産物の種類は10件より少なくなることがあります。
Q: “次へ”を押した後も、取得する情報の順番は同じですか?
A: 同じです。開始番号を10増やして、まず次の検査結果を取得します。その検査結果に対応する検査農産物情報、申込者情報の順に取得します。

関連キーワード: ページング、降順ソート、データ取得、識別子、API

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について