こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第53講「共通テスト用プログラム表記⑥ ユーザ定義関数と引数」のWeb版です。共通テスト「情報Ⅰ」での重要度はA、情報Ⅱでの接続先は(4)情報システムとプログラミングです。
プログラム表記シリーズ(第48〜53講)の最終回です。土台になるのは第48講(変数と代入)の「変数は箱」という話で、本講はその続きとして「箱はどこまで見えるのか」まで踏み込みます。演算子は第49講、条件分岐は第50講に譲ります。
1. この講の問い
関数は「同じ処理を何度も書かずに済ませる道具」だと説明されます。では、1回しか呼ばない処理をわざわざ関数にすることがあるのは、なぜでしょうか。
2. 結論
関数の目的は短くすることではなく、考える単位を作ることです。処理に名前を付けた瞬間に、中身を忘れて名前だけで考えられるようになる。人間の短期記憶は小さいので、これが唯一の対抗手段です。
引数と戻り値は、関数の外との唯一の窓口です。中で何をしていようと、外から見えるのは「入れた値」と「返ってきた値」だけ。だから他人の書いた関数を、中身を読まずに使えます。
そして共通テストでは——「共通テスト用プログラム表記」に関数を定義する書式は例示されていません。関数の仕様は問題文の【関数の説明】として与えられます。問われるのは「作れるか」ではなく、「与えられた仕様どおりに呼べるか」です。
3. なぜそうなるのか
3-1 関数は「短くする」道具ではない
国の教材が、この点をはっきり書いています。文部科学省「情報Ⅰ」教員研修用教材 第3章 学習14「応用的プログラム」の (3)「関数」の冒頭です。
一般にシステム開発などで行われるプログラムは大規模なので,コードの長さも膨大となる。このような場合,文章の章,節,段落のような適切な構造を作らないと,コードの可読性は著しく低くなってしまう。そこでプログラムの機能ごとにメインコードから切り離し,関数という単位で分割することで,プログラムを機能ごとに整理,構造化することが可能となる。
文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章(令和2年)/2026年8月3日取得
たとえが「章・節・段落」であることに注目してください。本を章に分けるのは、ページ数を減らすためではありません。読む人が「いま何の話をしているか」を保持できるようにするためです。関数も同じで、目的は長さではなく構造です。
この教材はさらに、関数の効果として「作成した関数はメインコード内で何回でも呼び出すことが可能となるため、作成した機能を再利用することが可能となる」と続けます。再利用は結果であって、目的の全部ではありません。
第54講(トレース)で扱ったトレースが効くのは、人間が一度に頭に置ける変数がせいぜい数個だからでした。関数は同じ弱点に対する、もう一方の対策です。トレースが「小さく刻んで確認する」なら、関数は「大きくまとめて名前を付ける」。方向は逆ですが、狙っている敵は同じ「短期記憶の狭さ」です。
3-2 引数と戻り値=外との唯一の窓口
同じ教材が、数学の関数との対応をこう書いています。
数学での関数は y=f(x) のように表現されるが,コンピュータプログラムの関数では x を引数(ひきすう)、y を戻り値と呼んでいる。
同上(図表6「数学における関数」・図表7「プログラムにおける関数」)
そして「実際に関数で分割するときには『どのような処理を行っているか』と同時に、引数(処理に必要なデータは何であるか)、戻り値(処理結果のデータは何であるか)を把握する必要がある」と続きます。
決定的なのは、同じ学習14の学習指導案にある指導上の留意点です。
「関数の機能」「引数」「戻り値」が適切であれば、他のメインコードにおいても関数が使用可能であることをプログラムを作成することで理解させる。
同上(学習14 指導上の留意点)
この一文が、関数がなぜ分業を可能にするかを言い切っています。機能・引数・戻り値の3点が決まっていれば、中身を一行も読まずに使える。逆に言えば、この3点が曖昧な関数は、書いた本人以外には使えません。
3-3 同じ引数なら同じ結果が返る関数だけが追える
第60講(確定モデル)で扱った確定モデルは、「同じ条件を入れれば必ず同じ結果になる」から手で追えるモデルでした。関数にも同じ性質があります。「二つの値の大きいほうを返す関数」が何度呼んでも同じ答えを返すなら、トレース中にその行へ来たとき中身を追う必要がありません。
逆に、関数の中で外の変数を書き換えていると、この保証が崩れます。同じ引数で呼んでも、それまでに何回呼ばれたかによって結果が変わる。こうなるとトレース表の変数欄が足りなくなり、追跡が一気に難しくなります。「引数で受け取り、戻り値で返す」という形は、追跡可能性を守るための設計なのです。
3-4 スコープ——箱がどこまで見えるか
第48講で「変数は値を入れる箱」と書きました。これは私の比喩ではなく、国の教材の言葉です(情報Ⅰ教員研修用教材 第3章「コンピュータで変数は指定されたビット数の箱に入っていると考える」)。
ではその箱は、どこから見えるのでしょうか。変数が届く範囲のことを、一般にスコープと呼びます。ここで本書らしい調べ方をひとつ。私は次の資料を全文テキスト化して、機械的に数えました(2026年8月3日)。
- 高等学校学習指導要領(平成30年告示)解説 情報編(第1部=共通教科/第2部=専門教科情報科を分けて計数)
- 「情報Ⅰ」教員研修用教材 第1〜4章(章ごとに別PDF、全4冊)
- 「情報Ⅱ」教員研修用教材 序章・第1章・第2章・第3章前半・第3章後半・第4章・第5章(全7分冊)
「スコープ」「局所変数」「大域変数」「グローバル変数」「ローカル変数」の5語は、上記のすべてで0件。共通教科側にも専門教科側にも、1件もありません。
ただし——語が無いことと、概念が無いことは別です。情報Ⅱ教員研修用教材 第4章のリファクタリング一覧表(図表3)、その「関数の抽出」の手順に、こう書かれています。
抽出したコードに含まれる変数を調べ、新しい関数ではアクセスできない変数を特定し、引数として新しい関数に渡すようにする
文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章(令和2年6月)図表3/2026年8月3日取得
これがスコープそのものです。「新しい関数からはアクセスできない変数がある」——だから引数で渡す。国の教材は、スコープという語を一度も使わずに、スコープを手順の中に書いているわけです。
なお実務側の資格試験では、語がはっきり立っています。IPA「基本情報技術者試験(レベル2)シラバス Ver.9.2」の「⑥手続、関数」は、用語例に「引数、戻り値、局所変数」を並べています。高校の共通教科で名前を持たない概念が、情報処理技術者試験のレベル2では用語として存在する。第41講(2の補数)や第44講(論理回路)と同じ形の段差です。
3-5 呼び出しのトレースが難しいのは「戻り先」
関数呼び出しのトレースが第54講のトレースより難しいのは、「どこへ戻るか」を覚えておかなければならないからです。ループは「上に戻る」だけですが、関数は呼ばれた場所へ戻ります。しかも同じ関数が複数の場所から呼ばれます。対策は単純で、第54講のトレース表に「呼び出し元」の列を1つ足すことです。これだけで正答率が変わります(後述の実験2)。
3-6 共通テスト用プログラム表記には「関数の定義」の書式が無い
ここが本講で最も重要な一次資料の話です。私は大学入試センターのPDFを2本、自分で開いて確認しました。
(a) 旧DNCL(情報関係基礎用)には、関数を定義する書式がある。
「共通テスト手順記述標準言語 (DNCL) の説明」(大学入試センター、2022年1月)は、第6節「用意された関数の呼び出し」と、独立した第7節「新しい関数の定義」を持ちます。第7節には《一般形》として次が明記されています。
関数 〈関数名〉 ( 〈引数列〉 ) を
〈処理〉
と定義する
「関数が呼び出される時に引数として与えられる値は、引数列のところに書いた変数名で利用します。複数の引数を指定する場合は、『,』で区切ります」とも書かれています。
ただし——掲載されている定義例は2つあり、どちらも末尾が「を表示する」で終わっています(「和を表示する (n)」「べき乗を表示する (m,n)」)。第7節には値を返す文(Python の return に当たるもの)が一つも書かれておらず、ユーザが定義した関数から値を返す書き方は示されていません。「値を返す」という言い方が出てくるのは第6節(あらかじめ用意された関数の呼び出し)のほうです。つまり旧DNCLでも、値を返す関数は「出題者が用意するもの」でした。
(b) 共通テスト用プログラム表記(情報Ⅰ用)には、その第7節に当たるものが無い。
「令和7年度大学入学共通テスト 試作問題『情報』の概要」(2022年11月9日公表)第5節「共通テスト用プログラム表記の例示」の「7関数」は、次の4行だけです。
- 値を返す関数例:
kazu = 要素数(Data)/saikoro = 整数(乱数()*6)+1 - 値を返さない関数例:
表示する(Data)など - ※「表示する」関数はカンマ区切りで文字列や数値を連結できる
- ※「表示する」関数以外は基本的に問題中に説明あり
定義の書式は一切例示されていません。例示全体で名前つきで登場する関数は 要素数() 表示する() 整数() 乱数() の4つだけです。
旧課程(情報関係基礎)では「関数を定義できるか」が問われうる建て付けだったのに対し、情報Ⅰでは「与えられた関数を正しく呼べるか」に軸が移りました。講の題は「ユーザ定義関数」ですが、共通テストでのユーザは出題者であり、受験生は利用者の側に立たされます。
そして、これは制度の手抜きではありません。学習指導要領(平成30年告示)の情報Ⅰ (3)「コンピュータとプログラミング」の(内容の取扱い)(4) には、こう書かれています。
(4) 内容の(3)のアの(イ)及びイの(イ)については、関数の定義・使用によりプログラムの構造を整理するとともに、性能を改善する工夫の必要性についても触れるようにする。
高等学校学習指導要領(平成30年告示)解説 情報編(平成30年7月)/2026年8月3日取得
告示本文が「関数の定義・使用」を名指ししている。授業では定義まで扱う。ただし定義の書き方は言語ごとにまったく違う——だから共通テストは、定義の書式を自前で決めずに、仕様を日本語で与える方式を選んだのだと私は読みます。
その裏づけもあります。文部科学省は「情報Ⅰ」教員研修用教材の第3章だけ、4つの他プログラミング言語版(JavaScript版・VBA版・ドリトル版・Swift版)を別途公開しています。同じ学習14の同じ「関数で分割したプログラムの例」を見比べると、こうなります。
| 版 | 関数を定義する書き方 | 戻り値の返し方 |
|---|---|---|
| 本編(Python) | def listgoukei(a): |
return goukei |
| JavaScript版 | function listsum(a){ … } |
return sum; |
| VBA版 | Function listsum(r() As Variant) As Integer |
listsum = gokei(代入で指定) |
同じ内容の同じ図表なのに、定義の書き方が三者三様です。共通テストが定義の書式を持たない理由は、この一覧を見れば納得できます。
4. 手で確かめる
以下はすべて Python 3 で実際に実行し、出力を確認したものです(2026年8月3日)。
実験1 仕様変更で「直す箇所」を数える
3つのグループの平均点を求めます。まず関数を使わずに、同じ処理を3回書きます。
A = [56, 3, 62]
B = [17, 87, 22, 36]
C = [83, 21, 12]
goukei = 0
for x in A:
goukei = goukei + x
heikin_a = goukei / len(A)
goukei = 0
for x in B:
goukei = goukei + x
heikin_b = goukei / len(B)
goukei = 0
for x in C:
goukei = goukei + x
heikin_c = goukei / len(C)
print(heikin_a, heikin_b, heikin_c)
出力:40.333333333333336 40.5 38.666666666666664
次に、関数にまとめます。
def heikin(Data):
goukei = 0
for x in Data:
goukei = goukei + x
return goukei / len(Data)
print(heikin(A), heikin(B), heikin(C))
出力:40.333333333333336 40.5 38.666666666666664(完全に同じ)
ここで仕様変更が入ります。「平均は小数第1位で四捨五入して出すこと」。
| 版 | 直す箇所の数 | 危険 |
|---|---|---|
| 関数なし版 | 3か所 | 1か所忘れると、そのグループだけ古い仕様のまま出力される |
| 関数あり版 | 1か所 | 直し忘れが原理的に起きない |
def heikin2(Data):
goukei = 0
for x in Data:
goukei = goukei + x
return round(goukei / len(Data), 1)
print(heikin2(A), heikin2(B), heikin2(C))
出力:40.3 40.5 38.7
3対1。これが「なぜ関数か」の最も強い実演です。そして重要なのは、直す箇所が3か所あることではなく、「3か所ある」と気づけないことのほうです。関数版には気づく必要すらありません。
40.333333333333336 と表示されるのは、2進法の小数で 1/3 が正確に表せないためです。第42講(小数と誤差)で扱った丸め誤差そのもので、関数とは無関係です。念のため sum(D)/len(D) と statistics.mean(D) の2通りで独立に照合し、A・B・C の3つとも3経路がすべて一致することを確認しました。
実験2 呼び出し元の列を足したトレース表
第54講のトレース表に「呼び出し元」の列を1本足します。題材は、関数がもうひとつの関数を呼ぶ形です(前掲の図2がこの流れです)。
def bai(n):
return n * 2
def sanbai(n):
return bai(n) + n
print(sanbai(4))
出力:12
| 手順 | いま実行している場所 | 呼び出し元(戻り先) | n | 起きること |
|---|---|---|---|---|
| 1 | メイン | — | — | sanbai(4) を呼ぶ |
| 2 | sanbai の中 | メイン | 4 | bai(4) を呼ぶ |
| 3 | bai の中 | sanbai | 4 | 4×2 = 8 を返す |
| 4 | sanbai の中(戻ってきた) | メイン | 4 | 8 + 4 = 12 を返す |
| 5 | メイン | — | — | 12 を表示 |
手順3と手順4の n は、どちらも 4 ですが別の箱です。bai の n と sanbai の n は名前が同じだけで、別々に存在します。これがスコープです。次で確かめます。
実験3 スコープの3つの実験
(1) 数値を渡した場合——外は変わらない
def hyakutasu(x):
x = x + 100
return x
x = 5
y = hyakutasu(x)
print(x, y)
出力:5 105
関数の中で x を書き換えても、外の x は 5 のままです。関数の中の x は、外の x の値を写し取った別の箱だからです。
(2) 関数の中だけの変数は、外から見えない
def kansu_nai():
himitsu = 999
return himitsu
kansu_nai()
print(himitsu)
出力:NameError: name 'himitsu' is not defined
エラーになります。これは不便な制限ではなく、守りです。関数の中で使った作業用の変数が外に漏れないから、関数を安心して増やせます。
(3) 配列(リスト)を渡した場合——外が変わる
def sentou_wo_zero_ni(Data):
Data[0] = 0
return Data
E = [7, 8, 9]
F = sentou_wo_zero_ni(E)
print(E, F)
出力:[0, 8, 9] [0, 8, 9]
外の E まで書き換わりました。数値を渡したときは外が守られたのに、配列を渡すと守られない。これは Python の仕様ですが、共通テストで配列を関数に渡す設問が出たときに直結する話です。渡した配列を関数が書き換えるのかどうかは、必ず問題文の説明を読んで確認してください。
実験4 与えられた仕様を自分で作り直して照合する
「二つの値のうち大きいほうを返す」という仕様の関数を自分で書き、Python の組込み max と全数照合しました。
def saidaichi(x, y):
if x > y:
return x
else:
return y
ok = True
for i in range(-20, 21):
for j in range(-20, 21):
if saidaichi(i, j) != max(i, j):
ok = False
print(ok)
出力:True(41×41=1681通りすべて一致)
saidaichi(1, 5) は 5、saidaichi(2, 2) は 2 です。等しいときにどちらを返すかが仕様の穴になりやすいので、その場合の答えまで確認しておくと安心です(この関数では等しいとき x と y は同じ値なので、> でも >= でも結果は変わりません)。
実験5 引数の順番を間違えるとどうなるか
def wariai(bunshi, bunbo):
return bunshi / bunbo
print(wariai(3, 4))
print(wariai(4, 3))
出力:0.75 と 1.3333333333333333
エラーになりません。黙って違う答えを返します。引数の順番の取り違えが恐ろしいのはここです。機械は気づいてくれません。
5. 共通テストではこう出る(重要度 A)
令和8年度で、関数が初めて扱われた
大学入試センター「令和8年度大学入学共通テスト 問題評価・分析委員会報告書『情報Ⅰ』」の問題作成部会の見解に、次の一文があります。
令和8年度試験の新たな試みとして、プログラム表記で関数を取り扱った。
大学入試センター「令和8年度大学入学共通テスト 問題評価・分析委員会報告書『情報Ⅰ』」/2026年8月3日取得
同じ箇所で「関数を使うことでプログラムを読み解きやすくする試みとして歓迎したい」(情報処理学会)という評価が紹介され、高校からの評価として「プログラムの長さは 14 行と標準的な分量ながら、正確にシミュレーションする論理的思考力が試される良問であった」と記されています。
私自身でも数えました。令和7年度の本試験・追試験の『情報Ⅰ』の問題冊子には、「関数」という語が1件もありません(両方のPDFをテキスト化して全文検索、2026年8月3日)。令和8年度で初めて登場します。関数は最新の出題傾向そのものです。
なお、令和9年度の出題教科・科目に関する資料でも「プログラミングに関する問題を出題する際のプログラム表記は、授業で多様なプログラミング言語が利用される可能性があることから、受験者が初見でも理解できる大学入試センター独自のプログラム表記を用いる」と明記されており、方式は継続します。
出題の3つの型
型1:仕様が与えられた関数を読む型。問題文に【関数の説明】として「◯◯(引数)…(何をして何を返すか)」と書かれ、具体例が1〜2個添えられます。この説明文が唯一の仕様書です。読むときは、①引数はいくつで、それぞれ何か ②戻り値は何か ③そもそも値を返すのか返さないのか、の3点を必ず押さえてください。
型2:関数を含む行の穴埋め。「この行で関数◯◯を呼んで、結果を変数△△に入れたい」という形で空欄が置かれます。空欄が関数名なのか引数なのか代入先なのかで、考えることがまったく違います。
型3:呼び出し結果を追う型(トレース)。繰り返しの中で関数が呼ばれ、呼ばれるたびに引数が変わります。実験2のトレース表に「呼び出し元」の列を足す方法が、そのまま使えます。第55講(探索)や第56講(整列)のアルゴリズムを関数に切り出した形が、最も出やすい姿です。
引っかけの上位3つ
| 順 | 引っかけ | 対策 |
|---|---|---|
| 1 | 引数の順番を取り違える | 実験5のとおりエラーにならない。「1番目に何を渡すか」を問題文で必ず確認する |
| 2 | 戻り値を受け取り忘れる | 値を返す関数を呼びっぱなしにすると結果がどこにも残らない。必ず 変数 = 関数名(…) の形になる |
| 3 | 値を返す関数と返さない関数の混同 | 表示する(…) は値を返さない。x = 表示する(y) のような行は誤りの選択肢 |
もうひとつ。共通テスト用プログラム表記の例示には「『表示する』関数以外は基本的に問題中に説明あり」という注があります。逆に言えば、表示する だけは説明なしで出てくるということです。この1つだけは覚えておいてください。
6. 情報Ⅱではこうなる
語数で見る分水嶺
同じ語が、①学習指導要領解説 情報編 ②情報Ⅰ教員研修用教材 ③情報Ⅱ教員研修用教材で何回出てくるかを数えました(2026年8月3日、空白と改行を除去して計数)。解説は共通教科(第1部)と専門教科情報科(第2部)を分け、共通教科側はさらに情報Ⅰの節と情報Ⅱの節に分けています。
| 語 | 解説・情報Ⅰ | 解説・情報Ⅱ | 解説・専門教科 | 情報Ⅰ教材 | 情報Ⅱ教材 |
|---|---|---|---|---|---|
| 関数 | 2 | 11 | 2 | 72(当該用法は第3章の36) | 100(当該用法は第4章の55) |
| 引数 | 0 | 1 | 0 | 19(当該用法18) | 10 |
| 戻り値 | 0 | 1 | 0 | 17 | 3 |
| モジュール | 0 | 9 | 1 | 8 | 143 |
| インタフェース | 2(ユーザIF) | 0 | 10 | 13(部品間の意味は0) | 44(部品間は第4章の9) |
| スコープ/局所変数/大域変数/グローバル変数/ローカル変数 | 0 | 0 | 0 | 0 | 0 |
別の意味の除外について。「関数」は同音異義がとくに多い語なので、ヒットを1件ずつ目で確認しました。情報Ⅰ教材の72件のうち、第4章の15件は表計算の関数(MAX・CORREL 等)・数学の一次関数・R の関数の呼び出しで、ユーザ定義関数の話は1件もありません。第3章の57件のうち、三角関数が2件、import や乱数などライブラリ関数の呼び出しを指すものが19件で、プログラムを関数に分割する議論は学習14の36件に集中しています。情報Ⅱ教材の100件も、第3章前半の7件は表計算関数6件と pandas の read_csv 関数1件、第3章後半の37件はすべて活性化関数・損失関数・シグモイド関数など機械学習の数学関数、第1章の1件は指数関数です。プログラミングの意味で使われているのは第4章の55件だけでした。
「インタフェース」はさらに要注意です。情報Ⅰ側の13件は、第2章のユーザインタフェース(画面や操作の設計)と第4章のネットワークインタフェース層(TCP/IPの最下層。第68講で扱いました)で、モジュール間のインタフェースという意味は1件もありません。解説の共通教科側の2件もどちらもユーザインタフェースです。「部品と部品のつなぎ目」という意味でこの語が立つのは、情報Ⅱ教材 第4章の9件だけでした。
数字が語っていることは明快です。情報Ⅰでは「関数」が学習14という1つの学習項目に収まっている。情報Ⅱでは第4章がまるごとその世界になり、しかも主役の座は「関数」から「モジュール」(143件)へ移ります。
関数がモジュールに育つ
情報Ⅱ教員研修用教材 第4章 学習22 は、ソフトウェア詳細設計をこう定義します。
プログラムを更に細かく、モジュールと呼ばれる単位に分割・階層化し、モジュール間のインタフェースを明確にする(図表2 階層化による分割のイメージ)
「情報Ⅱ」教員研修用教材 第4章 学習22/2026年8月3日取得
そしてモジュール分割の手順を6段階で示し、その❺が「インタフェースの定義」です。情報Ⅰの「関数で分割する」が、そのまま設計技法の名前を得たものです。さらに学習22 のカプセル化の節には、こうあります。
内部のデータを直接見たり、値の変更を行ったりすることができない。……データを読み書きするための関数を用意することができる。これはモジュールのインタフェースに相当する。
同上(学習22 カプセル化)
情報Ⅱでは「変数に値を書くための設定用の関数と、変数の値を参照するための読み出し用の関数」を置いて、変数への直接アクセスを禁じます。情報Ⅰで「関数は処理をまとめる箱」だったものが、情報Ⅱでは「変数を守る門」になるわけです。3-4 で見た「新しい関数ではアクセスできない変数」という一文が、ここで設計の目的そのものに昇格します。
引数の食い違いが、最初に出るバグになる
学習24「分割したシステムの結合とテスト」の記述が、本講の内容と正面から噛み合います。
結合テストで明らかになる不具合は、主にモジュール間のインタフェースの不備である。呼び出すときに引数の対応が間違っている、渡す引数に正しい値がセットされていない、などのエラーが想定される。
同上(学習24 分割したシステムの結合とテスト)
実験5で確かめた「引数の順番を間違えてもエラーにならない」が、そのまま現場で最初に発見されるバグの類型として教材に書かれているのです。共通テストの引っかけと、情報Ⅱの結合テストの主題が、同じ一点を指しています。
窓口がネットワークをまたぐ
学習23「単体プログラムの制作」は、プログラム間のデータの受け渡し方として次の2つを並べます。
- 関数への引数や戻り値として渡す
- ネットワーク通信のメッセージとして渡す
同じ「渡す」でも、片方は同じコンピュータの中、もう片方は Web API を経由して外部のサーバとやり取りします(教材の実習は図書検索 Web API を Python から叩くものです)。引数と戻り値という考え方は、関数の外側にまで広がる——これが情報Ⅱでの最大の拡張です。第74講(HTTPとURL)で扱った通信の話が、ここでプログラミングと合流します。
情報Ⅱの「効率」は、実行速度ではなく開発の効率
学習指導要領解説の情報Ⅱ (4) は、こう書いています。
関数の「書式」、「機能」、「引数」、「戻り値」などを適切に定義したり、それらを使って情報システムを構成するソフトウェアを設計する力を養う。その際、過去に自分が作成した関数、他人が作成した関数も含めて、どのような関数を利用すれば効率的な開発ができるか判断する力……を養う。
高等学校学習指導要領(平成30年告示)解説 情報編 情報Ⅱ(4)/2026年8月3日取得
情報Ⅰの学習14の指導案が「機能・引数・戻り値が適切なら他のメインコードでも使える」と書いていたのと、まったく同じ3点セットです。違うのは主語で、情報Ⅰでは「自分が書いた関数を自分で使う」、情報Ⅱでは「他人が作成した関数」が明示的に視野に入ります。そして「効率」の意味も、第57講(計算量)で扱った実行の効率ではなく開発の効率です。
情報Ⅱ第4章のリファクタリング一覧表(図表3)が、その仕上げです。「関数の抽出」(ソースコード中に何度も現れる処理などを関数としてまとめる)が独立したパターンとして載り、その手順の最後に「代入の右辺に副作用(出力や変数の変更など)がないことを確認する」と書かれています。「副作用」の語は、私が調べた情報Ⅱ教材 全7分冊のなかでこの1件だけでした。3-3 で述べた「外の変数を書き換える関数は追えない」という話が、たった1行だけ、しかしリファクタリングの前提条件として置かれています。
この講のまとめ
- 関数の目的は短くすることではなく、考える単位を作ること。国の教材は「文章の章・節・段落」にたとえている
- 機能・引数・戻り値の3点が決まれば、中身を読まずに使える。これが分業の条件
- 仕様変更で直す箇所は、関数なし3か所に対し関数あり1か所(実際に実行して確認)
- 関数の中の変数は外から見えない。ただし配列を渡すと外まで書き換わる(
[7,8,9]→[0,8,9]) - 「スコープ」「局所変数」等の5語は、解説(共通教科・専門教科の両方)・情報Ⅰ教材 全4章・情報Ⅱ教材 全7分冊のいずれにも0件。ただし情報Ⅱ教材は「新しい関数ではアクセスできない変数」という言い回しで概念だけを書いている。IPA基本情報シラバスには「局所変数」が用語例として在る
- 共通テスト用プログラム表記には関数を定義する書式が例示されていない。旧DNCLには第7節「新しい関数の定義」が在った。受験生の仕事は「作る」ではなく「仕様どおりに呼ぶ」
- 令和8年度が初出。令和7年度の本試験・追試験には「関数」の語が0件
- 情報Ⅱでは関数がモジュール(教材第4章に143件)へ育ち、インタフェースの定義が設計手順の一段階になる。引数の食い違いは結合テストで最初に出るバグとして名指しされている
出典(すべて2026年8月3日に取得)
- 大学入試センター「共通テスト手順記述標準言語 (DNCL) の説明」2022年1月(第6節・第7節)
- 大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」2022年11月9日公表(第5節「共通テスト用プログラム表記の例示」)
- 大学入試センター「令和8年度大学入学共通テスト 問題評価・分析委員会報告書『情報Ⅰ』」問題作成部会の見解
- 大学入試センター 令和7年度・令和8年度 本試験/追・再試験『情報Ⅰ』問題冊子(語の計数のみに使用)
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第3章・第4章(令和2年)/第3章 他プログラミング言語版(JavaScript・VBA・ドリトル・Swift)
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章(令和2年6月)ほか全7分冊
- IPA「基本情報技術者試験(レベル2)シラバス Ver.9.2」
制度に関する記述はすべて2026年8月時点のものです。同じ第3部では第48講(変数と代入)が本講の土台、第54講(トレース)が本講の実験2の土台になります。『藤原進之介の最強120講義』の全体像とカテゴリ「情報Ⅰ 最強120講義」から他の講も読めます。
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第53講のWeb版です。
「関数が出てきた瞬間にプログラムが読めなくなる」という方へ
関数は、令和8年度の共通テスト『情報Ⅰ』で初めて扱われた新しい要素です。過去問の蓄積が少ないぶん、独学だと「どこまで理解すれば足りるのか」が見えにくいところでもあります。数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
