統計学を題材にしたプログラミング入門講義
石黒 克也, 佐々木 正人, 遠藤 隆俊
高知大学 学術情報基盤図書館

ishiguro@kochi-u.ac.jp

Introductory programming lecture on statistics
Katsuya Ishiguro, Masato Sasaki, Takatoshi Endo
Library and Information Technology, Kochi Univ.

概要
高知大学では、2016 年度よりプログラミング未経験者向けの入門講義「初等プログラミング入門」を共通教育において開講している。主な目的はプログラミングの基本的な考え方を身につけること、およびプログラミングに対する潜在的な苦手意識を弱め、興味を持たせることである。また 2020 年度より順次開始されている、小中高におけるプログラミング学習を取り入れた新学習指導要領に基づく教育について知ってもらうことも目的の一つである。
本稿ではこれまでに「初等プログラミング入門」で実践してきた内容を簡単に振り返り、今年度から始めた統計学を題材にした新しい内容での「初等プログラミング入門」について報告する。

含めた体制作り、シラバス作成などが行われ、準備が1 はじめに整ったところから順次新しい授業を開始している。

「Society5.0」、「第 4 次産業革命」などをキーワード

高知大学（以下、本学と記す。）も多分に漏れずこ

として、2016 年に政府は初等中等教育におけるプロれらの取り組みに大きな影響を受けており、データサグラミング教育の必修化を決定した [1]。また、2017

イエンスや AI に関する新たな授業が開始されている。

年には初等中等教育におけるプログラミング教育等の本学では、全 1 年生に対して第 1 学期に共通教育で情IT・データ教育の実装 [2] も閣議決定されている。こ報処理の授業を必修化しており、そこでは主に大学でれらを受けて、各種指導要領にはプログラミング教育の PC の利用方法（ネットワーク接続、メールなど）、等が記載されることとなり、2020 年度より小学校、中情報セキュリティ、情報倫理、ワード、エクセル、パ学校、高等学校で順次プログラミング高育が開始されワーポイントなどの一般的な使い方が教えられていている。近年では

デジタル社会の「読み・書き・そる。今後「初級レベルの数理・データサイエンス・AIろばん」である「数理・データサイエンス・AI」の基を習得」することが必修化されることを考慮すると、礎などの必要な力を全ての国民が育み、あらゆる分野この情報処理の枠組みの中で、あるいはそれを拡張すで人材が活躍することを目標として、大学・高専でることにより、プログラミングや AI などの事柄に触の「初級レベルの数理・データサイエンス・AI の習れられる機会を作るのが必修化に対応するひとつの方得」を必修化する取り組みが開始されている [3]。これ法だと考えられる。授業時間や教員の確保等の問題のに伴い、文科省は「数理・データサイエンス・AI」認ため、すぐには対応できないのが現状であるが、2020

定制度（リテラシーレベル・応用基礎レベル） [4] を年度より情報処理の 2 回分を AI・データサイエンス作り、これらの基礎的な能力の向上を図る機会の実質教育に充てて実施しており、2024 年度からは授業内容的な拡大を支援している。2022 年になってからも、政を大幅に刷新して対応していく予定である。

府はデジタルの力を活用した地方の社会課題解決のた

プログラミング教育については、2016 年度より共通

め「デジタル田園都市国家構想基本方針」を定めてお教育の教養科目として「初等プログラミング入門」がり [5]、構想実現に向けた取り組みに「デジタル人材の開講されている。前述の情報処理の授業アンケート結育成・確保」を挙げ、その中の一つに「高等教育機関果によると、学生の中には初歩的なプログラミングをにおけるデジタル人材の育成」を謳っている。各大学

学びたいという潜在的な需要が存在しており、それらにおいては、これらの認定を受けるための人員調整をを踏まえ、「初等プログラミング入門」は共通教育情報

560

処理に続くプログラミング未経験者向けの授業と位置• コンパイルの作業が必要なく、ドラッグアンドド付け開講されている。特に本授業は共通教育の教養科目に分類されており、プログラミングを専門的に学ぶ準備というよりは、プログラミングとはどのようなものであるのかを広く浅く学ぶことを主眼としている。

