何のためのプログラミング教育
某所で「プログラミングでおすすめの言語は何ですか」という質問を見るたびに, 「そんなの作りたいものに合わせて決めるだけのことやんか」と思うのだけど, そういう質問をする人はそもそもプログラミングで何ができるかがわかってなかったりするような気がする。 きっと「調理をすることで料理ができる」ことをわかるのと同じレベルで, プログラミングで何ができるかをわかることが必要で, 初等中等に求められているプログラミング教育ってそういうことじゃないかと思う。
某所で「プログラミングでおすすめの言語は何ですか」という質問を見るたびに, 「そんなの作りたいものに合わせて決めるだけのことやんか」と思うのだけど, そういう質問をする人はそもそもプログラミングで何ができるかがわかってなかったりするような気がする。 きっと「調理をすることで料理ができる」ことをわかるのと同じレベルで, プログラミングで何ができるかをわかることが必要で, 初等中等に求められているプログラミング教育ってそういうことじゃないかと思う。
ずっと使ってきた印刷プログラムをUnicode対応にするべく対応中。 というか入力はもともとXMLでやっていたのでその部分は何も変わらない。 問題はIVSへの対応だ。 職場で名簿に外字を使いまくるのをそろそろやめて, IPA mj明朝を使うことにしてはどうかと計画しているところなのだ。 しかしそれを使うメリットはIVSを使うことであり, Graphics.DrawStringはこれに対応していない。 TextRenderer.DrawTextではちゃんと異体字が表示できるのだけど, 縦方向横方向の倍率を変える方法がわからない (そもそも公式には印刷に対応していないAPIだ)。 SharpDXも使ってみてその両方に対応できることはわかったが, 印刷のときにどうやってHDCを取得するかがわからない (適当にやったらエラーになる)。 どうするのが正解なのかなあ。
縦横の倍率を変えるというのは横倍角がやりたいということではなく, 決まった枠の中に文字列を押し込めるときに, 文字の横幅だけを変化させて対応したいということだ。 生徒氏名短冊とかそれを前提に設計したフォームが多数あるのでなんとかしたい。 もちろんフォントの方でサイズを変更するのも一つの方法で, それは既に実装しているのだが, 全体的に小さい文字になるのがシャクなので。
学年通信の当番だったので,軽い文章を書いてみた。
Twitterを眺めていたら,面白い投稿を見つけた。 その人がTwitterを始める前,始めてから,そして利用時間に制限を設けたときの, それぞれの時間の使い方をグラフにしてみたというものだ。 うろ覚えだがだいたいこんな感じだったと思う。\ IMG /images/20200128.png グラフ
始める前は勉強や読書に使っていた時間をTwitterにずいぶん侵食されてしまったので, 時間制限をしてみたら空いた時間は何もせずに過ごしてしまっていたというのだ。 納得できるとか,自分もそうだというようなコメントが多くあった。 筆者自身にも身にしみてわかる話だ。
時間を使うということ自体も一つの能力なのだということを話しておきたい。
いつだったか,碁会所で囲碁の小さい大会に出たことがある。 持ち時間が決められていたので対局時計にセットしたところ, 対局者が「時計押さなくていいよ」と言い出した。 ルール無視で大丈夫かと思ったが, とりあえず時計は進めるだけ進めて打ち始めた。 その対局はそれまで打った中で一番よく頭を使ったのだが(結局コウの損得を見誤って負けた), 終わって時計を見ると2人合わせて1人分の持ち時間さえ消費していなかった。 プロの対局は1人数時間の持ち時間で行われたりする(テレビでやっているような早碁は別)。 それは彼らがそれだけの時間考えることができるということであり, 筆者のような素人は考えることに何十分かの時間を使うのが精一杯だったのだ。
高校生であるみんなは実際のところ忙しい。 部活動や生徒会活動では中心的な役割を果たすことも多いだろう。 受験と言われてもそれらが片付くまでは本腰を入れられないという気分になることもわかる。 しかし,いろんなことが片付いて時間ができたとき, 本当にそれを使うことができるだろうか。 最初のTwitterの話のように,空いた時間をただ空いたままにしてしまったりはしないだろうか。
森博嗣という(元?)小説家は,最近出した新書のあとがきで, 自分が面白い生活をするためにずいぶん時間をかけて準備をしてきたということを語っていた。 趣味である工作を思う存分行うためにはお金が必要で, そのために今使えるリソースを検討した結果, 夜の空いた時間を使って書いたことがない小説を書くことを決めたのだという。 部活が終わったら,入試が終わったら,就活が終わったら,結婚したら, 子供が独り立ちしたら,定年が来たら…そうやって|やりたいことだけでなく,やるべきことまでも先延ばしにしてしまうのは, 結局のところ面白くないことなのだと考えている。
2学期の積み残しがなかったクラスでPyPENを使った授業を開始。 生徒のコメントの中に「3の2乗はどう書くのですか」というのがあった。 これは演算子として**を実装しろという要求なのだろうか。 あってもいいと思うので, 優先順位低めでやってみようかとは思う。
0除算のエラーに関するコメントもあった。 数学では「できない」なのがエラーになるという「違い」に着目したとのこと。
JSONのデータを扱うためには, 連想配列があればいいかなと思って実装してみた。 ArrayValueに連想配列を追加し, 添字がIntValueなら普通の配列,StringValueだったら連想配列にするという単純な実装。
なぜこれをやろうと思ったかというと, Web APIへの対応が出来ないかと思ったからだ。 しかしやってみてわかったが, CORSの壁があるので他人様のAPIを呼び出して使うのは難しい。 Nodeならやれるが,WebブラウザでやろうとするとモロにCORSの制限にひっかかってしまう。 簡単な解決策はないかと考えてみたが, そんなものがあったらCORSが無意味になるのだからあってはおかしいわけだ。
このあたりのことはCE151の岡本氏らの論文が非常に参考になった。
12月上旬からのどがおかしいということで, 年末に診てもらったら例によって気管支炎とのこと。 もらった薬でだいぶ楽にはなったが, 咳がなくならないので改めて病院へ。 まだ気管支がごろごろ言ってるらしい。そんなわけで薬継続。
というわけで名古屋文理大学で半日講師。 昨年はセンター試験の問題を入力するということで 「難しすぎた」というアンケート結果が相次いだので, 今年はセンター試験の問題のところを考えていこうという課題にした。 やってみて感じたのだが, やはりこれは入試問題なのでそんな簡単なわけがないのだということ。 プログラミング慣れしてる人ならつくような「察し」が要求されているように思う。 もちろん理屈の上では,変数に関する説明をきちんと読めばわかるようにはなっているのだが, それでもなぁ…。
アンケートは「難しい」がいくつかあったけど「難しすぎ」ではなかったので去年よりは良かったのかなとも思う。 しかしこの部分だけ難しい内容になっていることは否めないので, もう少しなんとかならないかとは思う。
なにか話題になっているので行ってみた。 初頭中等の学校もSINETにつなげられるようにという話がどこかでぶちあげられたようだが, 結局の所NIIでは具体的な話は何もないということらしい。 とはいうものの,どんな形での接続がありえるかという話になって, 公立学校は教育委員会とかで束ねてるネットワークがあるだろうからそこからつないで, 大学のある私立学校は大学経由でつないで… みたいな話がされた。 だったら勤務校みたいに大学のない私立学校はどうするのかと思ったので質問したところ, 個別につなぐしか仕方ないのではないかとの話。 まあそもそも300Gのバックボーンが必要なことを何かやるのかというと思い当たらないのではあるが。