20250105 作らされたいもの/RimWorld終盤の資産管理と人生訓

作らされたいもの

作りたいものねぇ〜とか言っていたら昔作ったwebアプリケーションをまだ使ってくれている友人から機能の要望が来て、若干の修正と膨大なリファクタリングが発生していて楽しい。しかし連休の終盤に楽しくて夜ふかししているのは頭が悪い。

昔作ったものだから結局コンフォートゾーンに逆戻りしているということではあるんだけど…まあ何もしないよりはマシかな。TypeScript+prismaでデータベースを複雑にいじくるところで(mysqlだとcreateManyAndReturnが使えません)、fp-tsで型をガチガチに固めているので絶対間違ったプログラムを書けないのだが、だからと言って正しいプログラムが書けるというわけでもなく苦労している。fp-tsの型エラーは原因箇所と遠く離れた場所に出るので何を間違ったのか探すのにコツがいる。好きな思想のライブラリではあるんだけどやっぱり言語機能の支援なしにこういうことをやろうとするとどこかに無理が生じるのよね…。

本日

今日からジムが開いていたので行って全身シバいてきた。少し衰えていたが想定内だ。NHKラジオニュースではUSスチールの買収差し止めが大きく扱われていた。大変だ。昼は久々に餃子の王将に行ってみたが、日高屋よりは美味しいだろうと期待しすぎた結果思ったほどじゃないな…となった。かぼちゃを買って帰宅。

RimWorld終盤の資産管理と人生訓

RimWorldは佳境である。いよいよ宇宙船の研究が一通り完了し、後は地道にウランやらプラスチールやら先進コンポーネントやらをかき集める段階に入った。ここの進め方がなかなか難しい。コロニー経営は軌道に乗っていて金も食料も有り余っているのだが、希少資源はそうそう見つからないので金余りの状態になりやすく、そのせいでゲームシステムによって敵の襲撃が強力になってしまう。かと言って金を捨てるといざ希少資源が見つかったときに買えない。つまりゲームシステムにバレない場所に資金を移動させる必要があるのだ。

一つの方法としてはキャラバンに乗せて適当な人員にコロニー外を徘徊させるというのがある。物理的な資産隠しだ。しかしこれはあまりにもゲームを騙してる感が強くポリシーに反するのでダメ。他の方法としては近隣の他勢力に配っちゃうというのがある。もちろんその資金は消滅するのだが、その分友好度が上昇し、いざというときに助けに来てくれたりキャラバンを派遣してくれたりする。

人を働かせて金を集めるシステムを構築したら次はその金を隠したり配ったりというのは嫌なリアリティがあるが、溜め込むくらいなら人に配ってしまえというのはなかなかポジティブな人生訓ではないだろうか。資産を持つことはそれ自体がリスクである。価値は損耗・変動するし、奪われる可能性もある(現代日本の銀行だって1000万円までしか保証してくれないぞ)。それに対して、ロマンティックに言えば友情、システマティックに言えば互恵性の規範に投資するという道もあるぞということをこのゲームは提示しているのだ(厳密に考えると金銭投げつけは友情なのか?という疑問は新たに浮かんでくるが…)。

ちなみに住人の一人であるElk(39歳独身男性・社交能力1)は性欲が強すぎて人妻を含む周囲の女性に声をかけまくり、当然のごとく振られ続けた結果メンタルを悪化させ暴れだしたので逮捕・収監と相成りました。そのうち復帰はさせようと思うけどもう女性と顔を合わせないように深夜シフト固定かなあ。これはネガティブな人生訓。

20250102 RimWorld Mod紹介

今年は帰省はなし。血縁共同体への参加を諦め、自宅で孤独で穏やかな1月1日を過ごした(それっぽいことを何もしていないのでもはや正月ではない)。

休日は好きだが、あまりに長いと人生の意味について考えはじめて非常に精神に悪い。特に正月は30歳独身男性としての何の希望もない未来のことを。せっかく薬で意味のない思考をしないように止めているのに。

