あいまいまいんの生物学

あいまいまいんの生物学

生物学が好き。勉強したり遊んだり。

日頃感じたこと思ったこと、出来事など

勉強して面白かった話

授業で使えそうな生物学の知識・雑談・小ネタ

などなどを紹介していきたいと思います

コメント大歓迎!気軽にコメントして下さい

ゲームサイトはこちら

学校環境からでもできる?オンライン講義に挑戦

休校になってしまいました。

ウイルス拡大を防ぐために休校措置をとるのは何も問題ないし大事なことだと思います。

しかし、受験生の気持ちとしては、こんなに授業がなくて進度大丈夫か!?と思うのではないか…???

そう思い、この休校期間中にオンライン講義を配信し、必要な生徒に届くような形にしたいと考えました。

今日はその試行錯誤について備忘録も兼ねて書いてみたいと思います。

先に言っておきますが、自分は普段スライドと授業プリントを用いて授業を進めるスタイルです。今回紹介するオンライン講義についても、スライドがあるからできた面が大きいです。

また、学校によって環境が異なると思うので、以下で紹介する方法がどこでもできるかは分かりません。ただ、下でも説明しますが、自分がいる学校も制約があったので、自分が最初思いついた方法はできませんでした。だから試行錯誤してなんとか抜け道を見つけた感じです。

 

前提:目指すもの

まず、自分がしたいことややる条件を整理しました。

  • 進度が不安で自分で勉強をしたいと思う受験生は、恐らく教科書だけを読んでも理解が難しかったり、押さえるべき知識の見分けが難しく不安に思ったりするだろう。それら問題を解決するようなオンライン講義をしたい。
  • 学校の勤務時間内で、かつ学校の環境内でオンライン講義に必要なものを作成できるようにしたい(時間外労働を安易に許容するのは間違った姿勢だと思うので)。
  • 文字よりも音声や視覚情報の方が意識に届きやすいと個人的には思っているので、音声と視覚情報を与えたい。ただし、生徒が持っている時間は貴重なものなので、それらの再生速度については自由度を与えたい。
  • 眼が動画に釘付けでなくても、音声だけを聴いていれば問題がないような状態が一番望ましい。
  • 与える情報は求められているもの以上にはしない。生徒が求めているのは知識と安心感であり、私の姿ではない。
  • リアルタイムな相互作用は求めていない。生徒個々が自分のペースで見るか見ないかも、見るタイミングも再生回数も決められるようにしたい。ただし質問等ある場合は自分に届くようにしたい。
  • 特別な機材はなしで、今ある装備だけでなんとかしたい。
  • 生徒と教師の間での個人的な連絡先交換ややりとりはご法度なので、それは避ける。

 

まず用意したのは情報発信のためのプラットフォーム

まず用意したのはGoogle Classroomです。

Google Classroomは教師からいろんな情報を発信できる(なんならテストとか課題も出せる)けれど、生徒個人に教員が連絡をすることはできない構造になっているからです。個人的な連絡のやりとりはできないようになっているからOK(だと思う)。

ただそうすると生徒から質問があった時に届かないのと、質問の時点でまた個人的やりとり云々が出てくると困るなというのがあったので、Google フォームで匿名投稿できる質問箱を作りました。

質問箱に対して生徒が質問を書いて投げると、教師はそれを受けられ(誰から来たかは本当に分からない)、それをclassroomに回答付きで掲載するという形態をとることで、質問を受けられるようにしました。

この時点で

  • オンライン講義をした際にURLや資料を受講者だけに公開できる環境
  • オンライン講義含め質問を受けられる環境

が整いました。

 

オンライン講義に必要な資料などの共有

オンライン講義をするからには授業プリントなどのデータが生徒に渡らなければならないと考えたので、

授業プリントと授業で使用しているスライドをすべて生徒と共有することにしました。

共有のためにGoogle driveを使用し、共有リンクをclassroom内で公開しました。

 

オンライン講義のためのツールを試す(失敗)

ここからはオンライン講義の話をしていきたいと思いますが、最初に挙げた前提でも述べた意図を考慮して、自分がやりたいオンライン講義の形態は

  • 授業スライドに解説の声をあてたもの
  • 自分の姿は映らないもの
  • スライド中のどこを話しているか指し示しながら進むもの
  • 音声だけ聴いていても良いようなもの

というものでした。それでいて、学校環境内でも作成とアップロード・共有までができるというのが目指すところです。

 

最初に思いついたツールはzoomです。zoomはオンライン講義にはもってこいだし、リアルタイムで配信するだけでなくビデオを撮影することが可能です。画面共有の形にすればスライドだけを見せることもできます。

更に教育者は5月までzoomのプレミア版が無料開放されています。

よってまずzoomを試そうと思い、学校のパソコンでテストをしてみました。

結果は失敗でした。

学校のネットワークだと、zoomを通してくれないようです。全く画面が映らず、動きもしませんでした。加えて学校のパソコンはアプリのダウンロードや設定変更が自由にできないようロックされており、zoomのアプリも勿論落ちません。

出だしから厳しいですね!笑

 

次に考えたのがXboxの画面キャプチャ機能を使う方法でした。

Windowsの場合Xboxというゲーム配信用の画面キャプチャや配信機能がついていて、非常に手軽にパソコンの画面を撮影しつつ声を入れられます。

早速試してみましたが、これも失敗でした。なんと動きません。動画だけ。なぜ???ロックがかかっているんでしょうが…

どれだけ悪戦苦闘してもうんともすんとも言わないので、これも諦めました。個人的にはこの方法でできるなら動画作成には勘弁なのでおすすめです。

 

ここでだいぶ手詰まり感があり、カメラ撮影なども試しましたが画質が荒いし何より肝心なスライドが全然見えません。カメラはそもそも手ブレとかあるし声も遠いし論外に近いです。

画面キャプチャと音声取り込みができればいいんだが…と方法を検索してみてもアプリばかり出てきてしまうので、アプリダウンロードができない学校では無理無理の無理です。

弱ったなーと思ったんですが、ふと、トイレに行った時ふと思いついたんですよ…。

 

PowerPointを使ったオンライン講義動画作成

そもそも自分はスライドを用いた授業がしたかったのに、そのスライドを作っているPowerPointの機能を見ていなかったな?と思ったんです。

なんなら確か、録音とか、ページ送りのタイミング保存とか、あったよな????と思い…

急いで確かめてみると、なんとありました!PowerPointには、録画機能がついているんです。

f:id:I_my_mine:20200411114913p:plain

ここ

押してみると、なんと

  • スライドのアニメーション+ページ送りのタイミング
  • ペンでの書き込み

のすべてが録画できる!!!!!!!これが求めていたものでは…???

しかも、

  • 1スライド単位で撮り直しが何度もできる
  • 音声のトリミングが可能
  • 動画もばっちり入れられる

という。ただし、スライドは必ず一方向にしか送って行けず、録画中に「戻る」こと(1枚目のスライドをみせてから2枚目のスライドを見せ、また1枚目のスライドを見せる、みたいなこと)はできないので、そういうことがしたい場合は全部スライドを作っておく必要があります。

そうだとしたってこんなの完璧では?学校のパソコンで十分この録画はできてしまいますし、自分が映るかどうかも選択できるし。PowerPoint、見直したわ…。

 

録画ができたら次は勿論それを動画にしたいわけですが、動画にするにはファイル→エクスポート→ビデオの作成 でできてしまいます。

あんなに苦戦していたのにあっという間に欲しい動画ができてしまいました(エクスポートはめっちゃ時間かかりますが、エクスポート中に次の動画作ったり他の仕事したりすれば無問題です)

 

最後は講義動画の共有

オンライン講義のための動画はこれで整ったので、あとは共有方法なのですが、これは幾らでもあると思います。

私の話をすると、自分の授業スライドは著作権的に駄目な画像が多いのと、最初も言ったように再生速度を変えられるツールがほしいという欲求、そして学校環境からいけるもの、という条件から、あえてyoutubeを選びました。

youtubeは限定公開を選択できるので、これを選べばURLのみを知っている生徒だけに公開できます。classroom内でURLを共有すれば、外部の人間には見られません。

youtubeは2倍速まで対応可能なので、速度面の条件もOK。

また、youtubeで配信する利点として、ファイルサイズを考えなくてもよいことがあります。driveで共有してもいいんですけど、動画はどうしても重いので、youtubeで投げた方がいいなという結論になりました。

自分はこれ以上探索していませんが、もっと楽で何も考えなくていい動画共有方法があるのかもしれません。

 

ということで、自分がいる学校環境内からオンライン講義を作るには、

  • classroomとフォームというプラットフォームを作る
  • 授業に必要な教材をdriveで共有する
  • PowerPointの録画機能とエクスポートで動画を作成する
  • youtubeの限定公開でURLをclassroom内で公開する

という方法でいけるというのが自分の中での結論です。

 

オンライン講義は実際やってみると難しいし、何か言われるかもしれないけど…

実際このスタイルでやってみた感想を言うと、「自分のオンライン講義めちゃ下手だな」ということです。

対面授業とは全然違うコツやテクニックが必要なのだということを痛感しました。

