一年の振り返り的サムシング

なんとなく振り返りたくなったので振り返ってみる……

COVID-19 と在宅勤務みたいな話はもう前提だと思うので省く。

ゲーム

Baba Is You

switch で配信されて 2 月ぐらいまでやってた:

store-jp.nintendo.com

面白かったな〜。会社の Slack にも Baba の絵文字が追加されたので多用していました。

スーパーマリオ 3Dコレクション

www.nintendo.co.jp

スーパーマリオ64やっぱおもしれ〜というのは安定としてマリオサンシャイン未プレイだったんですがこっちもめちゃおもしれ〜となりました。モンテ族の人々が基本的に相手を信用しない話しぶりをするのでなんや不必要に感じ悪いなあと思ったけどそれ以外はゲームの難易度が高くて全く飽きずに楽しめました。シャインは 117 枚集めたんですが青コイン探しだけが残った状態になってしまっているので、攻略情報を見て単に回収していくのはそもそもつまらないし、しかしノーヒントでしらみつぶしにやっていく作業もつらそうだしな〜、とりあえずもう良いか……となり一旦やめにしました。

プログラミング言語と型

社では諸々あるんですが基本的には RoR の面倒を見るお仕事をやっていました。

………

やっていたんですが、しかし何年も前からわかっていたこととして僕は非常に注意力散漫でうっかりミスが多い人間なのでコンパイラの支援無しにコードを書くという行為がかなり辛い。

スコープに存在しない変数名とか存在しないメソッド名とかを間違って書いてしまっていたらコンパイル時に静的にエラーになってほしい……という、生命の素朴な欲求が満たされない環境にずっと晒されて、…とも言いたくはあるがしかしこれはただ僕の脳がこの言語に向いてないだけだとは思います。

Ruby はクソ、Rails は死んだ」と口で言うのは簡単なのですが、一般論として、ある対象の問題を指摘する際はその問題を独立して抽出してから批判を加えなければ筋の通った論として成立しません。とりあえず RubyRails に対する感情的な部分は無視するとして、Rails による苦しみは Ruby に型が付けば解決するのか?マヌケな NoMethodError が実行時(!)に発生するのは真に「動的型付け」のせいであると言えるのか?静的型付けは何が本質なのか?型システムによって何が静的に保証され何が保証できないのか……要するに少なくともまず型システムの知見を持っていなければ「動的型付け」言語に対してまっとうな発言ができないわけです。

(念のため書いておくと、仮に僕が型システムや型理論を完全に理解していたとしても「Ruby はクソ、Rails は死んだ」という発言を陽にすることはありません……RubyRails が好きな人は世界中にいるし、わざわざ水を差したり喧嘩を売ったりする必要なんてどこにもありません。それに社内にも、同じチーム内にも RubyRails が好きな人がたくさんいます(というかチーム内では僕以外全員好きだと思う)。暴言を吐くことで一緒に働く仲間とのチームビルディングを台無しにする、あるいは生産性を阻害する……明確にマイナスの影響しかもたらさない行為を良く思う人はいないでしょう。

たとえば Rust という良い側面をいくつも兼ね備えた言語がありますが、Rust を称賛するときに「Ruby には◯◯が無くてダメなんですが〜」みたいな枕詞を添える必要も別に無いわけです。これは単に品性の問題な気がしますが……それに自分が知らないだけで実は Ruby でもできることかもしれないし。いずれにせよそれは発言者がいわゆる「ダメな反対派」になってしまうだけで、称賛している対象のものの評価を逆に下げてしまうことになります。……なんか自明なことばかり無駄につらつら書き続けているだけな気持ちになってきたのでもうやめます。)

とにかく型の勉強をしたことがなかったので勉強したいな〜となり、「プログラミング言語の基礎概念」という教科書を読みました:

from:pione30 プログラミング言語の基礎概念 - Twitter Search

導出木が横に広がるので久々にキャンパスノートとペンを使って問題を解くという営みをやって楽しかったです。

その後 TaPL を購入して第Ⅰ部まで読んだところで気が抜けて積んでしまってる。またぼちぼち続きを読もうかな。

それで趣味ではサーバサイドを Rust (warp + diesel) で書くなどをして呼吸をしつつ、仕事ではここ 1 ヶ月くらいは関わっている Web サービスのフロントエンドに React (+ TypeScript) を導入して、とある画面を React で書き換えることを(メイン業務の合間を縫って)やっていました。

これは個人的な秘めたる思いとして Web 開発の領域でどうにか型をゲットしたい、となると TypeScript がとりあえずお手軽でコンセンサスも得やすい、かつ TypeScript と相性が良く実績もあるライブラリというと React だろうという気持ちで虎視眈々と機会を伺っていたところ、諸々があってチーム内に「宣言的 UI 最高!宣言的にもっと UI を書きたい!」と思ってくれる方が急に増えたので、独り善がりでなくやっていける環境が発生した感じです。

TypeScript の型システムは健全性に関して gotcha がたくさんあるという話もよく聞くしそういう記事もよく見るので今後の僕の精神状況がどう変化するかはまだなんとも言えませんが、現時点ではやっと辛うじて息継ぎができるようになったというのが率直な気持ちです。なのでしばらくやっていくつもりです。

正直それまで「現時点でも問題なく動いていて変更もあまり入らない JS のコードをあえて書き換えることに意味はあるのか」と問われたときに明確に回答できない……と自問不自答(?)して意気消沈することが何度かあったところを勢いで書き換えたのですが、予想しなかったその後の副次的な効果として「React ならアドバイスできるよ」と言ってくれる社内の先輩が数人どこからともなく現れて Slack のチャンネルやリポジトリにコメントを残していってくれるようになり、こんなところで言うのもアレですが感謝しかないッスね…… というか現在進行系で人気のある技術についてはそのぶん知見を持った人の数が相対的に多くて、最新の知見がインターネット上に多く存在したり、関連ライブラリが良くメンテナンスされていたりして、するとプロダクトに付加価値をつける新たなアイデアを実装するのも楽になるわけだなあと今さらながら気づきました。コミュニティに人が多いということはすなわちパワーだということを感じる……

来年以降は静的に型が付くとか型が推論されるような環境は前提にして、より発展的な型の話題の知見をためていきたいと思っています。

ピアノ

夏頃に電子ピアノとブルグミュラー 25の練習曲を買った。全然練習できていない。身体がもう一個欲しいですね。