Claude Media
Claudeで基本情報技術者の科目B(擬似言語)を練習する手順 — 誤答分析まで

Claudeで基本情報技術者の科目B(擬似言語)を練習する手順 — 誤答分析まで

基本情報技術者試験の科目Bで出る擬似言語を、Claudeに答えを言わせず段階的に解く手順です。トレース表の照合、解き方の言語化、誤答のタイプ分けをプロンプト付きで紹介します。

基本情報技術者の科目Bは、擬似言語で書かれたプログラムを読み、処理の流れを追って答える問題が中心です。Claudeに問題を丸ごと解かせても、自分でトレースする力は付きません。役立つのは、答えを先に言わせず、自分が書いたトレース表を照合させ、間違えた理由を分類させる使い方です。

この記事では、その手順をプロンプト付きで示します。あわせて、Claude自身が擬似言語を読み違える場面と、その検証方法も扱います。

科目Bはどんな試験で、Claudeに何を任せるか

IPAの試験区分ページによると、基本情報技術者の科目Bは試験時間100分、出題形式は多肢選択式で、出題数と解答数はどちらも20問です。科目Aは90分・60問の四肢択一なので、科目Bは1問にかける時間が長い試験です。実施方式はCBT方式による随時実施で、令和4年度までは上期・下期の年2回でした。

同ページの期待する技術水準には「上位者の方針を理解し、自らプログラムを作成できる」とあります。科目Bの擬似言語は、この力を試す問題です。読むだけでなく、頭の中で動かせるかが問われます。

Claudeに任せる作業は、次の3つに絞ると学習効果が残りやすくなります。

  • 自分が書いたトレース表の照合(答え合わせ役)
  • 処理の目的を自分の言葉で説明する練習の相手(聞き役)
  • 間違えた原因の分類と、似た誤りが出そうな箇所の洗い出し(分析役)

逆に、問題文を貼って「答えは何ですか」と聞く使い方は避けます。正解の選択肢は分かっても、次に別の問題が来たときに解けません。

擬似言語の記述形式をClaudeに先に渡す

擬似言語は、問題ごとに文法が変わる言語ではありません。IPAは「試験で使用する情報技術に関する用語・プログラム言語など」(Ver.5.1)の別紙2で、基本情報技術者と応用情報技術者の両試験に共通する記述形式を定めています。問題文中に注記がない限り、この形式が適用されます。

主な記述形式を表にまとめます。

記述意味
○手続名意味手続または関数の宣言
型名: 変数名意味変数の宣言
変数名 ← 式意味代入
if / elseif / else / endif意味選択処理。最初に真になった条件だけ実行する
while (条件式) … endwhile意味前判定の繰返し
do … while (条件式)意味後判定の繰返し。処理を先に1回実行する
for (制御記述) … endfor意味繰返し。制御記述の内容に従う

演算子の優先順位は、高い順に「括弧とメンバアクセス」「not・単項の+-」「mod・×・÷」「二項の+-」「関係演算子」「and」「or」です。配列の要素は[ ]の中に要素番号を書いて指定し、二次元配列では行番号、列番号の順に,で区切ります。変数に値が入っていない状態は「未定義」と呼ばれます。

forの制御記述の書き方は、このドキュメントでは具体形が示されていません。問題文に添えられた説明で確認します。

この仕様は、Claudeに最初に渡しておくと効果があります。渡す方法は2つあります。

  1. 会話の冒頭に、上の表と演算子の優先順位をテキストで貼る
  2. Projectを作り、仕様をProject knowledgeに入れておく

科目Bの学習は数週間続くので、Projectにまとめる方が手間がかかりません。Projectの作り方はClaudeで資格試験の過去問から問題を作らせて自己採点する使い方と同じです。

答えを言わせない設定を作る

Anthropicは、教育機関向けのClaude for Educationの発表でLearning modeを紹介しています。この発表によれば、Learning modeはProjectsの中で働く機能で、答えを直接出さず「この問題にどう取り組みますか」と問い返します。加えて、根拠を尋ねるソクラテス式の質問、問題の背後にある基本原理の強調、学習用テンプレートの提示を行うとされています。

一般プランの利用者が同じ範囲でLearning modeを使えるかは、この発表だけでは確認できません。そこで本記事の手順は、Learning modeがなくても成立するように作ります。同じ振る舞いをプロンプトで指定するだけです。