2016 年度および 2017 年度の授業では、プログラミング言語として入門用言語である「Sunaba」を用いた [6]。その後、初等中等教育においてプログラミング教育が必修化されることが決まったことを考慮して、2018 年度からはプログラミング環境を Sunaba から「Scratch」 [7] に変更して実施した。これは、Scratchがプログラミングの考え方を学ぶのに優れた教材であること、またプログラミング教育必修化後の教育を受ける今後の学生の多くが学ぶことになるであろうScratch を、必修化教育を受けていない現在の学生が学ぶ機会を設けることも重要であろうと考えてのことである。2023 年度からは内容を刷新し、プログラミング言語として「Python」を用いることにした。新しい学習指導要領で学んだ学生が 2025 年度に大学に入学してくることを踏まえると、これまでのようなプログラミング完全未経験者向けの授業だけでは学生の要望に応えられない可能性も考えられるため、より幅広い内容を初心者でも比較的取り組みやすい言語で実施できるように検討してのことである。また、単にプログラミング言語を変更したのみならず、授業の題材として「統計学」をメインに据えた。前述したように、大学においては「初級レベルの数理・データサイエンス・AI の習得」を必修化する取り組みが行われており、その中では統計学の理解が重要になるためである。
本稿では、2016 年度から実施している「初等プログラミング入門」の経験 [8] を元にして、本年度に開始した新しい内容でのプログラミング入門講義についての実践報告を行う。

ロップで即時実行できる。

Sunaba はプログラミングに慣れているものには日本語と半角でのタイピングがわずらしく、限られた機能しかないため使いやすいとは言い難いが、初心者にはわかりやすい言語であった。また実行時のエラーがわかりやすいため、プログラミング未経験者でも自分で問題を解決しやすいようであった。一方教える側からすると、機能が限られている分同じことをするにも工程数が多くなるのでまどろっこしく感じられるが、逆に考えると順にステップを踏むことになるため、ある意味教えやすく感じられた。Sunaba を使って一つのゲームを作るという作業を通して、プログラミングの考え方の一端には触れられるものとなったのではな
いかと思われる。

2.2

Scratch2016 年度および 2017 年度の授業では、プログラミング言語として入門用言語である Sunaba を用いた [6]。プログラミングの考え方を学ぶには Sunaba
でも特に問題はないが、入門用に特化した言語であるため、プログラミングの世界がその中で閉じてしまいがちである。プログラミングを学ぶためには他のシステムとの連携などを考えることも有効であり、また本授業は教員志望の学生も受講することから、初等中等教育の授業等で使うことのできる知識や技術を身に付けることも大事になってくる。それらを考慮して、2018 年度からは教材として「Scratch」 [7] を使用した。Scratch を選択した理由は、文法を知らなくても直感的に使うことのできるビジュアルプログラミング言語であること、Web アプリケーションとなっているため特別な環境構築が必要なく、使用者の OS 等の環境に依存せず利用可能なこと、コンパイル作業が必要なくすぐに動作確認できること、作成したプログラム

2 初等プログラミング入門と実際の動作の対応がわかりやすく、プログラムのミスを見つけやすいこと、などである。受講生が目指す

2.1 Sunaba「初等プログラミング入門」の授業では、2016 年度からの 2 年間はプログラミング言語として平山尚氏により作られた「Sunaba」を用いた [6]。この言語を選択した理由は次のようなものである。

授業目標には、1. プログラミングの概念を理解する、2. 基本のアルゴリズムを理解する、3. Scratch でプログラミングできるようになるの 3 つを掲げた。
授業の大まかな内容は次のようなものである。まず、Scratch の画面構成や使い方をある程度説明し、• エラー表示を含め、日本語が使えるので初心者にわかりやすい。

その後は Scratch の基本的な機能を使って繰り返し構文や if 構文、乱数の使い方などを学習する。具体的に• 基本的な機能のみしか持たず、プログラムを基礎はメッセージ送受信機能を使って登場人物を時系列に的な部分から構成することになり教育的である。