30歳になるとあらゆる挑戦心が枯れる。趣味も誰にも褒めてもらえないなら意味ないなとなるし、なにか技術的な勉強をしようかと思ったけど作ってみたいものが思い浮かばず結局大したことをしていない。「やりたいけど時間がない/他の欲求に負けた」のではなく、何事も別にそこまでやりたくないのだ。悲しいことだ。やりたいという欲求が薄まるので、欲求が満たされない苦痛すらそれほど感じない。だから平穏だ。平穏な死。

これまでの人生に満ちていた無意味な不安に比べれば、平穏な死であろうと平穏であることには価値があり、僕は今平穏を自ら望んで生きている。帰省していたら自分の人生にまだ何からの期待を持っている人と会わねばならないので、今年は避けて正解だったろう。

RimWorld Mod紹介

ポリシーとしてゲーム性を変化させるmodは入れない。UIと操作性の改善だけ。

  • Interaction Bubbles
    • 定番。にぎやかい。楽しい。
  • Colony Groups
    • pawnが10人を超えた辺りから前衛と後衛の衣類ポリシーの手動変更ポチポチが面倒になってきたので導入。一括変更が可能。
  • Numbers
    • 自分で好きなカラムを指定した表が見れる。各pawnの空腹度や睡眠を縦覧するときに役立つ
  • Moody
    • コロニー全体のmood上昇/下降要因を集約された形で見れる。やはり人数が増えてくると個人ではなく全体として確認し対応せねばならないので役に立つ
  • RimHUD
    • 定番。でも意外と必須でもないかも?
  • RPG Style Inventory
    • どうしても各装備のカバー範囲とレイヤーの概念を覚えられないので
  • Relations Tab
    • pawnの人間関係を一覧するために最も適した形はグラフであって、当然こういうmodが存在してしかるべきと考え、探したら案の定あった
  • More Graphs
    • 各種リソースの時系列グラフが確認できるようになる。コロニーが発展してくるとリソース管理も全体として捉える必要が生じる。

大規模集約型農業の苦悩

1人のpawnが1日に消費する栄養は20。年間(60日)だと1200。

米とトウモロコシの生産効率はほぼ同じなので米(およそ6栄養/6日)で考える。1年間のうち米が栽培できる期間は、気候によるが、温帯森林だと40日間なので6サイクル栽培できるとすると、諸々の計算の結果34タイル/pawnの栽培面積が必要になる(収穫失敗・火災・病害のリスクを含めるとさらにマージンが必要)。

10人いると340タイル。これはなかなかの規模だ。これだけの規模になると農作業・運搬作業のリソース軽減を考える必要が出てくる。

農作業のリソース軽減は、やはりトウモロコシ栽培だ。トウモロコシは米の約3倍の生育期間で約3倍の収穫が得られる。農作業が1/3で済むというメリットがあるが、収穫の頻度が落ちるので十分な保管庫が必要になる。火災・病害でロットがまるごとダメになると次の収穫が得られるのが20日後になり、非常にリスクが高い。

一般的なサイズの冷蔵庫はフル棚化して容量3倍にしても不十分になるだろう。その場合は冷蔵しない第2保管庫を立てるのか良い。常温でも1年位保つし、分散保管は火災へのリスクヘッジになる。常温保管庫を優先して非常食化するのも良い。

20241221 ガスコンロカバー 指と服

ガスコンロカバー

炊飯器を買い替えたら上面ディスプレイになったせいで電子レンジの上に置くと身長を超えてしまって操作できないという問題があった。しばらくは台所の調理スペースに置いてしのいでいたが、noshを含めて食品の加熱は電子レンジしか使っていないので、ガスコンロは不要であり収納空間にできることに気づいた。そういうときに使うガスコンロカバーという既成品があるのだが、合うサイズを見つけるのが難しいし、炊飯器(6kg)を載せられる材質のものは高くなりがちなので自分で作ることにした。