あなたは基本情報技術者の科目B対策のコーチです。
次のルールで進めてください。
- 私が「答えを見る」と書くまで、正解も正解の選択肢も言わない
- 私の説明に誤りがあれば、誤りの箇所だけを指摘し、修正案は出さずに質問で返す
- 1回の返答で扱う論点は1つにする
- 擬似言語の文法は、Project knowledgeの記述形式に従う
- 問題文に注記がない限り、要素番号の始まりなどはこの記述形式の外から補わず、私に確認する

Learning modeの使い方そのものは、Claudeの学習モードで社労士・行政書士・宅建の勉強法を磨くで扱っています。同じ問答の考え方を、条文の当てはめから擬似言語のトレースに移したものが本記事の手順です。

手順1トレース表を自分で書いてからClaudeに照合させる

科目Bの解き方の核は、変数の値が1行ごとにどう変わるかを表に書くことです。Claudeに先にトレースさせると、ここが空洞化します。自分で書いた表を渡して、間違っている行だけを指摘させます。

練習用に、擬似言語で次のプログラムを用意しました。配列aの要素のうち奇数だけを合計します。要素番号は1から始まるものとして扱います。

整数型: i, s
i ← 1
s ← 0
while (i ≦ n)
    if (a[i] mod 2 ≠ 0)
        s ← s + a[i]
    endif
    i ← i + 1
endwhile

nが5、aが{3, 8, 5, 6, 7}のとき、トレース表は次のようになります。

ループ判定時のia[i]奇数か実行後のs
1a[i]3奇数かはい実行後のs3
2a[i]8奇数かいいえ実行後のs3
3a[i]5奇数かはい実行後のs8
4a[i]6奇数かいいえ実行後のs8
5a[i]7奇数かはい実行後のs15
6a[i](判定で偽)奇数か—実行後のs15

最終的なsは15です。自分で表を書いたら、次のように依頼します。

次の擬似言語のトレース表を自分で作りました。
正解は言わずに、次の順で確認してください。
1. 表の行のうち、間違っている行があれば、その行の番号だけを教えてください
2. 間違いがなければ、最後の行の値だけを私に確認させてください
3. 間違いの原因は、私が説明するまで指摘しないでください
 
[擬似言語のコード]
[私のトレース表]

3番目の指示が要点です。原因を先に言われると、自分で気づく機会が消えます。

手順2解き方を言語化して穴を探す

トレースができるようになったら、「このプログラムは何をしているのか」を自分の言葉で説明する練習に移ります。科目Bでは、処理を順に追わなくても目的が読み取れれば、選択肢を素早く絞れる問題があるためです。

この擬似言語のプログラムが何をしているか、次の3点を私が説明します。
1. 変数ごとの役割(例: sは累計、iは位置を表すカウンタ)
2. ループが終わる条件
3. 最終的に何が得られるか
私の説明を聞いてから、足りない点や曖昧な点を質問してください。
質問は1回に1つだけにしてください。

言語化の練習で見つかるのは、次のような穴です。

  • 変数の役割を「値を入れる箱」としか言えない(何の累計か、何の位置かが言えない)
  • ループの終了条件を「最後まで」としか言えない(i ≦ nかi < nかで結果が変わる)
  • 最終的な値の意味を言えない(合計なのか、個数なのか、最大値の位置なのか)

こうした穴は、選択肢を見る前に見つけるほど修正が楽です。

手順3誤答をタイプ別に分析する

間違えた問題は、何を間違えたのかを分類しないと、次の学習に活かせません。Claudeには、誤答の原因のタイプ分けを手伝わせます。以下の分類は、この記事の筆者が擬似言語でよく出る誤りを整理した枠組みで、IPAの公式な分類ではありません。

タイプ例
読み違い例≦と<を取り違える。modを除算の結果と混同する
動作の見落とし例whileの後判定と前判定を混同する。elseifの評価順を飛ばす
添字の誤り例要素番号の始まりを取り違える。二次元配列で行と列を入れ替える
書き換えの取りこぼし例代入の順序を変えて途中の値が上書きされることを見落とす
時間切れ例長い問題で最後の行まで追いきれない

誤答を分析させるプロンプトは次のとおりです。