しかしやっていかなければその気付きもなく、向上もないわけで、こういう時期があることも大事なのだと思いつつ、オンライン講義の取り組みは続けていきたいと思います。

 

ちなみにこの方法でオンライン講義をやっていることは、現在学校には伝えていません。何か言われると面倒だし、やれていることができなくなると困るので…(何もいけないことはしていないつもりだけど…)。

 

加えてこれを学校でやる授業の完全な代わりにするつもりもありません。ネット環境がない生徒は実際いるわけですし、オンライン講義を皆が聴く前提で取り組むのは難しいと個人的には思います。

しかし、授業がなく、普段から聴いていた人の声がなく、毎日が不安定なこの状況下で、もしかしたらオンライン講義の声を聴くだけでも生徒は安らぐかもしれません。また、教科書をただ読むよりも、音声や視覚的情報の方が効率が良いかもしれません(個人的には文字から知識を得るのはかなりガッツがいると思っている)。

だから補助教材のつもりで配信していけたらいいなと思っています。

本当に補助になっているのかもそもそも生徒が求めているのかもわかんないんですけどね…

 

また、こういう試行錯誤(学校で・勤務時間内で・特別な機材なしで何ができるか?)はどこかで役に立つ可能性もあるんじゃないかともちょっと思っています。ウイルスによる休校がいつまで続くか分かりませんが、これが収束したところで世界が元通りになるとも限らず、オンラインで講義を発信していけるような取り組みは進めておいて損がないと個人的には思うのです。

ということで、誰かの役に立てればと思い、この記事を終わらせて頂きます。

まいばいお24 COVID-19

今回のまいばいおは、学校で配布したCOVID-19に関する情報と同一のものを掲載したいと思います。

ただちょっとマニアックな内容になってしまった気がするので、普通の学習をしたい人にはあまりおすすめしません。ごめんなさい。

 

COVID-19とは何者か?

ウイルスについては既にブログでも扱いました。

タンパク質でできた殻、中に入った遺伝情報が基本の構造です。

エンベロープと呼ばれる脂質+糖タンパク質でできた膜がついているウイルスもいます。

ウイルスの遺伝情報の持ち方で分けたとき、最も一般的なのが一本鎖RNAウイルスです。

 

COVID-19はウイルス学的には、ニドウイルス目・コロナウイルス亜科・コロナウイルス科に分類されるコロナウイルスの一種です。ウイルス名としてはSARS-Cov-2の方が相応しいんですが、今回はCOVID-19で統一したいと思います。

コロナウイルスは直径約100nmの球形、表面には突起が見られ、形態が王冠“crown”に似ていることからギリシャ語で王冠を意味する“corona”という名前が付けられました。

脂質二重膜のエンベロープの中に一本鎖RNAのゲノムをもつ、RNAウイルスの一種です。

コロナウイルスは実は普通にひく風邪の10~15%を引き起こす種類を含んでいて、日常的に感染する4種類のコロナウイルスは、HCoV-229E、HCoV-OC43、HCoV-NL63、HCoV-HKU1だと言われています。

しかし一方で過去に大きな波乱を引き起こしたSARS-CoVやMERS-CoVコロナウイルスの一種です。

 

「プラス鎖」「マイナス鎖」RNA

コロナウイルスは一本鎖RNAウイルスの中でも「一本鎖プラス鎖RNAウイルス」に分類されます。

一方有名なインフルエンザウイルスは「一本鎖マイナス鎖RNAウイルス」です。

プラス鎖やマイナス鎖って何?と思うかもしれませんが、「プラス鎖」はそのままmRNAとして機能するもの、「マイナス鎖」はmRNAの相補鎖に該当する配列を持つものです。


よって一本鎖プラス鎖RNAウイルスは、ウイルスゲノムRNAがそのままmRNAとして翻訳されウイルスタンパク質が作られていきます。ただしHIVなどのレトロウイルスは、逆転写酵素で一度DNAに遺伝情報を移してから転写・翻訳を行います。

一本鎖マイナス鎖RNAウイルスは感染後にウイルスゲノムと相補的なRNAを作らなければタンパク質が作れないので、粒子内に元からRNA依存性RNAポリメラーゼを含んでいます。感染後RNAポリメラーゼによって相補的なRNAを合成し、それがmRNAとして機能します。

遺伝子の複製は両方とも、(1)ウイルスゲノムRNAと相補的なRNAが読まれ、(2)それを鋳型として次のウイルス粒子に取り込まれるRNAを作る という方法で行います。

 

コロナウイルスの細胞内への侵入

COVID-19は気道上皮細胞やII型肺胞に主に感染することが知られていますが、これら細胞内にCOVID-19はどのように侵入するのでしょうか?

先にも紹介したように、コロナウイルス脂質二重層と外膜タンパク質からなるエンベロープ(外膜)でウイルスゲノムRNAが囲まれています。

COVID-19が細胞内に侵入するために重要な役割を果たすのが、エンベロープに存在するSpikeタンパク質(Sタンパク質)です。

このタンパク質はS1とS2という二つの領域からなり、S1はヒト細胞で発現するACE2受容体と結合することでウイルスを細胞に導く役割を持っています(ACE受容体は心臓・腎臓・肺内皮細胞と腎小管上皮細胞で発現しています)。

最終的には、ヒトの細胞と自身のエンベロープが融合することでウイルスの中身を細胞内に入れるようになります。

この膜融合を引き起こすメインの部分は、「S2の立体構造の変化」です。

侵入経緯を以下で詳しく説明します。

 

まず体内に侵入したCOVID-19は、Sタンパク質中のS1部位がACE2受容体と結合することで細胞にたどり着きます。

細胞にくっつくと、Furinと想定されるヒト細胞由来のプロテアーゼ(タンパク質分解酵素)によりSタンパク質はS1とS2二つの部分に切断されます。

S2は更にヒト細胞表面のセリンプロテアーゼであるTMPRSS2(呼吸器上皮で発現している)で切断されることで、機能する構造をとるようになります。

元々S2分子内にはα-へリックス構造の2種類のhepatad repeat(HR)と、疎水性アミノ酸領域からなるfusion peptide(FP)が存在しているのですが、FBは疎水性であるため、同じく内部が疎水性である細胞膜に刺さることが可能です。

よってFBは標的細胞の細胞膜に挿入され、ウイルスのエンベロープと細胞膜が繋がれたような形をとるようになります。

次の瞬間、S2全体がヘアピンのようにぐいっと曲がり、3量体のHR1の外側に3本のHR2が覆い被さるように位置する構造(6 helix bundles)をとることで、一気に細胞膜とエンベロープの両者が近づけられます。

結果として、隣接した二つの膜間で融合が生じ、ウイルスゲノムが細胞質内に入れるようになるのです。

COVID-19の細胞内侵入にACE2とTMPRSS2が必須であることは、Hoffmannらにより2020年1月に解明されました。物凄いスピード感ですね…。

 

多くの研究が猛スピードで進んでいる

COVID-19に関して様々な視点からの研究が行われ、日々新たな知見が得られています。

例えばCOVID-19のゲノム配列解析は1月に終わっており、COVID-19はSARS-Cov-1と79.5%相同であること、そしてSタンパク質についてSARS-Cov-1よりはACE2受容体との親和性が低いことなどが明らかになっています。

一塩基置換すると、かなりACE2受容体と親和性の高いSタンパク質になるとか…

ゲノムに続きタンパク質の立体構造や重症化経緯の解明も続いており、各知見を基にワクチンや治療薬が現在検討されています。


他にもCOVID-19の耐久性についての研究も多く行われています。

例えばエアロゾル(空気中の液体粒子)や物体の表面にどれくらいウイルスが残存するかについては、3月17日にAerosol and Surface Stability of SARS-CoV-2 as Compared with SARS-CoV-1という研究成果の発表がありました。

著者Neeltje van Doremalenらは、COVID-19と SARS-CoV-1二つを用い、結果を比較しました。

エアロゾルについての実験では、液を霧化する装置ネブライザーを用いてウイルスが入った液体を粒子径5μm未満のエアロゾル化させ、ドラム中に置き、開始時点・30分後・1時間後…と一定時間ごとにゼラチンフィルターを用いてウイルスを回収し、それを培養細胞にかけることでウイルスがどれくらい残存しているかを調べました(ウイルスが機能していると細胞に感染し、細胞はコロナウイルスにかかると形が変わるようになっている)。

結果は、この実験の条件下だと3時間後も残存していることが分かりました(ただし気温21~23度、相対湿度65%環境下)。

 

また、物質表面でのウイルス残存時間を調べる実験では、各素材の板にウイルス培養液を滴下し、滴下直後・1時間後・4時間後・8時間後・…と一定時間後に滴下場所の表面に培養液1mLを垂らしてウイルスを回収し、エアロゾルの時同様培養細胞にかけて確認しました(気温は上同様、湿度40%)。

結果は上のグラフにある通り、プラスチックでは72時間後も残存が認められることが分かります。これらの知見は感染拡大を防ぐために重要です。

 

COVID-19に感染している可能性を確かめる技術も日々試行錯誤されています。

現在の病原体検出マニュアルはNIIDのHPから見ることができ、この方法ではウイルスゲノムRNAを検出するために、

①下気道由来検体(喀痰/気管吸引液)または鼻咽頭由来検体を得る