構造は単純で、ガスコンロの手前と奥に角材を置いてその上に天板を載せればいい。簡単に図面を書いて近くのホームセンターへ行き、店員と相談しながら材木を選んでカットしてもらった。それでも大きいので持ち帰るのが大変だったが…技術料含めて3500円程度でいい具合のものが作れた。

ちなみに新炊飯器はそこそこ良いやつで冷凍ごはん用の炊飯モードがあるのだが、これがなかなかちゃんと解凍後も弾力があり、本当に効果あるんだなあと感心している。QOLチャリンチャリン。

指と服

犬の動画を見ていると、冬は服を着せている人が多い。しかし犬は服を自分の意思で着脱できるのだろうか。やはり犬や猫の手足の器用さでは文明は発展しなかっただろうなと思う。

同じように宇宙の彼方の高度生命体は、ふっとい指が10本しかない、そもそも3次元しか認識できない人類のことを哀れんでいるのだろうか。

攻殻機動隊の、各指が更に枝分かれして超高速でキーボードを打鍵できる(セキュリティが厳しい公安警察のオペレーターは電子的干渉を避けるために物理デバイスであるキーボードを使う←そうだったよな…?と思って確認したら別にそういう設定ではないらしい?)アンドロイドたちのことを考えている。

20241220 日記

0:30入眠。4:30起床(怒)。7:30再入眠に成功。10時ごろ起きて労働。典型的な早寝(当社比)からの早期覚醒のパターン。

徐々に周囲の人が年末休みに入っていくことで進めにくくなる作業が増えたので、年末大掃除的なやつをしよう…と思っていたら一人で黙々と進められてしまう作業が発生し、そこそこ進めて退勤。

ジム。iPadを忘れたので『ゲーム・オブ・スローンズ』が見れなかったが、代わりにテレビで放送していた全日本フィギュアスケート選手権男子ショートを見た。37歳織田信成が4T-3Tをクリーンに決めたのはぶったまげた(まあ出る大会を減らせばパフォーマンスは出せるというのは相撲もそう)。それにしても踊ったり跳んだり滑ったり、相変わらず変なスポーツだ。せっかく氷の上を滑るという独自性があるのだから滑りの上手さをもっとよく点数化すればいいと思うのだが、どうにもジャンプが重視されていてもやっとする。

帰宅、夕食、勉強会、Dota2(勝)、ゲースロ、日記、睡眠薬。

明日は何をしようかな。読書でも昼寝でも、何もしなくてもいい。スケートを見ていたせいでいつもより長くエリプティカルしてしまったので明日は膝を休めたい。常備菜は小松菜が切れたのでまたなにか作らないとな。冬の野菜ということでカブでも使ってみるか?

20241219 日記

起床、散歩、掃除、労働。ジム、夕食、勉強会、Dota2(敗)。日記、睡眠薬。

最近は睡眠薬の効きが悪くなってきた。まあ耐性が付く薬なので仕方ない。昨夜は入眠まで2時間かかってしまった。しかし遅寝遅起きになると早期覚醒は起きなくなる。不思議だ。

寝れない時間はしょうもないので会社で勧められた『【新版】日本語の作文技術』(本多勝一)を読んでいた。あまりにも思想性の強い序章に衝撃を受けたが、その後の各論は具体的かつ実用的であり、納得感がある。

最近は『ゲーム・オブ・スローンズ』を見ている。血族と名誉で殺し合いしてるのでまあ大体『仁義なき戦い』で、その前に見ていた『グッド・ワイフ』では全員ゼニ!出世!裏切り!仁義なんかクソ喰らえ!という世界観だったので落差が大きい。時代性と神秘性を感じさせる舞台の作り込みは本当にすごい。でも登場人物があまりにも多くて、それらの関係が断片的なセリフから浮かび上がってくるので把握するのが難しい。完結済みの作品なので迂闊にググるとネタバレを踏むし自分でNotionに整理しようとしてもAI補完でネタバレされそうになって笑ってしまった。

