科目Bには、AI やデータ分析の言葉を題材にしたプログラムが出ます。コサイン類似度、理論度数、One-Hot 表現といった言葉です。その言葉を前もって知っている必要はありません。意味は問題文に書いてあります。読む手順は3つです。
期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円第2部 定番処理の型 全26回A14AI・データを題材にしたプログラム一覧を開く
A1-1トレース表の書き方A1-2繰返しのトレースA1-3配列のトレースA2-1配列を全部見るA2-2最大・最小を見つけるA2-3探す(線形探索)A2-4入れる・消すA3-12次元配列の走査A3-22次元配列の集計A4-1文字列を1文字ずつA4-2文字列照合A5-1交換して並べるA5-2挿入ソートA6分割して並べるA7-12分探索A7-2ハッシュ表探索A8-1再帰とはA8-2再帰のトレースA9スタックとキューA10-1リストを読むA10-2リストの挿入と削除A11木構造A12木の巡回A13グラフA14AI・データを題材にしたプログラムA15コントロールブレーク処理
この回の内容を動画で見る
次のページで講義の目次と無料の講義を見られます。受講ボタンとクーポンコードもそこにあります。
この回の内容を動画で見る
解くための再現性が身につく講義29本小テスト86問模試3回分IT資格の森で見る
講義「AI・データを題材にした問題」(全6分31秒)は、IT資格の森(月額1,280円)の会員向けです。科目Bは、1行ずつ値を追うアニメの講義と、講義ごとの小テスト、本番と同じ形の模擬試験がそろっています。
知らない言葉が出たときの読み方
- 言葉の定義を、問題文から探す。「〜という」「次の式で計算する」と書かれた文です。
- 定義の語句を、式に1つずつ写す。語句の1つ1つが、プログラムのどこかに当たります。
- 問題文の例で、くり返しの終わりと答えを確かめる。くり返しがなぜそこで終わるのかは、例の数字が教えてくれます。
この3つを、短い問題1つで順に確かめます。
この回で読む問題 ── 2-gram を数える countPair
題材は 2-gram という言葉です。文章をコンピュータで扱う分野の言葉で、基本情報技術者試験のシラバスにも、自然言語処理の用語例として n-gram が載っています(n が 2 のものが 2-gram です)。聞いたことがなくても、そのまま読み進めてください。
問題文
文字型の配列から、隣り合う2文字を先頭から順に取り出したものを、本問では 2-gram という。例えば、配列 {“t”, “o”, “m”, “a”, “t”, “o”} の 2-gram は、順に {“t”, “o”}、{“o”, “m”}、{“m”, “a”}、{“a”, “t”}、{“t”, “o”} の5個である。
関数 countPair は、要素数2以上の文字型の配列 s と、要素数2の文字型の配列 pair を受け取り、s の 2-gram のうち、pair と同じ並びのものの個数を返す。例えば、s が {“t”, “o”, “m”, “a”, “t”, “o”}、pair が {“t”, “o”} のとき、戻り値は 2 である。ここで、配列の要素番号は1から始まる。
○整数型: countPair(文字型の配列: s, 文字型の配列: pair)
整数型: i, cnt ← 0
for (i を 1 から (sの要素数 - 1) まで 1 ずつ増やす)
if ((s[i] = pair[1]) and (s[i + 1] = pair[2]))
cnt ← cnt + 1
endif
endfor
return cnt
当サイトで作った例題です。
プログラムは8行で、くり返しと条件分岐が1つずつあるだけです。それでも「2-gram」の意味が分からないままでは、s[i + 1] が何のためにあるのかも、なぜ sの要素数 - 1 で止まるのかも読み取れません。プログラムより先に、問題文を読みます。
手順1 言葉の定義を探す ──「〜という」の文と例
問題文の1文目が、言葉の定義です。
定義の文
文字型の配列から、隣り合う2文字を先頭から順に取り出したものを、本問では 2-gram という。
2-gram についてこの問題で使う知識は、この1文で全部です。定義のすぐあとには、例が付いています。その例を枡に並べると、こうなります。
問題文の例を、枡に並べたところ
枡の上の数字=要素番号 / 色の付いた2枡=その段で取り出す 2-gram
隣り合う2文字を、先頭から1つずつ右へずらして取り出す
1個目 t, o
1t
2o
3m
4a
5t
6o
2個目 o, m
1t
2o
3m
4a
5t
6o
3個目 m, a
1t
2o
3m
4a
5t
6o
4個目 a, t
1t
2o
3m
4a
5t
6o
5個目 t, o
1t
2o
3m
4a
5t
6o
取り出せるのは5個。6文字より1つ少ない。
IPA が公開している科目Bの問題も、同じ書き方をしています。
「一つの要素だけが1 で他の要素が0 であるような整数型の配列による表現を,本問ではOne-Hot 表現という。」(令和8年度 科目B 公開問題 問5)
「注文データから,商品x と商品y とが同一の注文で購入されやすい傾向を示す関連度Lxy を,次の式で計算する。」(令和6年度 科目B 公開問題 問5)
知らない言葉を見たら、その言葉の前後から「〜という」「次の式で計算する」の文と、例を探します。見つけた文と例が、このあとの材料になります。
手順2 定義の語句を、式に写す
定義の文と、関数の説明「pair と同じ並びのものの個数を返す」を、語句ごとに区切ります。区切った語句は、それぞれプログラムのどこかに当たります。
問題文の語句が、プログラムのどこに当たるか
上の2段が問題文、下の3段がプログラムの行
定義の文隣り合う2文字を、先頭から順に取り出したもの
関数の説明pair と同じ並びのものの個数を返す
3行目for (i を 1 から (sの要素数 - 1) まで 1 ずつ増やす)
4行目if ((s[i] = pair[1]) and (s[i + 1] = pair[2]))
5行目と8行目cnt ← cnt + 1 … return cnt
同じ色どうしが、同じことを言っています。3行目の (sの要素数 - 1) には、色が付いていません。
語句が式になるときの読み方を、1つずつ書きます。
隣り合う2文字。配列で隣り合うのは、要素番号が1つちがいの2つです。s[i] の隣は s[i + 1]。i は「いま見ている 2-gram の、1文字目の要素番号」です。
先頭から順に。i を 1 から始めて、1 ずつ増やします。for のかっこの中は、変数をどこからどこまで動かすかを書いたものです(G6-1)。
pair と同じ並び。1文字目どうし、2文字目どうしが両方とも等しいことです。A and B は、A と B が両方とも真のときだけ真になります(G8-2)。
個数。数を入れる変数 cnt を2行目で 0 にして始め(i の値は3行目の for が入れます)、同じ並びを見つけるたびに 1 増やし、最後に return で返します。
プログラムの行を見て「これは問題文のどの語句か」を言えれば、その行は読めています。言えない部分が残ったら、そこが次に調べる場所です。この問題では、くり返しの終わりの (sの要素数 - 1) が残りました。定義の文にも関数の説明にも、これに当たる語句がありません。
手順3 問題文の例で、くり返しの終わりと答えを確かめる
残った (sの要素数 - 1) がなぜこの式になるのかは、問題文の例の数字から分かります。
くり返しの終わりを、例から出す
例の配列は 6文字で、2-gram は 5個です。
最後の 2-gram の2文字目は、配列の最後の文字、つまり 6番目です。1文字目はその隣なので、1つ前の 5番目です。
i は 2-gram の1文字目の番号なので、最後の i は 5。要素数の 6 より 1 小さい値です。
だから、くり返しの終わりは sの要素数 - 1。
ほかの値では、うまくいきません。
終わりを変えると
sの要素数 まで回す i が 6 のとき、条件の中の s[i + 1] は s[7] を指します。要素は6番目までしかなく、7番目はありません。無い要素とは比べられないので、この終わり方は誤りです。
sの要素数 - 2 まで回す i は 4 で終わり、5個目の {“t”, “o”} を見ません。戻り値は 1 になり、問題文の例の 2 と合いません。
最後に、問題文の例をプログラムに通します。countPair({"t", "o", "m", "a", "t", "o"}, {"t", "o"}) を呼び出して、戻り値が例のとおり 2 になるかを見ます。
countPair に、問題文の例を通す
当サイトオリジナルの例題
ループ開始前
配列
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
条件が真になったのは i が 1 のときと 5 のときの2回で、戻り値は 2。問題文の例と一致しました。問題文の例は、自分の読み方が合っているかを確かめる答え合わせに使えます。空欄を埋める問題なら、選んだ式を入れて例を通し、例の戻り値と同じになるかを見ます。
確かめる
同じ読み方を、形を少し変えた問題で試します。
当サイトで作った問題です
次の問題文とプログラムを読んで、空欄に入る式を選んでください。
問題文
文字型の配列から、隣り合う2文字ではなく、1つおいた2文字(s[i] と s[i + 2])の組を先頭から順に取り出したものを、本問ではスキップペアという。例えば、配列 {“b”, “a”, “n”, “a”, “n”, “a”} のスキップペアは、順に {“b”, “n”}、{“a”, “a”}、{“n”, “n”}、{“a”, “a”} の4個である。
関数 countSame は、要素数3以上の文字型の配列 s を受け取り、s のスキップペアのうち、2文字が同じものの個数を返す。例えば、s が {“b”, “a”, “n”, “a”, “n”, “a”} のとき、戻り値は 3 である。ここで、配列の要素番号は1から始まる。
○整数型: countSame(文字型の配列: s)
整数型: i, cnt ← 0
for (i を 1 から ( ) まで 1 ずつ増やす)
if (s[i] = s[i + 2])
cnt ← cnt + 1
endif
endfor
return cnt
当サイトで作った問題です
次の問題文とプログラムを読んで、空欄に入る式を選んでください。
問題文
予測の結果と正解とを1件ずつ比べ、一致した件数 ÷ 全体の件数 で求めた値を、本問では正解率という。例えば、予測が {“A”, “B”, “A”, “A”}、正解が {“A”, “B”, “B”, “A”} のとき、正解率は 0.75 である。
関数 seikairitsu は、要素数が等しい二つの文字型の配列 yosoku と seikai を受け取り、正解率を返す。ここで、配列の要素番号は1から始まり、割り算は実数として計算する。
○実数型: seikairitsu(文字型の配列: yosoku, 文字型の配列: seikai)
整数型: i, cnt ← 0
for (i を 1 から yosokuの要素数 まで 1 ずつ増やす)
if (yosoku[i] = seikai[i])
cnt ← cnt + 1
endif
endfor
return
公開問題では、こう出ている
試験要綱は、科目Bの出題範囲に「数理・データサイエンス・AI などの分野を題材としたプログラム」を挙げています。IPA が公開している科目Bの問題から、分野の言葉を題材にしたものを5問並べます。どの問題も、言葉の意味・式・例のどれかを問題文に書いています。
| 言葉と解説 | 問題文に書いてあること |
|---|---|
| One-Hot 表現 令和8年度 問5 |
言葉の定義の1文と、変換の例の図 |
| 理論度数 令和7年度 問5 |
何の人数を指す言葉かの説明と、集計結果の例の表。計算のしかたはプログラムに書いてある |
| 関連度 令和6年度 問5 |
計算の式、式の中の記号の意味、表の例を式に入れた計算 |
| コサイン類似度 令和5年度 問5 |
何を測る尺度かの1文と、計算の数式 |
| 配列の並びがどの程度似ているかの指標 サンプル問題 問12 |
指標の計算式と、関数に渡す値と戻り値の例の表 |
読み方は、どれもこの回と同じです。問題文から定義と例を探し、語句を式に写し、例で確かめます。
次に読む
| A15 | コントロールブレーク処理 ─ キーが変わったら小計を出す |
| A4-2 | 文字列照合 ─ 重ねて、ずらして、また重ねる |
| 解説一覧 | 科目B 全44問の解説 ─ 公開問題とサンプル問題 |
| 目次 | 基本情報技術者試験 科目B 攻略ガイド |
この記事で引用した資料
- 情報処理技術者試験 試験要綱 Ver5.6(2026年7月6日)
- 基本情報技術者試験 シラバス Ver9.2(2026年1月8日)
- 基本情報技術者試験 科目B サンプル問題(2022年12月26日公開)
- 令和5年度 基本情報技術者試験 科目B 公開問題(2023年7月6日公開)
- 令和6年度 基本情報技術者試験 科目B 公開問題(2024年7月5日公開)
- 令和7年度 基本情報技術者試験 科目B 公開問題(2025年7月4日公開)
- 令和8年度 基本情報技術者試験 科目B 公開問題(2026年7月1日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。
本文の例題と設問は当サイトのオリジナルです。