②検体からRNAを精製する

RNAの逆転写によってcDNA(RNAと相補的なDNA:complementary DNA)を得る

④cDNAを用いてPCRを行う という手順をとります。

PCRはDNAポリメラーゼによるDNA複製の仕組みを活用したDNA断片増幅方法のことです。

PCRは時間が相当かかるので、より早く・簡易で・正確で・安価な方法が求められています。

M5Stackですんなり使えたもの・使えなかったもの

自分が手当り次第買い揃えたセンサーやら何やらを、繋いではexampleコード的なものを叩き込んで試してみているのだが、現段階でできたもの・できなかったもの・ちょっと困った系のものなどをメモしておく。

力がなくて全然プログラミングのこともM5Stackのこともセンサーのことも分かっていないような人が、色々トライし始めるのに参考になるだろうという前向きな気持だ(本当に何も分かっていない。何も分からなさすぎてつらい。)

「いやこれ使えるくね?」みたいなことがあればどんどん教えて欲しい。是非お願いします…

 

すんなり使えたもの

M5Stack用環境センサユニット

www.switch-science.com

これは普通に使えた。なんにも特別なことはいらない。

サンプルコードも公開されているのでそのまんま突っ込んでしまえばよい。

M5Stack/ENV.ino at master · m5stack/M5Stack · GitHub

 

 

M5Stack用心拍センサユニット

www.switch-science.com

こちらも普通に使える。

サンプルコードも公開されているので使えばそのままいける。

Arduino-MAX30100/examples at master · oxullo/Arduino-MAX30100 · GitHub

使えばシリアルモニタやシリアルプロッタでデータを追えるようになる。

しかし問題なのは、

  • BPMを直接読み取ることができない
  • M5Stackの画面に心拍の図を表示させるのはちょっと工夫がいる

というところだろうか。

 

 

現時点で使えていないもの

M5Stack用光センサユニット

www.switch-science.com

これはなんで使えていないかというと、コードを繋ぐ場所がすんなり行かないからっぽい。

コードさえ正確に繋げられれば使えそう。

 

サーボモーター FS90R

M5Stack(ESP32)ではサーボモーターを動かすためにArduinoのServo.hライブラリを使えないらしく、険しい道程っぽい。

ここらへんが参考になりそうなので一生懸命勉強して動かします。

ogimotokin.hatenablog.com

windvoice.hatenablog.jp

誰か、M5StackでFS90Rを動かして記事を書いてくれ…

 

※追記

Twitterで弱音を吐いたら「M5StackでFS90Rを動かすのはUIFlowでなら可能」と心優しくも教えて下さる方が!!!!!Twitterってすごいな

 望みが持てた…やってみようと思う…

 

 

赤外線近接センサー SHARP 2Y0A02

これはもはやどうすればいいのか全然わからんので迷宮入りしている。

調べても何も出てこないし…

コマッタ

 

 

全然関係ないけど…

M5Stackからwifi通じてデータ飛ばすみたいなやつは下のリンクを参考に明日以降やってみる予定。

pages.switch-science.com

※これだとAmbientっていうやつで見ることしかできないっぽい。

GoogleSpreadsheetで記録を実装した天才がいたのでこちらも見習いたい。

www.telomere0101.site

 

 

あと本当に関係ないけど自分に使いこなせないセンサーやら道具やらがありすぎて萎えたので、ずっと気になっていたアバター表示を遂に試してみた。

完全に他人が作ったものにタダ乗りですが、どんな感じになるか知りたかったのだ…

blog.akanumahiroaki.com

ライブラリダウンロードしてコードコピペしたらすんなり自分のM5Stackでも再現できて感動した。コードをちょっと弄ってボタン触ると表情がランダムで変わる、みたいにしたらおみくじみたいになるかもな。

今まで作ったものの目次におみくじページを付けてこれを入れ込むか…

M5Stackで心拍以外も表示する

 どうもこんにちは。

「M5Stackいじりてぇ~」と言いながら言うだけで何もせずのんべんだらりだった私です。

一念発起して「っしゃM5Stackいじるか~」って重い腰を先日やってあげました。へぇへぇ。

さ~て何日ぶりのM5Stack進捗なのかな~?? 

過去記事曰く…

i-my-mine.hatenablog.com i-my-mine.hatenablog.com

 

3ヶ月経っとるやんけ!!!!!!!!

どんだけサボってるんだこいつは。

仕方ないっすね。波があるからね。人間だもの。

 

ということで進捗を報告します。

 

 

目次をつけたいしなんか色んな機能を統合したい

如何せん前回やったのが3ヶ月前なので記憶が埃を被っていてなーんにも覚えてない。

なんにもとは言わないけれどほっとんど覚えていないので、自分が何をしたいか何が継続課題だったかも分からない。

で、大抵の放っておいたことっていうのは「過去の自分がなんかいい感じにして終わった気がする…」という謎の妄想を産むんですよね。

だから「もう心拍何もいじらなくてよくね?もっとエキサイティングなことしたいわ」みたいな気持ちになってきた。

過去記事を見ればよかったんだけどな。全く見ずに出発進行!

 

今回自分が思ったのは「目次を作って機能をボタンで切り替えられるようにする」というもの。

ボタンがついてるのに全く使わずに今まで来ているので、どうせなら使いたい。

あとついでにgyroセンサや温度センサもついてるのに無視して心拍だけ阿呆みたいに写し続けるのはなんかもったいない。どうせなら全部の機能をフルで使いたい。もったいないから。

ということで、目次にgyroだの温度だの心拍だのを設定して、ボタンでぴぴぴと選べるようにして、ボタン押したら機能を使える…みたいな感じにしたいなと思った。

 

目次難しくないですか?

まー目次なんで余裕でしょーと思ったんだけど、ところがどっこいこれが実はちょっと面倒で難しい。

まず目次だから目次を提示しなければいけない。

そしてその目次をカーソルで選べるようにしなきゃいけない。カーソルの表示と目次が対応していないといけない。カーソルはボタンを押す度に決まった場所へ動いていかなきゃいけない。

そしてそのカーソルがある目次のところに来てなんらかのボタンを押すとある機能のプログラムにふっとばされないといけない。つまりカーソルの位置対応なのか、指す目次対応なのかは分からないがとにかく紐付けなきゃいけない。

…考えている内にどんどん面倒になってきた。

素人が作るしょっぱいものよりなんかあるんじゃないか?と調べてみた。

www.shumi-tech.online

あったわ。

天才が作った天才のものがあった。しかもカッコイイ‼‼‼‼‼‼

githubを見たらMITライセンスだ。個人利用なら大丈夫。

取り敢えずしばらくの間お貸ししていただこうということで、心の中で土下座しながらsimpleなやつを使わせて貰った。

github.com

本当ありがとうございます…

これすっごい使いやすいし、かっこいいし、動きも良いし、便利…

 

目次と中身のリンクをする

目次ができたら次はボタンをポチッと押せばプログラムが起動する、みたいなものを作らねばならないわけだが、これはプロである旦那さんからアイデアを貰った。

update_funcという関数を作っておいて、それを最初空にしておく。

update_funcが空のうちは目次を回し続ける。

で、目次でポチするとupdate_funcに飛びたいプログラムの関数が入る。そしてsetupして、個別で作ったloopに入って…みたいな感じだ。

個別で作ったloopの中に、「ボタンAが押されたらupdate_funcを空にして戻る」という指示を入れたので、これでプログラムから目次に戻ることもできるようになった。

以下、実際に心拍とジャイロと気温と環境のすごく素朴な表示が切り替えられるようになった統合版のコード。ただし目次はまだ増やす可能性がかなり大きいのでコメント型にして残してある。非常に見づらくなってしまった…

#include <vector>
#include <M5Stack.h>
#include <M5TreeView.h>
#include <Wire.h>
#include "utility/MPU9250.h"
#include "MAX30100.h"
#include "DHT12.h"
#include "Adafruit_Sensor.h"
#include <Adafruit_BMP280.h>
#define SAMPLING_RATE   MAX30100_SAMPRATE_100HZ
#define IR_LED_CURRENT  MAX30100_LED_CURR_50MA
#define RED_LED_CURRENT MAX30100_LED_CURR_27_1MA
// set HIGHRES_MODE to true only
// when setting PULSE_WIDTH to MAX30100_SPC_PW_1600US_16BITS
#define PULSE_WIDTH MAX30100_SPC_PW_1600US_16BITS
#define HIGHRES_MODE    true

MPU9250 IMU;
MAX30100 sensor;
M5TreeView treeView;
DHT12 dht12;
Adafruit_BMP280 bme;

typedef std::vector<MenuItem*> vmi;

void (*update_func)() = NULL; //update_funcの中身の有無でスイッチさせる


//heartrate
void switch_to_heatrbeat(MenuItem* sender)
{
  update_func = H_loop;
   M5.Lcd.clear();
   Serial.print("Initializing MAX30100..");
   if (!sensor.begin()) {
      Serial.println("FAILED");
      for(;;);
   } else {
      Serial.println("SUCCESS");
   }
   sensor.setMode(MAX30100_MODE_SPO2_HR);
   sensor.setLedsCurrent(IR_LED_CURRENT, RED_LED_CURRENT);
   sensor.setLedsPulseWidth(PULSE_WIDTH);
   sensor.setSamplingRate(SAMPLING_RATE);
   sensor.setHighresModeEnabled(HIGHRES_MODE);
}

