疲れた・・・
2025-09-05 作成日時:2025/9/5 16:15:00
2025-09-04 作成日時:2025/9/4 23:07:00
出社。電車で読むためのジジイのエッセイを買う。井伏鱒二、正宗白鳥、佐藤春夫など。いいラインのどうでもよさというものがあるんだよな。考えたくないので知的な刺激とかはいらない。面白すぎてもダメ。ヤマメ釣りとか唐代の壺とか反自然主義文学の潮流とか、この VUCA の、この不確実性の時代とはまったく関係がない本当にどうでもいいことについて書かれているのが望ましい。そして文体も重視したい。離乳食みたいに噛み砕かれた文章には耐えられない。何かしら分かりづらい部分、癖のある部分がないと何かを読んでいる気分にならない。したがってジジイのエッセイに落ち着くことになる。
2025-09-03 作成日時:2025/9/3 23:10:00
出社。引き続き仕事がむずい。疲労。自分でもクソ真面目にやりすぎだと思うのだが手の抜き方がわからない。電車で山本夏彦読んでる。この無駄に漢語調の、マジでどうでもいいジジイの繰り言が疲れた脳に優しすぎる。サロンパスみたいや…
2025-09-02 作成日時:2025/9/2 22:17:00
会社の飲み会。激疲労。まったく嫌な人たちではないのだが、ただただおれがひたすらに飲み会苦手すぎる。そして苦痛を感じてることが完全に表情と態度に出てしまっている。理屈として、飲み会という営みが重要なものであることは分かる。そしておれは飲み会がない職場より飲み会がある職場の方が好きだ。しかしおれというこの器が飲み会を拒絶する。おれという、この魂の座が。そういえば、前職でも飲み会にいい印象がない。人生ここまで生きてきてようやく気づいたけど、おれって飲み会に行かないほうがいいのかもしれない。なんか普通に人の声が聞こえなくて誰が何喋ってるか分からないんだよね。
- リファクタに役立てるため、関数の依存関係を視覚化したい。その手段として一般にコールグラフと呼ばれるものが知られているようだ。しかし、Go 言語でコールグラフを生成するツールとして人気がある go-callvis はあるパッケージを起点とした依存関係を出力することはできるが、特定の関数を起点とした出力ができない(リクエストはされてるが)。調べても自分のユースケースを満たす OSS は存在しなかった。チャンスか…!?
- Codemap | the code visualization you wished for
- これ悪くなさそう。Call Graph じゃなくて Code Visualization で調べたらいろいろ出てきそうだな。
2025-09-01 作成日時:2025/9/1 22:29:00
出社。苦闘する。ここ一ヶ月ぐらいリファクタに取り組んでいる。方針は事前に決まっていて自分は決まったことをやるだけ。今までのタスクは単純なものだった。いらないコードを消したり、テスト書いたりしてればよかった。しかし、今回のタスクは複数の実装に手を入れて処理の重複をなくすというもの。
やることはいっぱいあった。まずは仕様を洗い出してドキュメントにするところからはじめて(なかったので)、次に洗い出した仕様を元にテストを新しく書き(なかったので)、やっと実装を触れる気がしてきた。先週あたりはずっとドキュメントを書いていて、今日テストまで書けた。
で、明日からどうするかだが、とにかくこういうときに肝に命じなければならないのは、一番簡単にやれることから始めるということだ。最終的な目的は4つぐらいの関数の共通化だが、いきなり複数の処理を抽象化したコードを書き始めることはできない。こういうときは一番手前にあるステップから進んでいく必要があり、そしてそれはコピペだと思う。
関数Aと関数Bがあるとする。この2つの処理はかなり似ているが、それなりに巨大であり、内部では別々の関数を呼び出していてまったく共通化されていない。まずワシのような一般人が思いつくのは、関数Aから処理をコピーしてきて関数Bの同じことをやってそうな部分にペーストし、どこが壊れるか見るということだ。コピーしてくる処理はサブの処理も含めて全部インラインに展開してあるとわかりやすい。
このときにテストが役立つ。壊れなければラッキー。それらは同じ関数に括り出せる。壊れたら全ては共通化できなかったことになる。じゃあどこまでなら共通化可能か、ということで範囲を絞り込んでいく。その後、この作業を通じて得られた共通処理を関数 C にも適用できないか試してみる。
で、別のトピックとしてこのアプリがレイヤードアーキテクチャ風味って問題もあるのよな。どのレイヤで何が行われてるのか、一ヶ月経ったがいまだに馴染めてないという問題があり、、、ここも図を作ったほうがいいなぁ。関数がどのレイヤで呼び出されてて、何に詰め替えしてて、ってのが分かるように。コールグラフ?みたいなやつ。
自分がまったく触ったことないコードのリファクタリングをするってのが初めてすぎて、なかなか大変である。適切に図を書くとか分割統治するとかして脳味噌のメモリ量を落とさないとすぐ情報量に圧倒されてしまう。(そして、ワシはいったいなぜこんなことを・・・?)