沿って動かす、変数や配列の使い方を学ぶ、探索アル561

ゴリズムや並べ替えアルゴリズムなどを理解する、定2.3

義機能（関数機能）を学び応用する、といった内容で「初等プログラミング入門」は、2019 年度までは第ある。授業資料は LMS に載せることで、自分のペー1 学期または第 2 学期のいずれかにおいて週 1 回の開スで理解を深めてもらうようにした。また毎回サンプ講であったが、2020 年度からは第 1 学期および第 2ルファイルとして課題の元となる Scratch ファイルを学期にそれぞれ週 1 回ずつの開講とした。このように提供し、それを使用することによって細かいことに囚変更した理由は、プログラミングを学んでみたいと考われず、各回で新しく学ぶ内容に集中できるように工える学生はそれなりに存在するものの、年に 1 コマの夫した。これにより、授業中にまったく手が動かない

みの開講では他の必修講義等と重なって受講する機会といった学生は皆無となり、多くの学生は授業中に課を失ってしまう学生がいることを考慮してのことであ題を終えることができるようになった。

る。授業のコマ数を増やしたものの、基本的に対面式

全 15 回の授業内容は以下の通りである。

Pythonの授業を検討していたこと、TA/SA が付かないこと、採点の手間などのことを考えて、目配りが可能と思わ

1. オンライン授業の説明、Scratch の使い方れる程度に人数制限（50 人）を課すことにした。履

2. 画面構成、座標

修登録時には毎回抽選が行われるほど受講希望者がお3. 乱数

り、年に 100 人ほどが受講していることになる。

4. メッセージ送受信

講義ではまず受講生の状況を把握するため、第 1 回

5. 変数目の講義において、利用している OS やプログラミン

6. リスト（配列）グ経験などについての事前調査を行っている。調査結7. アルゴリズム 1

果の主なものを以下に示す。

8. 場合分け
9. ゲーム作成 1

1. 受講生のうち、これまでに何らかのプログラミ

10. 定義、引数ング経験があるかどうかを尋ねた結果が図 1 で

11. アルゴリズム 2ある。初等プログラミング入門の授業開始当初の

12. 乱数、グラフ化

2016 年度から、全体の傾向はあまり変わらず、プ

13. モンテカルロ法

ログラミング経験があると答えた学生の割合は14. ゲーム作成 230 ％以下に留まっている。プログラミング経験の15. 課題

内容では、中学や高校で Scratch を使った、ロボッ

2019 年度からは Scratch と外部機器を接続してプトプログラミングをしたなどの学生が多かった。

ログラミングを学ぶ機会を設けた。用いた外部機器はトイドローンと micro:bit の 2 つである。PC と外部機器をつなぎ、外部機器が動作している様子を見ることにより、プログラミングが PC の画面の中だけでなく外の世界とつなげられることを実感することができたとの感想もあり、当初の狙いはある程度達成されたものと思われる。
また 、近 年の AI・データ サ イエ ンス 教 育 の高 まりを意識して、2021 年度から Scratch を使って機械学習を体験する内容を最終課題として授業に取

図1

これまでにプログラミングの経験は？

り入れた。Scratch と機械学習の連携に用いたのは「ML2Scratch」 [9] である。
「ML2Scratch」は Google

2.「Python について知っていましたか？」という問の開発した機械学習用ソフトウェアライブラリ Ten-いに対する回答が図 2 である。プログラミング未sorFlow と Scratch をつなぐ仕組みであり、Scratch経験者がほとんどの授業なので約 4 割しか知らなを使って画像判定などをすることが可能となるものでかったという結果になっているが、2022 年度まある。

で行っていた Scratch では多いときでも知っていると答えたものが 3 割程度であったので、個人的562

には認知度は高めという印象を持った。このこと原因でプログラミングそのものへの興味を失ってしまは、2020 年度から開始されたプログラミング教育うことは避けたいと考え、誰でも手軽に Python を利必修化の影響により、Python が多くの人に認知用できる Google Colaboratory を用いることとした。