const int LCD_WIDTH = 320;
const int LCD_HEIGHT = 240;
const int DOTS_DIV = 30;
#define GREY 0x7BEF

void DrawGrid() {
    for (int x = 0; x <= LCD_WIDTH; x += 2) { // Horizontal Line
        for (int y = 0; y <= LCD_HEIGHT; y += DOTS_DIV) {
            M5.Lcd.drawPixel(x, y, GREY);
        }
        if (LCD_HEIGHT == 240) {
            M5.Lcd.drawPixel(x, LCD_HEIGHT - 1, GREY);
        }
    }
    for (int x = 0; x <= LCD_WIDTH; x += DOTS_DIV) { // Vertical Line
        for (int y = 0; y <= LCD_HEIGHT; y += 2) {
            M5.Lcd.drawPixel(x, y, GREY);
        }
    }
}

int lastMin = 70000, lastMax = 50000;
int minS= 70000, maxS = 50000;
int lastY = 50000;
int x = 0;
int count1 = 0;
int p = 0;
int lastp = 0;
int k[10];
int i = 0;
int bpm;
int flag = 0;
#define REDRAW 20 // msec

void H_loop(){
    M5.update();
    delay(REDRAW);
    uint16_t ir, red;
    sensor.update();
    while(sensor.getRawValues(&ir, &red)){
      Serial.println(ir);
      Serial.print('\t');
      Serial.println(red);
    };
    uint16_t y = red;
    if (y < minS) minS = y;
    if (maxS < y) maxS = y;
    ++i;
    p += y;
    if(i<=8){
    k[i-1]=y; //0~7の8要素に値を入れる
    if(i==8) lastp = p;
    } else {
      p -= k[(i-1)%8];
      k[(i-1)%8]=y;
      if(lastp>p+200){
        flag++;
        if(flag==1) ++count1;
      } else flag = 0;
      lastp = p;
      //Serial.print("   lastp: ");
      //Serial.println(lastp);
    }
        

    if (x > 0) {
        y = (int)(LCD_HEIGHT - (float)(y - lastMin) / (lastMax - lastMin) * LCD_HEIGHT);
        M5.Lcd.drawLine(x - 1, lastY, x, y, WHITE);
        lastY = y;
    }

    if (++x > LCD_WIDTH) {
        x = 0;
        M5.Lcd.fillScreen(BLACK);
        DrawGrid();
        if(minS>50000) lastMin = minS - 20;
        if(maxS<70000) lastMax = maxS + 20;
        minS = 70000;
        maxS = 50000;
        bpm = (float)count1/6.4 * 60;
        M5.Lcd.setCursor(0, 0);
        M5.Lcd.setTextSize(4);
        M5.Lcd.printf("BPM: %d", bpm);
        count1 = 0;
        i = 0;
        Serial.print("lastmin: ");
        Serial.print(lastMin);
        Serial.print("   lastmax: ");
        Serial.println(lastMax);
    }
    if (M5.BtnA.isPressed()) {
      M5.Lcd.clear();
      update_func = NULL;
    }
}


//gyro
void switch_to_gyromode(MenuItem* sender)
{
  update_func = G_loop;
}

void G_loop() {
  if (IMU.readByte(MPU9250_ADDRESS, INT_STATUS) & 0x01)
  {
    M5.update();
    M5.Lcd.clear();
    M5.Lcd.setCursor(0, 0);
    IMU.readAccelData(IMU.accelCount);
    IMU.getAres(); // get accelerometer scales saved to "aRes"
    IMU.ax = (float)IMU.accelCount[0] * IMU.aRes; // - accelBias[0];
    IMU.ay = (float)IMU.accelCount[1] * IMU.aRes; // - accelBias[1];
    IMU.az = (float)IMU.accelCount[2] * IMU.aRes; // - accelBias[2];
    M5.Lcd.print("X-acceleration: "); M5.Lcd.print(1000 * IMU.ax);
    M5.Lcd.println(" mg ");
    M5.Lcd.print("Y-acceleration: "); M5.Lcd.print(1000 * IMU.ay);
    M5.Lcd.println(" mg ");
    M5.Lcd.print("Z-acceleration: "); M5.Lcd.print(1000 * IMU.az);
    M5.Lcd.println(" mg ");
    IMU.tempCount = IMU.readTempData();
    IMU.temperature = ((float) IMU.tempCount) / 333.87 + 21.0;
    M5.Lcd.print("MPU9250 Temperature is ");
    M5.Lcd.print(IMU.temperature, 1);

    Serial.print(IMU.ax);
    Serial.print(",");
    Serial.print(IMU.ay);
    Serial.print(",");
    Serial.println(IMU.az);
    if (M5.BtnA.isPressed()) {
      M5.Lcd.clear();
      update_func = NULL;
    }
    delay(200);
  }
}


//temperature
void switch_to_temperature(MenuItem* sender)
{
  update_func = T_loop;
}

void T_loop(){
    M5.update();
    M5.Lcd.clear();
    M5.Lcd.setCursor(0, 0);
   IMU.tempCount = IMU.readTempData();
   IMU.temperature = ((float) IMU.tempCount) / 333.87 + 21.0;
   M5.Lcd.setCursor(0, 0);
   M5.Lcd.setTextColor(WHITE);
   M5.Lcd.setTextSize(1);
   M5.Lcd.println("MPU9250 Temperature is ");
   M5.Lcd.setTextColor(YELLOW);
   M5.Lcd.setTextSize(6);
   M5.Lcd.setCursor(100, 100);
   M5.Lcd.print(IMU.temperature, 1);
   if (M5.BtnA.isPressed()) {
      M5.Lcd.clear();
      update_func = NULL;
   }
   delay(500);
  }


//environment
void switch_to_environment(MenuItem* sender)
{
  update_func = E_loop;
  M5.Lcd.clear();
  M5.Lcd.setBrightness(10);
  Serial.println(F("ENV Unit(DHT12 and BMP280) test..."));
  while (!bme.begin(0x76)){  
    Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    M5.Lcd.println("Could not find a valid BMP280 sensor, check wiring!");
  }
  M5.Lcd.clear(BLACK);
  M5.Lcd.println("ENV Unit test...");
}

void E_loop(){
    M5.update();
    if (M5.BtnA.isPressed()) {
      update_func = NULL;
      M5.Lcd.clear();
    }
    float tmp = dht12.readTemperature();
    float hum = dht12.readHumidity();
    float pressure = bme.readPressure();
    Serial.printf("Temperatura: %2.2f*C  Humedad: %0.2f%%  Pressure: %0.2fPa\r\n", tmp, hum, pressure);

    M5.Lcd.setCursor(0, 0);
    M5.Lcd.setTextColor(WHITE, BLACK);
    M5.Lcd.setTextSize(3);
    M5.Lcd.printf("Temp: %2.1f  \r\nHumi: %2.0f%%  \r\nPressure:%2.0fPa\r\n", tmp, hum, pressure);
    delay(200);
}



void setup() {
  M5.begin();
  Wire.begin();
  Serial.begin(115200);
  IMU.initMPU9250();
  IMU.calibrateMPU9250(IMU.gyroBias, IMU.accelBias);
  IMU.initAK8963(IMU.magCalibration);

  treeView.useFACES       = true;
  treeView.useCardKB      = true;
  treeView.useJoyStick    = true;
  treeView.usePLUSEncoder = true;
  treeView.useFACESEncoder= true;
  treeView.clientRect.x = 2;
  treeView.clientRect.y = 10;
  treeView.clientRect.w = 316;
  treeView.clientRect.h = 216;

  treeView.setItems(vmi
               { new MenuItem("heartbeat", switch_to_heatrbeat)
//                 { new MenuItem("sub 1-1", 11, vmi
//                   { new MenuItem("sub 1-1-1", 111)
//                   } )
//                 } )
               , new MenuItem("gyro", switch_to_gyromode)
//                 { new MenuItem("sub 2-1", vmi
//                   { new MenuItem("sub 2-1-1", 211)
//                   , new MenuItem("sub 2-1-2", 212)
//                   } )
//                 , new MenuItem("sub 2-2", vmi
//                   { new MenuItem("sub 2-2-1", 221)
//                   , new MenuItem("sub 2-2-2", 222)
//                   } )
//                 } )
               , new MenuItem("temperature", vmi
                   { new MenuItem("temperature", switch_to_temperature)
                   , new MenuItem("more environment", switch_to_environment)
//                     { new MenuItem("sub 3-1-2-1", 3121)
//                     , new MenuItem("sub 3-1-2-2", 3122)
//                     , new MenuItem("sub 3-1-2-3", 3123)
//                   } )
//                   , new MenuItem("sub 3-1-3", vmi
//                     { new MenuItem("sub 3-1-3-1", 3131)
//                     , new MenuItem("sub 3-1-3-2", 3132)
//                     , new MenuItem("sub 3-1-3-3", 3133)
//                     } )
//                   } )
//                 , new MenuItem("sub 3-2", vmi
//                   { new MenuItem("sub 3-2-1", vmi
//                     { new MenuItem("sub 3-2-1-1", 3211)
//                     , new MenuItem("sub 3-2-1-2", 3212)
//                     , new MenuItem("sub 3-2-1-3", 3213)
//                   } )
//                   , new MenuItem("sub 3-2-2", 322)
//                   , new MenuItem("sub 3-2-3", 323)
//                   } )
//                 , new MenuItem("sub 3-3", vmi
//                   { new MenuItem("sub 3-3-1", vmi
//                     { new MenuItem("sub 3-3-1-1", 3311)
//                     , new MenuItem("sub 3-3-1-2", 3312)
//                     , new MenuItem("sub 3-3-1-3", 3313)
//                   } )
//                   , new MenuItem("sub 3-3-2", 332)
//                   , new MenuItem("sub 3-3-3", vmi
//                     { new MenuItem("sub 3-3-3-1", 3331)
//                     , new MenuItem("sub 3-3-3-2", 3332)
//                     , new MenuItem("sub 3-3-3-3", 3333)
//                     } )
//                   } )
                 } )
               }
             );

  treeView.begin();
}

