生きることにこだわりを。魚住惇です。 今回もちょっとしたこだわりに、お付き合いください。
僕もたまに寄稿させていただいているナレッジスタックというnewsletterで、自作ツールについて話し合う会が投稿されていました。
手作りツールで手に入れた練習を超えた学びの世界 - by goryugo and えむおー - ナレッジスタック
聞いていて楽しい回でした。というか僕の名前が何度か出てくるのでその度に「ぬあっ」となりました。
プログラミングを始める原動力は、僕は目的意識が重要じゃないかと思っています。未知の分野にチャレンジするということは、ゴールがどこかもわからない大海原にいきなり飛び込むようなものです。それでも今の時代、調べたいことは検索すればいくらでも出てきます。そうすれば、海に飛び込んで泳ぐためには何が必要だとか、どんなことに気をつけたら良いだとか、この人はこれで失敗しただとか、必要な情報にたどり着けます。
ただしそれは、「これをやりたい」という目的がはっきりしている場合です。「こういうものを作りたいから、プログラミングを学びたい」という状態です。目的が存在しないと、ただ漠然と「プログラミングを勉強したい」と思うだけにとどまってしまいます。
プログラミングはあくまで問題を解決するための手段です。手段そのものが目的になってしまうと、ふとした時に「自分はなんでこれをやってるんだろう。これに何の意味があるんだろう。」と迷子になります。
既に「これを実現したい」というアイデアがあり、そのための手段を発見したときは、「これだぁぁぁ!」となりますよ。
そんな自作ツールの話を見たり聞いていたら、先日卒業した卒業生の話をしたくなりました。自作ツールの作成によって見事国公立大学に合格した、Yさんのお話です。
Yさんの話
これまでこのnewsletterには、数々の高校生が登場してきました。
Obsidianに目覚めた高校生の話 - by 魚住惇 - こだわりらいふ Newsletter 生徒の家がオーディオ屋さんだったのでハイレゾ環境を構築した話 - by 魚住惇
HHKB US配列無刻印黒を買うことを決意した女子生徒の話 - by 魚住惇 - こだわりらいふ Newsletter
高卒プログラマーを育ててみたい - by 魚住惇 - こだわりらいふ Newsletter
高校生が書いた心筆ノート - by 魚住惇 - こだわりらいふ Newsletter
どの高校生も関わった年が違うので、学年は全てバラバラです。今回紹介するYさん(仮名)はというと、過去にHHKBを買ってくれた女子生徒と同じ学年の生徒です。そうそう、卒業前にHHKB Studioを買ってました。もちろんUS配列です。ついつい嬉しくなっちゃって、赤ポチをプレゼントしました。
Yさんは新入生のとき、僕が顧問をしている商業部に入部してきてくれました。あ、でも確か一瞬剣道部に行ってみて、その後で来たんだっけな。その学年の商業部員はとにかく人数が多くて、2年生から入部した部員もいて、文化部の中でも特に盛り上がっていたと思います。
この学年が履修した情報科目は今の「情報Ⅰ」ではなくて、「情報の科学」の最後の学年でした。ただ当時の自分は既に情報Ⅰを見据えていたので、この学年からのプログラミング言語をPythonに変えました。
2021年の12月ごろだったかな、Pythonの教材サイトを作り始めたのは。
情報の授業でプログラミングが始まってからは、商業部の活動でもPythonを触る人数が増えました。あーでもないこーでもないと試行錯誤してプログラムを書いている様子は、見ていて微笑ましいんですよ。
こちらもついつい嬉しくなっちゃって、なんとか最後は自分の力で答えに辿り着けるような、絶妙なヒントを出せないかと、こちらも言葉を選んだものです。いきなり答えを教えてしまっては、せっかくの教育の機会が台無しですから。なんとか上手い表現を考えて、そのヒントを頼りに答えにたどり着いてくれた時は、心の中でガッツポーズしてましたよ。
うちの部活のモットーは「来るもの拒まず、去るもの追わず」です。来なくなるならちゃんと退部してねっていうくらいです。なので時間が経つとともに、居心地の良さを感じてくれて、やる気に満ちてくれる部員だけが残っていきます。
特にこの学年は、何事にも前向きに取り組んでくれる生徒が多かった印象がありました。僕があまり口を出さずとも、自分で目標を決めて努力していました。
なので僕ができることと言えば、この子たちがまだ知らない世界を見せること。少しでも視野が広がるような話をすれば、興味を持ってくれる。それぞれの部員に何が刺さるかは分かりませんが、自分が知りうる限りの世界を見せたつもりです。
ゼミ活動
勤務校行われている「総合的な探求の時間」という授業では、各担当教員の得意分野を活かしたゼミが開かれ、生徒自身がテーマを決めて取り組みます。魚住ゼミはもちろんIT関連です。Yさんが2年生の頃から始まったこの試みによって、IT系に興味がある生徒が集まってくれました。
とは言ってもね、探究するって言っても実際はほとんどの生徒がネットで調べるだけ。2年生の頃はただの「調べ学習」で終わっていました。昔はそれでも良かったんですよ。調べ学習が成立していたから。でもスマホを使いながら生活するのが当たり前となった今の時代、気になることはいつでも調べることができます。もう調べ学習というのは学校でないとできない最先端の学びでは無くなりました。
Yさんには、ただ調査するだけではなくて、何かしらの成果物を作るように言いました。そもそもプログラミングに興味を持ってくれた生徒だったので、僕が何も言わずとも、何かにはチャレンジしてくれたと思います。
2年生の5月頃には、作るアプリのテーマが決まりました。それが「英単語暗記プログラム」です。妹の英語の成績をなんとかして伸ばそうと考えた結果、問題をひたすら解いて、正解不正解を判定するプログラムを作ろうと考えたそうです。
表示された問題に対して、正しい解答を提示できれば正解、それ以外の解答なら不正解。まずは単純な作りでコードを書かせてみました。ただこのままだと、プログラム本体の中に問題文や模範解答などを追加するたびに、ifやelseなどの記述が増えてしまいます。
この後に取り組ませたのが、問題や解答の部分をテキストファイルに保存しておき、そのテキストファイルを読み込んでリストに格納する方法でした。こうすれば、問題文や解答を追加する際に、プログラムそのものを触らなくてもよくなります。
この辺りもPythonだと楽に記述できて、文法さえ合っていたらそれなりに動くものが書けました。この頃Yさんは、日夜エラーと戦っていましたが、エラーの内容のほとんどは文法エラーだったので、記述さえ正しくすれば動くものがほとんどでした。
つまり、プログラムの順番などについては僕が助言することがほとんどなかったということです。手順そのものは完璧。
完成版
そして2年生の間のゼミ活動で、Python版が完成しました。iPhoneやiPadでPythonを動かす方法はいくつかありますが、有料アプリで有名なのが「Pythonista」です。現在は3が公開されています。
結構高めの価格設定ですが、GUIのアプリの作成にも対応してるので、アプリもゲームもこれ1本で作れるスグレモノです。
僕は前任校で既に購入していて、時折趣味で使う程度だったんですが、今の勤務校でPythonを授業に取り入れてからは、すっかりiPadでよく使うメインアプリに昇格しました。
ただしこのままだと、このプログラムを実行するためにはPythonista3やPythonが実行できる環境を用意する必要があります。多くの人に使ってもらえないアプリになってしまうわけです。なので3年生のゼミ活動では、JavaScriptへの移植作業が始まりました。
完成した単語暗記アプリがこちらです。
JavaScriptで動くので、GitHub Pagesを使って公開させています。
ソースコードはこちらです。
GitHub - zarda0214/zarda0214.github.io
JSファイルが別であるのではなくて、html本体内のscriptタグにコードが入っています。CSSも具体的には教えていないので、styleタグで押し込みました。
それとテキストファイルが3つ。問題文、模範解答、解説文がそれぞれ入っています。それらのファイルを最初にリストに読み込んで、問題文をランダムで表示し、答える仕組みです。
ランダムで出た数字をリストの要素の番号に使い、それぞれのリストから内容を読み出すわけです。個人的な反省点としては、2次元配列でやらせたらCSVでいけたんじゃないかと思うんですよね。
まぁそういう細かいところは追々修正してもらうとして。僕が教えたのはVSCodeの使い方と、GitHubの登録、HTMLの基礎だけです。それとChatGPTの使い方も合わせてレクチャーしました。使い方は割とすぐに覚えてくれて、たまに進捗を確認しつつアドバイスしたくらいです。僕自身はソースコードに何も手をつけていません。
プログラミングを通して得られたこと
成果物の細かい修正案はさておき、今回のゼミ活動ではYさんに実際にプログラムを組んでもらい、またPythonからJavaScriptへの移植作業もやってもらうことで、スマホで動かす問題演習アプリが完成しました。
内容によっては1問1答の問題演習に使えますし、英単語だったら暗記にもつながるかもしれません。選択肢を用意すればクイズにもなりますね。
既に同じアイデアのアプリが世の中には多く出回っていますが、それらと似たものを自分で作ることにも、意味があるんじゃないかと僕は思います。
「日常生活で見かけるアレは、どういう仕組みで動いているんだろう」という視点が得られるからです。食事の際に「この味付けはどうやったらできるんだろう」と考えながら味わうことにも似ています。同じように動くものを試行錯誤しながら作ることで、作り手の苦労に共感できるようにもなります。
その上で、更に自分がこだわりたい部分にも存分にこだわることができるんですよね。これが仕事の一環だったら当然納期だってありますし、期限が決められているのならその範囲内で入れたい機能を実装するしかありません。でも完全に趣味の世界だったら、自分が納得いくまでとことん作り込んでも良いわけです。
Yさんはね、情報の授業では、特にプログラミングの単元の際でアシスタントとして活躍してくれました。小学生向けのドローン教室のお手伝いにも参加してもらいましたし、生徒会役員も経験済。高校在学中にiパスと基本情報にも合格してくれました。
こうして振り返ると、僕が投げたどのボールにも必ず応じて、最後には良い形で返してきてくれたなと思います。教師人生の中で、暫定No.1です。もしYさんが他校に進学して自分と出会わなかったら、今頃はどんな人生を歩んでいたんでしょう。そう思うと、こうして勤務校に入学してきてくれたことそのものが、ちょっとした奇跡のように感じます。
今回紹介したプログラムやGitHubは、事前にYさんに許可を得た上で公開しました。在学中のGitHubのアカウントから変わっていたので、今後も新しいプログラムを書いたらプッシュしてくれるのでしょうか。期待したいところです。
ちなみに大学入学後は、教員免許状高1種情報を取得する予定とのこと。学校で会えるのは、次は4年後でしょうか。更に成長したYさんと再会できることを、心から楽しみにしていますよ。
今回のnewsletterは以上となります。いかがでしょうか。自作ツールの制作に夢中になれたら、国公立大学への進学だって夢じゃないかもしれませんよ。ぜひ「いいね」をお願いします。内容に関するご意見ご感想がありましたら、「#こだわりらいふ」をつけたツイートや、Substack内のコメントまでお願いします。
人が成長するのに必要なのは、本人の意思と行動、そしてまわりのちょっとの後押しだなと、再認識させられる話でした。
年齢は違えど、同じ人と関わり人を育む仕事として、先生を素敵に思います。