この記事は、高校の「情報Ⅰ」のプログラミングで手が止まっている高校生に向けて書いています。授業でも、定期テストでも、共通テストの対策でも大丈夫です。
授業はちゃんと聞いているのに、コードを見るとどこから読めばいいか分からない。テストになると手が止まる。……ということはありませんか?
私はプログラミングの講師として、小学生から大学生まで教えてきました。ただ、高校で「情報Ⅰ」を教えた経験はありませんので、範囲や出題の形は文部科学省や大学入試センターなどの公開情報で確かめたうえで、この記事を書いています。その点だけご了承ください。
先に結論を書いておきます。
わからないのは才能の問題ではなく、つまずいている場所が「お作法」「知識」「読み方」のどこかにある、というのが私の見立てです。
- 情報Ⅰの「わからない」を3つのタイプに切り分ける方法
- プログラミングの問題で最低限おさえる「お作法」
- 1行ずつ追う練習と、間違えた問題の戻り方
- プログラミングを習っていても解けない問題がある理由
- 長い文章問題で迷子にならない読み方
まずは切り分け|わからないのは「プログラミング」?それとも「情報」?
「情報のプログラミングがわからない」と一口に言っても、実はつまずいている場所は人によって違うのかなと思います。
なので、いきなり勉強法に行く前に、まずは自分がどこで止まっているのかを切り分けてみましょう。ここを飛ばすと、頑張っているのに点が伸びない、ということが起きやすいです。
「情報Ⅰ」は4つの分野でできている
情報Ⅰは、2022年度の入学生からほぼ全員が学ぶ科目です。学習指導要領では、中身が大きく4つの分野に分かれています。
ざっくり整理すると、こんな感じです。
(ただし、プログラミングの経験がどこまで効くかは、完全に私個人の見方なので参考程度に)
| 分野 | 主な中身 | プログラミングの経験は効く? |
|---|---|---|
| 情報社会の問題解決 | 著作権・特許権などの知的財産権、情報セキュリティ、情報モラル | ほぼ効かない。範囲の勉強が必要 |
| コミュニケーションと情報デザイン | デジタル化(2進法・ビットなど)、メディア、情報デザイン | 一部だけ。2進法などは別に勉強が必要 |
| コンピュータとプログラミング | コンピュータの仕組み、アルゴリズム、プログラミング、モデル化とシミュレーション | いちばん効く。ただし仕組みやシミュレーションは別 |
| 情報通信ネットワークとデータの活用 | ネットワーク(IPアドレス・ドメインなど)、データベース、データの分析 | あまり効かない。範囲の勉強が必要 |
見ての通り、プログラミングは4つのうちの1つの、さらに一部だけです。
4つの分野それぞれの中身や、情報Ⅱとの違いは、こちらにまとめています。→ 情報Ⅰとは?高校で学ぶ4つの内容と情報Ⅱとの違いを講師が整理
プログラミングの習い事と、情報Ⅰは重なる所が一部だけ
ここは、私が情報Ⅰの問題集に目を通して、いちばん感じたことです。
私が生徒さんに教えているのは、Scratch や HTML・CSS、JavaScript などで「何かを作る」プログラミングです。一方、情報Ⅰの問題で出題されるのは、知的財産権や情報セキュリティ、SNS の使い方、ビットや2進法、ブラウザとサーバーの関係、IPアドレスやドメイン、表計算を使ったシミュレーション……と、とても幅が広いものです。「座学」が多いとも言えるかもしれません。
正直にいうと、私が教えている内容と、かけ離れている問題が多いなという感覚もあります。
つまり、プログラミングスクールや習い事でやる範囲と、情報Ⅰで扱う範囲は、重なる部分もあるけれど、重ならない部分もかなりある。
「プログラミングをやっているのに、情報のテストが解けない」は普通に起こりえます。逆に言えば、プログラミングが苦手でも、点を取れる問題はたくさんあるということですね。
ちなみに、高校生がプログラミングを授業の外でどう進めるか、という全体の話は高校生のプログラミング学習ガイドにまとめています。
あなたのつまずきはどれ?3つのタイプ
ここまでを踏まえて、あなたの情報に対する「わからない」を3つのタイプに分けてみましょう。まずは、分類から。
- お作法タイプ:「=」や繰り返しの意味があいまいで、コードを見ると手が止まる
- 知識タイプ:著作権やIPアドレス、2進法などの用語を聞かれると答えられない
- 読み方タイプ:問題文や会話文が長くて、途中で何の話か分からなくなる