され始めたこと、あるいは AI・データサイエンス

また、多くの他の大学では Google Colaboratory のについて調べると必ずといってよいほど出てくる環境ではパワー不足で十分な作業が行えない状況であキーワードになっていることが原因ではないかとる、ということも聞いていたが、動作させるプログラ推測している。

ムがいずれも簡単なものであり、実行時間も数秒で済むものがほとんどのため、専用のサーバを構築するという選択は行わなかった。Google Colaboratory を利用するためのアカウントは、各自で取得し、各自で管理するようにした。アカウント作成時には様々な情報を入力する必要があるが、その内容についても各自に任せることにした。すでにアカウントを持っている場合にはそれを使ってもよいし、授業用に新たに作成してもよいとし、必要以上の内容は入力する際に注意するように促した。
講義内容は「統計学」を主な題材とした。統計学は

図 2 Scratch のことを知っていましたか？

文系・理系を問わず様々な場面で使われるが、現在は3.「小中高でプログラミング教育が必修化されていデータをエクセル等に読み込ませてクリックしていくることを知っていましたか？」という問いに対すだけで簡単に結果を求めることができるため、その内る回答が図 3 である。いずれの場合も、5 割から容を理解して使っている学生はそれほど多くない。ま6 割が知っていたと回答しており、受講生の多くた、大学で進められている「初級レベルの数理・デーは今後の大学や社会において、プログラミングのタサイエンス・AI の習得」必修化のことを考えると、知識やスキルが重要になってくるものと認識して統計学を理解することは今後非常に重要になってくるいるようである。

はずである。そのため、プログラミングを学びつつ、同時に統計学に親しむことを狙って、「統計学」を題材の軸に据えることとした。特に Python には統計学のためのライブラリが数多く準備されているため、これらの狙いにマッチした言語と考えられる。
授業の流れは次の通りである。

1. オリエンテーション、プログラミング環境作り
2. Python の基礎 1
3. Python の基礎 2（データの読み込みなど）
図3

4. Python の基礎 3、度数分布

小中高でプログラミング教育が必修化されて

5. 1 変量データ（平均、分散、標準偏差、順位に基いることを知っていましたか？

づく統計量など）

6. 多変量データ（共分散、相関係数、相関行列、様々
2.4

授業内容なグラフなど）

本講義ではプログラミング言語として「Python」を用いた。プログラミング環境には「Google Colabora-tory」を採用した。Python を動作させる環境には様々なものがあり、BYOD を実施している本学では各自の PC に Python をインストールして利用することも考えられたが、PC の仕組みを知らない初心者にとって環境構築には手間がかかることが多い。この手間が563

7. 確率分布（ベルヌーイ分布、二項分布など）
8. 確率分布（二項分布、ポアソン分布など）
9. 確率分布（正規分布、中心極限定理など）
10. 統計的推測（データシミュレーション、母集団推定など）

11. 母集団推定（母平均、母分散など）

12. 統計的仮説検定

2.5

授業後アンケート

13. 単回帰分析

本講義の終わりには、受講生に対して授業内容や14. 重回帰分析

Python などについてのアンケートを実施した。以下、

15. ロジスティック回帰

授業後アンケート結果の一部を紹介する。

開講当初は上記の他に、将来の応用を見据えて機械学

1.「これまでに確率や統計学を学んだことがありま習の初歩的な内容も行うつもりであったが、想定してしたか？」との問いには、全体の 50 ％を超えるいたよりも内容が多くなってしまい、そこまでは実施学生が「ない」と回答している（図 4）。特に統計することができなかった。また、Python や Google学を学んだことがある学生は 10 ％に満たず、ほColaboratory の基礎的な使い方についてはほとんど

とんどのものが今回初めて統計学を学んだようでの学生が特に問題なく使用できたが、1 点のみ多くのあった。また、確率についても学んだことがある学生がつまづいた箇所があった。それはデータファイのは 40 ％になっている。多くの学生は今回の授ルの読み込みについてである。基本的な流れは業内容のような専門用語が出てくることはなくて