20241208 早起き日曜

例によって9時頃に早期覚醒(日曜基準)した。二度寝しようと思ったのだが、友人から連絡が来ていた。彼が所有し、僕が借りているサーバーにトラブルが起きたとのことで、解決を手伝った。皮肉なことだが仕事に近い活動をすると日曜でもシャキっと目が覚める。

早起きしたので午前中に朝食・散歩・体操・掃除・洗濯を済ませ、昼は電気屋に行った。炊飯器を買うためだ。現在使用している炊飯器は製造から18年経過していて、機能としては特に問題ないのだが、加圧・加熱する家電製品で標準的な寿命を大幅に過ぎたものを使い続けるのはリスクであると判断し、買い換えることにした。先日似たような理由で電子レンジも買っている。

注文を済ませた後、ジムにニベアとリップクリームを持っていくためのメッシュポーチと、旅行でもらったパンフレット等を保管するためのクリアファイルを買った。生活を改善するためにものを買うということ、ものを増やすことで結果的に居住空間に秩序をもたらすということは、最近できるようになってきたことだ。一人暮らしを狭小住宅の最小構成で始めた感覚からなかなか脱却できていない。

少し昼寝した後、友人がdiscordでGeoGuessr大会を開いていたので参加した。経験は全然ないが、言語情報・太陽の向き・植生とかでなんとなくそこそこできるので面白い。というか、距離とスコアの換算方法が絶妙なんだと思う。

昨日ジムで全身シバきまくったのでいまだにあちこち痛い。

20241126 労働から始まる負の連鎖

ハード目な労働、それを埋め合わせるためのお菓子購入外出、迫る閉店、鍵落とし、蹴躓き、筋肉痛

洗濯物乾かず。

労働は人生に意味を与えてくれるものであり、30代独身男性の僕が「「「社会」」」に貢献した気になれる唯一の窓口だ。自分で手を動かす仕事であるからアウトプット量のレバレッジに限界はあるものの、細部まで行き届いた必要十分なものを作れたときは美的満足感も得られる。

しかしながら、頑張って働くことがどこに通じているのかわからなくなるときがある。石油を掘ったり野菜を育てたりする職業なら努力した分だけ世界の富が増えるだろう。しかし僕の仕事はそうは思えない。人間の時間という有限のリソースを誰かと奪い合っているだけなのではないか。僕の努力による顧客の増加は、そのまま他の誰かの顧客の減少なのではないか。誰かの「今日は仕事を頑張った」というツイートを見たとき、自分が遅れを取っているのではないかと焦る。ライバルよりわずかでも速く走るために、全員が身体と精神をすり減らしながら働くのは、端的に言って何かが狂っているのではないだろうか。

居室で加湿器を動かしながら浴室乾燥機を動かすんだ。笑えよ。おしまい。

20241117 日記 人生は何を増やすゲーム?

ジムでは、僕(30歳)はかなり若手の方だ。これまでは地域的にそうなんだろうくらいにしか考えておらず、若いうちから健康維持・増進に勤しむオ・レを少し誇りに思っていた。

しかし今日、唐突に、そうではないと気づいた。若い人間は休日は真っ当に外に出て何かをしているのだ。若くて健康な肉体は資産だ。資産は維持したり溜め込んだりするのではなく、活用すべきではないのか。僕は今ここにある、いつだって今が最高性能であるこの肉体を使って、たとえば旅行とか、登山とか、喧嘩とか、大食いとか、そういうことこそをするべきではないのか。肉体を維持することを自己目的化して、休日を薄暗いジムで相撲を見ながら過ごすのは間違っているのではないか(テレビに出るような力士は大抵自分より若く、強く、稼いでいて、そして不健康であることは実に皮肉だ。そういう生き方に憧れているのか?)。

