📄 本試験 公開問題
基本情報技術者試験 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ページ目)
問 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
ア
2 から len - 1 まで 1 ずつ増やす
イ
2 から len まで 1 ずつ増やす
ウ
len - 1 から 2 まで 1 ずつ減らす
エ
len から 2 まで 1 ずつ減らす
正解:エ
末尾の値はあらかじめ 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 ∧ 01111111
イ
x ∧ 11111111
ウ
x ∨ 01111111
エ
x ∨ 11111111
オ
x ▽ 01111111
カ
x ▽ 11111111
正解:カ
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]
ア
2 × data[1] + data[2]
イ
2 × data[2] + data[1]
ウ
2 × data[i - 1] + data[i - 2]
エ
2 × data[i - 2] + data[i - 1]
オ
data[3] + 2 × data[1] + data[2]
カ
data[3] + 2 × data[2] + data[1]
キ
data[3] + 2 × data[i - 1] + data[i - 2]
ク
data[3] + 2 × data[i - 2] + data[i - 1]
正解:ア
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
ア
[a]dataList[p] [b]i
イ
[a]dataList[p] [b]pointerList[p]
ウ
[a]pointerList[p] [b]i
エ
[a]pointerList[p] [b]pointerList[p]
正解:エ
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
ア
[a]colors[i]の値 [b]colors の要素のいずれかに colorVector[k]の値 が格納されている
イ
[a]colors[i]の値 [b]colors[j] が colorVector[k] と等しい
ウ
[a]未定義の値 [b]colors の要素のいずれかに colorVector[k]の値 が格納されている
エ
[a]未定義の値 [b]colors[j] が colorVector[k] と等しい
正解:イ
前半のループは色名の一覧 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
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
この回の最終更新:
2026年9月9日
基本情報技術者の他の過去問・演習
基本情報技術者の過去問一覧
/
基本情報技術者の一問一答で分野別に鍛える