void loop() {
  if (update_func == NULL) {
    MenuItem* mi = treeView.update();
    if (mi != NULL) {
      M5.Lcd.fillRect(0,0,320,8,0);
      M5.Lcd.setTextColor(0xffff,0);
      M5.Lcd.setTextSize(1);
      M5.Lcd.drawString("menu:" + mi->title + " / tag:" + mi->tag, 15, 0, 1);
    }
    return;
  }
  update_func();
}

 

実際動かしてみると、ちゃんと動く!感動した。

でもまだまだ問題点が山積みである。

 

問題点

幾つか思い当たったものだけでも書いておく。

  • 心拍と環境はセンサを取り付けないとできないので、センサが抜けているとどうなるか?というのを試したらとんでもないことになった。センサがない時に「センサを付けて」→ついたら実行、みたいなプログラムを一つ噛ませなければいけない
  • 心拍がエグい。過去記事にもあるがBPMが死んでるし画面も補正に時間がかかる。そもそも案外時間や状況で値がだいぶ変わっているらしいので最初の数秒で大体の値の範囲を図って目印を作って上下を決めて…みたいなのが必要か?
  • ジャイロに見せる気が全く感じられない。見せるものに変える。まずは文字の大きさ。あと見せ方。グラフが本当はいいけれど中々大変なんだろうな~。あるボタンを押した時にその時の測定値を固定して見せておいて、隣に今の状況(変化していくもの)を表示して見比べられる、みたいなの作れないかな
  • 環境もジャイロも心拍も全部そうだけど記録ができるようにしたい。経時変化が全く見えずに今の状況しか分からない。勝手にパソコンにデータが送られてってほしい。
  • 環境画面を開いた後目次に戻ると背景が謎の状況になる。おかしい。直したい。
  • もっと機能を搭載したい。
  • 実験に実際どういうものを作れば使えるか?というのを考えながら一つ複雑な実験特化のものを作りたい…けど今の所あまり想像ができない。生物実験で使えるのってどんな機能だろう…
  • 心拍センサと環境センサが同じ接続場所を取り合うので逐一付け替えなきゃいけないので面倒だ。どうすれば解決する?

ということで沢山の問題点があるけれど、取り敢えず心拍はちょっと距離を置いて考えたい。実装の仕組みを考えないと小手先でできるほど熟練じゃないので…

直近の次の目標としては、手元にある他のセンサたちを一回試して使えそうならどんどん実装すること、そしてwifiの使い方確認とお試しをすることかなぁという風に思っている。今の所wifiに完全にびびって何もできていないので、このままだとポンコツを作って終わってしまう(今の時点でも相当ポンコツだけど)

 

あとこれはただの野望だけど無駄に走るロボットを作りたい。車輪のテストもします。

 

最近思ってきたけど、やってみる前から考えて分かることは勿論あって、考えて動かなきゃいけない所もあるけど

同時にやってみた後でしか分からないことも沢山あって、それらは絶対相容れないんだろうなと。

つまりやる前とやった後両方で見えるものがあるから、やらずに考えるだけ、考えずにやるだけ、どっちもだめなんだろうなという気持ちがある。

やるという壁を乗り越えなければならない。たとえそれがポンコツでもうんこを生み出す行為でもだ。やるぞ。これは三連休中にはやるからな!!!

続・課題研究って難しいなぁ

1年前にこんな記事を書いた。 

i-my-mine.hatenablog.com

幸い2年生の課題研究も担当させてもらい、そちらも無事に一区切りついたので、

2年間やってみてどうだったかとか、反省とか、考えたこととかをつらつら記録していきたいなと思う。

本当に取り留めもないようなことだったり、繰り返しがくどかったりするかもしれないが、許して欲しい。気の赴くままに、思い出すままに書いているので、仕方ない。

 

取り敢えず本校の2年次の課題研究の流れをざっくりと。

  • 大雑把に化学・物理・生物・数学のどれをやりたいか選びクラス分け(私は生物学のクラスの担当)
  • 自分が興味のあることについて各自調べ学習しデータ収集、それに伴い発生した疑問をテーマ候補として提示、クラス全体の前で個々人がテーマ候補の短いプレゼン→プレゼンを基に近いテーマや興味の人と3~4人のグループを作らせる
  • グループごとに本テーマの決定と研究方法・仮説・必要物資をまとめる
  • 実験を2週間に一回のペースで4時間程度(?)実施、1時間実験→1時間まとめと次への計画→…の繰り返し
  • 実験結果をまとめて要旨の作成
  • 要旨を基にポスターの作成
  • ポスター発表会(1班5分発表、5分意見交換)
  • 日本語論文作成←イマココ

毎週一時間ずつ課題研究や探究活動のための時間がとってあったので、課題研究に関する計画やまとめをやる時間以外は、与えられたプリントを基に統計処理についての学習などを実施した。 

 

中々に長くなったので、タイトル+まとめに飛びやすいように目次を設定しておく。

  

題材設定でうまくいかない

まず、昨年同様やはりテーマ決定が難しい…。

上でも述べたように、今回は調べ学習を生徒にさせて、それを基に各自がテーマ候補を持ち寄る、という方法がとられた。

調べ学習をして自分が興味のある事柄についての先行研究や周辺知識を集めること、そして興味のあることについてどれくらい何が分かっているのかを把握できるのはとても良いことだと思う。やはり調べるという行為は大事だし、今回の課題研究にもプラスに働いた部分が大きいと思う。特に考察と研究テーマの確定には大いに貢献したと感じられた。

ただ数人にとってはこれがうまく機能しきれていない部分があるというのもまた事実で、浅い知識しか集められない者がいたり、素人が書いた信憑性の低いホームページを参考にした者や、所謂こう…「〇〇は害悪だ!」みたいなことを事実を捻じ曲げて断定しに行くようなホームページを参考にした者がいたりした。これらはちょっと、というか割と大問題だ。

浅い知識しか集められなかった者は、まぁ浅いから深めようねというだけなのだけれど、後者は悪影響を受けてしまう。先入観が誇張されてしまって、「〇〇は悪いはずだ」と決めつけたような実験計画をしてしまうのだ。実験というのはそもそも〇〇が悪いものか良い物かを見定めるためにあるはずで、もっと言うと「悪い」とか「良い」なんてぼやっとした言葉じゃなく「▲▲を促進する・抑制する」「□□という反応を引き起こす」などが求めたい結果なのだが、そこから彼らの概念が大幅に脱輪してしまうし中々直すのも難しかった。

ということで、調べ学習を事前にするという場合には、やはり「ファクトの有無」というか、「このホームページが言っていることは信頼に足りるか?」と識別できる眼が必要で、かつ行き着きたい場所…どこまで深い知識が欲しいか、そしてそういうものを調べるにはどういう方法で調べ学習を行えばよいのか(キーワードをどう検索すべきか、どういう情報を信用すべきか)みたいな指導も必要だったのではないかなと思った。思いの外生徒はファクトがない怪しいサイトを信用しがちなんだなというのも感じた。白黒はっきり、良い悪いと表現している辺りが受け入れやすいのだろうか…

加えて、できれば先行研究について調べたならば、その「実験方法」や「使用したもの」も確実に押さえることを強調した方がよかったなと感じた。それらは絶対に課題研究計画に役に立つからだ。生徒は実験目的と結果だけ、考察だけを見がちで調べた紙にもそれしか書いてないパターンが多かったが、かなり損をしていると思う。

ということでまとめる。

まとめ
  • 事前の調べ学習はテーマ決定や考察に良い
  • 調べ学習を行う際には「調べ方」の提示も必要
  • 調べて得る情報として、先行研究の「実験方法」「使用した物」+「結果」「考察」を目標とさせる
  • 素人のページを信頼させない、信頼に足るものか見分ける方法の提示(ファクトの有無を調べ、ファクトとしているものに書いてあることを確かめる。「悪影響」とか「悪いもの」という言い方をしているものは怪しい。信頼に足るページを紹介してその制限内で調べさせる etc…ここについてはもうちょっと考えたい)

特に最後2つについては、経験することで、情報が氾濫しているこの世代ではとても大切な生きる力になるのではないだろうか。

