授業でのICT活用を掴まえる

今年もいくつか講演依頼をいただきました。お声掛けいただきありがとうございました。

ただ,今年の講演は私にとって辛いものでした。ご存知のように次期学習指導要領の告示がなされ,移行期間のための伝言ゲームが始まるタイミングだったからです。

私は国の施策を代弁するような仕事を「大変」不得意とする人間なので,そういうご依頼にはどうやって自分の話をそちらに寄せるべきか悩み続けて苦労するからです。

今年,いろいろ悩んで収束していった話が「つなぐICT」でした。

ただICTの話の前に,少し巻き戻したところの「学習」について話を共有するところから始めたいと思います。私たちが新しい「学習内容」を学ぶ場面をイメージ化するとこんな感じに描けます。

学習の図

この図は,何かしらすでに頭の中に知識「既有知識」を持っている私たちが新しい「学習内容」と出会って学ぶ様を描いているのですが,既有知識と学習内容が結びついて自分の知識になることは,そう容易なことではありません。たとえば今まで縁のなかった世界の事柄を学ぶ難しさを考えると分かると思います。

そこで,既有知識と学習内容を何かしら橋渡しをするものが必要になります。

橋渡しをするものを心理学の世界では「先行オーガナイザー」と呼んでいて,新たな学習内容に関する枠組みとなるもの(ヒントや例え話も含む)を先に示しておくことで,学習内容を既有知識と結びつけた理解が進むとされています。こういうものを「有意味受容学習」と呼びます。

佐伯胖氏が『「わかる」ということの意味』(岩波書店)という本で「「わかる」ということは、実は「わかっていること同士が結びつく」ということにほかならない、ということです。」(新版153頁)と書いているように「知識の関連付け」は学習の重要要素であるといえます。

「授業でどんなICT活用をすればよいか教えてください」

という講演依頼をいただくと,依頼をいただいた側としては,どれぐらいのレベルの話を期待されているのだろうかと悩みます。

タブレット端末機能の操作方法や具体的なアプリの紹介を期待されているとしたら,頼み方としては,ご利用されている環境の詳細情報を教えていただかないと難しいですし,お話する直前にでも実機を用意していただいて触らせていただきたいと思います。

他校の事例を聞きたいというご依頼であれば,これまで訪問したことのある学校のお話を見せられる写真とともにお話しするということになりますが,その場合でも,環境条件を教えていただいたり,どんな授業科目で使いたいのかを教えていただかないと辛いなぁと思います。

それで悩むのが,もう嫌なので(コラコラ),私が先生方と一緒に授業づくりを練らせていただく場合に,どんな枠組みで眺めているのかをお話することにしました。それが「つなぐICT」です。

つなぐICT

「つなぐICT」をあらためてごちゃごちゃと図にしたのがこれです。

ICTは「何かと何かを繋ぐ役割を担えるもの」と考え授業を捉えると,授業の中でICTが活用できそうな箇所が上図のようなところとして浮かび上がってくるというイメージです。

もちろんICTが使えそうだというだけで,授業の目標に応じて使わないことを選択する場合もありますし,このイメージ以外の箇所にハマる可能性もあります。図はあくまでも一つのイメージです。

先行授業は,シンプルな知識習得の授業をイメージしたものです。「有意味受容学習」が起こること前提としたものです。

後継授業は,協働学習なんかが含まれるちょっと賑やかな授業です。つまりアクティブ・ラーニング的な授業ということになるでしょうか。「有意味発見学習」が起こる授業といえそうです。

後継授業の学習課題に取り組む中で,それぞれの既有知識や調べ活動などで持ち込んだ暫定知識を突き合わせたり擦り合わせたりすることをしながら,それらと学習課題を橋渡しする学習内容を発見すること。それが全体を関連付けるという理解に至る学習過程ではないか。そんな仮定を込めた図です。

こうした何かと何かを「つなぐ」ICTによって,最終的には「個に返していく」ことが大事。

お話は,こう締めくくられます。

「つなぐICT」の図に描かれているジェリービーン…じゃなかったICTの活用どころに,どんなICT機器をどんな方法で用いることができるのか。いろんな条件を想定しながら考えて当てはめていく作業をワークショップにするのも面白いかも知れません。

文部科学省「学校におけるICT環境整備の在り方に関する有識者会議」の効果的なICT活用検討チームによる報告資料は,「教育用コンピュータでできること」と題して1人1台端末があったら次のようなことができると項目を挙げています。

「個別のドリル学習」「試行錯誤する」「写真撮影する」「念入りに見る」「録音・録画と再確認」「調べる」「分析する」「考える」「見せる」「共有・協働する」

残念ながら項目の水準や解説文のばらつきが気になる代物で,正直なところ,そのまま参考にするのはお勧めしません。むしろ,この項目群をそれぞの自治体や学校で再構築してみることが,ICT活用を考えるよい練習になると思います。

学校の授業におけるICT活用を掴まえるために,それぞれが自分なりの枠組みを構築し,それを突き合わせて議論していくことが大事になると思います。