1. データファイルを Google ドライブにアップロードする

2. Google ドライブを Google Colaboratory にマウもなんらかの形で確率等を学んでいるはずであるが、それと今回の内容が結びついていないようであった。

ントする3. Google Colaboratory からアップロードしたファイルを読み込むであるが、多くの学生はドライブやディレクトリなどの構造を理解していないため、マニュアル通りに作業を行ってエラーが出てしまうとお手上げ状態になってしまうという状況であった。そのため、ファイルがいまどこにあるのか、どのように探せばよいのかといった基本的なことができるようになるまでに、マニュア
ルに手を加えつつ 5，6 回の授業で説明をし、それで図4

これまでに確率や統計学を学んだことがありましたか？

もできない場合には個別対応することとした。
授業方法は資料を LMS に載せ、それを参照しながら Google Colaboratory を操作するようにした。まず最初にその日の授業の大まかな流れを説明し、具体

2.「この授業では統計学を学ぶために数学を道具として使いました。数学の次の事柄を学んだことが的な内容に入っていく。統計学独特の専門用語が出てありましたか？」との問いには、図 5 のような回くるのでその説明をしつつ、数式を使って何を計算し答であった。数列に関しては 100 ％の学生が学んているのかを示し、データを使って具体的な例を見てでいたが、対数関数・指数関数や微分・積分は 60いく。データは自分で生成する場合もあるが、多くの〜70 ％、行列は約 30 ％ほどが学んだことがある

場合にはこちらで準備したファイルを利用してもらうこととした。データを扱う際には、まずは数式で表された定義通りに様々な量を計算し、その後 Python に準備されている豊富なライブラリを利用して計算する方法を紹介した。ライブラリを使えば結果を得るのは簡単であるが、それでは内容を理解したことにはならないため、定義から出発して理解したうえでライブラとの回答であった。近年は行列を学ぶ機会がないまま大学を卒業してしまう学生も多いようだが、データ解析等を行う際には必要になってくる場合も多いので、これらの数学的な基礎知識の有無の違いや授業時間内での説明の仕方にも留意することが重要であろう。

3.「この授業では、今後必須となるデータサイエンス関連科目を考慮して「統計学」を題材として扱いリを用いることを推奨することとした。

ました。
「統計学」についてどの程度理解できたと思いますか？」との問いには、図 6 のような回答であった。今後のデータサイエンス必修化を見据

564

ファイルの読み込みに最終回近くまで苦労した学生もいたが、プログラミング環境として Google

Colaboratory を用いたことで、特に大きな問題はなくプログラミングに専念できたようである。ただし、実行時にエラーが出た場合の対処方法がわからなかったという意見が数多く見られたこともあり、今後はこの点についても対応していくことが重要であろうと思われる。
図5

この授業では統計学を学ぶために数学を道具として使いました。数学の次の事柄を学んだことがありましたか？（複数回答含む）

えて統計学を題材として用いたが、ある程度まで理解できたと答えた割合は 5 割強であった。後のアンケート結果にも関連するが、Python を使ったプログラミングが難しかったというわけではな
く、これまでの設問回答にあったように統計学の数学的な理解が追い付かないことが主な原因だと

図7「Python」は初等プログラミング入門の授業で用いるのに適当だと思いますか？

思われる。これを踏まえると、プログラミング入門の授業で統計学を題材にするのは、学生の知識レベルに依存してしまう部分があり、より多くの学生に平均的な理解を求めるのはなかなか困難な状況であることがわかる。しかしながら、この点については数学的な部分をより手厚くフォローすることにより、ある程度の改善も期待できるものと思われる。

図6

5. もし初等プログラミング入門の次のステップのプログラミングの授業があれば、受講してみたいと思いますか？との問いには、70 ％を超える学生が「思う」あるいは「わからない」と回答しており、より実践的なデータ分析などの次のステップとなる内容の授業についても検討していく必要がありそうである。
（図 8）。

この授業では、今後必須となるデータサイエ

図8

ンス関連科目を考慮して「統計学」を題材として扱もし初等プログラミング入門の次のステップのプログラミングの授業があれば、受講してみたいいました。「統計学」についてどの程度理解できたとと思いますか？

