本教材は文部科学省の高等学校情報科「情報Ⅰ」教員研修用教材(本編)の内容に基づいて作られています。

高等学校「情報Ⅰ」向けプログラミング教育ツール

理解ちゃんと学ぶ情報Ⅰ」は、情報Ⅰの学習内容に沿ってプログラミングを学べる新しい教材です。単にプログラミング言語の使い方を学ぶだけではありません。問題の発見や解決に向けて情報技術を使えるよう、アルゴリズムやモデル化・シミュレーションの理解と実践に注力した「問題解決のためのプログラミング」を学ぶツールとなっています。学習の案内は「理解ちゃん」が行います。

【Re:カイ(理解)!ちゃん プロフィール】
コンピュータゲーム(特にロールプレイングゲーム)が大好きな女子高校生。プログラミングは天才的。難しい題材に返信する意味で(Re:)を充てています。少し高いところからの物言いながら、最終的には優しく教えてくれます。

動画で学ぶ

学習者は各チャプターの学習内容を動画で閲覧することができます。動画は約40のチャプターで構成され、それぞれ5分から10分程度の長さで、学習ポイントを把握します。

Pythonを実行する

使用するプログラミング言語は人気のPythonです。備え付けのエディターにコードを入力して、すぐに実行できます。プログラムの実行結果は文字列やグラフで表示されます。もしプログラムに間違いがある場合には、エラー内容が表示されるので、試行錯誤を繰り返しながらプログラミング学習が行えます。

練習問題を解き、採点する

動画の内容に沿った練習問題が出題されます。学習者はその問題をPythonプログラミングで解くことができます。練習問題はヒントを参照することもできます。またプログラム結果の採点ができ、採点結果(学習履歴)がユーザー毎に記録されます。

学習の進捗を管理する

管理者は生徒毎の学習進捗度を確認することができます。

チャットする

生徒と先生、生徒同士でのチャットが行えます。学内でチーム設定すれば、質問や作成したプログラム等の情報共有が効率的かつスムーズです。

不明点を質問する

不明点がある場合は、弊社エンジニアに質問をすることができます。初歩的なミスによるつまずきを無くします。

内容を理解する

各チャプターの学習内容は以下の通りです。

第1章 Pythonの基本プログラミング

【チャプター1】  さあ、Pythonをはじめよう
 ・Pythonの生い立ちとその思想や特徴、なぜ人気があるプログラミング言語なのかを理解します。

【チャプター2】  文字や数値を表示してみよう
 ・実際にプログラミングを作ってみます。基礎的なprint関数の使い方やクォートの記載方法を学びます。

【チャプター3】  エラーメッセージが表示されたらここに気を付けよう!
 ・エラーメッセージの読み方を習得します。
 ・代表的なエラーとその原因、チェック方法を6項目学びます。

【チャプター4】  コメントを活用しよう
 ・コメントの書き方とその重要性を学びます。

【チャプター5】  いろいろな演算子を使ってみよう
 ・和、差、積、商、剰余、べき乗などの演算方法を習得します。
 ・演算の優先順位を制御するカッコの活用方法を学びます。

【チャプター6】  コンピュータの計算誤差はなぜ発生する?
 ・正確に計算を行うはずのコンピュータ。でも思わぬ”ズレ”が発生する?計算誤差の発生原因と注意点を探ります。

【チャプター7】  変数を使ってみよう
 ・変数を使ってプログラムを使い回す方法を学ぼう。
 ・変数として使えない予約語や組み込み関数って何だろう?

【チャプター8】  複合代入演算子ってなんだろう
 ・様々な複合代入演算子( +=, -=, /=,*=,%=)の使い方を学びます。

【チャプター9】  データ型を理解しよう
 ・外部からのデータを取り込むinput関数及びデータ型を調べるtype関数の使い方を学びます。
 ・データ型を変換する方法はあるの?

【チャプター10】  if文を使って分岐してみよう
 ・分岐構造をコントロールするif文の使い方を学びます。

【チャプター11 】 一歩進んだif文にチャレンジしよう
 ・3つ以上に分岐する場合のif文(elif文)の使い方を学びます。

【チャプター12】  インデントを使ってブロックを定義しよう
 ・インデントを使ってブロック(処理のかたまり)を定義する方法と注意点を学びます。

【チャプター13】  反復処理のwhile文を使ってみよう
 ・反復を行うwhile文の書き方を学びます。

【チャプター14】  反復処理のfor文を使ってみよう
 ・反復を行うfor文の書き方を学びます。
 ・while文とfor文の使い分け方はある?
 ・range関数の使い方を習得します。

【チャプター15】  反復と分岐を組み合わせてみよう
 ・反復処理と分岐処理を組み合せてプログラミングの幅を広げます。

