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の奥深さである)。

20241108 日記 極北

睡眠: 早期覚醒からの二度寝失敗
労働: あまりよくない
ジム: o
勉強会: o
夕食: nosh
睡眠薬: これから
特記事項: discordで友人と世間話。金曜でなんかテンション上がって意義も需要もないDota2記事を書いた。100年後には価値が出るといいな。カントリーマアムクリスピーは、カントリーマアムではない。

おみくじ?これ

Dota2 7.37d Pugna 3k

Pugna

がDreamLeague24(2024年10月, 7.37d)で人気だ。最近目立ったbuffはもらっておらず野良での勝率は低いままだがプロシーンではニッチな需要があるようだ。

僕もPugnaは好きで結構サポートとして使っているが、通算勝率は44%なのでかなり下手だ。強烈な個性であるDecrepify(敵か味方1体にキャストし、物理攻撃不可能かつ物理攻撃を受けない状態にする)が裏目に出ることが多い。終盤のセオリーとしてBKBが切れたあとの敵キャリーにキャストして攻撃不可能にするのが強力だが、その間にキャリー以外を優先して倒してもらうという連携が野良では難しいからだ。

プロシーンの謎

dotabuffの記事によるとStorm SpiritのマナタンクとかMuertaとのお手軽コンボが強いとあるが、DreamLeagueのStatisticsを見るとそういう使われ方は少ないようだ。MuertaはPugnaと組んでも強いがPugnaの対策としても強いので、カウンターピックされていることが多い。Storm Spiritとのコンボピックは上位5ヒーローに入っていない。おそらくシンプルに強いのでピックの段階で封じられているのだろう。その代わりにコンボピックされている上位5ヒーローは

  • Earth Spirit
  • Bristle Back
  • Pangolier
  • Sand King
  • Morphling

だ。Earth Spirit、Bristle Back、Sand Kingはマナが不足しがちなSTRヒーローだ。MorphlingはHPを減らしてから回復を受けてHPを増やせば回復量を増幅できる。Pangolierはいつでも強いのでランクインして当たり前だが、一応バリア持ちでHPが満タンのことが多いのでやはりマナを回復しやすいという理屈は付く。

DecrepifyほどではないがNether Wardもなかなか曲者のスキルで、相手のピックによって刺さり方が全く変わってくる。相手のコアがチームファイトの間にも高頻度でスキルを発動するヒーロー、例えばSpirit系には効果的だが、STRヒーローに対してはほとんど効果がない。野良では大抵サポートがファーストピックを求められるのでただの分の悪い賭けになってしまう。

僕が使うとき

  • tango
  • branch x 2
  • circlet
  • mantle of intelligence
  • enchanted mango

でスタートし、null talisman→マナ靴→glimmer cape→lensと進むことが多い。攻撃のレンジが4位の長さなので早めにtalismanを入れてドツき合いを強くするとレーニングで優位を取りやすい。innateでLife Drainをチャネリングしながら他のスキルが使えるが、キャストレンジ外にキャストしてしまうと歩きが入ってLife Drainが止まるので、lensで範囲を広げておいた方がいい。歩けないので当然標的になるが、capeやDecrepify、Siphoning Wardで最大限耐えつつ的になり続けていれば、ダメージレースで味方を有利にできる(というかRewards of Ruin取る状況ってあるのかな。選択率も勝率も低い…)。Shardは火力として頼れることはあまりないが範囲内のイリュージョンを一掃できるのでTBやPLに対して強い(CKのはStrong Illusionなので消せません)。

小ネタ

  • Life Drain2とDecrepify3くらい?あればソロtormができる。Life DrainとDecrepifyは常にかけ続け、DecrepifyがかかっているときにNether Blastを入れる。暇なときは狙ってもいいだろう。
  • innateとTPのインタラクションがおかしくなっていて、TPチャネリング中にNether WardをプリキャストするとTPがキャンセルされる。これで何度もチームファイトに参加しそこねて怒られてるので気をつけよう。あとBoTでユニットに飛んでる最中にユニットが死んでもキャンセルされないという裏技もあるが意図的に活用できる場面は滅多になさそう

20241107 日記

微妙な起床をして、労働を開始。朝食のタンパク質枠として、あまり好きではない魚肉ソーセージの代わりに謎に入手したツナ缶を食べた。

