科目Bの問題を読んでいて、見たことのない型の名前が出てきて止まった人へ。前回出てきた クラス を、いちばん最初のところから説明します。
第1部 擬似言語の教科書 地図+20回
G1擬似言語の地図(入口)G2-1変数と宣言G2-2データ型G2-3代入「←」G3-1部品を呼ぶ/戻るG3-2引数G3-3戻り値・手続と関数G4-1配列と要素番号G4-2配列の読み書きG5選択処理 ifG6-1繰返し forG6-2配列を for で回すG7繰返し whileG8-1算術演算子と優先順位G8-2and / or / notG9-12次元配列G9-22重ループG10大域変数と局所変数G11未定義G12-1演算子 . の読み方G12-2クラスとはG12-3コンストラクタ
これまで、データと処理は別々だった
ここまでで、2つの道具を覚えました。
この2つは、まったく別のものとして書いてきました。変数はプログラムの上のほうに並び、手続は ○ から始まる別のかたまりとして置かれる。お互いに何の関係もありません。
たいていの場合、それで足ります。ところが、足りなくなる場面があります。
「生徒」を扱ってみると、無理が出る
クラスの名簿を作って、合格者が何人いるかを数えたいとします。1人ぶんに必要なのは、名前と点数です。
文字列型: namae ← "田中" 整数型: ten ← 80
さらに、合格かどうかを判定する処理も要ります。60点以上なら合格とします。
○論理型: goukaku()
if (ten ≧ 60)
return true
endif
return false
ここまでは書けます。問題は、これが「田中さんのもの」だと、どこにも書かれていないことです。
鈴木さんも扱うとなると、こうなります。
文字列型: namae1 ← "田中" 整数型: ten1 ← 80 文字列型: namae2 ← "鈴木" 整数型: ten2 ← 65
名前と点数の対応は、末尾の数字を人間が合わせているだけです。namae1 と ten1 が同じ人のものだという約束は、プログラムのどこにも書かれていません。
goukaku も同じです。この ten がどの生徒の点数なのかは、どこにも書かれていません。2人目を足したとたん、この処理は使えなくなります。
どの生徒の点数なのか、どこにも書かれていない
本当は「名前・点数・合格の判定」の3つでひとかたまり、それが1人ぶんです。バラバラに置いているから無理が出ます。
クラス ── データと処理を、ひとまとめにする
そこで出てくるのがクラスです。
クラスとは
関係のあるデータと処理を、ひとまとめにして、1つの型にしたもの。
「生徒1人ぶん」をまとめて Seito という新しい型にします。
持っているものと、してもらえることが、そのまま1つの型の中に入る
中に入っているものには、それぞれ呼び名が付いています。
| クラスの中身 | 正式な呼び名 | これまでの言い方 |
|---|---|---|
namae、ten |
メンバ変数 | 変数(データ) |
goukaku |
メソッド | 手続・関数(処理) |
新しい概念ではありません。すでに知っている変数と手続が、1つの型の中に入っただけです。
基本情報技術者試験シラバス Ver9.2 の「⑦ オブジェクト指向プログラミング」は、クラスやメソッドを使用したオブジェクト指向プログラミングの考え方を理解すると定めています。用語例はコンストラクタ、メンバ変数、オーバーライド、オーバーロードの4つです。
このうち擬似言語で実際に出てくるのはコンストラクタとメンバ変数(とメソッド)。オーバーライドとオーバーロードは書き方が記述形式に定められていません。
クラスは「型」として使う
Seito は型です。だから、変数を宣言するときのコロンの前に置けます。
整数型: x Seito: a
読み方は何も変わりません。コロンの前が種類、うしろが名前。x には整数が1つ入り、a には生徒1人ぶんが丸ごと入ります。
擬似言語に最初から用意されている型は5つだけでした。
整数型 実数型 文字列型 文字型 論理型
これで足りないとき、問題ごとにクラスが追加され、型として使えるようになります。だから ── コロンの前にこの5つ以外の名前があったら、それはその問題のためのクラスです。
クラスそのものは使えない ── 実物を作る
ここが、いちばんつまずくところです。
Seito は「生徒1人ぶんの形」を決めただけで、まだ誰のデータも入っていません。形が決まっているだけのものです。
たい焼きの型を思い浮かべてください。型があれば、たい焼きは何個でも焼けます。でも型そのものをかじっても意味がありません。食べるのは焼いたほうです。
型そのものはかじれない。使うのは焼いたほう
クラスと、そこから作るもの
クラス形を決めたもの。設計図。1つだけ
インスタンスそこから作った実物。いくつでも作れる
プログラムで使うのは、いつも実物のほうです。
実物を作るのが、クラス名と同じ名前に括弧を付けた呼び出しです。
Seito: a ← Seito()
同じ名前が1行に2回出てきます。これは書き間違いではありません。
1行に2つのことが入っている
Seito: a箱を用意する。Seito が入る箱に a と名前を付けた
← Seito()実物を1つ作って返す。それを箱に入れた
この実物を作る呼び出しを、正式にはコンストラクタといいます。
← の右に置けるのは値が返ってくるものだけでした(G3-3)。コンストラクタは作った実物を返すので、ここに置けます。代入の読み方は、これまでとまったく同じです。
実物の中身に触る ── 演算子「.」
作った実物の中身を読み書きするのが . です。「〜の中の」と読みます(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.ten ← 80 b.ten ← 65
設計図は1つ、実物はいくつでも。a に書き込んでも b は変わらない
できた実物どうしは、まったくの別物です。a.ten に書き込んでも b.ten は 65 のまま。a.goukaku() が見るのも a の点数だけです。たい焼きを1個食べても、別のたい焼きは減らないのと同じです。
試験ではこう出る
試験では、クラスの中身のプログラムは載りません。代わりに、次の2つが渡されます。
① 説明の表(問題文に載る)
持っているものnamae(名前)、ten(点数)
してもらえることgoukaku() … 点数が 60 以上なら true を返す
② プログラム
Seito: a ← Seito() a.namae ← "田中" a.ten ← 80 a.goukaku() の戻り値を出力
出力は true です。goukaku が中でどう判定しているかは書かれていませんが、表に「点数が 60 以上なら true」とあるので、a.ten が 80 の時点で決まります。
用語の整理
| 用語 | 意味 | 擬似言語での姿 |
|---|---|---|
| クラス | データと処理をひとまとめにした型。設計図 | Seito |
| インスタンス | クラスから作った実物。いくつでも作れる | a、b |
| コンストラクタ | 実物を1つ作って返す呼び出し | Seito() |
| メンバ変数 | 実物が持っている値 | a.ten |
| メソッド | 実物に頼める処理 | a.goukaku() |
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
| クラスは新しくて難しいものだと思う | 変数と手続が1つに入っただけ。どちらも既習 |
| 同じ名前が2回出るのを誤植だと思う | 前が型、うしろがコンストラクタの呼び出し |
| クラス名を変数名だと思う | コロンの前は型。最初からある5つ以外はクラス |
| 作った直後から値が入っていると思う | Seito() の直後は空。入れる場所ができただけ |
| クラスの中身を想像して読む | 表に書かれたとおりに動くと信じる。中は問われない |
次に読む
| G12-3 | コンストラクタと表の読み方 ─ 実際の出題で確かめる |
| G12-1 | 演算子「.」 ─ メンバ変数とメソッドの読み方 |
| G1 | 擬似言語とは ─ 記号の読み方と書き方を1枚で |
| 目次 | 基本情報技術者試験 科目B 攻略ガイド |
この記事で引用した資料
- 擬似言語の記述形式 科目Bの公開問題・サンプル問題の各冊子に掲載。冊子上の名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 基本情報技術者試験 シラバス Ver9.2(2026年1月8日)
- 基本情報技術者試験 科目B サンプル問題(2022年12月26日公開)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。
練習問題は当サイトのオリジナルです。

