資格道場
学習状況 お問い合わせ ログイン 無料登録
📄 本試験 公開問題

基本情報技術者試験 2026年度(令和8年度) 科目B 公開問題

6問(本試験20問中の公開分) ・ 目安 正答率60%

基本情報技術者の2026年度(令和8年度) 科目B試験で実際に出題された問題のうち、公式に公開されている6問(本試験は20問)を、1問ずつその場で答え合わせしながら演習できます。合否の目安は正答率60%(演習の目安)。各問に正解と、なぜその選択肢になるのかの解説を付けています。

本試験の合格基準:科目A・科目Bの評価点がともに600点以上で合格(各1,000点満点・IRT方式)。

この回:科目Bの基準は評価点600点以上/1,000点満点(IRT)。合格には科目Aも600点以上が必要。公開問題は本試験20問のうち一部の抜粋で、正答率60%は評価点600点と同じではない。

出典:IPA 試験要綱 Ver.5.6(2026年10月の試験から適用)4. 採点方式・配点・合格基準。このページの「目安 正答率60%」は演習の目安で、本試験の採点方法とは異なります。

この回は 独立行政法人 情報処理推進機構(IPA) が公開する本試験問題を、当サイトがその場で答え合わせできる一問一答形式に再編し、公式には付いていない「正解の根拠・各選択肢の解き方」の解説を追記したものです。原題の出典は各問に明記しています。

この回は本試験そのものではなく、独立行政法人 情報処理推進機構(IPA)が公開している「公開問題」です。実際の試験は20問で構成され、そのうち6問が公開されています。公開されていない残りの問題は当サイトにも収録できません。この試験区分はCBT(コンピュータ方式)で通年実施されているため、公式が本試験をまるごと公開することがなく、これが公式から入手できる唯一の本試験問題です。

過去問の解答結果は学習記録・段位には反映されません。過去問は出題当時の法令・制度にもとづく問題を含むため、段位は継続して最新化している一問一答・模擬試験だけで判定しています。過去問を解かなくても段位で不利になることはありませんので、実力試しとして気軽にお使いください。