2つ、3つ当てはまる人もいると思います。それで普通です。自分に当てはまるタイプの章から読んでもらって大丈夫です。
タイプ1に関しては、私が教えている分野とも被りますので、ここで解決できるように具体的なポイント解説を載せます。
タイプ2とタイプ3に関しては、対策のポイントをまとめますので、それを意識しながらご自身で勉強してみてください。
タイプ1:プログラミングの「お作法」に慣れていない
まずは、いちばん多そうなお作法タイプからです。
情報Ⅰの問題集のプログラムの問題を見て思ったのは、ロジック自体はそこまで複雑ではないということでした。変数、配列、繰り返し、条件分岐、上から順に処理する……といった最低限のお作法が分かっていれば、難なく解ける問題が多いと思います。
逆に、このお作法をまったく知らない状態で初めて見ると、かなり難しく感じるはずです。変数って何?代入するの?ループって?と、なじみのないものだらけなので。
つまり、難しいのはロジックではなく「お作法に慣れていないこと」のほうです。慣れの問題なので、ここは取り返せます。それでは、つまずきやすいお作法を順番に見ていきます。
下記、具体的なポイント解説をいくつか載せます。この記事では考え方の解説にとどめますので、さらに具体的な練習問題や過去問を解いたあとに、1つ1つ復習をする中で理解するのが良いと思います。タイプ2とタイプ3の解説を先に知りたい方は読み飛ばしても構いません。
プログラムは上から1行ずつ動く
当たり前に聞こえますが、意外と抜けやすい所です。
プログラムは基本的に、上から1行ずつ順番に実行されます。プログラミングの世界では「順次処理」と言います。
わからなくなる人は、途中から読んだり、読み飛ばしたり、コード全体を一度に眺めて「何をしているか」を当てようとしがちです。
そうではなく、1行目、2行目、3行目と、コンピュータになったつもりで順番に動かしていく。1000行あるコードでも、上から順に処理されるのは同じです。ただこれだけのことですが、馬鹿にできません。
階段を一段一段歩みを進めるように、読み進めてください。地味ですが、いちばん大切な基本です。
「=」は「等しい」ではなく「入れる」
ここも基本です。数学の「=」は「左と右が等しい」という意味ですよね。でもプログラミングの「=」は、多くの場合「右側の値を、左側の箱(変数)に入れる」という意味です。これを代入と呼びます。
変数というのは、値を入れておく名前つきの「箱」だと考えてください。
たとえば「a という箱に5を入れる → 同じ a の箱に8を入れる」をプログラムで書くと、こうなります(ここからの例は Python の書き方です。細かい書き方は言語によって違います)。
a = 5
a = 8
最終的に a の箱に入っているのは8です。箱の中身は上書きされるので、最後に入れたものが残ります。1行目が終わった時点で a を使えば5、2行目が終わった時点なら8。「順次処理(上から順番に動く)」が早速活きますね。
次は x = x + 1 です。数学として読むと意味が通りませんが、「今の x に1を足して、その結果をまた x に入れる」と読めば、ちゃんと意味が通ります。自分自身に1を足す、ということです。
x = 5
x = x + 1
この2行が実行されたあとの x はいくつでしょうか? 6ですね。では、これはどうでしょう。
x = 5
x = x + 1
x = x + 1
x = x + 1
答えは8です。
ここまでで、順次処理・変数・代入という3つのお作法が出てきました。
変数の中身が「今いくつか」を追う
問題を解くときに大事なのは、その箱に今いくつが入っているかを、行ごとに追えるかどうかです。
変数について、最低限おさえておきたいのはこのくらいです。
- 変数には名前をつけて、いくつでも作れる(a の箱、b の箱、c の箱……)
- 新しく代入すると上書きされ、最後に入れた値が残る
- 値には「型」がある。数値の 5 と、文字列としての “5” は別物(言語によっては、1つの変数に入れられる型が決まっている)
- 言語によっては、使う前に「宣言」が必要(JavaScript の let など)。Python は代入するだけで使える
これだけ覚えておけば、とりあえずはOKです。
頭の中だけで追うと、2つ3つ変数が出てきたあたりで混乱しやすいです。紙に書いて追う方法は、次の章で紹介します。
繰り返しは「何周目に何が起きるか」で見る
繰り返し(ループ)が出てくると、急に分からなくなる人が多いです。コツは、まとめて考えずに「1周目」「2周目」「3周目」と分けて考えること。中でやっていることは、順次処理と何も変わりません。
さきほどの2行を、for 文で3回繰り返してみます(繰り返しの書き方は言語によって違い、1つの言語の中にもいくつか書き方があります)。
for i in range(3):
x = 5
x = x + 1
はじめてのお作法(書き方のルール)を見ると混乱しがちですが、落ち着いてみていけば大丈夫。上のfor文の書き方は、さきほどの2行を3回繰り返しますよという意味です。rangeの中身が5ならば5回繰り返しです。
Python では、行の先頭を下げた(字下げした)2行が、繰り返す中身です。3回繰り返したあとの x は、何になりますか?8でしょうか?
展開してみると、次と同じ意味になります。
x = 5
x = x + 1
x = 5
x = x + 1
x = 5
x = x + 1
毎回 x に5が入り直してから1を足すので、最終的な x は6が正解です。
では、x = 5 を繰り返しの前に出すとどうなるでしょう。
x = 5
for i in range(3):
x = x + 1
今度は5が入るのは最初の1回だけなので、5 → 6 → 7 → 8 と増えて、答えは8です。どの行が繰り返しの中にあるかで、結果が変わるわけですね。
なんとなく、わかりましたか? 一回読むだけで完璧に理解するのは難しいので、過去問や例題にあたって意味をつかんでみてください。
条件分岐は「もし〜なら」
条件分岐は、「もし〜なら、この処理をする。そうでなければ、別の処理をする」という書き方です。
x = 8
if x > 6:
print("大きい")
else:
print("小さい")
x の中身は8ですよね。
xは、6より大きいので「大きい」と表示されます。(elseの方に書いてある「小さい」は今回は実行されない)。
xの中身が6以下であれば、「小さい」が表示されます。
これが条件分岐。身の回りでもたくさん使われているプログラムの基本です。条件に当てはまるかどうかで、通る行が変わる。これも、上から1行ずつ追えば迷いません。
配列は、値がいくつも並んだ大きな箱
最後に配列です。配列(Python ではリストと呼びます)は、値がいくつも並んだ大きな箱です。書き方はこうなります。
x = ["こんにちは", "Hello", "Hola", "你好"]
y = [6, 3, 14, 24]
x には文字列が4つ、y には数値が4つ入っています。値だけでなく、変数を並べることもできます。
a = 3
b = 7
c = 1
d = 5
z = [a, b, c, d]
この z の中身は、3・7・1・5 です。わかりますか?ここでの a〜d は文字列としての「a」ではなく、変数 a〜d の中身だという点に注意してください。
あとは、何番目の値を取り出すか、です。Python の配列は0番目から数えます。z の中身は4つなので、0番目・1番目・2番目・3番目。c の値を取り出したいときは、こう書きます。
z[2]
0から数えて2番目(前から3つ目)、つまり c に入っていた1が取り出されます。
この番号(添字)が0から始まるのか1から始まるのかは、言語や問題によって違います。共通テストでは問題文で示されるので、必ず確認してから読み始めてくださいね。授業や定期テストでは、使っている言語のルールを確認しておきましょう。
プログラミングの問題でおさえておきたいお作法は、このくらいです。多くないですよね。なじみがないので最初は戸惑って当然ですが、一度理解してしまえば、難なく解けるようになるはずです。
授業の言語と、テストの書き方が違うことがある
授業で使うプログラミング言語は、学校によって違います。Python を使う学校が多いようですが、JavaScript など別の言語を使う学校もあります。
一方で、共通テストでは、特定の言語ではなく共通テスト用の独自のプログラム表記で出題されます。日本語まじりの書き方なので、最初は戸惑うかもしれません。
ただ、書き方が違っても、中身のお作法(代入・順次・分岐・繰り返し・配列)は同じです。言語ごとに別のことを覚える必要はありません。
覚えることは、実はそんなに多くありません。変数・代入・順次・条件分岐・繰り返し・配列。このお作法を押さえれば、情報Ⅰのプログラミングの土台はできます。
立て直し方|1行ずつ追う、間違えた問題こそ1行ずつ戻る
お作法が分かったら、次は実際に読む練習です。ここで大事なのは、とにかく「1行ずつ」です。
短いプログラムで「トレース表」を書いてみる
トレース表は、変数の中身が行ごとにどう変わるかを書き出す表です。例として、短いプログラムを1つ用意しました(Python で書いていますが、共通テストの表記でも考え方は同じです)。
scores = [3, 5, 2]
total = 0
for i in range(3):
total = total + scores[i]
print(total)
3つの点数を、1つずつ total に足していくプログラムです。これを1周ずつ、表に書いて追うとこうなります。まずお見せしますね。
必ずこの表通りにしなさいというわけではありません。数字だけや、言葉でも良いです。とにかくやることは順次処理と同じで、1行ずつ何が起きているかを追っていく(それを紙に書く)ことをしてください。

