2023-02 月記
以前「月記」を書いた時、それが続くとは微塵も思っていなかったのですが、続きました。冬休みに入ったこの2月の出来事を、いくつか記します。
旅行
2月上旬、友人とスノボをしに、新潟の越後湯沢へ行ってきました。
久しぶりにしたスノボは、滅茶苦茶楽しかったです。
一回それなりに急な斜面をド派手に転んで、「うわ、この感じ懐かしい~」ってなっていました。転倒が一番の思い出でどうすんだという感じですが。
私は未だにリフトから降りるのが下手くそなので、その度にひやひやしています。リフトから降りるの、スキーよりもスノボの方が難しく感じます。
結局、無事故で済みました。一安心。
あと、インストラクターの方からスキーの指導を受けている集団をしばらく見ている時間があったのですが、どの方も上達が早くてびっくりしました。
スキーやスノボはスポーツの中でもかなり異質な気がするのですが、こういうのは運動神経に関係があるのでしょうか。よく分かりません。
ただ、ぼんやりと羨ましいなぁと思いながら眺めていました。
また、私は詳しく知らなかったのですが、今回の旅行は全国旅行支援というものの対象になっていたらしく、少し安く済みました。
しかし、その割引の仕方が自分にとっては少し独特に感じて、一度通常金額が引き落とされて、次に割引金額が引き落とされて、最後に通常金額が返金されたので、びっくりしました。なんか二重請求されてるけど???、みたいになって、少し焦りました。(無知が過ぎる)
直感に反する割引の仕方にも思えるのですが、案外世の中こういうものなんでしょうか。常識が足りません。
ところで、私は焼き鳥がかなり好きなのですが、帰りに駅の露店で買った焼き鳥が非常に美味しくて感動しました。
3月にも、もう一度越後湯沢に行くので、その時にまた買えるかなと密かに楽しみにしているんですが、あまり時間がない予定なので、どうやら運次第になりそうです。
買い物
コストコ
コストコに行ってきました。テレビではよく見るのですが、実際に行くのは数年ぶりな気がします。巨大ピザを買ってきて食べました。
美味しかったです。
本
本屋や電子書籍で何冊か買いました。
- 入門セキュリティコンテスト
CTFをQiitaの記事などで見かけるので、前々から興味があったのですが、ついに買ってきました。手を動かしながらでも2,3日で読めるのでお手軽でした。
内容自体はネタバレになるので書きませんが、こんな技術/コマンド/ツールがあるんだ、となって非常に面白いです。興味がある方にはお勧めできると思います。
ただ、読んでいて情報技術に対する知識不足を痛感しました。CTFも競プロで言うところの茶色くらいにはなりたいので、またぼちぼち勉強したいです。
- 30日でできる! OS自作入門
OS自作には興味があったので、電子書籍で買いました。700頁ほどあるので、実物を買っていたとしたら確実に鈍器です。
計数や理情のOSの授業と似たところもあれば全く違うこともあり、これはこれで面白いです。
10日目あたりまで読みました。やはり名著と言われるだけあって、分かりやすいことには分かりやすいです。ただ、2006年が初版の本なので、やはりちょっと古さが否めません……(みかん本の方を比較的よく目にする理由が、ちょっと分かりました。)
尤も、ざっくり読む分には殆ど問題ないと思います。
そして、買ったけれどまだ読んでいない本として、
Pythonではじめるベイズ機械学習入門
Kaggleに挑む深層学習プログラミングの極意
があるんですが、これはまた来月以降ゆっくり読みたいと思います。(パラパラ眺めた感じ非常に面白そうだったので、読むのが楽しみです)
あとOptuna本とかめっちゃ読みたいです。読みたい本が増えていく。
私は積読という概念が実は相当嫌いな人間なのですが、最近「組合せ最適化から機械学習へ」の第一巻をほぼ読み終わったので(これも面白く、初めて見るフローへの帰着のさせ方とかがありました)、ギリギリ帳尻をあわせています。
また、プログラミング言語の意味論に関する本を、最近Twitterで見かける機会もあったので、パラパラと眺めてきたのですが、先学期に受講した他学部の授業内容と想像以上に被っていて驚きました。思わぬところで類似点があると、面白いものです。
バイト
詳しく書きすぎると恐らくあまり良くないので、ぼんやりとした話にはなりますが、プログラミングに関するバイトの方の話です。
ここ半年ほど、とある課題に取り組んでいて、現在では合計84ファイル程に及ぶシステムを一人で管理するという、自分のような若輩者にとってはかなり大変な課題なのですが、それに対し、ある仕様変更が出されました。
その仕様変更自体は、言葉で言い表すならばたったの1行程度で済んでしまうような、末端の末端の末端の変更という感じなのですが、それを実現するのに滅茶苦茶苦労していました。
実は2月に入る以前から何度かそれをやろうとして、既に4回程失敗しています。かなり時間を費やしても、なおこれは不可能なのではと感じ続けているような、無理難題に近いという印象の仕様変更でした。
というのも、その仕様変更がシステムの根本の根本の根本にある前提を覆すような変更だったので(やめてくれ~)、どのようなルートで挑もうとしても、必ずどこかで破綻が生じてしまうという感じだったのです。
これには大変苦しまされて、1月はこのせいで若干ですが鬱気味になっていました。(バイト程度で鬱になるなという話ですが……)
ところが、今月の13日に行った、かれこれ5回目くらいの挑戦では、たったの30分ほどで本質部分の変更が終わって、そのあまりの簡単さに拍子抜けしました。その時の私は、嬉しさと驚きと呆れが混ざったような顔で画面を眺めていたと思います。
何故これが上手く行ったのか。
これが適切な言語化なのかは分かりませんが、恐らく、「末端の末端の末端」から変更を始めるのを止め、あえて一旦、仕様変更を完全に忘れた上で、「根本の根本の根本」から変更をスタートしたのが功を奏したのだろうと考えています。
楽に済ませようとして、土台に手を加えるのを躊躇っていたのですが、土台、つまり、データ構造を見直して、それから連鎖的に発生していくエラーに対処していった結果、最終的に必要な仕様変更は、造作のないものへと化けていました。
うわ、これ開発ド典型っぽいなぁ……
根本側から改善させていくと、末端側からやる場合に比べてエラー(つまり、変更を加えるべき点)がちゃんと道筋立って見えるのは少し不思議なようにも思えるのですが、実は自然な事なのかも知れません。(嘘かも知れませんが)
何はともあれ、若干の鬱になりながらも、どうにか懸案事項は片付けられて、良かったなぁという話でした。
(と言っても、「本質部分の変更」が30分で終わっただけで、その後の波及的な後処理は3,4日もかかり、いずれにせよ地獄でした。良い経験にはなったと思うものの、正直、二度とこんな目には会いたくないというのが本音です)
文字を書くということ
先程したバイトの話と少し関連があるのですが、今年の1月13日に以下の記事を出していました。バイトで得た知識まとめ、みたいな記事です。
https://qiita.com/hari64/items/47568790dc92100e4e77
この記事を書いたおかげで、自分の中でも色々と整理され、かつ、様々な言及も頂けたので、多くの意味で思い出に残る記事になりました。
尤も、未だにこの記事にある「罠」を時々踏んでいます。
私は学習しない人。
その上、最近はなんか十周回って「JavaScriptってもう全部が全部参照渡しじゃね?」みたいな錯覚まで生じてきて困っています。いや、絶対そんなはずはないんですが……
公開以前はこんなゴミ記事を一体誰が読むんだと思っていたんですが、2月に入ってからも地味に伸びていて、とうとうこんな通知が来ました。やったね。
https://twitter.com/qiita_milestone/status/1629770748913938434
競プロ
アルゴ
2月11日のABC289で、Sky株式会社から飛び賞を頂きました。ありがとうございます。
この間は大学を通じてお肉をもらいましたし、好きな会社です🙌。
この回はGを三分探索(嘘解法)と勘違いして撃沈していた回なので、あまり良くない結果だったのですが、国内139位だったので、学生の中では100位以内程度には入っていたのでしょうか。
アルゴで賞金をもらえるとは夢にも思わず、棚から牡丹餅でした。
一方で、トヨタコンはどちらも全く駄目でした。
一回目はvscodeのスニペットがバグで死んでいて開始5分で心が折れ、二回目は最後ギリギリでFの計算方法が分かったのですが、重複組合せの計算で1を引き忘れるという初歩的なミスを犯したせいで駄目でした。
オンサイト行きたかった……
尤も、イベントにはどうやら参加できるらしいので、そちらの方を楽しみたいと思います。
ヒューリスティック
AHC018について述べます。
(AHC017は先述のことの関係で自明解だけ提出しました)
結論から述べると、大破滅回でした。正直ショックが大きいです。
具体的な順位はあえてここでは述べませんが、(実装時間で言えば)AHC016の二倍くらい時間をかけて五倍くらい順位が悪く、AHC014の三倍くらい時間をかけて十倍以上順位が悪いです。今までで一番時間があったのに、破滅が過ぎる。
原因が何故だか、未だにあまり分かっていません。方針は全体的に似たり寄ったりな気がするので、純粋に実装が破滅しすぎていた気がします。
ライブラリなどをかなり圧縮気味に書いているのに、最終提出だけでも1500行程あって、他の方の簡潔な提出を見て更にショックを受けました。
あるいは、方針もおかしかったのかも知れません。どこが悪かったか分かっていないので、その判断すらつきません。
TLで流れるような考察は殆ど行っていた自信はあって、格子の形状として、通常の格子やさいころの5の形の他に、回転させた格子やハニカム構造などを検討したり、初めn回の掘削成功率で全体的な土地の硬さを推定し、もし全体的に硬そうであれば叩く力の底上げをはかったり、格子が外周を必ず含む(最短距離は外周ギリギリを通ることも多い)ように調整したり、データを盗み見た状態での擬似最適解や色々なデータ解析なども行ったりして、それでからきし駄目だったので色々な意味で疲れました。
表面的にまずかったのは、恐らく推定において次に叩く点の決定の仕方で、それがバグっていたのか調整不足なのか、あまり期待通りの挙動を示してくれていませんでした。
目標地点までのL1距離、現時点での掘削量、周囲の掘削率、周囲の掘削成功率、やや近くに頑丈さが低いことが確定している点があるか、などを、様々なパラメータと合わせながら評価値を算出して、それが小さいものから順に叩くようにしていたのですが、無駄に複雑すぎたのでしょう。
本質的には、戦い方の全てがいけなかったのだと思っています。
終了後、親には溜息のつきすぎだと怒られました(笑)
唯一の収穫と呼べるのは、31個のパラメータのチューニングをoptunaに任せたら100位くらい順位が上がったので、それ自体は良かったです。
やっぱoptuna強いです。
そろそろまた勝ちたいです。
その他
唐突な話題転換ですが、この二月は、特に陰鬱なニュースが多かったように思います。国内の事柄に関しても挙げればキリがありませんが、どちらかというと、最近は海外の出来事に心を砕いています。
トルコ大地震とか、ウクライナ侵攻から1年が経ったとか。
私がニュースを見る理由なんて、校正バイトで最低限の政経の時事問題に関する知識が必要だからというのが大半の低俗なものですが、それでもなお思う所は色々あります。
トルコの方に関して言えば、前期1,2年時の語学クラスの関係で、言語に関する横断的なLINEグルに私は属しているのですが、トルコから来られた留学生の方が寄付を呼びかけられていて、こんな身近にそんな方がいらっしゃたのかと思いました。WFPに少額寄付しました。
また、競プロで得た賞金の使い道は以前と同様に決めていたので、skyさんから頂いた分もそうしたのですが、正直、ウクライナ侵攻がこれほど長引くとは去年の時点では全く思っていませんでした。
昨年の今頃は5月までには終わるかという予想もあった気がしますが、現状を見ると、今後一年間で新たな戦争当事国が増えなければむしろ良い方かも知れないと言った雰囲気さえあります。
それが悲観的な予測なのか、あるいは楽観的な予測なのか、私には分かりません。
守秘義務の関係上、詳しいことは言えませんが、それこそ先述の政経に関しても、最近この流れがデータの上でも表れていると感じています。
自分達の歩む歴史の最先端というのが、まさかこんな形になるとは、私が高校生の頃は思ってもいませんでした。
今から一年後、2024年の2月は、一体どんな月になるのでしょうか。
良い結果になることを望むばかりです。
最近はTLに就活や研究室の話も流れるようになってきて、まもなく4年生になるんだなとひしひしと感じています。
3月も日々を大切に過ごそうと思います。