こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第49講「共通テスト用プログラム表記②演算子と組込み関数」のWeb版です。共通テスト「情報Ⅰ」での重要度はS(毎年出る。落とすと致命的)、情報Ⅱでの接続先は(4)情報システムとプログラミングです。
プログラム表記シリーズ(第48〜53講)の第2回にあたります。前回の第48講「変数と代入」で土台をつくりました。本講は演算子と組込み関数までです。条件分岐・反復・配列・ユーザ定義関数には踏み込みません。
1. この講の問い
共通テスト『情報Ⅰ』に出てくる関数は、覚えておかないと解けないのでしょうか。
2. 結論
- 覚えなくてよいのです。関数の仕様は問題冊子に書かれます。大学入試センターは問題作成方針に「受験者が初見でも理解できる」表記を使うと明記しています。問われるのは暗記ではなく、その場で仕様を読んで使う力です。
- 演算子で本当に効くのは
÷(商の整数値)と%(余り)の2つ。この2つの組で、桁の取り出し・偶奇の判定・循環がすべて書けます。 - 優先順位は丸暗記しません。書くときは括弧、読むときだけ優先順位。そして
=(代入)と==(比較)の取り違えだけは絶対にやりません。
3. なぜそうなるのか
3-1.「初見で理解できる」は、方針として明文化されている
まず、この講のいちばん大事な前提を一次資料で確かめます。大学入試センターが公表している「令和9年度大学入学者選抜に係る大学入学共通テスト問題作成方針」の『情報Ⅰ』の項に、こうあります。
プログラミングに関する問題を出題する際のプログラム表記は,授業で多様なプログラミング言語が利用される可能性があることから,受験者が初見でも理解できる大学入試センター独自のプログラム表記を用いる。大学入試センター「令和9年度大学入学者選抜に係る大学入学共通テスト問題作成方針」
同じ一文は「令和8年度」版にもそのまま載っています。2年連続で、一字一句同じ文が方針に置かれているのです。
「初見でも理解できる」——ここが決定的です。初見で理解できるものを、事前に暗記させる試験にはできません。もし関数の一覧を覚えていないと解けない問題を出したら、その瞬間にこの方針を自分で破ることになります。だからセンターは、使う関数の仕様を問題の中に書きます。
受験生の負担は、ここで正しく軽くなります。覚えるべき関数のリストは、存在しません。
これは試験だけの都合ではありません。高等学校学習指導要領(平成30年告示)解説 情報編の情報Ⅰ(3)の解説にも、同じ思想が2か所で念を押されています。
アルゴリズムやプログラムの記述方法の習得が目的にならないよう取扱いに配慮する
その際,プログラミング言語ごとの固有の知識の習得が目的とならないように配慮する文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」情報Ⅰ(3)
国は「書き方を覚えること自体を目的にするな」と2度書いています。共通テストが関数の仕様をその場で与えるのは、この方針に忠実だからです。
3-2.「関数の動作は問題文の中で定義されます」
これは私の推測ではありません。センター自身が2つの文書で明言しています。
1つめ。「共通テスト用プログラム表記の例示」の「7 関数」に、小さく但し書きがあります。
※「表示する」関数以外は基本的に問題中に説明あり大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」第5節
2つめ。旧課程科目「情報関係基礎」用の「共通テスト手順記述標準言語 (DNCL) の説明」第6節「用意された関数の呼び出し」の冒頭です。
あらかじめ用意された関数には,値を返すものと値を返さないものがあります。関数の動作は,問題文の中で定義されます。大学入試センター「共通テスト手順記述標準言語 (DNCL) の説明」(2022年1月)
科目も言語も違う2つの文書が、同じ設計思想を書いています。日本の共通テストにおいて、組込み関数は「覚えるもの」ではなく「その場で与えられるもの」なのです。これが本講の主戦場です。
旧DNCLの説明は、その「与え方」の実例まで並べています。
- 指定された値の二乗の値を返す関数「二乗」
- 値 m の n 乗の値を返す関数「べき乗 (m,n)」
- 値 m 以上値 n 以下の整数をランダムに一つ返す関数「乱数 (m,n)」
- 値 n が奇数のとき真を返し,そうでないとき偽を返す関数「奇数 (n)」
どれも「何を受け取り、何を返すか」が1行で書かれています。受験生がやるべきことは、この1行を読んで、そのとおりに使うことだけです。
3-3. だから「名前」ではなく「何を返すか」で読む
暗記が効かないだけではありません。暗記すると、かえって間違えます。証拠を2つ挙げます。
証拠1:同じ「乱数」という名前で、仕様がまったく違う。
| 文書 | 書き方 | 返すもの |
|---|---|---|
| 旧DNCL(情報関係基礎) | 乱数(m,n) |
m 以上 n 以下の整数を1つ |
| 共通テスト用プログラム表記(情報Ⅰ) | 乱数() |
0以上1未満の小数 |
新しい表記のほうは、例示の「10 コメント」の欄に atai = 乱数() と書かれ、その横にコメントで「0以上1未満のランダムな小数を atai に代入する」と説明されています。この一文が唯一の明文根拠です。
だから、例示の「7 関数」に出てくる saikoro = 整数(乱数()*6)+1 は、乱数() が0以上1未満だからこそ、*6 で0以上6未満になり、整数() で0〜5になり、+1 で1〜6になります。旧DNCLの 乱数(1,6) の感覚で読むと、この式の意味が取れません。
証拠2:同じ処理を書いても、言語が違えば返る値が違う。
例示には、二分探索という同一のアルゴリズムを、共通テスト用プログラム表記・流れ図・Python3・JavaScript・VBA・Scratch で並べた対比表が載っています。そこで配列の大きさを取る部分を横に並べると、こうなります。
| 表記 | 書き方 | Data が10個のとき返る値 |
|---|---|---|
| 共通テスト用プログラム表記 | kazu = 要素数(Data) |
10 |
| Python3 | kazu = len(data) |
10 |
| JavaScript | kazu = data.length |
10 |
| VBA | kazu = UBound(Data) |
9 |
VBA の UBound だけ、返すのは要素数ではなく添字の最大値です。センター自身が VBA のコードにコメントで「添え字の最大値を返す」と注記しています。
結果、VBA 側だけプログラムの続きが変わります。表記側が「migi は kazu-1」と書いている行が VBA では「migi は kazu」になり、表記側が「0 から kazu-1 まで」と回すループが、VBA では「0 To kazu」になります。
同じ kazu という変数名なのに、中身が10と9で違う。名前を覚えても意味がなく、「その関数が何を返すか」を読むしかない、ということの完璧な実例です。センターは対比表の全ページに「関数の説明」という小さな囲みを置き、そこに「要素数(配列)…配列の要素数を返す」と毎回書いています。仕様は、毎回そこに書いてあるのです。
3-4. なぜ整数除算と剰余だけが頻出なのか
演算子の一覧は例示にこうあります。
| 種類 | 記号 |
|---|---|
| 四則 | + - * / |
| 整数の除算:商(整数) | ÷ |
| 整数の除算:余り | % |
| べき乗 | ** |
| 比較 | == != > < >= <= |
| 論理 | and or not |
このうち、共通テストで繰り返し出るのは ÷ と % です。理由は「よく出るから」ではなく、この2つが処理の基本部品だからです。
÷ は「何回入るか」を返し、% は「入りきらなかった残り」を返します。割り算1回で、この2つが同時に得られます。
そしてプログラムでよく使う次の3つは、全部この2つでできています。
- 桁を取り出す。372 の百の位は
372 ÷ 100、一の位は372 % 10。 - 偶奇を判定する。
n % 2が0なら偶数、1なら奇数。 - 循環させる。曜日は
% 7、時計は% 24、方角は% 360。ぐるっと回って戻ってくるものは、すべて剰余で書けます。
とくに1番目は、第40講(基数変換)でやった「割り算を繰り返して余りを下から並べる」と、まったく同じ構造です。10で割り続ければ10進法の各位が出ますし、2で割り続ければ2進法の各桁が出ます。割る数が違うだけで、道具はひとつしかありません。
2番目については、国の教材にも実物があります。文部科学省「情報Ⅰ」教員研修用教材 第3章では、奇数を判定する式としてこう書かれています。
2で割った余りが1であることを示す「i%2==1」を使用するものとする文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章
実はこの教材の第3章で「余り」という語が出てくるのは、この奇数判定の箇所(本文と図表のコメント)だけです。国の教材が剰余に触れる、ほぼ唯一の場面が「偶奇の判定」だということになります。
3-5. 優先順位は覚えない。ただし「読む側」としては知っておく
ここで、多くの参考書が受験生に無駄な暗記を強いている点をはっきりさせておきます。
共通テスト用プログラム表記の例示には、演算子の優先順位についての記述が一言もありません。私が例示の全文を検索しましたが、「優先」も「括弧」も0件でした。つまり、優先順位は覚えるべき仕様として提示されていないのです。
一方、旧DNCLの説明には規定があります。
複数の演算子を使った式の計算では,基本的に左側の演算子が先に計算されますが,『×』,『 / 』,『÷』,『%』は,『+』,『−』より先に計算されます。また,丸括弧『(』と『)』で式をくくって,演算の順序を明示することができます。同「DNCL の説明」4.1 算術演算
そして論理演算については、こう書かれています。
論理演算子に優先順位はなく,左側の論理演算が先に実行されますが,丸括弧『(』と『)』で,演算の順序を指定することができます。同 4.3 論理演算
この「論理演算子に優先順位はなく」が曲者です。旧DNCLの説明には、こんな例が続きます。
「kosu > 12 かつ kosu < 27 でない」は,「(kosu > 12 かつ kosu < 27) でない」と同じです。(左側の論理演算子が先に実行されるため。)同 4.3 論理演算
Python や多くの言語では逆になります。それらの言語では否定がいちばん強く結び付くので、同じ日本語で読める式が「kosu > 12 かつ (kosu < 27 でない)」の意味になります。日本語に訳すと同じ文なのに、結果が違うのです。
だから、こう使い分けます。
- 書くとき:括弧を付ける。付けておけば、どの規則でも同じ意味になります。優先順位を覚える必要が消えます。
- 読むとき:優先順位を知らないと誤読します。ただし共通テストの問題文は、こういう曖昧な式を括弧なしで出してきません。センター自身が「初見で理解できる」表記を掲げているからです。
覚えるのは「掛け算・割り算が足し算・引き算より先」だけでよい。算数からずっと同じです。残りは括弧が守ってくれます。
3-6. 最大の事故は、いまも = と == の取り違えである
第48講で「= は等号ではなく命令だ」と書きました。本講で比較演算子が出てきたので、その続きを締めます。
| 場面 | 記号 | 意味 |
|---|---|---|
| プログラム表記の代入 | = |
右辺を計算して左辺に入れよ |
| プログラム表記の比較 | == |
左と右が等しいか(真か偽を返す) |
| 流れ図の代入 | ← |
同上 |
| 流れ図の比較 | = |
同上 |
第47講(アルゴリズムと流れ図)で確認したとおり、センターの例示は同じページの中で、流れ図では矢印を使い、プログラム表記ではイコールを使い分けています。そして流れ図の側では、比較が = です。
つまり同じ = が、流れ図では「等しいか」、プログラム表記では「入れよ」を意味します。図とコードを行き来する問題で、ここを取り違えると全滅します。読むときは必ず「いまどちらの世界にいるか」を確認してください。
3-7. そもそも国の文書に「演算子」も「剰余」も、ほとんど存在しない
なぜこの講が必要なのか。私は次の12冊分の一次資料を全文検索しました。
対象は、①高等学校学習指導要領(平成30年告示)解説 情報編 ②情報Ⅰ教員研修用教材 第1章〜第4章(章ごとに別PDF) ③情報Ⅱ教員研修用教材 序章・第1章・第2章・第3章前半・第3章後半・第4章・第5章、の12分冊です。
| 語 | 解説 情報編 | 情報Ⅰ教材(4章合計) | 情報Ⅱ教材(7分冊合計) |
|---|---|---|---|
| 演算子 | 0 | 0 | 1 |
| 剰余 | 0 | 0 | 0 |
| 優先順位 | 0 | 0 | 0 |
| べき乗 | 0 | 0 | 0 |
| 整数除算 | 0 | 0 | 0 |
| 余り | 0 | 2 | 0 |
しかも情報Ⅱ教材の「演算子」1件は、演算の話ですらありません。第4章のコーディングスタイルの説明で「演算子の前後にスペースを入れるかどうか」という、書式の文脈で出てくるだけです。情報Ⅰ教材の「余り」2件は、3-4で引いた奇数判定の1か所(本文と図表のコメント)です。
なお、この種の数え方には落とし穴があるので、私は「剰」「優先」「べき」「あまり」と語を短く切っても数え直し、ヒットした箇所を1件ずつ目で確認しました。「剰」の3件はすべて「過剰適合」「過剰反応」、「優先」の3件はすべて「優先させる」「優先度」で、剰余や優先順位の意味ではありませんでした。
共通テストが毎年問う演算子と剰余は、国の設計文書にはほとんど書かれていません。教科書ごとの深さがばらつくのはこのためで、受験生が独学で埋めるべき穴がここにあります。本講はその穴を埋めるために置いてあります。
4. 手で確かめる
以下の数値・出力は、すべて手元の Python 3 で実行して確認したものです。プログラム表記の ÷ は Python の //、% は % に対応します。
本講の ÷ と % は、非負の整数だけを対象とします。負の数の切り捨ての向きは言語ごとに違い(Python では -7 // 2 が -4、-7 % 2 が 1 になります)、共通テストでも負の数の整数除算は要求されません。範囲を切って扱うのが正しい態度です。
4-1. 例示に名前つきで出る関数は、たった4つ
例示の全文から、名前つきで登場する関数を拾うとこれだけです。
| 関数 | 例示での書かれ方 | 仕様の明文 | 入力 → 出力 |
|---|---|---|---|
要素数(配列) |
kazu = 要素数(Data) |
あり(「配列の要素数を返す」。要素8個の例つき) | 要素8個の配列 → 8 |
表示する(…) |
表示する(Data) |
あり(カンマ区切りで文字列や数値を連結できる) | 値を並べる → 画面に出す(戻り値なし) |
整数(…) |
saikoro = 整数(乱数()*6)+1 |
なし(この式の中に現れるだけ) | 2.7 → 2(使われ方から読み取る) |
乱数() |
atai = 乱数() |
コメントのみ(「0以上1未満のランダムな小数」) | (なし)→ 0.4713… |
4つしかありません。しかも仕様の明文があるのは2つだけ。これが「関数は覚えるものではない」の実態です。残りは、本番の問題冊子が説明してくれます。
saikoro = 整数(乱数()*6)+1 が本当に1〜6になるかを、20万回試して確かめました。
import random
random.seed(20260803)
res = [int(random.random() * 6) + 1 for _ in range(200000)]
print(min(res), max(res), sorted(set(res)))
# 1 6 [1, 2, 3, 4, 5, 6]
最小1・最大6・出た値は1〜6の6種類。例示の式は正しくサイコロになっています。
同じ発想は国の教材にもあります。文部科学省「情報Ⅰ」教員研修用教材 第3章のサイコロのプログラムには、こう書かれています。
3行目では,1以上,6+1未満の乱数を発生し,小数点以下を切り捨てて1から6の整数を得ている文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章
「小数を出して、切り捨てて、整数にする」——例示の 整数(乱数()*6)+1 とまったく同じ組み立てです。範囲の作り方が違うだけで、考え方は共通しています。
4-2. 3桁の数を、各位に分解する
372 を百の位・十の位・一の位に分けたいとします。プログラム表記ではこう書きます。
(1) n = 372
(2) hyaku = n ÷ 100
(3) juu = (n ÷ 10) % 10
(4) ichi = n % 10
(5) wa = hyaku + juu + ichi
(6) 表示する(hyaku, juu, ichi, "和は", wa)
トレース表で1行ずつ追います。
| 行 | 計算 | n | hyaku | juu | ichi | wa |
|---|---|---|---|---|---|---|
| (1) | 372 を入れる | 372 | — | — | — | — |
| (2) | 372 ÷ 100 = 3 | 372 | 3 | — | — | — |
| (3) | 372 ÷ 10 = 37、37 % 10 = 7 | 372 | 3 | 7 | — | — |
| (4) | 372 % 10 = 2 | 372 | 3 | 7 | 2 | — |
| (5) | 3 + 7 + 2 = 12 | 372 | 3 | 7 | 2 | 12 |
(3)行が山場です。十の位を取るには、まず ÷ 10 で一の位を捨てて 37 にしてから、% 10 で最後の1桁を取ります。「切ってから取る」の2段階です。ここを n % 100 としてしまうと 72 が出てきて、桁ではなく下2桁になります。
Python で確かめます。
n = 372
hyaku = n // 100
juu = (n // 10) % 10
ichi = n % 10
print(hyaku, juu, ichi, hyaku + juu + ichi)
# 3 7 2 12
print(100*hyaku + 10*juu + ichi)
# 372
トレース表と一致しました。復元すると 372 に戻るので、分解に漏れがないことも確認できます。
4-3. 第40講と同じ構造であることを見る
桁の分解は「割って余りを取る」を繰り返す形にも書けます。
m, keta = 372, []
while m > 0:
keta.append(m % 10)
m = m // 10
print(keta, keta[::-1])
# [2, 7, 3] [3, 7, 2]
余りを取り出した順は下の桁から。逆に並べ直すと 3, 7, 2 で元の数になります。
割る数を10から2に変えるだけで、これは第40講(基数変換)の10進→2進の手順そのものになります。
m, bits = 13, []
while m > 0:
bits.append(m % 2)
m = m // 2
print(bits, bits[::-1])
# [1, 0, 1, 1] [1, 1, 0, 1]
13 を2進法にすると 1101。検算すると 8+4+0+1 = 13 で合っています。「10で割れば10進法の桁、2で割れば2進法の桁」——同じ道具です。基数変換を筆算の手順として暗記していた人は、ここで ÷ と % に置き換わることを確認しておくと、第3問での応用が効きます。
4-4. 偶奇と循環
for i in range(1, 6):
print(i, i % 2, i % 2 == 1)
# 1 1 True
# 2 0 False
# 3 1 True
# 4 0 False
# 5 1 True
国の教材が使っている i%2==1 は、このとおり奇数のときだけ真になります。偶数を選びたければ i%2==0 にします。
循環も見ておきましょう。今日が水曜(日曜を0とすると3)のとき、100日後は何曜日でしょうか。
youbi = ["日", "月", "火", "水", "木", "金", "土"]
print((3 + 100) % 7, youbi[(3 + 100) % 7])
# 5 金
print((22 + 9) % 24)
# 7
103 ÷ 7 = 14 あまり 5 なので金曜。22時の9時間後は 31 % 24 = 7 で午前7時。「ぐるっと回るもの」は全部剰余です。
4-5. 括弧を付けるかどうかで答えが変わる
print(2 + 3*4, (2+3)*4)
# 14 20
print(10-4-3, 10-(4-3))
# 3 9
print(1 + 10//4, (1+10)//4)
# 3 2
3組とも、括弧の位置を変えただけで答えが変わりました。3組目に注目してください。1 + 10 ÷ 4 は「先に割る」なら 1+2 = 3、「左から順に」なら 11 ÷ 4 = 2 になります。同じ式が、規則の違いで3にも2にもなる。これが「書くときは括弧」の理由です。
4-6. 論理演算のくくり方
3-5で見た、旧DNCLの後置の「でない」と、Python の not の違いを実測します。
for x in (5, 20, 30):
a = (x > 12) and (x < 27)
print(x, not a, (x > 12) and (not (x < 27)))
# 5 True False
# 20 False False
# 30 True True
x = 5 のときだけ結果が割れました。「12より大きく、かつ27より小さい、ではない」という日本語は、どこで切るかで意味が変わります。5 は12より大きくないので、全体を否定すれば真、後ろの条件だけを否定すれば偽になります。
日本語で読んで納得した気になるのが、いちばん危ないのです。括弧の位置を目で確認する癖をつけてください。
5. 共通テストではこう出る(重要度 S)
5-1. 出題のされ方(3つの型)
型1:仕様が与えられた関数を使わせる。問題冊子の中に「関数〇〇(x) は……を返す」という説明が置かれ、その関数を使ってプログラムの空欄を埋めさせます。説明文は必ず読む。名前から意味を推測して読み飛ばすと、3-3で見た UBound 型の罠にはまります。実際、令和7年度本試験の第3問については、外部評価でも「受験者が初見でも理解できる大学入試センター独自の日本語でのプログラム表記を用いており、受験者の混乱はなかったと思われる」と評価されています(大学入試センター試験問題調査官による講演資料)。初見で読める前提で作られているということです。
型2:剰余で条件を作らせる。「偶数番目だけ処理する」「n個ごとに区切る」「曜日を求める」といった条件を、% を使った式で書かせる/読ませる型です。n % 2 == 0 が偶数、n % 3 == 0 が3の倍数。結果が0になるかどうかで場合分けするのが定石です。
型3:式の評価順を問う。括弧つきの式を実行させて値を答えさせる、あるいは空欄に入る式を選ばせる型です。括弧の中を先に計算してから整数除算する形が典型で、ここで「割ってから足す」と読むと、二分探索(第55講)の中央がずれます。
5-2. 落とし穴
- 関数の説明文を読み飛ばす。最大の事故です。仕様は必ず問題文にあります。読まずに名前から推測しないこと。
乱数()を「整数が出る」と思い込む。情報Ⅰの表記では0以上1未満の小数です。旧DNCLの乱数(1,6)と混同しない。÷と/を同じものとして読む。/は普通の割り算(7/2 = 3.5)、÷は商の整数値(7÷2 = 3)。記号が1つ違うだけで結果が変わります。- 十の位を
n % 100で取ろうとする。それでは下2桁です。(n ÷ 10) % 10の2段階。 %を「パーセント」と読む。割合ではなく余りです。半角の%ではなく全角の%で書かれている点も、目で慣れておきましょう。- 括弧を省いて自分で書く。優先順位の規定は例示にありません。自分が書く側になったら必ず括弧を付けます。
=と==の取り違え。代入と比較。流れ図側では=が比較になることも忘れずに。!=を=!や<>と書く。例示は!=です。- 負の数の整数除算を勝手に想定する。言語ごとに挙動が違い、共通テストの守備範囲ではありません。
5-3. 自作の類題(本書オリジナル)
次のプログラム表記を実行したとき、表示される値を答えよ。
(1) n = 508
(2) a = n ÷ 100
(3) b = (n ÷ 10) % 10
(4) c = n % 10
(5) 表示する(a, b, c)
変数 n に正の整数が入っている。「n が4の倍数のとき真、そうでないとき偽」となる条件式を、プログラム表記で書け。
次の2つの式の値を、それぞれ答えよ。(ア)3 + 12 ÷ 5 (イ)(3 + 12) ÷ 5
日曜を0、月曜を1、…、土曜を6とする。今日の曜日が変数 kyou に入っているとき、d 日後の曜日を求める式をプログラム表記で書け。
ある問題冊子に「関数 けた数(n) は、正の整数 n の桁数を返す」と説明があった。けた数(4096) の値を答えよ。また、この関数の仕様を覚えていなかった受験生は不利になるか、理由とともに1行で述べよ。
解答
- 問1 5 0 8。(2) 508 ÷ 100 = 5。(3) 508 ÷ 10 = 50、50 % 10 = 0。十の位が0であることに注意。(4) 508 % 10 = 8。
- 問2
n % 4 == 0。「割り切れる」は「余りが0」と書き換えます。==であって=ではありません。 - 問3 (ア)5、(イ)3。(ア)は 12 ÷ 5 = 2 を先に計算して 3 + 2 = 5。(イ)は 15 ÷ 5 = 3。括弧の位置だけで答えが変わります。
- 問4
(kyou + d) % 7。7で割った余りが曜日番号になります。kyou + d % 7と書くとd % 7が先に計算されて別物になるので、括弧が要ります。 - 問5 4。不利になりません。仕様が問題冊子に書かれているので、その場で読めば足ります(そもそも大学入試センターは「受験者が初見でも理解できる」表記を用いると方針に明記しています)。
6. 情報Ⅱではこうなる
情報Ⅰでは、関数は「与えられたものを使う」で終わります。情報Ⅱでは「自分で作り、組み合わせ、他人に渡す」に変わります。この転換は、語の数にはっきり出ます。
6-1. 語数で見る分水嶺
私が数えた結果は次のとおりです(対象は3-7と同じ12分冊)。
| 語 | 解説 情報編 | 情報Ⅰ教材 | 情報Ⅱ教材 |
|---|---|---|---|
| 関数 | 15(情報Ⅰ 2/情報Ⅱ 11/専門学科 2) | 第3章 57・第4章 15 | 第4章 55・第3章後半 37・第3章前半 7 |
| モジュール | 10 | 第3章 8 | 第4章 143 |
| API | 3 | 第3章 22・第4章 14 | 第3章前半 10・第4章 12・第5章 12 |
情報Ⅱ教材 第3章後半の「関数」37件のうち 29件は「活性化関数」「損失関数」「シグモイド関数」「ソフトマックス関数」「ステップ関数」で、これはニューラルネットワークの話であってプログラミングの関数ではありません。素朴に数えると、情報Ⅱの関数の扱いを大きく見誤ります。プログラミングの意味での関数が集中しているのは、情報Ⅱ教材の第4章(55件)です。
そのうえで、いちばん効くのは解説の内訳です。学習指導要領解説 情報編の「関数」15件のうち、情報Ⅰの記述は2件しかなく、情報Ⅱの記述は11件あります。国の設計文書のレベルで、関数は情報Ⅱの主題なのです。
6-2.「組み込み関数」という語は、情報Ⅰ側に存在しない
さらに調べると、もっと鮮やかな事実が出てきました。
「組み込み関数」という語は、学習指導要領解説 情報編の全文でたった1件しかありません。しかもそれは情報Ⅰではなく、情報Ⅱ(4)の内容の取扱いです。
なお,プログラムを制作しやすくするために組み込み関数やあらかじめ用意した関数などを示し,これらを利用するようにすることも考えられる。文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」情報Ⅱ(4)の内容の取扱い
ちなみに解説には「組込み」という語が別に4件ありますが、これは全部「組込み型コンピュータ」(機器に埋め込まれた小型コンピュータ)で、関数の話ではありません。数える前に用法を確かめないと、ここを4倍に見誤ります。
つまり、共通テスト『情報Ⅰ』が毎年出している「組込み関数を使う」という活動は、情報Ⅰの本文には根拠がなく、情報Ⅱ側にしか書かれていないのです。本書が「上限を情報Ⅱに置く」と宣言している理由が、こういうところに出ます。
6-3. 情報Ⅰの「使う」から、情報Ⅱの「定義する」へ
情報Ⅱ(4)の解説を読むと、関数に何が求められるかが具体的に書かれています。
情報システムを機能単位であるモジュールなどに分割したり,モジュールをその内部に含まれるいくつかの関数などの集まりとして分割したり,関数の「書式」,「機能」,「引数」,「戻り値」などを適切に定義したり,それらを使って情報システムを構成するソフトウェアを設計する力を養う。同 情報Ⅱ(4)ア(イ)
「書式」「機能」「引数」「戻り値」——これは、情報Ⅰの受験生が問題冊子で読まされている、あの1行の説明そのものです。情報Ⅰでは、その1行は「与えられるもの」でした。情報Ⅱでは、その1行を自分が書く側に回ります。
同じ箇所には、こう続きます。
その際,過去に自分が作成した関数,他人が作成した関数も含めてどのような関数を利用すれば効率的な開発ができるか判断する力,プログラムの誤りの発見と修正が容易になるようにする力…同 情報Ⅱ(4)ア(イ)
「他人が作成した関数」が出てきます。関数は他人と共有する部品になります。だから仕様を1行で書ける形にしておく必要があるのであって、これは試験のための作法ではなく、開発の作法です。
6-4. 関数から API へ
その先が API です。実は情報Ⅰの側にも、すでに橋は架かっています。学習指導要領解説 情報編の情報Ⅰ(3)イ(イ)には、こうあります。
プログラムから呼び出して使う標準ライブラリやオペレーティングシステム及びサーバなどが提供するライブラリ,API(Application Programming Interface)などの機能,プログラムの修正,関数を用いてプログラムをいくつかのまとまりに分割してそれぞれの関係を明確にして構造化することなどを扱うことが考えられる同 情報Ⅰ(3)イ(イ)
情報Ⅰ教員研修用教材 第3章は、これを具体化しています。
共通している処理について API (Application Program Interface) として関数に近い形で提供されている。この API を使って開発することで,開発期間の短縮につながる文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章
そして同じ章の学習活動には、こう書かれています。
関数の理解から API の必要性を理解する。同 第3章 学習活動
情報Ⅰ教材の段階で、すでに「関数がわかれば API がわかる」という順序が設計されています。情報Ⅱでは、これが Web API とモジュール分割として本格化します。
6-5. 引数と戻り値が「壊れる場所」になる
情報Ⅱ教員研修用教材 第4章には、情報Ⅰでは絶対に出てこない視点があります。関数と関数のつなぎ目が、バグの発生源として名指しされるのです。
結合テストで明らかになる不具合は,主にモジュール間のインタフェースの不備である。呼び出すときに引数の対応が間違っている,渡す引数に正しい値がセットされていない,などのエラーが想定される文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章
情報Ⅰでは、関数は「正しく動くもの」として与えられていました。情報Ⅱでは、関数は「正しくつながっていないかもしれないもの」になります。だから結合テストがあり、まだ完成していない下位モジュールの代わりに決まった値だけを返す「スタブ」を用意し、上位モジュールの代わりに引数を渡す「テストドライバ」を用意します。
同じ章にはリファクタリングの項目として「関数の抽出」も挙げられ、その手順に「抽出したコードに含まれる変数を調べ、新しい関数ではアクセスできない変数を特定し、引数として新しい関数に渡すようにする」とあります。引数とは何かを、設計の道具として使い直すことになります。
6-6. 情報Ⅰと情報Ⅱの扱いの違い
| 論点 | 情報Ⅰ | 情報Ⅱ |
|---|---|---|
| 関数 | 与えられた仕様を読んで使う | 書式・機能・引数・戻り値を自分で定義する |
| 誰が書いたか | 出題者(問題冊子) | 自分・過去の自分・他人 |
| 引数・戻り値 | 説明文に書いてある値 | 設計対象。取り違えがバグの主原因 |
| 演算子 | ÷ % を読めれば足りる |
教材では書式(前後のスペース)の話題としてしか出ない |
| API | 「関数に近い形」として名前を知る | Web API を組み込み、システムを構成する |
| まとまり | 関数まで | モジュール・階層・インタフェース(第4章に143件) |
情報Ⅰは「関数を使えるようになる」で終わり、情報Ⅱは「関数を他人に渡せる形にする」ところまで行きます。第49講で「仕様を読んで使う」を身につけた人は、そのまま「仕様を書く側」に進めます。読めない仕様は、書けません。
この講のまとめ
- 組込み関数は暗記しない。仕様は問題冊子に書かれます。大学入試センターは問題作成方針に「受験者が初見でも理解できる」表記を用いると明記し、旧DNCLの説明は「関数の動作は,問題文の中で定義されます」と書いています。
- 例示に名前つきで出る関数は
要素数()表示する()整数()乱数()の4つだけ。仕様の明文があるのは2つだけ。 - 同じ名前でも仕様は違う。
乱数は旧DNCLでは整数、情報Ⅰの表記では0以上1未満の小数。VBA のUBoundは要素数ではなく添字の最大値。名前ではなく「何を返すか」で読む。 - 効くのは
÷(商の整数値)と%(余り)。桁の取り出し・偶奇・循環はすべてこの2つで書けます。第40講の基数変換と同じ構造です。 - 優先順位は覚えない。書くときは括弧、読むときだけ優先順位。例示には優先順位の規定が一言もありません。
=(代入)と==(比較)を取り違えない。流れ図側では=が比較になります。- 「演算子」「剰余」「優先順位」は国の文書にほぼ0件。ここが情報Ⅰ本文の空白です。
- 情報Ⅱでは、関数は「使う」から「書式・機能・引数・戻り値を定義する」へ変わり、引数の取り違えがバグの主原因として扱われます。「組み込み関数」という語は、解説では情報Ⅱ側にしか存在しません。
出典(すべて2026年8月3日に取得)
- 大学入試センター「令和9年度大学入学者選抜に係る大学入学共通テスト問題作成方針」
- 大学入試センター「令和8年度大学入学者選抜に係る大学入学共通テスト問題作成方針」
- 大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」2022年11月9日公表(第5節「共通テスト用プログラム表記の例示」)
- 大学入試センター「共通テスト手順記述標準言語 (DNCL) の説明」2022年1月
- 大学入試センター試験問題調査官 水野修治「令和7年度大学入学共通テスト『情報Ⅰ』の問題評価・分析」(令和7年度 情報学科・専攻協議会 講演資料)
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第1〜4章(令和2年)
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」序章・第1〜5章(令和2年)
- 文部科学省「授業・研修用コンテンツ」
共通テストの問題文・選択肢・図表・プログラムコードは転載していません。扱っているのは、①仕様文書の記述 ②設問構造の説明 ③自作の類題 の3つだけです。制度に関する記述はすべて2026年8月時点のものです。
同じ第3部では第54講(トレース)が本講の ÷ と % を追う技術になり、第43講(論理演算・真理値表・ベン図)が 3-5 の条件式の土台になります。『藤原進之介の最強120講義』の全体像とカテゴリ「情報Ⅰ 最強120講義」から他の講も読めます。
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第49講のWeb版です。
「関数が出てきた瞬間に手が止まる」という方へ
共通テスト『情報Ⅰ』の第3問は、仕様を読んで使えるかどうかで得点が割れます。仕様の読み方は、一度ついてしまえば一生使える技術です。数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