iの使い方でつまずく人も多いです。今回のfor文は3回繰り返しますよね?このとき1周目はi=0、2周目はi=1、3周目はi=2が代入されます。「iはゼロスタートで、1周ごとに1ずつ増えていく」と思っておくと良いです。
まずはじめ(コードの2行目)で total に0が入りますよね。
次に繰り返しがはじまります。
・1周目は i が0なので、scores の0番目(中身は3)を足して total は3。
・2周目は i が1なので、totalの3に、scores の1番目(中身は5)を足して8。
・3周目は i が2で、totalの8に、scores の2番目(中身は2)を足して10。
最後に10が表示されます。
こうして書き出すと、どこで何が起きているかが目で見えるようになります。最初は面倒に感じますが、慣れるまでは、どんなに短いプログラムでも紙に書くのがおすすめです。
【重要】外した問題は、上から1行ずつ「なぜ」を追い直す
この記事でいちばん伝えたいのは、ここかもしれません。
過去問や練習問題を一度解いてみて、外してしまったとします。そのとき、答えを見て「ああ、そうか」で終わらせない。上から1行ずつ、次の3つを確かめながら追い直します。
- この行は、何を意味しているのか
- なぜ、ここでこう動くのか
- 自分はどこで、なぜ外してしまったのか
一文一文、一行一行をきちんと追い直せた問題は、次に似た問題を解くときに解ける確率がかなり上がると思います。
情報Ⅰは、理解の積み重ねが大きい科目だと感じています。外した問題は、伸びしろそのものです。
空欄を埋める問題や、値・回数を答える問題など、問題の型ごとの解き方は、高校情報のプログラミング問題の解き方|4つの型と練習問題で自作の練習問題とあわせてまとめています。
授業の言語で、実際に動かしてみる