フローチャートよ、もう一度?

せっかくの連休なので大学図書館で過ごしました。県内の他大学と自分の大学の2つ。短縮開館ですが,落ち着いた雰囲気で資料漁りができました。

1970年前後の頃の文献資料を拾い続けています。過去の言説を掘り続けていると,確かに歴史は繰り返しているという部分がないわけではありませんが,まったく放ったらかして引き受けもしないで今日に至っている事柄も少なくありません。そのようなものを整理して光を当てていければと思いますが,それはまたいずれ形にしたいと思います。

1970年代初頭の文献を眺めていて気づくのは「フローチャート」満載だということ。

フローチャートといえば,今日ではプログラミング体験・学習の文脈で学習活動に取り入れるかどうかという注目のされ方をしているものです。

10月に行なわれた日本教育メディア学会大会では,地元企画として教科学習におけるプログラミング教育の公開授業が催され,振り返りの議論が行なわれていました。小学6年生の算数「形が同じ図形」でしたが,そこで図形の拡大図・縮図・合同な図形を分類する手続きを表現する手段としてフローチャートが用いられていました。

IMG 4770

 この公開授業に噛みついたのは私ですが(毎度すみません…),それは算数という教科の見方・考え方とプログラミング的思考あるいはプログラミング体験要素の組み合わせ方やバランスについて,授業者の先生がどういう思慮・苦慮のもとで今回の授業の形に至ったのかを質問したものでした。

 この議論を中途半端にご紹介するのは誤解を招く可能性もありますので,また機会を改めて詳述するつもりです。ただ,(写真に表記されたような)フローチャートづくりが教科学習の中でのプログラミング体験であると短絡的に理解することは,現時点では問題が多く残されてしまうと感じます。

 そういう意味で,この夏に小学館から刊行された『プログラミング教育導入の前に知っておきたい思考のアイディア』も誤解を招くムックであると言わざるを得ません。

 基本的にこのムックが問題視される大きな原因は表紙と解説にあります。

 書名が表している通り,ムックの内容(特に実践アイデアパート)は「思考のアイデア」,つまり裏表紙に紹介されている「思考ツール」の系統に属する内容を扱ったものですが,表紙はプログラミング教育の関連の本であることを訴求し,研究者の解説パートはプログラミング的思考を論じています。

 解説パートと実践アイデアパートを接合するのは,「プログラミング的思考の要素」として紹介された「順序(順次)」「場合分け(分岐)」「繰り返し(反復)」であり,これを各教科の学習活動で行なえるようなアイデアを紹介しているという構造になっています。

 それらの要素をもっともよく見える化するものが「フローチャート」であり,このムックの実践アイデアにもたくさん用いられているというわけです。

 しかし,このムックにはフローチャートそのものをどう扱うべきかはほとんど論じられていません。もし短絡的な理解をする読者がいれば,フローチャートをつくることで教科の中でプログラミング的思考を扱ったことになるのだと読みとるかも知れません。

 このムックはそもそも「思考ツール」を扱ったシリーズの一冊ですから,フローチャートを始めとした思考ツールに関する議論は別のムックや書籍を参照してね…という割り切りの位置付けにあるのでしょう。表紙のデザインはともかく,これは論理的思考に関する実践の「ジャスト・アイデア」(たとえばのちょっとした提案)というムックなのです。

 フローチャートがプログラミング的思考と関係ないということではありません。とはいえ,そう単純な話ではないということを勘案してくれる読者がどれほどいるのか。そのことを思うと,このムックに関しては批判的な検討を加えながら広く議論されていくべきだと思われます。

1970年代の文献資料にフローチャートが満載であった理由ですが,当時は教育工学という学問が助走期を経て本格的に立ち上りつつあった時代であり,「授業のシステム化」「学習指導の最適化」といった考え方について大いに議論が盛り上がっていたのでした。

かつての授業研究や開発の分野はその手法においてプログラミングを強く意識していたのです。よい授業を図式化するということも真剣に議論され,フローチャートはその手段の一つだったわけです。その名残は,一部地域の授業指導案の書き方にも残っています。授業の流れをフローチャートで表現する地域や学校があるのです

学校全体の教育方針や研究方針を図化する中でもフローチャートの利用は珍しくはありませんが,今後カリキュラム・マネジメントの取り組みもますます議論されていくことを考えると,フローチャート満載時代が再びやって来る?のでしょうか。

マストドン v2.0.0アップデート(CentOSにて)

Twitterをモチーフにした分散型ソーシャルネットワーキングシステム「マストドン」(Mastodon)が2017年4月頃から日本でも話題になり,いくつものインスタンス(分散したサーバー)が運営を続けています。

独自にインスタンス(サーバー)を立てて運用するため,どちらかというと限定されたコミュニティ内で使うのに適しています。そのためTwitterを置き換えるというものではありませんが,決してコミュニティ内で閉じるのではなく,外部とも連携できるしくみが備わっているのがマストドンの興味深いところです。