【チャプター16】  ループから脱出するbreak文を使ってみよう
 ・反復処理の途中で抜け出せるbreak文の使い方を学びます。

【チャプター17】  リストとその仲間たち
 ・変数の弱点を補う「リスト」の使い方について学びます。
 ・リストの仲間である「タプル」と「ディクショナリ」について特徴と使い分け方法を学びます。

【チャプター18】  リストを操作してみよう
 ・リストからデータを抜き出す「スライス」について学びます。
 ・リストへデータを追加・変更・削除する方法、またリスト同士を結合する方法を学びます。

【チャプター19】  オリジナル関数を作ってみよう
 ・自分で定義できる関数について、そのメリットと定義方法について学びます。

【チャプター20】  メソッドを使ってみよう
 ・データに紐づいた関数「メソッド」の呼び出し方法について学びます。
 ・upperメソッド、findメソッド、appendメソッド等の使用方法を学びます。

【チャプター21】  モジュールとライブラリについて
 ・モジュールを取り込むimport文の使い方、モジュールに別名をつけるas文の使い方を学びます。
 ・標準ライブラリと代表的な外部ライブラリについて学習します。

【チャプター22】  乱数を使ってみよう
 ・randomモジュールを使用して乱数を発生させる方法について学びます。
 ・randrange関数、randint関数、choice関数の使い分け方法を学習します。

【チャプター23】  WebAPIを使ってみよう
 ・APIとは何かとメリットを学びます。
 ・自分のプログラムとWebAPIとのデータ交換方法を学びます。 
 ・郵便番号データ配信サービス「ZIPCloud」を使ってみよう。
 ・異なるプログラミング言語間でデータ交換できる「JSONデータ」の使い方について学習します。

【チャプター24】  リレーショナルデータベースを理解しよう
 ・データベースとは?そのメリットは?
 ・データベースの種類とリレーショナルデータベースの特徴を学びます。  
 ・データベースの正規化について学習します。
 ・SQLを使ってテーブルの作成、データ登録、データ更新、データ削除、データ検索、テーブル結合の方法を学びます。

【チャプター25】  データベースを使ってみよう
 ・SQLiteの概要と特徴を学びます。
 ・テーブルの中から条件に合ったレコードを取り出す「選択」のプログラムを学習します。
 ・テーブルの中から特定のカラムを抜き出す「投射」のプログラムを学習します。
 ・複数のテーブルを1つのテーブルにする「結合」のプログラムを学習します。
 ・テーブルに新しいデータを追加登録するプログラムを学習します。
 ・テーブルから特定のデータを削除するプログラムを学習します。
 ・トランザクション処理について学習します。

【チャプター26】  再帰処理を使ってみよう
 ・再帰処理の考え方を学びます。
 ・再帰処理を使った階乗のプログラムを学習します。
 ・再帰処理のメリットとデメリットを学びます。

第2章 アルゴリズムを理解しよう

【チャプター1】 素数生成アルゴリズム:試し割法
 ・アルゴリズムの定義と目的、重要性について学びます。       
 ・素数とは何か、その特性を学びます。
 ・素数を求める「試し割り法」のアルゴリズムを理解します。
 ・「試し割り法」を実装するプログラムを学びます。

 

 

 


【チャプター2】 素数生成アルゴリズム:エラトステネスの篩(ふるい)
 ・素数を求める「エラトステネスの篩」のアルゴリズムを理解します。 
 ・「エラトステネスの篩」を実装するプログラムを学びます。

 

【チャプター3】 探索アルゴリズム:線形探索
 ・「線形探索」のアルゴリズムを理解します。
 ・「線形探索」を実装するプログラムを学びます。
 ・「線形探索」の特徴を理解します。
 

【チャプター4】 探索アルゴリズム:二分探索
 ・「二分探索」のアルゴリズムを理解します。
 ・「二分探索」を実装するプログラムを学びます。
 ・「二分探索」の特徴を理解します。
 ・「線形探索」と「二分探索」の違いを学習します。

 

 

 


【チャプター5】 ソートアルゴリズム:選択ソート
 ・ソートとは何か、昇順・降順について学びます。
 ・「選択ソート」のアルゴリズムを理解します。
 ・「選択ソート」を実装するプログラムを学びます。
 ・「選択ソート」の特徴を理解します。

 

【チャプター6】 ソートアルゴリズム:クイックソート
 ・「クイックソート」のアルゴリズムを理解します。
 ・「クイックソート」を実装するプログラムを学びます。
 ・「クイックソート」の特徴を理解します。
 ・「選択ソート」と「クイックソート」の違いを学習します。

 

 

 


第3章 モデル化とシミュレーション