最近COVID-19についても、情報が錯綜し、信頼に足るもの足らないものがデマか本当か分からないような叫び方をお互いされてTwitterなどで猛烈に拡散されているのを見かける。そんな中で生き抜くのにこれら2つのことが可能になるような指導をすることは実はめちゃくちゃ大事なんじゃないか。

 

良い実験が作れない

次は実験計画から実験実施までの話。

やはり今年も…全然成長していないのだが、実験計画や実施についてどこまで管理や口出しをしていいのかが分からなかった。それで呆然としている間に時間だけが過ぎていって、生徒自身で実験計画や実施が繰り返されて行って、貴重な時間が過ぎていってしまったなぁという風に自身では反省している。

まずそもそもの実験計画は、さすがと去年の記憶があるので大抵の班は最初からよくできていたと思う。計画の時に「検証可能か、何を用いて測定できるかを重視して」という声掛けもしたが、それがどれくらい効いたかはよくわからない。

ほとんどの班のものはちゃんと実験可能なもので実現できるものであったが、同時にちょっと挑戦心に欠けるというか、どこかで見たような実験も多かった。テーマが守りに向きがちだったところもあるかもしれない。

一部の班はこれは難しいだろうという困難そうなテーマを出してきた。検証不可能なわけではないが、中々大変な実験セットや準備を要するものだった。

でもできないこともなかったので取り敢えず基本的に全部やってみてもらおう、そしてその後フォローしていけばよいだろう、と思い、全てにGOを出した。

 

今このテーマ決めや最初の実験計画を振り返って思うのは、「どうすればよいテーマになるのだろう」ということだ。いまだにこれは自分の中でも良く分からない。

先ほど「守り」とか「見たことがあるような」と言ったけれども、じゃあそうではない「良いテーマ」とはなんだろうか?

見たことがあるようなものも、発展のさせ方によっては全然今までなされてきたようなものとは違うものになる可能性もある。だからこれを嫌うのもどうかと思う。一方で自分には、こういうテーマを一味違うものに発展させられるような指導ができる技量がないとつくづく感じる。

つまり…自分の中に「いいテーマとは」「発展性があるテーマとは」という概念が欠けていて、高校2年生のレベルでできることで、どんなテーマを立てて、どういう計画を実行すると目を見張るような素晴らしい実験になるのか が無いのだ。悔しいけれど、空っぽだと思う。

他人のを見て「いいテーマだ」「良い実験だ」と思うことはあっても、それを無から生み出させられるような、または生徒の着想を基にそこに発展させてあげられるような技量があれば…と思う。これはもっと考えていかねばならない自分の重大なテーマだろう。

 

そういう指導力がないのと、どこまで手を出してアレンジしていいのかが分からないという二つの要因で、私はほとんどの班の実験実施・結果・振り返りと反省と次回の実験計画…それらに手を加えることがほとんどできなかった。

生徒が提案する計画は所謂「並列型」のようなもので、ただ同じような種類の実験を別の系でやって並べたり、または最初にやった実験を改善したものをもう一度やってみたり、というものばかりだった。

失敗をすることはとても大切なことだし、それをしなければ見えないことは沢山あるので並列型も大事ではある。大事ではあるが、終始並列型では得られるものが少ない。

私はそうではなくて、所謂一つ目の実験の結果を得て、そこから次の知りたいことや調べたいことを着想し、次の実験を計画する…「実験結果から実験を作る」ような発展性のある実験を2年次では行えたらよかったなと反省している。だって沢山時間もあったのだから。

そういう発展型の実験を実際に行い、考察に深みを持たせられたのはほんの一握りの班でしかなかった。

何故一握りの班ではそういうことができたのだろうか?要因を考えてみたが、一つは「私が実験意図や状況・進みを完全に把握していて班長などと良いディスカッションができた」ような班では発展型の実験計画が見られたように思う。そういう班では大抵、「次はどうしたらいいと思いますか」「こういうことが分かったんですが次は~~というのはどうですか」という班長からの働きかけが私にあり、そのおかげで私も把握とディスカッションの時間をとることができた。ディスカッションしていく内に段々と問題点や次に見たい場所が分かってくるし、何より自分が実験の状況や前提を把握しきれていないと発展型に行くためのサポートができないのだろうと今は思う。

全部を知っていることは当たり前の義務なのだが、やはり実際やってみると全部の班の動向や実験状況や結果や考えていることを追うことは難しい。手一杯で、向こうから声を出してくれないとやれない部分が多い。自分の経験不足・力量不足のせいだ。

ということで、

まとめ
  • 「良いテーマ」とはどんなテーマか、何を踏まえて作ると良い実験になるのかを考える必要がある
  • 失敗も大事。だがどういう失敗をさせるかも大事(なんの課題も改善方針も見つけられない失敗にならないように)。どこまで手を加え、どこまで手放しで失敗させ、どこまで並列型実験をやらせるかも考える
  • 発展型の実験をするために必要な目線や心がけは何かを考える必要がある
  • 全ての班の状況を把握・理解しディスカッションする時間をとらないと中々生徒だけで進めていくことは難しいのでこれらができる技量をつける

完全な自己反省しかないな…今後の課題ということで。

 

また、「どうにも失敗ばかりで結果が出ない」という班への対処もちょっと困った。「失敗」と彼らが言うものは、本当に実験デザインを実行する上で失敗して条件を揃えられていなかったものもあるし、同時に「何も結果に差がでない」ことを「失敗」だと言っている場合があるのだ。後者は「失敗」ではない。

ある要素Aがある要素Bを変えると思い込んでいるのはただの思い込みで、AがBに影響するという確証がないから実験をする。実験をしてAがあってもなくてもBが不変なのであれば、それは「AがBを変える」という仮説が間違っているという明らかな「実験成功」である。事実を見出せたんだから、成功に決まっている。

しかし生徒は目に見える差が、変化がないと「失敗だ」と思い込む。失敗だからやり直そうとする。それが本当の失敗ならやり直す価値はあるのだけれど、偽りの失敗ならその結果を受け止めて次の発展させた実験デザインをしなければならない。

私はそういうことを最初あまり分かっておらず、生徒が「失敗したのでやり直します」「失敗したので」「失敗…」と申し出て同じ実験を何度も冗長的にやることを止めることができなかった。本当に「失敗」したのだと思っていた(何なら本物の失敗なのか偽りの失敗なのか見分けられないケースもあった)。これを見逃さなければもっと内容が深まっていくような実験展開を組むこともできただろうという班が多数ある。

 

正直これらの追えない問題などの原因の一つはまとめ方や記録の仕方・提出する情報の指定がなかったこともあるんじゃないかとちょっと思っている。

先に記録方法やまとめ方法についても指導すべきだったし、何をどういう風に書いて提出させるかをしっかり吟味して指定できるようになれば解決するのかも…

まとめ2
  • 生徒が使う「失敗」の意味には二種類あることを踏まえる
  • 「差がない」「変化がない」は「失敗」ではなく「成功」であり、それが正しい結果であると認識させる。仮説が違うのだ。
  • 実験記録や提出する情報を明確に指示・指導し、自分が欲しい情報が確実に手に入る形態を構築するのが必要ぽい

 

考察と結果の分断は思いの外簡単だった

昨年の反省を十分に活かせたなと思ったのは、考察と結果の分断についてだ。

昨年は考察と結果がぐちゃぐちゃになっていて、逐一指摘するのがとても大変だったが、今年はほとんどの班が最初から分断することができていた。

一つは勿論昨年の経験のおかげだろう。経験したからなんとなく結果と考察とはなんぞやという概念が彼らの中でできたのだと思う。

もうひとつ自分ができたのは声掛けだ。

「結果は実験して出てきた事実、見たままのこと。考察はそれらから導き出せる自分の考えや妄想である。自分が持つ他の知識と結果を統合して、こうじゃないかな?と思ったものが考察だ。」

そういう声掛けを結果と考察をまとめるときに一生懸命何度もしたのだが、効いただろうか…

まとめ
  • 結果と考察の分離は声がけと経験次第で可能 

 

考察に関するトラブルあれこれ

結果と考察の分断がほとんどうまくいったとはいえ、それで全てが平和になったわけではなかった。特に考察は沢山のトラブルがあった。

まず一つ目の重いトラブルは、思い込みからの脱却の困難さにあった。ある班は「この物質にはヒトに対する悪影響があるはずだ」という思い込みで実験をした。実験から見られたのは菌の繁殖が濃度依存的に抑えられるという結果だった。

菌の繁殖を抑える仕組みが何かはこの実験からは分からない。例えば原核生物だけが持つ細胞壁形成を阻害する物質なのかもしれない。DNAに結合して遺伝子発現を阻害する物質かもしれない。何に効いてるのかは分からないのだから、ヒトの細胞で同じ実験結果が追試できるとも限らないし、仮にヒトの細胞の増殖が抑えられたからといってそれがイコール悪影響ではない。「なんらかの生命現象を抑制なり促進なりしている」だけなのだ。悪影響ではなくて、ただの影響なのだ。「細胞が増えなくなるのは悪影響じゃないか!」と思うなら、「がん細胞の増殖を抑える場合はあなたはこの影響をどう呼ぶのか?」「菌の繁殖のみをヒト体内で抑える場合はこの影響をどう呼ぶのか?」と問いたい。急に良い影響にすり替えられてしまう。ある効果は使い方次第で悪にも善にもなり、薬にも毒にもなる。だから「悪影響がある」という言葉を分子の挙動において使うのはどうかと思う。