今の僕は外出がそれほど好きではない。ルーティン通りの生活を平穏に送れることが十分幸せだし、なにか外で活動したとしても、結局それをやっている自分からは逃れられず、どこか空虚に感じてしまうことがある。楽しい時間は過ごせるけど、終わってみると楽しいことに何の意味がある?と考えてしまう。

しかし同時に、持てる資産を活用していない、ベストを尽くしていないという事実もまた苦しい。10年後に「若いうちにあれをやっておけばよかった」と後悔することが、今から怖い。

要するに自分にとっての幸せの定義に自信がないので、その幸せのために何を取って何を諦めるのかという決断にもずっと自信が持てずにいる。情けない話だが、必然だとも思う。就職して6年目になり、人生は安定しているが肉体のピークアウトを徐々に実感してくる。ある意味では満たされているが、残された時間は有限であることも考え始める時期だ。今のうちに人生の実績解除をいろいろやっておかねばならない?人生ってそういうものだっけ?(人生って何?)

考えるほどよくわからず、辛くなってくる。めちゃくちゃに働かされる代わりにめちゃくちゃ稼げる職場とかに転職したら考えずに済むのかなあ(適当に言ってます)。現時点で転職意欲はないけど、700万出せて(私の現在の収入とは無関係な数字です)事業に社会的意義があると自負していてソフトウェアエンジニアがどうしても必要なカイシャがあったら話聞きます。

ソフトウェアエンジニアリングチームはオーケストラか

専門的な技能を持った個人の集団がコミュニケーションを取りながら成果物を完成させるという点で、ソフトウェアエンジニアリングチームはオーケストラに似ている。長い期間に渡って同じシステムを育て続けるチームを想定している。

似ていること

  • 一人ひとりの能力の総和が単純にチームの能力にならない。良いコミュニケーションと良い文化・伝統が必要。
    • 一人のスーパースターの存在は、ある程度成果物の質に効いてくるが、決定的ではない。トランペットだけ超うまいオーケストラはトランペットパートで見せ場を作れはするが、それが他の弱点を覆い隠せるわけではない。スーパーエンジニアはアーキテクチャを設計できるが、同時にチームを教育し浸透させないと少しずつアーキテクチャの意図からズレたコピペが横行し、破綻する。
    • 技術的なボトルネックの解決とかは一人で大きく貢献できるかもしれない

違うこと

  • ソースコードは有形で永続化されている。いつ誰がどのような判断でその一行を書いたのか、高い確率で検証することができる。
    • オーケストラも楽譜に歴史が刻まれているとは言える。オーケストラは楽譜を所有しており、過去にやった曲であれば当時の書き込みが残った状態で使う。指揮者が変わって演奏指示が変わったりした場合は書き込みが更新される。しかしgitのように履歴を追跡できるわけではない。
  • コードを全く触らなくてもある程度の期間は動かし続けることができる
  • 新人をカバーし教育をすることができる。オーケストラでは一人音程が違えばバレてしまうが、ソフトウェアエンジニアリングではプルリクエストとレビューを通してカバーすることができる。
    • リアルタイム性の違い
    • しかし負担は大きい。『人月の神話』で論じられているように、新人の教育役として作業から離脱する人間が出るので人員追加の採算が取れるまでの時間が長い。

特にここから何かを主張したいというわけではない。それほど考えを深めているわけではない。しかしオーケストラの組織運営は何百年という歴史の中で洗練されてきたので、ソフトウェアエンジニアリングチームもそこからなにか学ぶことが、できたりできなかったりするかもしれない?

  • 全体の方向性を指示し、ときにはマイクロマネジメントを行う指揮者(ただしそれらの指示は全て全団員が聴いている)
    • 桜井政博氏も組織論の動画でディレクターの指示は誰でも自由に聞ける場でやるって言ってた
  • 全体に対してより具体性の高い指示を出すコンサートマスター
  • 同一の演奏機能を有する奏者が1つのパートを構成する(レイヤードアーキテクチャ+コンウェイの法則?)が、その中でも1st, 2ndのような役割分担がある
  • パート内ではパートリーダーに合わせる
  • パートリーダーは必要に応じて他パートと調整を行う