思いますか？

4.「Python は初等プログラミング入門の授業で用以上のアンケート結果を見る限りでは、本授業の内いるのに適当だと思いますか？」との問いには、容に関しては初等プログラミング入門の授業目的に

図 7 のような回答であった。適当でないと答えた合ったものとなっており、またプログラミング初心者学生は 10 ％に満たず、多くの学生は Python によからの脱却を目指す次のステップの授業を検討するこるプログラミングを肯定的に捉えたようである。とも重要であろうと思われる。

565

hhttps://www.cas.go.jp/jp/seisaku/

3 おわりにdigital_denen/pdf/20220607_honbun.pdf、

本稿では、2016 年度から実施しているプログラミン（2023 年 9 月 29 日閲覧）

グ未経験者向けの授業「初等プログラミング入門」の[6] 石黒克也、佐々木正人、佐々浩司、 共通教育に実践報告を行った。本講義では 2016 年度からの 2 年

おけるプログラミング入門講義 、2017 年度大学

間は「Sunaba」を、2018 年度からは「Scratch」を、

ICT 推進協議会年次大会論文集、WA2-1 (2018)

そして 2023 年度からは「Python」をプログラミング[7] Scratch、https://scratch.mit.edu/（2023 年

言語として用いている。開始当初は単純に未経験者向9 月 29 日閲覧）

けの授業を行うことを考えていたが、同時期に初等中[8] 石黒克也、佐々木正人、佐々浩司、 共通教育に等教育におけるプログラミング教育必修化が決まり、おける教養科目としてのプログラミング入門 、徐々にそれを考慮した授業にシフトしていった。これ2019 年度大学 ICT 推進協議会年次大会論文集、までは、一部の職業に就くものを除けば、プログラミ

TH1-5 (2020)

ング未経験者ということでも特に問題はなかったの[9] ML2Scratch、

https://github.com/

であるが、今後は新しい教育を受けた世代がプログラ

champierre/ml2scratch（2023 年 9 月 29

ミング経験者となり、基礎的なプログラミングの知識日閲覧）を持っていて当然のような時代になることが予想され[10] 石黒 克也、佐々木 正人、遠藤 隆俊、 共通教育

る。このような状況を踏まえると、新指導要領に沿っにおけるプログラミング未経験者向け入門講義 、て学んだ学生とそうではない学生の間には、プログラ

2022 年度大学 ICT 推進協議会年次大会論文集、ミングに関する知識の差が生じることが容易に想像さ

13PM2D-4 (2023)

れる。特に新指導要領のもとで学んだ最初の学生が大学に入学するのは 2025 年度からであり、そこで大きな差が生じるのではと予想されている。そのため、その差をなるべく埋められるよう「初等プログラミング入門」の内容を吟味し、変化させてきた。さらに大学において数理・AI・データサイエンス教育の必修化が進められることも決まり、それらを意識したプログラミング入門講義へと内容の充実化を図っている。 [10]参考文献
[1] 日 本 再 興 戦 略 2016、http://www.kantei.
go.jp/jp/singi/keizaisaisei/pdf/2016_zentaihombun.pdf、（2023 年 9 月 29 日閲覧）
[2] 未 来 投 資 戦 略 2017、http://www.kantei.
go.jp/jp/singi/keizaisaisei/pdf/miraitousi2017.pdf、（2023 年 9 月 29 日閲覧）

[3] 総 合 科 学 技 術・イ ノ ベ ー シ ョ ン 会 議（ 第 43回）, https://www8.cao.go.jp/cstp/siryo/haihui043/haihu-043.html、（2023 年 9 月 29日閲覧）[4] 数 理・デ ー タ サ イ エ ン ス・AI 教 育 認 定 制 度,
https://www.mext.go.jp/a_menu/koutou/
suuri_datascience_ai/00001.htm, （2023 年
9 月 29 日閲覧）
[5] デ ジ タ ル 田 園 都 市 国 家 構 想 基 本 方 針 、566