なかなかの内容の労働をし、退勤。ジム、買い物、インドカレー。帰宅しかぼちゃサラダを作った。

そろそろ大相撲のシーズンが始まるので、ジムでリアタイできるように生活リズムを前倒ししなければならない。寒くなって起床(というか出布団)がどんどん厳しくなっているが…

睡眠薬を飲み、眠。

20201011 日記

労働、増加!

概ね11時から22時まで働いて、ぐったりと夕食を食べたり何なりして2時に寝る、というリズムになっている。こうありたいと思っているわけではないのだが、労働が忙しくなってくると自然と今の自分にとって楽な形になっていって、結局こうなる。ジムも散歩も体操も勉強会も全部なくなってる。腰と首と背中が痛い。

一時期頑張ることはできるにしても、これは持続可能ではないな。

20241003 日記

入眠は早かったが4時に起きて再入眠まで3時間かかった。11時頃に起きてもう全部終わりだよという気持ちでテレワークを開始。

意外にもいい感じの労働をしたが、始まりが遅い分終わりも遅かったので何一つルーティン通りできそうもなく途方に暮れてぼーっと寝転がっていた。noshが尽きているので外食に行き、さんざん迷った末にカレーにした。意味なくチーズ追加しちゃって、糸を引いて食べにくい!ってなるよね。食べ終わって店を出たら雨が降っていてひどく濡れながら帰宅。頭の中でずっと「俺は恒温動物、恒温動物」と唱えていた。

シャワーを浴びて体を温めてぼーっとして歯を磨いて睡眠薬を飲んで寝る。

月曜日に8時勤務開始にしておいて、毎日少しずつ後ろにずれていけば実質1日25時間とかにできるんじゃないだろうか。そういうのを小賢しいというのだが。

20241002 日記

ただ入眠が遅かっただけで睡眠に異常はなかった。もしかして少し遅めに寝る方が体質に合っているんだろうか。朝の散歩でガムを踏み、怒りと悲しみが入り混じったしわくちゃの表情で歩いていた。朝食、体操をしてテレワークを開始。

上々な内容の労働を終え、ジム、帰宅、夕食、勉強会、Dota2を1勝。

冷凍ご飯が尽きてるので追加。歯を磨いてゴミを捨てて睡眠薬を飲んで寝る。

実は労働の調子が良くてもう少しやりたかったのだが、ここまでの内容と現在時刻から振り返ると、労働が押していたらどこかにしわ寄せが出ていた可能性が高い。「今日は調子がいい」「頭のメモリに情報が乗っている」という状態は確かにあるのだが、30代はpassionではなくdisciplineでやっていきたいという今日この頃。

20241001 日記 シュワルツネッガー

早期覚醒。4時台に起き、3時間後に再入眠に成功したが、いつもよりかなり遅く起きてテレワーク。一日の始まりから失敗していると、もうね。早期覚醒にしてももう少し遅ければそのまま朝のルーティンに入ってよかったんだけど、さすがに4時台は早すぎてできることも無いし睡眠も足りなすぎる。

全然良くない内容の労働を終え、昨夜唐突に気になり始めていた掛け布団の洗濯をやる。コインランドリーに放り込み、くら寿司で夕食。美味しくなくて腹にたまる理想的な外食。一旦コインランドリーに戻り、乾燥を開始して帰宅。

3cmくらいのバッタがタイミングよく玄関に入ってしまった。昆虫の命は短く、食べ物も交尾相手もいない屋内で無駄な時間を過ごさせるわけにはいかない。室内の電気を全部消し、玄関の外からスマホライトを照らして誘導しながら、割り箸でケツを突いていたら外へ飛び出していった。

乾燥が終わった布団を回収に行く道中で警察官に会った。僕の家の近くに警察官が立っているのは珍しい。帰り道で彼がチャリダーを止めて防犯登録の確認をしていたが、その瞬間の怪しい度で言えば間違いなくシュワルツネッガースタイルで布団を運搬する僕のほうが勝っていたと思う。

明日の朝食べるレンコンサラダを準備していたらこんな時間になっていて、でもこれを準備しないと明日のルーティンは正しく行うことができないので、どうしようもない。落ち込んでいる。

睡眠薬を飲んで、祈りながら寝る。