次の問題で、私は選択肢イを選びましたが、正解ではありませんでした。
- 私のトレース表: [貼り付け]
- 私が選んだ理由: [自分の言葉]
正解は言わないでください。
私のトレース表と選択理由から、上の5タイプのうちどれに当たるかを推定し、
そのタイプの誤りが出やすい行を、コードの中から指摘してください。

分析結果は、Projectのメモや自分のノートに「タイプ・出題箇所・次に気を付ける点」の3列で残しておくと、弱点の偏りが見えてきます。たとえばi < nを書き間違えた問題は、トレース表の最終行を再確認する習慣で防げます。上の例でwhile (i < n)だったなら、iが5のときに判定が偽になり、5番目の要素7が合計に入らないので、sは8になります。

Claudeのトレースを鵜呑みにしない

Claudeに答え合わせをさせるとき、Claude自身が誤ることを前提に置きます。特に、次の2点は自分で確認します。

  • 要素番号の始まり: 実行環境のプログラミング言語では0始まりが多く、擬似言語の問題は問題文の指定に従います。Claudeが別の言語の規則で読み替えていないか、要素番号の始まりを問題文で確認します。
  • 演算子の意味: ÷やmodの扱いは、IPAの記述形式に従います。Claudeが別の言語の除算規則を持ち込んでいないかを見ます。

Claudeの照合結果が自分の答えと食い違ったときは、どちらが正しいかを実際に動かして確かめます。擬似言語をPythonなどに書き換えて、自分のパソコンで実行します。先ほどの例なら次のようになります(a[0]を捨てて1始まりに揃えた形です)。

a = [None, 3, 8, 5, 6, 7]
n = 5
i = 1
s = 0
while i <= n:
    if a[i] % 2 != 0:
        s = s + a[i]
    i = i + 1
print(s)  # 15

Claudeの説明と、手で作ったトレース表と、実際の実行結果。この3つが一致するまで確認します。食い違いが出たときは、行ごとに変数の値をprintで出して差を探します。

練習の進め方と試験範囲の確認

IPAの試験区分ページには、参考リンクとして試験要綱・シラバス、サンプル問題、公開問題が置かれています。練習の教材はこれらの公式素材を使うのが確実です。シラバス(Ver.9.2)では、アルゴリズムの基本の考え方と、流れ図や擬似言語による表現方法を「修得し、適用する」対象としています。代表的なアルゴリズムとして整列、併合、探索、再帰、グラフ、文字列処理、ファイル処理などが挙がっています。

練習の順序は次の流れが取り組みやすくなります。

  1. 短い擬似言語(10行前後)のトレースを、表を書いて解く
  2. 手順2の言語化で、変数の役割とループの終了条件を説明する
  3. 整列や探索などシラバスにあるアルゴリズムの型を、1つずつ扱う
  4. 解けなかった問題を手順3でタイプ分けし、同じタイプの問題を選び直す

出題範囲や記述形式は改訂されることがあります。学習の前に、IPAの試験要綱・シラバスのページで最新版を確認してください。

よくあるつまずき

Claudeが答えを言ってしまう。ルールが守られなくなったと感じたら、途中で「ルールを再確認してください」と書くか、Projectのカスタム指示にルールを移します。

トレース表の形式が毎回変わる。列の構成をプロンプトで固定します。たとえば「列は、ループ判定時の変数、条件の結果、実行後の変数」と書いておきます。

問題の図表が読み取れない。二次元配列の図などは、画像で貼るより、行ごとにテキストで書き起こして貼る方が確実です。書き起こす段階で、行番号と列番号の順序を自分で意識できる利点もあります。

公開問題をそのまま貼れるか迷う。問題の利用条件はIPAのサイトで確認します。迷うときは、問題の構造だけを保った自作の短い擬似言語を使う方法もあります。

まとめ

科目Bの擬似言語は、Claudeに解かせると力が付きません。自分でトレース表を書き、照合と分類をClaudeに任せると、間違い方の癖が見えてきます。Claudeの読み違いに備えて、擬似言語の記述形式を先に渡し、食い違ったときは実行して確かめる。この2点を組み込んだ練習が、科目Bの100分・20問に向けた準備になります。

IT系以外の資格試験にも同じ考え方を当てはめるなら、Claudeで簿記・FPなど資格試験を勉強する方法が参考になります。

この記事を共有:XはてブLinkedIn