こう、風呂で思いついたときにアイデアとしては面白いと思うんだけど、文章に纏めてみると大した内容じゃないなってやつ、あるある。

Dota2 勝てるタイミング論 7.37d

これはある程度のランクでDota2をやっている人なら理解もしくは体得していることだろうが、あえて整理してみる。

Dota2の形勢には、勝った者がより栄えるという特性がある。5vs5のチームファイトで片方のチームが全滅したとする。単純にデス中はファームできないし、フリーでオブジェクトが取れる。なんならマップ全域が安全地帯になるので5人で高効率のスプリットファームをしてもいい。

同時に、栄えているものが勝つという特性もある。仮に両チームが同じヒーロー・同じプレイヤー技量だったとすれば、より強いアイテムを持っていたり(ゴールドアドバンテージ)よりスキルのレベルが高い(レベルアドバンテージ)方が勝つ。

この2つの性質を単純に並べてみると1回ついた差は挽回できないように思える。実際挽回させずに勝ち切るというパターンも多い。しかしもちろん、Dota2がゲームとして奥深いのはこれをひっくり返す戦略があるからだ。その一つが勝てるタイミングを待つことだ。

Dota2の各ヒーローに対して、所有するリソース(ゴールドとレベル)を横軸に、チームファイトで出せるインパクト(ダメージを与える、ダメージに耐える、相手が出せるダメージを減らす等々)を縦軸に取ったグラフを書くことができる。一般的にその切片が大きいヒーロー、つまりリソースが少なくても一定のインパクトが出せるヒーローがサポートヒーローであり、傾きが大きいヒーロー、つまりリソースが集まった終盤に大きなインパクトを出せるヒーローがコアヒーローとされる。

(ここでは深く立ち入らないが、実際は一次関数ではなく、レベルアップとアイテム入手のタイミングで強くなっていく階段関数である。その区間の移行直後の相対的な優位性が大きい状態をパワースパイクと呼び、チームファイトを仕掛けるべきチャンスになる。)

つまり、ある時間帯で負けていても、自分のチームのコアヒーローの傾きが相手よりも大きければ、ファームをし続けるだけでいずれ圧倒できる可能性があるということだ。各ヒーローの傾きの大きさは様々な要因で決まるため経験的に理解するしかないが、特に傾きが大きく長期戦に強いものはhard carryとかlate game carryなどと呼称され、たとえばMedusaはそれに含まれるだろう。通常攻撃が全体攻撃になるため攻撃アップアイテムの恩恵を大きく受けられるからだ。

逆にこの傾きが小さいコアヒーローを持つチームは、相手にファームする時間を与えないように攻め続ける必要がある。ここで最初の議論に立ち返る。チームファイトで勝つか、衝突を恐れさせて相手の行動範囲を制限しファームを遅らせれば、有利は自然と拡大していく。これをスノーボールと言う。

相手にスノーボールを起こさせないためには、どの時間帯でも相手と決定的な戦力差を作らないことが必要だ。だからコアヒーローの中でもsafe lane carry / mid / offlaneの役割分担が生じる。

たくさんファームして活躍できるのは爽快なので低いレート帯やロールキューがなかった時代は全員hard carryピックみたいなことも日常茶飯事だったが、そういうチームがバランスの取れたチームと戦った場合、セオリーでは序盤から負け続けて誰もファームできずに負けるということになる(まあ低いレート帯の野良では攻める側も上手くまとまれずに長期戦になってしまい、結局5carryが勝つということもよくあり、これもまたDota2の奥深さである)。