事例345
応用的なデータベース学習としてSQLの知識を活かした身近なデータを扱う取り組み
樟蔭中学校・高等学校 川浪隆之先生
今回は、データベースの学習をどのように進めたらよいのかということについて、悩みながら頑張ってきたことについて、ご報告させていただきます。
まず、自己紹介です。いろいろお話ししたいことはありますが、手短かに済ませます。
勤務校は、東大阪市にある伝統ある女子校です。レベルとしては、いわゆる平均的な、ボリュームゾーンの女子生徒に対する授業であることをご理解いただけたらと思います。
ICTを使っていろいろ楽しいことをやっていきたい、ということが柱にあり、学校内ではSTEAM教育にも注力して、デジタルものつくりや、DXハイスクールなど様々なICT教育の取り組みに携わっています。
※クリックすると拡大します。
また、この全高情研では事例集の表紙のデザインを4年間やってきました。今回の表紙のあちこちにある1001という数字、お気づきになりましたか。2進法の17、今大会は第17回ですね。そういった細かい芸が仕込まれております。
「データの扱い」を授業で扱うのはけっこう難しい…
今回は、「データの活用」のデータベースの授業でいろいろ試行錯誤したことと、これからの発展に向けて、ということをお話しします。
学習指導要領の解説編には、「データの活用」の分野の取組みについて、このような形で書かれています。
「データを表現、蓄積するための表し方と、データを収集、整理、分析する方法について理解し、技能を身に付ける」こと。また、同じような内容ですが、「比較、関連、変化、分類などの目的に応じた分析方法があることを扱う」ということになっていますが、これが実際なかなか難しいのですね。
ProgateでSQLの基礎を事前に自走学習しておく
本校は、「情報I」を1年生で2時間連続の授業として設置しています。1年生は167名です。データベースの授業に入る前に、冬休みの宿題として、Progate(※)のSQLコースを自走学習として使っています。
本校では、Progate のPythonとSQLを選んでおり、プログラミングの授業の前には、Pythonを2か月間自分たちでやっておいてもらっています。
データベースについても、自宅でSQLを勉強することでレベルアップしておき、授業に入る形にしています。
ですから、授業でやるときには、生徒たちは既にゲーム感覚でSQLをひととおり学んでいますので、私の授業では、「選択」「射影」「結合」といったSQLの基礎をきっちり確認した上で、おいしいところだけを教える、という形にして時間短縮を図っています。
ちなみに、Progateは、2言語無料で使えます。生徒たちも、どんどんレベルアップして、切磋琢磨するので自主的な活動につながります。ぜひお使いになってみてください。
データベースの扱いとともに、情報システムのイメージも学ぶ
学習指導要領の第4章「情報通信ネットワークとデータの活用」には、情報システムの話が出てきます。
こういったクライアントサーバ型の情報システムのWeb3層構造のことを生徒に話してあげることで、自分がインターネットで調べたいことというのは、パソコンやスマートフォンの中だけで完結しているのでなく、つながった先のサーバの中でいろいろなことが行われ、それが自分のデバイスに返ってきて初めて調べたいことがわかる、ということ。そして、このように層を分けることによってリスクを減らしていくことができる、という話をすることができます。
これを基に、生徒と楽しく学びながら、こういった感覚を実装できないかと考えました。このヒントになったのが、本校で実際にGoogleスプレッドシートのデータをSQLを使って加工した事例です。
本校には、キャリアサポートクラスという、学校には来られるけれど、教室に入れない生徒が別室のブース席で学ぶというクラスがあります。そこに通う生徒は、登校時(入室)と下校時(退室)にGoogleフォームに打刻しています。
2023年は、この入退室記録が約40名分、約10000件ありました。先生方は、この打刻の記録から、個々の生徒の滞在時間を記録しなければいけないのですね。
そういった面倒な作業をしておられるのを見て、私は動画を作って「IMPORTRANGE関数というものがあって、QUERY関数で整理すると、計算が簡単にできるよ」と説明してあげました。
つまり、もともとのデータは触らずに、必要なものだけ自分のスプレッドシートに持ってきて、関数で整理する。これはまさにデータベースの学習ですよね。そこでこれを使って授業を組み立ててみました。
スプレッドシートとIMPORTRANGE関数でリアルタイムの分析が可能に
授業での実装イメージがこちらです。
もともとのアンケート結果のスプレッドシート(データ層)をIMPORTRANGE関数で自分のスプレッドシート(QUERY関数:アプリケーション層)に取り込みます。元のスプレッドシートが更新されれば、IMPORTRANGEで取り込んだものも更新されていきます。
さらに、取ってきたデータから、自分のスプレッドシートで加工して欲しいものだけを取り出す(プレゼンテーション層)という、まさに3層構造になっていることを、生徒が作業しながら実感することを狙ってみました。
Excelでも他のファイルを参照することは可能であると思いますが、スプレッドシートを使うことで、Googleフォームで答えたものが、そのままリアルに反映されるというシステムになり、「Webの3層構造はこういうものだよ」ということを伝えることができます。
※クリックすると拡大します。
GoogleスプレッドシートのQUERY関数では、こちらに挙げたようなSQLライクな関数(句)を使うことができます。これらを使うことで、必要なデータだけ整理することができるので、これだけ使えたら十分だよ、と示しています。
このIMPORTRANGE関数で他のスプレッドシートを参照する関数なので、データベースとしたいスプレッドシートのアドレスを指定してどの範囲が欲しいかを指示すればよいです。
さらに、SQLライクにデータを扱うことができるQUERY関数を用いて、必要なデータを指定して分析に利用できます。QUERYライクな句の使い方に関しては、Google先生に聞いてみてください。
身近なデータを使ったデータ分析の実習をしてみる
実習では、まず「情報Ⅰ」の期末試験の回答データで、個人データを全部消したものを元のファイルとして準備し、受験者の解答傾向を調べる実習を行いました。
例えば、「ここで『ルータ』という解答をした生徒は、こっちの問題では何と答えているか」といったことを自由に調べさせました。
どの列を取ってきて、降順・昇順に並べるかはWhere句によって操作できます。このように自分たちのデータを対象に、生徒が実際に手を動かすことができる活動に切り替えたことで、自分の調べたいことを見つけて分析していく活動に結び付けることができました。
※クリックすると拡大します。
こちらは自由記述のテキストマイニングの実習です。
授業の年間アンケートの自由記述から、自分が気になるキーワードが含まれるものを抜き出して、その内容を調査するものです。
ここでは、言葉の抜き出し方として、「プログラム」と「プログラミング」のどちらで抜き出すのがよいのか、「プログラ」で抜き出す方が、欲しいものが取り出せるよね、といったワイルドカードを用いた検索方法に気づかせたり、あるいはプログラミングについて書いている子たちは、肯定的なのか否定的なのか、といったことをグループで話し合わせたり、といったことも行いました。
※クリックすると拡大します。
また、スプレッドシートにCOUNTやSUM、AVERAGEといったものを埋め込んでおくと、勝手に表やグラフができるので、簡単に図式化して比較することができます。
そして、IMPORTRANGEを指定しておけば、もとのデータが変化すると、それに応じたグラフが表示されていくので、即時性があって、かつ元のデータには触っていない、ということを生徒に実感させることができました。
※クリックすると拡大します。
さらに、都道府県別のオープンデータを利用して、QUERY関数を使って様々な観点で都道府県ごとのグラフを作ることもできます。
ただ、これは本校の生徒のレベルでは、ちょっと厳しいものがありました。というのは、オープンデータでは、なかなか自分のこととして感じることができなくて、何となくぼやっとしてしまう。私の方でグラフを変えて見せて、「この県はどうかな」ということを比較させることはできましたが、あまりぴんときていない様子でした。
※クリックすると拡大します。
学校行事のアンケート結果の回答の分析で、データ分析をより身近に感じられるように
今後の展開として考えていることをご紹介します。
学校行事などで行うアンケートを利用することで、生徒たちの生活に応じたデータ分析に入っていけるのではないかと思っています。
例えば、相関が出そうな設問を用意しておくことで、それをデータ分析の教材にすることで、「この項目とこの項目が正(あるいは負)の相関になっている」といったことに気づかせ、学習をより身近に感じられるのではないかと思います。
例えば視聴覚行事で、見た後に「楽しかった?」「面白かった?」「感動した?」といった質問の下に、「鑑賞料がいくらくらいなら個人でも見に行く?」という、おそらく正の相関が出そうな質問を仕込んでおき、生徒たちに実際に取ったアンケートのデータを与えて、先ほどのような分析をさせたらよいのではないか、と考えています。
データ分析を「疑問を投げかける道具」として、探究学習につなぐ
「情報I」の学年末アンケートの結果です。昨年は、これからの自分の生活に必要な分野だと思う単元としては、プログラミングが多かったのですね。
今回は先ほどのQUERYを使ったデータのやりとりを、このアンケートの1~2週前までやっていたので、強く印象に残ったということがあるかもしれませんが、「これからの自分の生活に必要な分野」を聞くと、「データ分析だ」と答えているのですね。この辺りは非常に効果があったと思います。
一方、「情報デザイン」がなぜこれほど少ないのか、ということには、実は裏があります。
私は4月の最初の授業から、ずっと情報デザインのことを言い続けていまして、「何をするにしてもデザインだ。数学の途中式をなぜ書かないといけないのか、というのもデザインだ」などとよく話題に上げていました。
ちなみに私は、もともと数学科の教員ですが、情報デザインの勉強をしてみると、相手に伝えるために必要なことを必要なだけ書いてあげる。ということが情報デザインの基本だと気づきました。「数学の途中式を書くとか、公文書を作るというのも、1つの情報デザインで、必要な場所に必要なことが書いていないと人の目はそれを認識しないよ」ということを延々と言ってきたので、生徒たちにとっては当たり前のことになっているのかな、と良いように解釈をしています。
最後に、今後に向けて、ということでまとめます。
前回のデータベースの授業では、sAccessでデータベースに触れてみる、ということをやりました。昨年はそれで十分だと思っていましたが、SQLを使って身近なデータに触ってみることに取り組んでみて、改めてこのような身近なデータを使った方が良かったと感じています。
また、ユーザーローカル等を利用したテキストマイニングも、手段としては教えておかないといけないかな、と思っています。
というのは、これが探究学習につながる部分であると思っているからです。テキストマイニングの技術は、結果を求めるものではなく、疑問を見つけるためのものとして大事であると思います。
さらに、もっとレベルをあげるのであれば、オープンデータを用いた実習を通して社会というものを見ていきたいと思っています。
「データ分析」というのは、なかなか結論が出ないものです。結論が出ないのであればこそ、疑問を投げかけるための道具としてデータ分析を使っていくことを学べば、次の探究的な学びにつながっていくと思います。
私は、この全高情研で発表するのを夢に思っておりました。情報をがっつりやるようになって4年、先生方にいろいろ教えていただきながら頑張ってきました。ぜひ今回の実践についてもご意見をいただけたらと思います。
最後に、本校はSTEAM Lab.というラボがあり、3Dプリンタやレーザーカッターも完備して、生徒がデジタルものづくりを通して遊んで学べるような環境が整っています。何かの教科の学習指導要領に沿ってというものではなく、生徒たちが何か学びに向かうきっかけになれば、ということで運営しています。DXハイスクールにも採択いただいているため、これから動き出そうとしてる先生方とも交流していけたらと思っています。
第17回全国高等学校情報教育研究会全国大会(愛知大会)分科会発表