【チャプター1】 モデル化とシミュレーションってなんだろう
 ・「モデル化」と「シミュレーション」の定義と目的、重要性について学びます。
 ・「モデル」の分類とそれぞれの特徴を学びます。

 

 

【チャプター2】 確定モデルのシミュレーション:複利法
 ・確定モデルの例として「複利法」のアルゴリズムを理解します。
 ・「複利法」を実装するプログラムを学びます。
 ・「複利法」のシミュレーションを実施します。

 ・「matplotlib」モジュールを使用して折れ線グラフを表示する方法を学びます。

 

【チャプター3】 確率モデルのシミュレーション:サイコロモデル
 ・確率モデルの例として、乱数を使用した「サイコロモデル」の考え方を理解します。
 ・「サイコロモデル」を実装するプログラムを学びます。
 ・「サイコロモデル」のシミュレーションを実施します。
 ・「matplotlib」ライブラリを使用して棒グラフを表示する方法を学びます。
 ・「numpy」モジュールを使用して乱数を生成する方法を学びます。
 ・確率モデルを扱う上での注意点を学習します。

 

【チャプター4】 確率モデルのシミュレーション:モンテカルロ法
 ・確率モデルのもう一つの例として、「モンテカルロ法」について学習します。
 ・モンテカルロ法を使用して、円周率を導出する考え方を学びます。
 ・円周率を導出するプログラムモデルを作成します。

 ・円周率を導出するシミュレーションを実施します。
 ・「matplotlib」ライブラリを使用して散布図を表示する方法を学びます。
 ・「numpy.random」モジュールを使用して乱数を生成する方法を学びます。
 
 

【チャプター5】 自然現象のモデル化とシミュレーション:物体の放物運動
 ・物体を斜め上に投げた場合の放物運動をモデル化してシミュレーションを行います。

 ・「放物運動」をX軸とY軸に分けてモデル定義します。
 ・ラジアンを使った三角関数について学びます。
 ・「放物運動」のシミュレーションを実施します。
 ・「matplotlib」モジュールを使用して折れ線グラフを比較表示する方法を学びます。

 

【チャプター6】 自然現象のモデル化とシミュレーション:生命体の増加
 ・生命体が増加してゆく姿をモデル化してシミュレーションを行います。
 ・「生命体の増加」を環境収納力を用いてモデル定義します。
 ・「生命体の増加」のシミュレーションを実施します。

 ・ロジスティクス曲線または成長曲線について学びます。

 

【チャプター7】 自然現象のモデル化とシミュレーション:ランダムウォーク
 ・「ランダムウォーク」とは何かを学び、ランダムウォークをモデル化してシミュレーションを行います。
 ・「ランダムウォーク」を乱数を用いてモデル定義します。
 ・「ランダムウォーク」のシミュレーションを実施します。
 ・「matplotlib」モジュールを使用して座標軸グラフを表示する方法について学びます。

 

 

 

 


「クラウド版」と「校内サーバーインストール版」

クラウド版と校内サーバーインストール版を用意しています。ネットワーク環境が不足している環境では、校内サーバーへインストールしてご使用できます。

推奨動作環境

理解ちゃんと学ぶ情報Ⅰ」はすべてオンラインで学習環境を提供します。Webブラウザ上ですべての環境が整うので、各種インストールやプログラミング言語・データベースの設定作業等の手間が掛かる準備作業は不要です。

Webブラウザ
Google Chrome
Microsoft Edge
Mozilla Firefox
Safari
インターネット環境 必要

開発方針について(教職者の皆様へ)

この教材は文部科学省の高等学校情報科「情報Ⅰ」教員研修教材の3章をベースに、下記の考え方で開発されています。
◆学習範囲について
本教材の学習内容は下記のような構成になっています。
 第1章:Pythonプログラミング入門
 第2章:アルゴリズム
 第3章:モデル化とシミュレーション
高等学校でのプログラミング教育の中核を第2章と第3章とし、そのため必要となるプログラミング技法についてを第1章で学ぶ構成としています。そのため第1章では、理解し難い高度なコーディング技法や言語仕様にはなるべく触れないようにしています。
 例)多次元リスト、短絡評価、all関数とany関数、コンテキストマネージャーとwithブロック等
また同理由から「再起処理」は第1章の最終チャプターとしました。

◆Pythonのオブジェクト指向について
Pythonを学ぶ上で初心者がつまずきやすいのがオブジェクト指向です。クラス・インスタンス・継承等についてを理解してからプログラミングに進もうするため、ハードルが高くなります。オブジェクト指向の理解はもちろん充分メリットがあるものですが、オブジェクト指向を知らずともプログラミングの楽しさは感じることができます。本教材ではオブジェクト指向になるべく触れずに解説しています。

お問い合わせ

ご購入・お問い合わせは【こちら】までお願いします。