そもそも悪影響という言葉は普通サイエンスではそうそう使わない。というか良識ある科学者は悪影響などというぼんやりした言葉は使わないと個人的には思っている。私達は実験で見られた最小の範囲の影響でしか物を語れない。限定的な話しかできない。促進か抑制か、関係ありかなしか。それだけであって、それが最終的に繋がる先は物凄く壮大なパズルを組んでからしか分からないのだ。

にも関わらず…一般的に「これは身体に良い」「これは身体に悪い」といったような、あまりファクトが信憑性に足るものではないものに根ざした「感覚」だけに基づいた主張はとても多い。ネットにも本にも蔓延っている。それを調べ学習で真に受けた生徒たちは、「悪影響がある」と言い切ることの何がいけないのか分からない。そして、実験の結果から見られたのは菌の繁殖が濃度依存的に抑えられるということだけだったのに、「よってヒトの身体に悪影響を及ぼすと考えられる」と書く。それはこの実験からでは到底言えないことだ。

更に、もう一つの実験では物質の濃度に関わらず対象物は何の変化もなかった。この結果に対して、「実験で用いた物質の濃度が低すぎて悪影響が出なかったのだろう」と考察で書いた。違う。分かることは、「この濃度では何の影響もない」ということだけだ。変化を及ぼさないということしか分からない。調べていない濃度については何が起こるか分からないし、言及もできない。言及するなら、「この濃度以上ならば変化があるかもしれないし、ないかもしれない」ということだけだ。

こういう先入観に則った考察、これが一番厄介で、生徒に何度指摘しても認識を改めてもらうのが難しかった。理解力の問題ではなく、もっと深く根ざしている何かのせいだと感じた。もしくは今までこれで許されてきたという経験のせいかもしれない。何のせいだろうか…。

 

2つ目の重いトラブルは、最初に出てくる考察がかなり浅いということだった。調べた知識や自分が持っている知識を絡めて…と声がけしてもこうだったので、中々難しいようだ。結果から見えるそっくりそのままの考察、なんの当たり障りのない考察しかなく、表面で終わってしまう。その分子基盤として今まで自分が習った分子基盤からどのような仕組みが考えられるだろう?とか、今まで学んだこととどう矛盾が出ないように説明を作れるだろう?とか、そういう所に行かないな。

ここについてはポスターや要旨が提出された時に逐一赤でコメントを入れていくことで基本は対処していったが、最初はどうコメントを書けば伝わるだろうか、というのもかなり悩んだ。

「深めて下さい」というだけでは絶対にできないだろう、というのは分かっていた一方で、「○○のように考えられませんか?」と答えのようなものを言ってしまえば全く思考することなくただ書き写すことになってしまう。あくまで生徒たちの発想力や思考力に委ねつつ、しかし絶対に気づかないような要素を提示しながら、どういう風に考え始めることに誘導すればいいかを考えた。

そうして、「○○(キーワード)について調べてみて下さい。それを絡めた考察ができそうならしてみましょう」とか

「タンパク質などの分子レベルまで考察を深めてみましょう」とか

そういう文言でコメントを書くことで考察が深まらないかとトライしてみた。

これについてはまだあまり手応えはないが、ほとんどの生徒が呼応してちゃんと最初の段階よりも深まった考察を作ってくれたと思う。考察を深めるための声がけについてはより良いものを目指していきたい。

 

ついでに言うと、完全に誤った方向に行っている考察については、的確にそこをコメントして「ここは~~~という理由で~~~と考えることはできないと思います」などと理由をはっきりさせつつ直すようにした。所謂「察して」というようなコメント…「直して」だけとか「おかしい」だけとかだと中々うまくいかないだろうし、生徒も困惑すると思ったからだ。昨年も言ったように思うが、見本がないからうまくできない部分はきっと大きい。生徒が作ったものを土台にしてコメントを通じて見本を少しでも提示することは大事なことなのではないかなと思ったからだ。そのおかげかは分からないが、明らかな誤りは2回目の提出からはほとんどなくなり改善されていた。

まとめ
  • 思い込みからの脱却は難しいが、それを題材に科学に向き合う姿勢や考え方を見つめ直すこともできる。考察が思い込みで構成されている場合は対処する。(ただどう対処するのが適切か・思い込みの根底に何があるのかはよくわからない)
  • 考察を深めるのにも適切な声がけが必要だが、まだ改善の余地あり。
  • 明らかな誤りは理由とともに指摘をする。

 

生物実験の苦悩あれこれ

最後まで消化不良に終わったことの一つに、サンプル数の少なさや試行数の少なさ、それ故の統計処理を用いることができないという歯痒さがあった。

生物はどうしてもサンプル数や試行数が減りがちである。それはもう仕方のないことだと思っている。しかし、課題研究となると生物以外に物理・化学・数学などと並べられるわけで、生物以外の学問分野ならそこそこの試行数やサンプル数を稼ぎ、結果の確実性を高めることが可能になる。逆に生物実験は確実性があまりなく、偶然の結果という解釈が強くなり、場当たり的な結果や考察に終わってしまう面が強い。

つまり、生物実験を選んだ時点でどうしても他の教科に比べて見劣りする部分が出てきてしまう。課題研究の授業内で統計処理についても扱ったが、扱えば扱うほど「高校生が行う課題研究レベルの生物学実験は結果・考察まで断言していいクオリティのものではない」となんだか否定されている気すらしてくる。勿論統計の学習はとても大事で、絶対するべきものだと私は思っているし、学ぶことで生物学実験の難しさも再認識するところがあるし、ではどう解決しようという頭に向く部分もあるだろう。しかし課題研究は生徒たちの成果物として、物化数と一緒に並べられてしまうものだ。同じ時間・同じ苦労を費やすのに、生物を選んだばかりに信憑性を指摘されてしまうのはちょっとかわいそうだと個人的には思ってしまう。

まだ論文が出てきてないから他の分野の状況は分からないが、どんな感じなんだろう…というかそもそも、実験の考察の深さや試行回数などについて担当教員間でそこそこ最低限のコンセンサスを最初にとっておいたほうが良かったのではないか、とちょっと思ったりする。どこまで機能するのかは分からないが…。勿論よくできる班を抑え込む必要はないが、平均的な班の目指す所については共有見解があってもいいと思う。そうすればもっと指導も具体性を持ってできるのではないか、と思ったり…

まとめ
  • 生物の実験は生徒がどれだけ一生懸命やってもサンプル数と試行数がとれない分信憑性や確実性が薄くなったものが仕上がってしまうので悲しい
  • 生物の実験でも統計処理できるような実験とは?
  • 全分野で考察の深さや試行数などのコンセンサスを一応とっておいたほうが良いのではないか

 

手書き問題+デジタルデバイド問題

最後の大きなトピックとして、課題研究の色んな記録や成果物について、どこは手書きで出させるか?どこはパソコンを使わせるのか?というのがあると思う。

今回例えば要旨作成やポスター作成は最初手書きで指示されて、生徒たちはせっせと手書きで頑張っていた。でもそれらは手を加えられコメントを書かれて手直ししなければならないものだ。そういう変化する可能性が十分にあるものは、やはりパソコンを使った方がいいのではないかという気持ちがある。

一方で「じゃあパソコンで」と言い切るとまた問題がある。今回論文は各家庭でパソコンを使いながら全員で書くように、と指示があったが、パソコンが家にない子は困ったものだ。そういう子はどうしようね…生徒を放置するのではなく、色んなパターンを想像して環境を提供してあげられるといいと思う。

また、共有方法についての提案もない。USBなどで提案するよりオンラインストレージを使った方がよっぽど効率がいい。皆で編集できるGoogledocsなどを使えると尚良い。でもそういう指示はなかった。

生徒の後学のためにも、「役に立つツールを使う」とか、「より簡便な方法を模索する」というのは大切なことだと思う。しかし、1から調べるのはやはり大変で、結局私も色んな人から評判を聞いたりする中で役立つツールに出会っていくし、それを繰り返す中でより効果的な方法を自身で見つけ出す力、なんなら「そういうより良いものがあるんじゃないか」と発想し探索することができる力がついたと思う。つまり入り口は提示されてなんぼだと思うのだ。

教員が最新の情報や便利なことに敏感でなければいけないなぁ、と常々思う(反省を滲ませながら)。そしてその意識を今後の世界を生きる生徒たちは持っておくべきだと思う。課題研究を通してそういった必要な力を身に着けさせられたらどれだけ良いだろうか。

まとめ
  • 後から手を加えて変える可能性が多分にあるものに関してはパソコンを使って作成させる方が良い
  • 便利な方法を提示し、生徒が今後自身で「より便利な方法」を模索できる姿勢につなげたい 

 

その他諸々と反省

2年次の課題研究は、幸い生物を選択した生徒たちは非常に優秀というか、しっかり取り組む子が多くて私はとても恵まれていたなと感じる。

