この記事で取り上げる高校の授業では、システム開発を担当する田中先生(仮名)が、1年生から3年生までを週1コマずつ教えています。
学ぶ内容は、プログラムを書く基礎から、システム全体の設計、外部サービスとの連携へと段階的に進みます。
各学年の授業内容と、学習中に生まれる疑問への向き合い方を見ていきます。
3年間で学ぶ内容
学年ごとの違いは、扱う技術の難しさだけではありません。
1年生では一つひとつの処理を理解し、2年生では処理を組み合わせる前に全体を設計し、3年生では別のサービスとつながるシステムを考えます。
| 学年 | 学習の中心 | 身につける考え方 |
|---|---|---|
| 1年生 | Pythonの基礎 | 処理を小さな単位に分けて組み立てる |
| 2年生 | UML、データベース、画面の設計 | コードを書く前に構造と利用方法を整理する |
| 3年生 | REST API、チャットボット、生成AIとの連携 | 外部機能を組み合わせ、目的に合う仕組みを考える |
1年生はPythonで処理の基本を学ぶ
1年生はPythonを使い、プログラムを構成する基本要素を学びます。
- 変数:値に名前を付けて扱う仕組みです。
- 条件分岐:条件に応じて、実行する処理を選びます。
- 繰り返し:同じ種類の処理を必要な回数だけ実行します。
- 関数:一連の処理に名前を付け、ひとまとまりとして扱います。
用語を覚えるだけでなく、なぜその書き方を選ぶのかまで考えることが、次の学年の設計学習につながります。
条件分岐を重ねるネスト
生徒A「先生、
if文の中にifを入れてもいいんですか?」田中先生「うん。それは『ネスト』と呼ばれる書き方だよ。状況によっては便利だけど、複雑になりすぎると読みにくくなるから注意が必要だね」
ネストとは、条件分岐や繰り返しの中に、別の条件分岐や繰り返しを置く構造です。
たとえば、ログインしているかを確かめた後で、利用者が先生か生徒かによって処理を分ける場合は、条件を二段階にできます。
ただし、段階が増えるほど処理の流れを追いにくくなるため、条件を整理してから書く必要があります。
一度しか使わない処理を関数にする理由
生徒B「関数ってなぜ使うんですか。1回しか使わないなら、普通に書けばよくないですか?」
田中先生「関数にすると処理の役割が整理され、後から見直しやすくなるんだよ。ほかの人と協力して開発するときにも役立つよ」
関数の役割は、同じ処理を何度も呼び出すことだけではありません。
一度しか呼び出さない処理でも、まとまりに名前を付ければ、プログラムのどこで何をしているのかを読み取りやすくなる場合があります。
2年生はコードの前に設計を考える
2年生は、個々の処理からシステム全体へ視野を広げます。
中心になるのは、UML、データベース設計、ユーザーインターフェース設計です。
UMLは、システムの構造や動きを図で整理するための表し方です。
ユーザーインターフェースは、利用者が情報を見たり操作したりする画面や仕組みを指します。
クラス図でプログラムの構造を整理する
生徒C「クラス図って、実際のプログラムにどう関係するんですか?」
田中先生「クラス図は設計図のようなものだよ。先に構造を考えると、プログラムに必要な部品と、その関係が見えやすくなるでしょ」
クラス図では、プログラムを構成する部品と、それらの関係を整理します。
書き始める前に構造を図にすれば、何をどの部品に任せるのかを検討できます。
クラス図と、処理の順序を表す図の違いは、UMLで構造と振る舞いを表す授業例でも確認できます。
ER図で扱うデータを整理する
生徒D「ER図って、どこまで細かく書けばいいんですか?」
田中先生「対象にする業務や、システムで実現したいことによって変わるね。最初はシンプルにして、実際に動かしながら改善する考え方もあるよ」
ER図は、どのようなデータを扱い、それらがどう関係するかを整理する図です。
たとえば学校図書館の貸出システムなら、「本」「利用者」「貸出」を分け、それぞれの関係を考えると図の役割がつかみやすくなります。
どこまで細かく表すかは、対象とする業務の範囲を決めてから判断します。
授業での設計の進め方は、ER図でデータベースを設計する授業例に詳しくまとまっています。
3年生は外部サービスとの連携に進む
3年生は、学習の集大成としてREST APIの利用、チャットボットの実装、画像生成AIとの統合に取り組みます。
ここでは、一つのプログラムだけで機能を完結させず、別のサービスが提供する機能や情報を組み合わせます。
REST APIはサービス同士の窓口
生徒E「APIって、結局は何をしているんですか?」
田中先生「サービスとサービスが情報をやり取りするための窓口のようなものだよ。天気アプリが予報を取得するときも、APIを通して情報を受け取れるんだ」
APIは、別のプログラムに機能や情報を依頼し、結果を受け取るための決まりです。
依頼する側と受け取る側が同じ決まりに従うことで、別々に作られたサービスを連携できます。
実装へ進むときの考え方は、PythonでAPIを作るときの設計ポイントも参考になります。
生成AIを使うときも目的を先に決める
生徒F「生成AIはコードも書けるんですね。将来、エンジニアはいらなくなりませんか?」
田中先生「生成AIを正しく使う人は必要だよ。何をどう作るかを決めるのは人間だからね」
生成AIがコードの案を示しても、その案が目的に合うかを確かめ、必要な修正を判断する作業は残ります。
授業では、出力をそのまま採用するのではなく、作りたいものを先に定め、結果を読み取って直す姿勢が求められます。
授業で育てる力
1年生のプログラミング、2年生の設計、3年生のサービス連携は、別々の学習ではありません。
処理を組み立てる力を土台に、システム全体を考え、必要な機能を選んでつなぐところまで学びが続きます。
「システム開発の授業は、作る力を育てると同時に、考える力も育てます。プログラムを通して、自分で課題を発見して解決する力を身につけてほしいですね」
田中先生(仮名)
技術名を覚えることにとどまらず、目的を整理し、設計し、結果を確かめる一連の流れが、高校でシステム開発を学ぶ意味を形づくっています。