もし授業で使っている環境が家でも使えるなら、例題を自分で打ち込んで動かしてみてください。数字を1つ変えるとどう結果が変わるか、を試すだけでも、トレースの答え合わせになります。
授業が Python なら、家でインストールなしに動かす方法と、練習用の小さなプログラムを高校の授業のPython入門|情報Ⅰで使う書き方とつまずく所で紹介しています。
AI に聞くのも、確かに効率的ですよね。ただ、答えだけをもらうのではなく、「この行がなぜこう動くのか、1行ずつ説明して」と、自分の理解を育てる目的も一緒に伝えるのがおすすめです。
※AIのサービスには年齢の条件があります。18歳以上でないと使えないものや、18歳未満は保護者の許可が必要なものがあるので、使う前に規約を確認してください。18歳未満のうちは、保護者の方のアカウントで一緒に使うのが安心です。
タイプ2:知識が足りない|範囲を勉強するしかない
すでに上でも軽く触れましたが、情報Ⅰにはプログラミングをやっていても解けない問題があります。
正直に書くと、情報Ⅰの問題集には講師の私も知らない知識問題(勉強不足です!)がありました。プログラミングを教えていても、知らないものは知らない(開き直るな笑)。ここは、範囲を勉強して知識として持っておくしかない部分です。
私が見た問題で扱われていたのは、たとえばこんなテーマです。
- 知的財産権(著作権・特許権など)
- 情報セキュリティや、SNSの使い方
- ビット・2進法などのデジタルの仕組み
- ネットワーク(ブラウザとサーバー、IPアドレス、ドメインなど)
- 表計算を使ったシミュレーションや、データの読み取り
なお、これは1回分の問題を見ただけの感想です。範囲全体はもっと広いので、上の4分野の表とあわせて見てください。
やり方はシンプルで、まずは教科書の範囲を一通り読むこと。そのうえで、過去問や練習問題に出てきた用語は、自分の言葉で説明できるまで理解しておくことです。丸暗記より、「なぜそうなっているか」まで分かっているほうが、形を変えて聞かれたときに強いです。
教科書だけだと読みにくい、という人は、範囲を一通りやさしくまとめた入門書を1冊持っておくと楽になります。たとえば『改訂版 高校の情報Ⅰが1冊でしっかりわかる本』(かんき出版・税込1,540円・2026年10月時点)は、会話形式で図が多く、出版社も「最初の1冊」向けとしている本です。
授業用か共通テスト用か、プログラミングの経験があるかで変わる本の選び方は、情報Ⅰの参考書・問題集の選び方|目的と経験別に講師が整理にまとめています。
タイプ3:長い文章を読み飛ばしている|1文も飛ばさない

