生きることにこだわりを。魚住惇です。 今回もちょっとしたこだわりに、お付き合いください。
ものを買えば金が減る
「いま対象のMacを学割で買うと、24000円分のApple Gift Cardがもらえます。」
新学期を始めよう - 学生割引 - 教育 - Apple(日本)
そんなキャッチフレーズでAppleが学生・教職員を対象にキャンペーンを始めました。毎年恒例の春の割引販売です。
対象となっているのはMacBook Air、MacBook Pro、iMac、iPad Air、iPad Proです。iPad Proが入っていることと、Mac miniが入っていないことに半分くらいキレそうです。
それはさておき、このキャンペーンを待ち望んでいた教職員の方も多いと思いますし、このタイミングで以前から買おうと思っていたものを購入するのがベストなタイミングだとも思いますが、
こうしたキャンペーンを見ていると、思うところが出てきます。
これはAppleにも近所のスーパーにも共通することとして言えるのが、売り手というのは必ず、売りたいものを売っているということ。それが顕著に出るのがセールだと僕は思っています。
つまりM2 Mac miniはセール対象にしてでも売りたいというわけではないってことです。まだ発売されたばかりなので、買いたいと思っているのなら、セール対象にしなくても買うだろいうという見立てだと思います。
それとは別の視点から僕が思うのは、為替レートです。ここ最近のAmazonでのセールにも同じことが言えますが、セールで安くなったように見えて、いやそれ少し円高になったのをセール価格にしてるだけなんじゃ?ということです。
でもそれだけじゃM2 MacBook Proがセール対象になっていることへの説明がつないので、あくまでふと思っただけのことですけどね。
多くの方には今回のセールも魅力的に見えるのでしょうけど、僕にはあまり良い感じには映りませんでした。M2 Mac miniが対象に入っていたら心が揺らいでいたかもしれませんが、結果として入っていませんでしたし、eGPUが思った以上に良い仕事をしてくれているので、今のところ使っているMacの性能面であまり不満を感じなくなりました。
個人的には録画サーバにしているマシンが第6世代Corei5で組んだ自作マシンなので、そっちの寿命の方が心配なくらいです。
それと、Windowsのノートを使うようにもなったので、改めてMacを使う意味を考えると、自分の用途としてはどちらでもできそうな気もしてきました。
Windows11はそれこそよくできたOSで、もうMacを使わなくても似たようなことは結構できるなという印象があります。
恐らくMacBookが人気なのは、筐体のデザインと、トラックパッドの操作性であって、OSの使い心地にはもうほとんど差がないんじゃないかというのが僕の見解です。
少なくともObsidianを使ったり、VSCodeでPythonのコードを書いているときに、Windowsだから困ったとか、Macだと本当に良いとか、そういう感覚にはなったことがありません。
強いて言えば、日本語のライブ変換くらいでしょうか。でもそれも決定打にはなりません。
うん、これなら別に自分にはまだまだ新しいデバイスは必要なさそうだ。
そう言い聞かせると、割と物欲もなくなってきました。
いや、やっぱりちょっと待った。もう一度、M2搭載のMacBook Airを購入するとしましょう。
apple.comの学生・教職員向けストアより引用
やっぱ高いわ。いくら24000円分のギフトがもらえたところで、高いわ。
どう見てもM2のMac miniの吊るしモデルを購入した方がコスパが良いです。
Mac mini 2018+eGPUで、まだまだ戦えます。それにM2搭載のiPad Proもある。ThinkPadもある。なんかちょっとバランス的に変かもしれませんが、今の自分の用途としては最適解です。
強いて言えばここ最近の不満として、iPadでVSCodeが動いてくれないことがちょっと気になってはいますが、それだけの理由ではMacBookを購入する理由にはなりません。
少し心が揺らいだ気がしなくもないですが、iPadも12.9インチになり、Apple Watchも中古7で安定しています。今こうして、個人的にはバランスが取れたガジェット構成だと思っているので、今回は切実だと思えるほどの物欲には至りませんでした。
いやこれはきっと、りんごに無駄に飛び付かなくなったっていうのもあるのかな。以前もそういう話題を語ったことがありましたね。資本主義疲れでも出たのでしょうか。
ひとまず、物欲を制御できたということで、ヨシとしましょう。
競技プログラミング、はじめました。
先週、プログラミングに目覚めた生徒について書きました。
プログラミングに目覚めた生徒の話 - by 魚住惇⌨️『教師のiPad仕事術』
newsletterを配信してからもその生徒のプログラミングへの熱は変わらず、部活や授業ではプログラミングの課題に熱心に取り組んでくれました。その生徒が頭の中でアルゴリズムを考えているときの、左右のこめかみを人差し指で押している様子を見ると、そこまで考え込ませる課題を用意できた自分を褒めたくなります。
先週から取り組み状況を見て、僕が課した課題だけにチャレンジさせるのは勿体無いなと思ったので、今後の指導方針などを考えてみました。
日本情報オリンピックの参加
学校には毎年、様々なコンテストのポスターなどが届きます。僕は毎回「いやいや、こういうの送ってこられてもね、参加させられるほどの生徒がいないんだよね」なんて思いながらシュレッダーにかけていました。
でも例の生徒なら、何かしらのコンテストに参加させられるんじゃないか?と思えてきたので、ちょっと調べてみることにしました。
そこで参加するイベントの候補として出てきたのが、「日本情報オリンピック」です。
この日本情報オリンピックという大会は、国際情報オリンピックに派遣する日本代表選手を選出するための国内大会という位置付けです。
僕がこれに目をつけた理由は、慶應義塾大学の環境情報学部のAO入試で、一次選考免除対象コンテスト一覧に、「日本情報オリンピック 本選Aランク者」と書かれていたのを発見したからです。
慶應ともなると、ITパスポートとか基本情報技術者試験とかじゃなくて、コンテストの実績だったりするんですね。今の勤務校の生徒で、慶應義塾大学を受験することなんて、まぁないだろうとは思いますが、少なくともこの日本情報オリンピックには、どれほどの実力者が集い、どんな対策をすればどこまで行けるのかを僕自身が試してみたくなったんですよ。
さらに調べてみると、この日本情報オリンピックというのは、AtCoder上で参加することになっていました。AtCoderというのは、競技プログラミングを競うためのサイトです。
AtCoder:競技プログラミングコンテストを開催する国内最大のサイト
このサイトでは、出題されたプログラミングの課題に対してプログラムを書き、提出すると自動で採点される仕組みが導入されています。プログラマーの間ではかなり有名なようで、メーカー主催のコンテストなどにも利用されています。HHKBプログラミングコンテストもAtCoderで行われていました。
今思えば、このコンテストに練習として参加しても良かったな。自分が。
最近は、こうしたプログラムを自動で採点してくれるようなシステムが流行っているようで、転職サイトにも似たような仕組みが導入されていて、求人の指標に使われているようです。
ちなみに大学などで運用されている学習サイトmoodleにも、新しいバージョンではプログラムのコードを自動で採点してくれる機能が搭載されているとか。これは来年度の情報Ⅰで活用しようかと考えています。
話を戻すと、ここ数年話題で、本なども出版されている”競技プログラミング”という世界を知れば、プログラマー界隈に少しでも近づけるのではないかと思ったのでした。
そして、日本情報オリンピックの予選や本選でもAtCoderが使われていて、しかもコンテスト一覧からは過去問にもチャレンジできるので、これはやってみるしかないなと思ったのでした。
JOI 2022/2023 一次予選 (第3回) 過去問 - AtCoder
JOI 2022/2023 二次予選 過去問 - AtCoder
JOIG 2022/2023 本選 過去問 - AtCoder
現状はというと、僕は二次予選のB(2つ目の課題)の途中です。例の生徒は一次予選のC(3つ目の課題)の途中です。
一次予選のAから実際にチャレンジしてみると難易度が掴めると思いますが、本当に初心者向けの課題から用意されていることがわかります。
例えば一次予選のAでは、
2 つの数字A,Bが与えられる. 十の位が A であり,一の位が B である 2桁の正の整数を出力せよ.
という問題なので、割とすぐ「Aを10倍して、そこにBを足せばいいんだな」と思い付きます。プログラミングの練習というより、課題の提出方法の練習にぴったりです。
その後からは問題を進めるごとに難易度が上がっていくので、取り組んでいくと本当にやり甲斐を感じます。
実行結果はこんな感じで表示されます。作ったプログラムに対して、あらかじめ用意された数値によって次々と動作確認が実施され、想定された結果と同じ内容が出力されるかが試されます。
これがね、難しい問題だと、結構大変なんですよ。全て失敗、全てOKっていう結果ならわかりやすいんですが、部分的に失敗すると、その失敗したパターンの入力に対して正しく動作するように修正する必要が出てきます。
特に、問題に与えられた制限時間、その中でもプログラムが動作する実行時間に制限がかけられている場合は、アルゴリズムの出来不出来によって、結果が出てくる時間に差が出てきます。実行に時間がかかってしまうようなプログラムをちんたらちんたら動かしているようでは、時間切れを迎えることがよくあります。
時間切れを回避するためには、いかに繰り返す回数を減らしたり、短時間で計算してくれるような内容に改良できるかが問われます。
少ない時間で最大の結果が出せるプログラムが、優秀なプログラムだということです。こうした細かい条件を全てクリアできるプログラムを組むのが、本当に大変なんですよ。
その分、全ての項目が動作OKを表す緑の「AC」で埋め尽くされた光景を見た時には、思わずガッツポーズを取りたくなるくらい、嬉しいものです。一度この感覚を味わってしまうと、競技プログラミングに病みつきになります。
今は、生徒と競争している状態です。前回も話した通り、僕は自分の威厳を保つためにも、一足早く解いておいて、生徒の手が止まっている時に、適切なアドバイスができるようになっておきたいんですよ。もちろん生徒の方が優れている部分があっても良いとは思いますけど、少なくとも今の段階では、まだまだ張り合っていたいんです。
明日からテスト週間にも入るので、生徒は一旦プログラミングの学習をストップして、目の前の勉強に専念する時期に入ります。僕の心の中では「今だ!テスト週間で他教科の勉強をしているうちに少しでも多くの問題を解いておくんだ!」というセリフが出てきています。
学年末考査の問題はすでに完成していて、あとは印刷だけなので、その分の心の余裕を少しだけプログラミングに回すことができる。そんな時間をここ最近、過ごしています。
AtCoder Beginners Selection
AtCoderには、日本情報オリンピックの過去問以外にも、多くのコンテストが定期的に開催されています。毎週のように何かしらのコンテストが開催されているので、その分盛り上がりを感じます。
で、成績は残りませんが常設中のコンテストというのが用意されていて、動作確認も含めて、競技プログラミングを体感するにはもってこいな課題が設定されています。
そのうちの、Beginners Selectionというコンテストに、練習がてらチャレンジさせたいと考えました。
解き方がわからずググってみると、Qiitaなどで解説してくれている人の記事が出てきます。まぁそのサイトを頼りに提出したところで、内容を理解しなければ意味がないんですけどね。
時には検索しながら、内容を理解しながら、そして苦しみながらコードを書いていって、できた時には本当に嬉しくなるんですよ。そして、Beginners Selectionを進めていくうちに、 AtCoderで出題される問題の傾向というか、競技プログラミングの課題に対する考え方が次第にわかってきます。
それと、僕はまだ常設中のコンテストにしか参加したことがありませんが、実際のコンテストに参加することで、評価によってアカウントに色が付くようになります。その色が、プログラマーとして勉強したかどうかの指標になっているようです。
AtCoder(競技プログラミング)の色・ランクと実力評価、問題例 - chokudaiのブログ
これを読むと、せめて茶色にはなっておきたいなぁとか、できれば緑を目指したいなぁという欲が出てきます。プログラミングを授業で教える身として、生徒に対してもある程度の実力があるよというのを示しておきたい。
そんな熱が冷めないうちに、春休みも使って取り組んでみようかなと思っています。そして先に取り組んでおけば、またしばらくの間は生徒に対してドヤっていられる。ちっぽけなプライドかもしれませんが、今の自分の原動力です。
まだまだ若いもんには負けんわいと思いつつ、学年末考査が終わったところで、生徒にはこちらも取り組ませる予定です。結局のところ、今後取り組ませたいことが2つともAtCoderになっていますが、ある程度落ち着いたところで、ラズパイでも触らせようかなとも考えています。
今回のnewsletterは以上となります。 「いいね」を押していただけるとうれしいです。AtCoderのおすすめ勉強方法や、プログラミングの勉強になりそうな本がありましたら、「#こだわりらいふ」をつけたツイートや、Substack内のコメントまでお願いします。
若いものには負けない。
その気持ちわかります。
私も息子から尊敬される父になるよういろいろ頼れる父を(面では)演じられるよう頑張ってます!