擬似言語の記述形式(科目Bの全問で共通。原本の2〜3ページ目) 擬似言語の記述形式(科目Bの全問で共通。原本の2〜3ページ目) 擬似言語の記述形式(科目Bの全問で共通。原本の2〜3ページ目)
問 1
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。 次のプログラムは,整数型の配列data の末尾の要素の値を先頭の要素に移動する。この際,末尾以外の各要素の値は,一つずつ後ろの要素に移動する。 〔プログラム〕 整数型の配列: data ← {1, 2, 3, 4, 5, 6, 7, 8, 9} 整数型: top, i 整数型: len ← dataの要素数 top ← data[len] for (i を □ )  data[i] ← data[i - 1] endfor data[1] ← top
正解:エ
末尾の値はあらかじめ top に退避してあるので,あとは各要素を一つずつ後ろへずらせばよい。ずらす代入は data[i] ← data[i - 1] である。ここで i を小さい方から回すと,次に読むはずの値を先に上書きしてしまう。実際 data[2] ← data[1] を行った直後に data[3] ← data[2] を行うと,data[3] には元の data[2] ではなく data[1] の値が入ってしまう。したがって後ろから前へ回さなければならない。更新すべきなのは data[len] から data[2] までなので,i を len から 2 まで1ずつ減らす。ウは len - 1 から始めるため data[len] が更新されず,末尾に元の data[len - 1] が移らない。アとイは増やす向きなので上に書いた上書きが起き,さらにアは data[len] も更新しない。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問1
報告ありがとうございました。内容を確認します。
問 2
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。 関数complement は,引数として渡された8 ビット型の値x について,x に加算すると00000000 になる値を返す。8 ビット型の加算は,値を符号なし2 進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積,論理和,排他的論理和を表す。 〔プログラム〕 ○8ビット型: complement(8ビット型: x)  8ビット型: y  y ← □  y ← y + 00000001  return y
正解:カ
x に足して0になる値(桁あふれは無視)は2の補数であり,「各ビットを反転してから1を足した値」で求まる。プログラムは最後に1を足しているので,□には「xの各ビットを反転した値」が入る。ビットの反転は,すべてのビットが1である11111111との排他的論理和で得られる。よってカ。オの01111111との排他的論理和は,最上位ビットだけ反転されずに残るので反転になっていない。論理積は,11111111と取ってもxのままで何も変わらず(イ),01111111と取ると最上位ビットを0にするだけである(ア)。論理和は,11111111と取ると結果が必ず11111111になり(エ),01111111と取ると下位7ビットを1にするだけである(ウ)。いずれも反転ではない。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問2
報告ありがとうございました。内容を確認します。
問 3
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。 関数func1 に与える引数と,関数func2 に与える引数とが同じとき,二つの関数は同じ値を返す。プログラムでは,配列の領域外を参照してはならないものとする。 〔プログラム〕 ○整数型: func1(整数型: n)  if (nが2以下)   return 1  endif  return 2 × func1(n - 2) + func1(n - 1) ○整数型: func2(整数型: n)  整数型の配列: data ← {1, 1, 1}  整数型: i  /* nが3より小さいときは繰返し処理を実行しない */  for (iを3からnまで1ずつ増やす)   data[1] ← data[2]   data[2] ← data[3]   data[3] ← □  endfor  return data[3]
正解:ア
func1 は f(n)=1(n が2以下),f(n)=2 × f(n - 2) + f(n - 1) という漸化式である。func2 はこれを3つの要素だけを使い回して繰返しで計算する。i 回目のループに入る直前の data が {f(i - 3), f(i - 2), f(i - 1)} だとすると,data[1] ← data[2] で data[1] が f(i - 2) に,data[2] ← data[3] で data[2] が f(i - 1) になる。この時点で data[3] に入れるべきは f(i)=2 × f(i - 2) + f(i - 1) であり,それはちょうど 2 × data[1] + data[2] である。よってア。イは掛ける相手が入れ替わっており,2 × f(i - 1) + f(i - 2) を計算してしまう。ウとエは data[i - 1],data[i - 2] を参照するが,data の要素数は3しかないのでi が5以上になると配列の領域外を参照することになり,設問の条件に反する。オからクはいずれも data[3](この時点では f(i - 1))を余分に足しており,漸化式と合わない。なお n が2以下のときはループが一度も回らず data[3]=1 が返り,func1 の値と一致する。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問3
報告ありがとうございました。内容を確認します。
問 4
次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。 単方向リストを,配列dataList と配列pointerList の二つの配列で表現する。dataList にリストの要素の値を格納し,pointerList にリストの次の要素に対応するdataList の要素番号を格納する。単方向リストの先頭は,dataList[1] 及びpointerList[1] の組みである。単方向リストの末尾に対応するpointerList の要素は未定義である。dataList のうち単方向リストの要素の値を格納していない要素と,対応するpointerList の要素は未定義である。 プログラムが扱うdataList 及びpointerList の内容を図1 に示す。先頭の次の要素の要素番号は,pointerList[1] に格納された3 であり,値はdataList[3] に格納された20 である。その次の要素の要素番号はpointerList[3] に格納された2 であり,値はdataList[2] に格納された30 である。 関数orderList は,図1 のdataList 及びpointerList で表現した単方向リストの値を,単方向リストの先頭からたどって順番に格納した配列を返す。関数orderList が返す配列を図2 に示す。 〔プログラム〕 大域: 整数型の配列: dataList ← {10, 30, 20, 40, 未定義の値} 大域: 整数型の配列: pointerList ← {3, 4, 2, 未定義の値, 未定義の値} ○整数型の配列: orderList()  整数型: i, p ← 1  整数型の配列: linearList ← {} // 要素数0の配列  for (i を 1 から dataListの要素数 まで 1 ずつ増やす)   linearListの末尾 に dataList[p]の値 を追加する   if ([a] が 未定義)    繰返し処理を終了する   endif   p ← [b]  endfor  return linearList
問4の図
正解:エ
p は「いま見ている要素の要素番号」である。ループの中では,まず現在の要素の値 dataList[p] を linearList に足し,次に「この先まだ要素があるか」を調べ,あれば p を次の要素番号に進める。「次の要素番号」は pointerList[p] であり,末尾ではそれが未定義になる。したがって a も b も pointerList[p] である。図1の値で追うと,p=1で10を足し pointerList[1]=3 なので p=3,20を足し pointerList[3]=2 なので p=2,30を足し pointerList[2]=4 なので p=4,40を足したところで pointerList[4] が未定義なので終了し,{10, 20, 30, 40} を返す。図2と一致する。a を dataList[p] にすると(ア・イ),末尾の要素 dataList[4] には40が入っていて未定義ではないのでそこで打ち切れない。イではこのあと p が未定義になり,次の周回で dataList[未定義] を参照してしまう。b を i にすると(ア・ウ),p がリストのつながりではなくループの回数になる。ウを図1の値で追うと {10, 10, 30, 20, 40} が返り,図2と違う。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問4
報告ありがとうございました。内容を確認します。
問 5
次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。 一つの要素だけが1 で他の要素が0 であるような整数型の配列による表現を,本問ではOne-Hot 表現という。関数oneHotEncoding は,図のように,色の名前が格納されている要素数1 以上の文字列型の配列を引数として受け取り,配列に含まれる色の名前(図の例では3 種類)に基づいて,各要素をOne-Hot 表現に変換し,整数型配列の配列に格納して返す。関数oneHotEncoding における変換の例を図に示す。 引数の例: {"Red", "Green", "Blue", "Red"} ↓ "Red"のOne-Hot 表現 : {1, 0, 0} "Green"のOne-Hot 表現: {0, 1, 0} "Blue"のOne-Hot 表現 : {0, 0, 1} ↓ 引数の例に対応する戻り値: {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 0, 0}} 図 関数oneHotEncoding における変換の例 〔プログラム〕 ○整数型配列の配列: oneHotEncoding(文字列型の配列: colors)  整数型: i, j, k  文字列型の配列: colorVector ← {} // 要素数0の配列  整数型の配列: tempVector  整数型配列の配列: oneHotVector ← {} // 要素数0の配列  /* 名前一覧の作成 */  for (i を 1 から colorsの要素数 まで 1 ずつ増やす)   if (colorVector の要素のいずれにも colors[i]の値 が格納されていない)    colorVectorの末尾 に [a] を追加する   endif  endfor  /* One-Hot表現への変換 */  for (j を 1 から colorsの要素数 まで 1 ずつ増やす)   tempVector ← {} // 要素数0の配列   for (k を 1 から colorVectorの要素数 まで 1 ずつ増やす)    if ([b])     tempVectorの末尾 に 1 を追加する    else     tempVectorの末尾 に 0 を追加する    endif   endfor   oneHotVectorの末尾 に tempVector を追加する  endfor  return oneHotVector
正解:イ
前半のループは色名の一覧 colorVector を作る部分である。colors を先頭から見て,まだ colorVector に入っていない色名が現れたら,その色名すなわち colors[i]の値 を末尾に足す。よって a は colors[i]の値 である。後半のループは,colors の j 番目の色を One-Hot 表現に直す部分である。colorVector を k で走査し,その k 番目の色名が j 番目の色と同じなら1を,違えば0を並べる。よって b は「colors[j] が colorVector[k] と等しい」である。したがってイ。a を「未定義の値」とすると(ウ・エ),colorVector に色名が入らず一覧が作れない。b を「colors の要素のいずれかに colorVector[k]の値 が格納されている」とすると(ア・ウ),colorVector はもともと colors から作った一覧なので,この条件はどの k でも必ず真になる。その結果すべての要素が1の配列ができてしまい,One-Hot 表現にならない。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問5
報告ありがとうございました。内容を確認します。
問 6
A 社は,従業員1,000 名の広告代理店である。A 社では,各部署がA 社の社内ネットワークに設置したファイルサーバを,設置した部署の運用担当者が管理している。各部署で新たなクラウドサービスを利用する場合,各部署の責任者の承認のもと契約し,各部署の運用担当者が管理している。 営業部では,営業部がA 社の社内ネットワークに設置したファイルサーバ(以下,Y サーバという)及び顧客管理のためのクラウドサービス(以下,Z サービスという)を利用している。営業部の各従業員にはY サーバの一般利用者アカウントが割り当てられ,Y サーバ上の全てのファイルが編集可能である。また,営業部の各従業員には,Z サービスの一般利用者アカウントが割り当てられ,営業部の運用担当者には,Y サーバとZ サービスの管理者アカウントが割り当てられている。 情報セキュリティ部門では,クラウドサービスに関連した情報セキュリティインシデントの発生に備えて,各部署で利用しているクラウドサービスのログ管理に関するルールを図1 のとおりに整備した。 1. ログの取得 次のログを取得すること ・ログイン及びログアウトのログ(以下,ログインログという) ・クラウドサービスでの重要な操作及びその成否に関するログ 2. ログの項目 少なくとも次が記録されること ・対象のアカウント名,日本標準時での日時,操作内容 3. ログのアクセス管理 ・運用担当者だけがログにアクセスできるようにすること ・クラウドサービスからログをエクスポートして保管する場合は,社内ネットワークに設置した自部署のファイルサーバにログを保管し,運用担当者だけがアクセスできるようにすること ・運用担当者は複数名にすること ・クラウドサービスへの運用担当者のログインには,2 要素認証を必要とすること 4. ログの保存期間 ・少なくとも過去1 年間のログが参照できるようにすること 5. 改ざんへの対策 ・ログは運用担当者でも書込み及び消去ができないようにすること 図1 各部署で利用しているクラウドサービスのログ管理に関するルール 営業部の情報セキュリティリーダーであるB 課長は,運用担当者のC 主任及び情報セキュリティ部門の協力を得て,図1 のルールが順守されているかどうかを調査した。B 課長は,Z サービスでの現在の運用の中で,図1 のルールに違反しているものを表1 のとおりまとめた。 表1 図1 のルールに違反している現在の運用 (一) Z サービスのログは,空き容量が一定値以下になった場合,古いログから上書きされる。 (二) Z サービスの運用は,営業部のC 主任とD 主任の2 名で担当していたが,D 主任が先月退職したので,現在はC 主任だけである。 (三) Z サービスのログの日時は,UTC で記録されている。 (四) Z サービスのログは,毎月末に全てエクスポートし,Y サーバに保管している。 設問 表1 中の運用のうち,図1 のルール3 に違反しているものの項番だけを全て挙げた組合せを,解答群の中から選べ。
正解:ケ
表1の4つはいずれも図1のどれかのルールに違反している。聞かれているのは「ルール3(ログのアクセス管理)に違反しているもの」だけなので,どのルールに当たるのかで仕分ける。ルール3が求めているのは,運用担当者だけがログにアクセスできること,エクスポートして保管する場合は自部署のファイルサーバに置き運用担当者だけがアクセスできること,運用担当者は複数名にすること,運用担当者のログインには2要素認証を使うこと,の4つである。(二)は,D 主任の退職で運用担当者がC 主任1名になっており,「複数名にすること」に反する。(四)は,ログをY サーバにエクスポートして保管しているが,Y サーバは営業部の各従業員に一般利用者アカウントが割り当てられ,Y サーバ上の全てのファイルが編集可能である。つまり運用担当者だけがアクセスできる状態になっておらず,「運用担当者だけがアクセスできるようにすること」に反する。自部署のファイルサーバである点は満たしているので,引っかかるのはアクセス制限のほうである。したがってルール3に違反しているのは(二)と(四)でケ。(一)の「古いログから上書きされる」は,過去1年間のログが参照できなくなるおそれがあり,ルール4(ログの保存期間)の違反である。(三)の「UTC で記録されている」は,日本標準時での日時を求めるルール2(ログの項目)の違反である。どちらもルール違反ではあるが,ルール3ではないので含めない。
出典:情報処理推進機構「令和8年度 基本情報技術者試験 科目B 公開問題」問6
報告ありがとうございました。内容を確認します。

この回の最終更新:

掲載の過去問題は 独立行政法人 情報処理推進機構(IPA) の著作物です。同機関が公表する試験問題を、教育目的での利用に許諾・使用料を要しないとする同機関の方針に従い、出典を明記して掲載しています。無断転載を許可するものではありません。解説は当サイトが独自に作成したものです。