Obsidianで買い物記録をつけたい
生きることにこだわりを。魚住惇です。
先日1月9日が始業式でした。3年生はすぐに授業。今週末の共通テストまで、ラストスパートという感じです。
朝から本当にもう、色々と対応に追われました。実質空きコマ0の日でした。元々が2限しか空いていない曜日だったところに始業式がぶち当たり、テスト監督やら授業やらであっという間に放課後でした。放課後の部活もあっという間。気がついたら20時でした。もうヘトヘトです。
それでもね、クラスの生徒と接して、みんなの顔を見ることができて、嬉しかったんですよ。先生という職業をやっていると、その校舎で暮らしているような感覚になります。教室で毎日を過ごしている独特の感覚も味わえます。それが楽しくてね。
今回もちょっとしたこだわりに、お付き合いください。
プログラミング教育における反省
3学期の授業を始めるにあたって、ちょっと今回のプログラミング教育の反省点をいくつか書いていこうと思います。
先ほど書いた今の3年生の「情報の科学」から、言語をScratchからPythonに移行しました。前任校ではExcel VBAを使っていました。
使用する言語は教科書で紹介されているものをそのまま使う方が、生徒が自力で学習する際に便利だろうと考えて選んでいます。また、共通テストで使われている擬似言語は文法がPythonに近いことから、多くの学校でPythonが採用されているので、僕もそれに続いて採用しました。
僕が行っている授業では、全体での説明や個別での助言も当然行うものの、やる気と読解力さえあれば誰もが僕の説明を受けることなく課題が提出できるように設計されています。
生徒には次の手順で課題に取り組むように説明しました。
学習サイトを見て学ぶ
この「たのしい情報」という名前のサイト、僕が外部に公開しているScrapboxのページを見て、Pythonについて学習してもらいます。
このサイトには取り組むべき課題リストもありますし、他のサイトを検索して調べたりしなくても良いくらいのプログラミングに関する知識がまとめられています。というかまとめました。
課題に取り組み、提出する
課題のリストがこちらにあります。
例えば最初の課題は、「print関数を使って、「Hello World!」と表示する」プログラムを作成することです。この課題に取り組むための知識として、「print関数の使い方が」必要です。
print関数については、こちらのページで説明してあります。
で、このページの最初に、print関数の使用例と、実行結果が掲載されています。
そうそう、ちなみに、例が書いてあったとして、それをどうやったら実行できるのか。
その方法についてもまとめてあります。
Pythonのプログラムを作成して実行する手順 - たのしい情報
提出サイトに書いたコードを貼り付ける
課題の内容と同じように動くプログラムが書けたら、実行結果を確認して、ソースコードを提出先のサイトに貼り付けて提出します。なお、サイト上で実行すると、登録された模範解答と同じように動作するかのテストが行われて、判定結果が出るようになっています。すべてのケースで同じ結果が得られたら合格となり、提出作業ができるようになります。
困ったこと
プログラミングの初回の授業では、この学習の進め方と、プログラムの作成方法、提出手順などをどのクラスでも行いました。ところが、僕の説明が悪いからか、自分が想像したようにはうまく進めることができませんでした。現状を把握していることの、事実をまとめるとこんな感じです。
試行錯誤をしない
学校のレベルにもよりますが、ある偏差値よりも下の学校では、「授業=指示された内容を行う時間」と認識している生徒が多いようです。彼らにとって授業とは、言われた通りに作業する時間であり、なるべく早く時間が過ぎることを熱望し、帰宅を心待ちにしています。割り切った授業としてよくあるのが、とことん黒板を模写させる時間と化している授業です。
知識詰め込み型の授業の典型例だと非難したくもなりますが、それだけでは片付けることもできません。帰宅するまでの行動をコスパで考える生徒に対して、主体的に授業に取り組む態度を取らせるためには、言われた通りに黒板に書かれた文字をノートに書かせるしかない場合もあるのです。ノートを定期的に提出させることによって、最低限の作業量を確保することができますから。
僕が用意したプログラミングの最初の課題は、print関数の説明にあった最初の実行例をそのままコピペすることで提出ができます。ただし2つ目の課題からは、途端に提出率が下がります。なぜなら、コピペしただけでは課題が提出できないからです。
「例として書かれているコードをコピペするだけでは、課題が提出できない。」
観測範囲では、1回の授業の中で2番目の課題が提出できない生徒が半数以上いました。「課題を提出するためには、教材サイトの中のどこかにあるコードをコピペする必要がある」と学習した生徒にとって、解答がどこにも書かれていないので、ずっと提出できないことになります。
この時点でよく受ける質問は、「先生、2つ目の課題はどれをコピペすれば良いんですか?」と、「次は何と入力したら合格しますか?」です。
そう質問するような子どもたちにとって、試行錯誤はストレスです。授業は作業の時間であり、「考える」という言葉の意味も噛み砕いて説明する必要があります。授業の冒頭では全体の説明を行うようにしていて、そこでは僕がプログラムを書いて動かすデモンストレーションを行うわけですが、試行錯誤をしない生徒は自分が作業を行わない時間は寝ているため、僕が説明している時の記憶がありません。
僕もなるべく普段からプログラミングが苦手な生徒に向けて説明をしているんですが、アルファベットの羅列を見ただけで思考をシャットアウトする生徒に対して、なす術がないのが正直なところです。
誰かのプログラムが出回る
どのクラスでも起こっていますが、課題の進みが早い生徒が提出したプログラムのコードがクラス内で出回ります。一番多いのは、出来上がった内容を見せてもらい、それを写したものを提出するケースです。
何が不幸かって、写した生徒はどうしてそのコードの組み合わせでそう動くのかが全く理解できないまま、その課題が提出済みになってしまうことです。それでもまだ、提出しようという意思があるだけマシなのか。
これも提出状況を見ていると面白い関係が見えてきます。1人の生徒が出来上がったら、そこからコードが流出するわけなので、最初はクラス全体に伝わらず、その生徒の友人らだけに伝播します。つまり写したコードで提出した人までの範囲で、子コピーが出回ったということです。そこから更に次に伝播すると、孫コピーというわけです。
この情報のホップ数から、人間関係が垣間見えるところが、なかなかの面白さです。いや、授業担当としては深刻な問題のはずなんですけどね。見ていて趣深いんですよ。
でもこれって、プログラミングの課題だから起こる話かと言われてみたら、実際そうでもありません。これまでだって欠席した生徒が出席者のノートを見て、内容を写すことは日常的に横行していました。その内容がプログラムのコードに取って代わっただけのことという見方もできます。
ただ他教科と違って、内容を理解した生徒と、ただ写しただけの生徒との間に生じる格差がより一層広がりました。手書きのノートを見ながら模写することで、少しでも手が動いて、内容を嫌でも覚えてしまう。そんな副産物は、デジタルではあまり期待できません。コピペですから。
プログラミング学習の参加者を募集します
真面目に課題を提出し、着実にプログラミングスキルのレベルを上げてくれている生徒ももちろんいます。ただ、今の勤務校ではどちらかというと少数派です。僕としては、プログラミング初心者に少しでもPythonを効果的に学んでほしいと思って試行錯誤しているつもりです。
というわけで、他の方からの目線によるご意見をいただきたいなと考えています。特にPythonのコードの提出サイト。あれを利用してみたい方に、臨時のアカウントを発行して、実際に僕が用意したPythonの課題を提出するまでを体験してもらいたいと思います。
XのDMでも構いませんし、Substack経由でも構いません。何かしらのツールでやり取りできればなと考えています。特に学校関係者に限定することも考えていないので、試してみたい方は是非ご連絡ください。
Obsidianで買い物記録をつけたい
続いて、新年明けてからObsidianをもう少し踏み込んだ使い方をしたいなと思ったので、それについて書こうと思います。
ナレッジスタックにも書きましたが、僕はこれまでずっと、テキスト情報だけを書いてきました。文章のみってことです。とにかく書いた文章をデジタルで残しておくことだけに注力して、それ以外のことを全くやりませんでした。ごりゅごさんがナレッジスタックであれやこれやとObsidianの使い方を説明されているのはもちろん知ってたんですが、「いやそこまでは使わないし」とか、「自分には必要ないし」なんて思いながら静観してました。
僕もそういった仕組みづくりそのものは好きな方です。ただし、複雑な仕組みを作るとそれだけ制限もついて、自由な使い方が出来なくなるのもデメリットとして心得ているつもりです。今思えば、ちょっと導入するには大変な作業に対して、重たい腰を上げない理由を勝手につけていたのかもしれません。
ところがね、最近になって困ったことがあったんですよ。今使っているiPhoneを買ったのがいつなのか、買って使い始めてから何年経ったのかを正確に思い出せないということがありました。iPhoneを買ったという記録はどこかに入っているものの、そこから自分に必要な記録を効率よく読み出す手立てが思いつきませんでした。
独身時代、iPhone7の頃まで僕は毎年新しいiPhoneを購入してきました。その時までは良かったんですよ。新型のiPhoneが発売される度に購入していれば、今使っている機種が常に現行機種です。新型iPhoneの発売は毎年9月末なので、必ず買っているのなら覚える必要がありません。そして新型iPhoneを必ず買うのであれば、価格がいくらだろうとも関係ありません。
しかしあの頃と時代は変わったと思います。最近のiPhoneではできることがそこまで変わらず、性能面だけのアップデートが主な内容になりました。Apple Payだとか、Face IDだとか、普段から便利に使っている機能が導入された時はもう、それだけで買い換える理由にもなっていましたが、今のスマホではこうしたイノベーションがほとんどやり終えたかのように見えます。
するとiPhoneを買い換える理由というのが、性能不足であったり、製品のそもそもの寿命だけになってきました。部品などの寿命も意外と重要で、新品のiPhone12と3年間使い古されたiPhone13で比べると、使い古された13の方が修理のリスクが高まります。バッテリーや電解コンデンサは消耗します。
現在僕が使っているiPhoneは12で、購入したのは2022年3月です。2022年と言えばiPhone14が発売された年です。3月ということがその時点での現行モデルは13とも言えます。そんなタイミングで、たまたま楽天モバイルで12が安く手に入ったんですよ。
記録から、あと2ヶ月で2年使っていることになることが分かりました。使い倒しているなら、もうそろそろ部品の寿命を迎えている時期とも考えられます。ただ、現状で言うとまだまだ動いてくれているので、もうしばらくの間は12のままでも良いかなと、自分を納得させています。
こうして考えるためにも、どの機種をいつ購入したのかを記録しておき、いくらで買ったものをどれくらい使ったのかが振り返りやすい仕組みを作りたいなと考えるようになりました。
もしこうした振り返りに適した仕組みを作ることができたら、車のエンジンオイルを変えてからどれくらい経っただの、今使ってる冷蔵庫の寿命があとどれくらいだのといった、製品の寿命を先取りすることにも繋がります。
まだ具体的な手法としてまとまったわけではありませんが、ObsidianのいDataViewプラグインを使おうと考えています。正月はまさにこのDataViewプラグインの試行錯誤に費やしました。今回は詳しい内容には触れず、作法がある程度まとまったところで、どこかしらで公開したいと思います。
今回のnewsletterは以上となります。もし既に購入記録などをDataViewを使って残しているよという方がいらっしゃいましたら教えてください。Pythonの課題にチャレンジされたい方も大歓迎です。ついでに「いいね」を押していただけるとうれしいです。