最初の班を組む時には生徒は純粋にテーマや興味を基軸に選ぶ子が多く(他のクラスでは仲良しグループなどが主だったという)、初対面同士でも同じ目標のために一生懸命協力して課題研究を計画し、物を持ち寄って実験し、朝早くや夜遅くでも集まってやるべきことをしっかりやり、ポスターの考察の直しは何度突き返されても練って毎回出す度に良くなる班ばかりだった。こんなテーマ実行できるか?と思ったようなテーマも、なんとかやり抜いてしまった班も幾つかあって、そこには私が驚かされた。その底力というか、無謀さというか…でもその力は強力な武器だなと生徒に学ばされた所が多い。班長もしっかりした子が多く、今回の課題研究ではあまり昨年度感じたような煩わしさなく対等な議論が班長を通じてできて、ちゃんと課題研究を構築していっている感が自分にもあって楽しかった。

ポスターが全班から提出されて、それを製本した時に、ある種の感動が私の中にはあった。皆よく頑張ったなと思った。右も左も分からないような手探りな課題研究の中で本当によく頑張ってここまでたどり着いた。生物学という中々思い通りに行かない実験系の中でもがいてよくやりきった。辛辣なコメントもしただろうが、全ての班がよく耐えてしっかり考察を深めてきた。私は生物を選んだ生徒たち全員を褒めてあげたいと心から思った。

 

でも自分は褒められたものじゃない。私は経験もなく技能もないので、上で沢山反省したように適切な声がけや誘導ができなかったり、実験テーマ設定や発展型の実験構築の知識がなくて何の援助もできなかったりと、本当に悔やむことばかり、足りないことに気付かされるばかりだった。この2年間で私が見てきた生徒はまるで私にとってのモルモットで、本来熟達した教員ならできるであろうサポートができず振り回して本当に申し訳なかったと心から思う。

しかし、この2年間の課題研究を通して、自分がどういう指導をしたいとか、どこを課題研究で目指したいとか、そういうものは少し見えた気がする。何が自分にとっての課題で、どういうことを考えなければならないかも、少し分かった気がする。あとは自分の問題だ。自分が頑張るだけだ。自分が頑張って、いつか、生徒とともに自分自身も達成感を感じられるような課題研究をやり遂げてみたい。そう思う。

3/1更新 突然の休校(使えるコンテンツ紹介)

うおーーーーーーー!突然の休校だってよ!!!!!

めちゃくちゃにびっくりしました。青天の霹靂という言葉がまさに当てはまるような感じですね。人生で滅多にないだろう。

いや実際はコロナウイルスに関して世間が大変大騒ぎになっているのがあったので「青天」かと言われるとウーンという感じですが、でもまさか学校が全部今からぶち抜きで始業式まで休校になるなんて思ってなかったもんね。

総理大臣から発令が出たのもTwitterで27日6時くらいに知りました。え?なにこれ?またTwitterのデマか??と最初思ったくらい。

次の日学校に行ったらもう先生方が大騒ぎ。朝からどこもかしこも文句や困惑でいっぱいで、上の人達は忙しなく動き…目まぐるしい一日でした。

決断も発表も大変だったろうなと思います。だって伝える内容精選しないと皆一回しかHP見ないでしょ?十分量の情報が揃ったか確認しきるのなんて絶対大変だって…なのに「今日中に指針を出します!」と校長が言い切るから凄いなと思った。

 

人の移動を制限すれば感染拡大に何かしらの効果はあるだろうというのはあるし、

もしかしたらこの休校判断のおかげでめちゃくちゃ実は効果があって多くの生徒の命が守られた…なんなら自分も守られた、なんていうのがあるかもしれないから、休校の判断の可否を問うつもりはありません。

しかし、生徒も教員も多分進度の不安でいっぱいなのでは?と個人的には思います。余裕で進めているような学校ならいいけど、本校は教えることもいっぱいなので全然進度的に安心できない…1コマでも多く欲しい状況で、5コマくらい削られてしまうとそれは大打撃です。

来年度受験生は内容がちゃんと適切時期に終わるか不安でしょうし、私も終わらせられるか不安です。

こういう時こそオンラインで何かできれば…と思うんだけれど、その土台作りが甘かったです。めちゃ反省してます。Google Classroomは開設してあって、何人かの生徒は登録してあって教材共有や質問・やりとりができる状態になっているんだけれど、多くの生徒は登録していない。全員してもらえばよかったなぁ…

来年度は全員登録をなるべくしてもらって、こういう事態に陥った時でも生徒が安心できるような仕組みを作っておきたいです。オンライン講義は本気で考えてますし、環境さえ整ってたらやるつもりでした(今もやってもいいんだけど)。

 

そういう「オンライン」を使った取り組みは多くの人が考えていて、沢山の提案が休校に伴ってどんどん出てきていますね。

一つは下のリンク先の「科学技術広報研究会」による休校対応特別企画。

科学技術広報研究会 臨時休校対応特別企画

これはすごいですよ。楽しい動画が沢山ありそうです!

まだ観れてないんですけど、貴重な動画がまとめられた状態で公開されています。まとめ方もいいですよね。

是非休校という自由に時間を組める生活を送れるうちに、スケジュールに組み込んで観て頂きたいです。

 

これも楽しいらしいよ!私はタイトル見てわくわくしました。手出せてませんが…。

bsj.or.jp

 

ほかにもN高も無料公開しましたね。質は試したことないから分かんないけど…

www.nnn.ed.nico

アオイゼミという所も同じく無料で出してます

www.aoi-zemi.com

 

本校の海外研修もCOVID-19の混乱に伴い中止になってしまったのですが、

それについても講師の方からオンライン講義を提案して頂けたり(zoomとかSkypeとかが使えそう)

資料をメールなどで送ってもらって生徒にオンラインで公開したりして、という、テクノロジーがなければ絶対できなかったであろう経験が生徒にさせてあげられているのは、とても嬉しいことです。

中止になってしまって絶望して、悲しい気持ちだったのですが、こういうことができる世の中で本当に良かったなと感じました。オンライン講義の提案も資料提供も大変救われました。

現地高校ともオンライン交流をしようという話が出ていて、こちらもどういう形でできるか模索していけば、今後何か教育の講義やレクチャー、交流のあり方が変えていけるのではないかなと期待しています。頑張っていきたいと思います。

 

他にもインターネット上の資料は本当に最近豊かになってきていて、スミソニアン博物館のOpenAccessなんかすごいですよ。

www.si.edu

アポロ11号くるくる回せるからね。

こういうのをじっくり見るのも休校中良いのでは?

 

あとは個人的には毎度おすすめResearchat.fmを聴くとか…

researchat.fm

 

最近はScientific AmericanのPodcastもよい…のでよく聞いてる…なによりこれは文章ついてるし、英語の勉強にもなりますね!

www.scientificamerican.com

 

他にも休校に関して面白い何かや役に立ちそうな何かがあれば、発信していこうと思います!

私もブログにまいばいおを更新するのとか、HPにPDFアップロードするのとかがんばります。

※HPに応援コメント頂いた方本当にありがとうございました!!凄く嬉しかったです!!今後もがんばります!!!!

 

生徒も生徒でオンラインで質問投げてくれたり今年度の授業のお礼を伝えてくれたりと本当にテクノロジー様様だな…って涙する毎日です…

お礼に関しては本当にうわー!ってPC前で喜びました。そういうことができる生徒の素晴らしさよ…本当にいい子たちだなとつくづく思いますね…がんばろ

 

 

ちなみに

定期試験の丸付けも解答解説作成も配布も大慌てでやっちゃったせいで最後アホみたいなミスだらけだった…反省…急いで動いてもミスのない人間になりたい……(でも研修中止云々でバタバタの中&精神ズタボロの中めちゃ頑張ったんだよ…ゆるして……

近況報告

相変わらず更新滞り気味で申し訳ないです&自分に対して嫌悪感もある…

最近すごく身体が重くなったり眠くなったりすることが何度かあって、続いて、ブログもあんまり更新できませんでした。反省。

何がいけないんだろうな~~~~わかんない…

共有したいニュースも沢山あったのに全然できてないし…

もうちょっとやりたいことがやれるようにしていきたいですね。

 

ところで最近また私が授業中に週一で配布している生物広報誌について、生徒から「データでほしい」と言われたり

周囲の先生から「それネットで配布できたらいいんじゃない?」みたいな提案をされたりして、ちょっともんよりしています。

そもそも自分の生物広報誌はプリントとして配布する用に元々作っているので、本当は教材共有という意味ではそのプリント体裁を保ったままオンラインで配布できるのが理想的だなと思っています。

イメージはやはりPDFで、プリント体裁のまま出したいな、と…

誰でもダウンロードできる感じで…(あとコメントもつけられる感じで)

 

でもそういう方法を実現する方法が分からなかったので、とりあえずブログにのっけてみようということでブログ化してみたんですけど、やっぱりちょっと違う感じもする…

どうすればいいかなと考えあぐねています。

どうしたらいいかなぁ…

Googleサイトとか使えるんかな…

ということで勢いで作ってみた。

 

今後も普通にブログでも書く一方で、Googleサイトで掲載していって教材共有につなげられるといいなと思ったり。

どれだけやれるか分からないけど、とりあえずやってみます!