科目Bの問題を読んでいて、見たことのない型の名前が出てきて止まった人へ。前回出てきた クラス を、いちばん最初のところから説明します。
期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円この回の内容を動画で見る
次のページで講義の目次と無料の講義を見られます。受講ボタンとクーポンコードもそこにあります。
この回の内容を動画で見る
解くための再現性が身につく講義29本小テスト86問模試3回分IT資格の森で見る
講義「クラスとインスタンス」(全7分40秒)は、IT資格の森(月額1,280円)の会員向けです。科目Bは、1行ずつ値を追うアニメの講義と、講義ごとの小テスト、本番と同じ形の模擬試験がそろっています。
なぜ、ひとまとめにするのか
生徒1人ぶんの名前と点数を、ふつうの変数で持つとします。2人になると namae1・ten1・namae2・ten2 と増え、どれとどれが同じ人のものかは、末尾の数字を人間が合わせているだけになります。60点以上なら合格と判定する関数 goukaku は、引数で点数を渡せば書けます。それでも、名前と点数と判定の結び付きは、プログラムのどこにも書かれません。
本当は「名前・点数・合格の判定」の3つで1人ぶんです。
クラス ── データと処理を、ひとまとめにする
そこで出てくるのがクラスです。
クラスとは
関係のあるデータと処理を、ひとまとめにして、1つの型にしたもの。
「生徒1人ぶん」をまとめて Seito という新しい型にします。
持っているものと、してもらえることが、そのまま1つの型の中に入る
中に入っているものには、それぞれ呼び名が付いています。
| クラスの中身 | 正式な呼び名 | これまでの言い方 |
|---|---|---|
namae、ten |
メンバ変数 | 変数(データ) |
goukaku |
メソッド | 手続・関数(処理) |
新しい概念ではありません。すでに知っている変数と手続が、1つの型の中に入っただけです。
基本情報技術者試験シラバス Ver9.2 の「⑦ オブジェクト指向プログラミング」は、クラスやメソッドを使用したオブジェクト指向プログラミングの考え方を理解すると定めています。用語例はコンストラクタ、メンバ変数、オーバーライド、オーバーロードの4つです。
擬似言語の記述形式には、クラスに関する書き方の定めがありません。出題では、使う書き方を問題文が説明します。説明された例があるのはコンストラクタ・メンバ変数・メソッドだけです。
クラスは「型」として使う
Seito は型です。だから、変数を宣言するときのコロンの前に置けます。
整数型: x Seito: a
読み方は何も変わりません。コロンの前が種類、うしろが名前。x には整数が1つ格納され、a には生徒1人ぶんのデータ(インスタンス)の参照が格納されます(このあとくわしく見ます)。
公開問題でよく見る型は5つでした(G2-2)。
整数型 実数型 文字列型 文字型 論理型
これで足りないとき、問題ごとに型が追加されます。クラスはその1つです。だから ── コロンの前にこの5つ以外の名前があったら、それはその問題のために用意された型で、どういうものかは問題文に説明があります。
クラスそのものは使えない ── インスタンスを生成する
ここが、いちばんつまずくところです。
Seito は生徒1人ぶんのデータが何を持つかを決めただけで、まだ誰のデータも入っていません。設計図があるだけの状態です。
たい焼きの型を思い浮かべてください。型があれば、たい焼きは何個でも焼けます。でも型そのものをかじっても意味がありません。食べるのは焼いたほうです。
型そのものはかじれない。使うのは焼いたほう
クラスと、そこから生成するもの
クラス何を持ち、何ができるかを決めたもの。設計図。1つだけ
インスタンスクラスから生成したもの。いくつでも生成できる
プログラムで使うのは、いつもインスタンスのほうです。
インスタンスを生成するのが、クラス名と同じ名前に括弧を付けた呼び出しです。
Seito: a ← Seito()
同じ名前が1行に2回出てきます。これは書き間違いではありません。
1行に2つのことが入っている
Seito: a変数を宣言する。Seito 型の変数に a と名前を付けた
← Seito()インスタンスを1つ生成する。インスタンスは別の場所にあり、a にはその参照を格納する
このインスタンスを生成する呼び出しをコンストラクタといいます。
← の右に置けるのは値が返ってくるものだけでした(G3-3)。コンストラクタは生成したインスタンスの参照を返すので、ここに置けます。代入の読み方は、これまでとまったく同じです。
この例の Seito() は、中身が空のインスタンスを生成するものとします。namae にも ten にも、まだ何も入っていません(未定義の値)。入れる場所ができただけで、田中さんになったわけではありません。
コンストラクタがどんなインスタンスを生成するかは、実際の出題では問題文の表に書かれます。
インスタンスの中身に触る ── 演算子「.」
生成したインスタンスの中身を読み書きするのが . です。「〜の中の」と読みます(G12-1)。
Seito: a ← Seito() a.namae ← "田中" a.ten ← 80
a.namae は「a の中の namae」。取り出したあとは、ふつうの変数と同じで、読むことも書き換えることもできます。これで a が田中さんになりました。
処理を頼むときも、同じ . で「どのインスタンスの処理か」を先に書きます。
a.goukaku()
「a の中の goukaku を呼ぶ」── a が合格かどうかを判定してもらう、という意味です。a.ten が 80 なら true が返ってきます。
渡すものがあるときは、括弧の中に書きます。手続の呼び出しとまったく同じです。
見分けるのは括弧だけ
a.ten括弧が無い → メンバ変数(データ)
a.goukaku()括弧がある → メソッド(処理)
ここで、冒頭の困りごとが消えていることに気づいてください。a.namae と a.ten は同じ a の中にあります。末尾の数字を人間が合わせる必要はありません。a.goukaku() も、どの生徒を判定するのかが . の左に書いてあります。
インスタンスは、いくつでも生成できて、それぞれ別
Seito() は呼ぶたびに新しいインスタンスを1つ生成します。2回呼べば2つ、40回呼べば40個です。
Seito: a ← Seito() Seito: b ← Seito() a.namae ← "田中" a.ten ← 80 b.namae ← "鈴木" b.ten ← 65
設計図は1つ、インスタンスはいくつでも。別々に生成したので、a に書き込んでも b は変わらない
別々に Seito() を呼んで生成したインスタンスどうしは、まったくの別物です。a.ten に書き込んでも b.ten は 65 のまま。a.goukaku() が見るのも a の点数だけです。たい焼きを1個食べても、別のたい焼きは減らないのと同じです。
試験ではこう出る
試験では、クラスの中身のプログラムは載りません。代わりに、次の2つが渡されます。
① メソッドの説明の表(問題文に載る)
メソッドgoukaku()
戻り値論理型
説明ten が 60 以上なら true を返す。
② プログラム
Seito: a ← Seito() a.namae ← "田中" a.ten ← 80 a.goukaku() の戻り値を出力
出力は true です。goukaku が中でどう判定しているかは書かれていませんが、表の説明に「ten が 60 以上なら true を返す」とあるので、a.ten が 80 の時点で決まります。
用語の整理
| 用語 | 意味 | 擬似言語での姿 |
|---|---|---|
| クラス | データと処理をひとまとめにした型。設計図 | Seito |
| インスタンス | クラスから生成したもの。いくつでも生成できる | a、b |
| コンストラクタ | インスタンスを1つ生成し、その参照を返す呼び出し | Seito() |
| メンバ変数 | インスタンスが持っている値 | a.ten |
| メソッド | インスタンスに頼める処理 | a.goukaku() |
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
| クラスは新しくて難しいものだと思う | 変数と手続が1つに入っただけ。どちらも既習 |
| 同じ名前が2回出るのを誤植だと思う | 前が型、うしろがコンストラクタの呼び出し |
| クラス名を変数名だと思う | コロンの前は型。5つ以外は問題文で説明される型で、クラスはその1つ |
| 生成した直後の中身を思い込む | 何が入るかは問題文の表に書かれる。この例の Seito() は空 |
| クラスの中身を想像して読む | 表に書かれたとおりに動くと信じる。中は問われない |
次に読む
この記事で引用した資料
- 擬似言語の記述形式 IPAが公開している科目Bの公開問題・サンプル問題(PDF)の冒頭に掲載。名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 基本情報技術者試験 シラバス Ver9.2(2026年1月8日)
- 基本情報技術者試験 科目B サンプル問題(2022年12月26日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。
本文の例(クラス Seito)は当サイトのオリジナルです。