情報Ⅰの問題集を見て、もう1つ強く感じたのが、文章問題がとても多いということでした。共通テストの情報Ⅰも、会話文や資料を読み取って考える問題が多く、予備校などの分析でも分量の多さが話題になっているようでした。
ここでも起きやすいのが、読み飛ばしです。プログラミングで大切なことと同じ話です。
なじみのない言葉や、ふだん考えたことのない話題が出てくると、つい1文、2文と飛ばしたくなりますよね。でも、1文飛ばし、2文飛ばし……とやっていくと、その先はもう何の話か分からない状態になっていきます。そうなると、問題も解けなくなる。特に最後のほうの長い文章問題は、これが起きやすいと思います。
逆に言うと、落ち着いて上から1文ずつ意味を取っていけば、誰でも解ける問題も多いというのが私の感想です。確かに、知識がないと解けない問題も、お作法に慣れていないと解けない問題もあります。それでも、論理的に書かれた文章を、資料と照らし合わせながら言いたいことを汲み取れるかどうかだけ、という問題もかなりありました。
小技としては、次の2つがおすすめです。
- 最初に設問を見て、「何を聞かれているか」を一言でメモしてから本文を読む
- 会話文や資料に出てきた条件(数字・ルール)に、線を引いたり丸をつけたりしながら読む
わからない原因が「読み方タイプ」の人は、上で書いた「外した問題を1行ずつ追い直す」を、文章にもそのまま使ってください。どの1文を読み落としたせいで外したのかが分かると、次から同じ所で迷わなくなります。
今日からやること3つ
ここまで読んで、「で、何から?」という人のために、今日からできることを3つにまとめます。
- 自分のタイプを明確にする:お作法・知識・読み方のどれで止まっているか(複数でもOK)
- 教科書の例題を1つ、トレース表で追う:短いもので十分。紙に書く
- 問題を1回分解いて、外した所を1行ずつ理解・1文ずつ戻る:答え合わせで終わらせない
とにかく、わからないことをわからないまま進まないでください。はっきり言って、情報でやることはそれだけです。慣れないと訳がわからなく見えますが、一度理解さえできるとクリアーになります。
どれも地味ですが、地味なことを飛ばさずにやった人から伸びていく、というのは、プログラミングに限らず教えていて感じることです。
よくある質問
プログラミングを習っていれば、情報Ⅰは大丈夫ですか?
プログラミングの問題では有利になると思います。ただ、情報Ⅰにはプログラミング以外の知識の問題や、長い文章を読む問題も多いので、それだけで大丈夫とは言えません。知識の分野は、範囲を別に勉強しておくのが安心です。
文系でも、できるようになりますか?
なると思います。情報Ⅰのプログラムは、代入・順次・分岐・繰り返しといったお作法の組み合わせです。難しい数学よりも、慣れの部分が大きいので、文系か理系かより、何問かきちんと追ったかどうかで差がつくと思います。
共通テストのプログラミングは、何の言語で出ますか?
共通テストの表記の読み方や、本番までの勉強の順番は、情報Ⅰの共通テスト対策|大問の中身と勉強の順番を講師が整理にまとめています。
特定の言語ではなく、大学入試センターが定めた共通テスト用のプログラム表記で出題されます。授業で別の言語を習っていても、中身のお作法は同じなので、表記に慣れれば大丈夫です。
塾や家庭教師は必要ですか?
必須ではないと思います。それより、詰まった1行を「ここだけ教えて」と聞ける相手がいるかどうかが大きいです。学校の先生、友だち、AI(年齢の条件には注意)など、聞ける先を1つ作っておくと続けやすくなります。
まとめ|わからない場所が分かれば、立て直せる
高校の情報でプログラミングがわからないとき、まずやることは、つまずいている場所の切り分けです。
お作法なら、変数・代入・順次・分岐・繰り返し・配列を押さえて、トレース表で1行ずつ追う。知識なら、範囲を勉強して、出てきた用語を自分の言葉で説明できるようにする。読み方なら、1文も飛ばさずに読む。
そして、どのタイプでも共通なのが、外した問題を1行ずつ・1文ずつ追い直すことです。情報Ⅰは理解の積み重ねの科目なので、焦らず、1問ずつ自分のものにしていってくださいね。
もし「授業の外でも、もう少しプログラミングをやってみたい」と思ったら、高校生のプログラミング学習ガイドも読んでみてください。