教育学習とICT関係に関心のある皆さんに向けたマストドンとして「elict インスタンス」というものを立ち上げて運用しています。教育学習やICTのことを話題にするというだけでなく,その界隈の人々がマストドンを試す場所を提供するのも目的です。

Mastodon manager

それから,CentOS 7上で最新のマストドンシステムを構築して運用する実験をすることも目的としています。とはいえ,マストドンシステムのアップデートは一筋縄ではいかない難しさがあります。そもそもマストドン本家は同じLinuxでもUbuntuを推奨していて,CentOSでの運用は詳しく説明してくれていません。

先日(10/19),マストドンが v2.0.0へとメジャーバージョンアップしましたが,このアップデート作業もすんなりとはいきませんでした。

10月22日にv.2.0.0へのアップデートを試みたところ,エラーメッセージとともに作業は足止めされ,サイトはダウン状態となりました。それから暇を見つけては対処法を探り続けましたが,闇雲に作業すれば泥沼行き。かといって始めからやり直してみようと試みても,なぜか同じエラーの結果になるという幽閉状態。

参考情報を探そうとしても,同じ条件で構築している人は少ないし,ほとんどの人々がv2.0.0アップデートの難関さを前に躊躇っている状態か,難なくクリアしたかで,手がかりは極めて少なかったのです。英語のぶっきらぼうなエラーメッセージだけでは,何をどうしたらよいのか,万策尽きた感じさえしました。

しかし,端末から発せられるメッセージはエラーメッセージばかりではないのですね。それを丁寧に追っかけると,そもそも最初に出ていたエラーさえ適切に対応すれば良かったことがわかりました。

本当なら,自分が解決した道筋を,再検証して整理しながら解説すべきなのですが,なかなかそういう余裕もないので,とにかく手がかりになりそうなコマンドをここに書き記していこうと思います。

まずマストドンの基本的なインストール方法はこちらを参照してください。

Mastodon Production Guide

CentOSの場合,「apt」よりも「yum」を使うことが多いかなと思います。たとえばrootユーザーで

yum -y install ImageMagick libxml2-devel libxslt-devel git curl file g++ protobuf-compiler protobuf-devel gcc openssl-devel libyaml-devel zlib-devel ncurses-devel libffi-devel gdbm-devel readline-devel libicu-devel libidn-devel bzip2 

という感じです。また,CentOSのdevelopバージョンは-devではなく-develと表記することが多いです。

ちなみに,上の並びはnode.jsとYarnとffmpegとpostgresqlとnginxなどは別途作業したときのコマンド並びなので,構築されるサーバ環境によって追加したり減らしたりする必要があります。

「Dependencies That Need To Be Added As A Non-Root User」項目から以下はわりとそのままだと思います。

これらでなんとか構築完了して,運用を始めましょう。もし問題が発生したら下の方に書く対処を試みます。

定型的なアップデート作業は次の通りです。普通はマストドンユーザーでログインし…

cd live
git fetch
git checkout $(git tag -l | sort -V | tail -n 1)
bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile

そして,rootユーザーに切り替えてから

systemctl restart mastodon-*.service

としてマストドンを再起動するとアップデートが反映されます。

アップデート作業などで問題が発生した場合に試みたこと。

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig

bundle installでエラーが出た場合,パスが通ってなかった可能性があります。上はその一つ。

cd /home/mastodon/.rbenv/plugins/ruby-build && git pull && cd -
rbenv install 2.4.2
rbenv rehash
rbenv global 2.4.2
rbenv global

Ruby環境を最新にしないといけないアップデートもありました。上はマストドンユーザーでログインして2.4.2にするときのもの。ディレクトリ構成は自分の環境に合わせてください。

wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum install yarn

Yarnを最新にする必要があるときもありました。上はrootユーザーで入力したもの。

git checkout v1.6.1

gitから取ってくるmastodonバージョンを指定したいときに。マストドンユーザーで,liveディレクトリに移行後。ただし元に戻りたくても戻れないときもあります。

git reset --hard origin/master

ローカルをいじり過ぎておかしくなった場合,ローカルを上書きしてリモートに合わせてしまいたいときに使います。いわゆるリセット。

rm .bundle/config

オプションなしで「build install」すると以前の設定が引き継がれて処理されます。その履歴を消したいとき。

gem install lograge
bundle install --with production

v2.0.0アップデートで一番泣かされたのが「lograge」Gemファイル未インストール問題。インストールしたいと思って「gem install lograge」してみても一向に問題が解消されないとき,「bundle install –with production」と明示的に指定したら問題が解決しました。いやはや,回り道をしました。

この他に効果があったかどうかは分からないけれども試してはつまずくのを繰り返したコマンドは以下の通り。

gem cleanup
gem install bundler
gem install rails --no-document
gem update --no-document
bundle update
yarn cache clean

この他にもhttps通信を行なうための証明書取得など必要な手続きはありますが,それはまた別の機会に。