# F# で Cmdlet を書いてる pt.75

- URL: <https://krymtkts.github.io/posts/2025-10-05-writing-cmdlet-in-fsharp-pt75.html.md>
- Date: 2025-10-05
- Author: krymtkts
- Tags: fsharp, powershell, dotnet

[krymtkts/pocof](https://github.com/krymtkts/pocof) を開発した。
でも週末の家族のお出かけがずっと続いていて、まとまった時間が取れず簡単なもののみ。
今日は大して実装もできてないし、今後の方針を定めるメモを記しておく。要はただの時間稼ぎだ。

[#365](https://github.com/krymtkts/pocof/pull/365) しか merge してないが、コツコツと効果を測っては改善、あるいはコードが不整合な部分を徐々に直しているつもり。
そのプロセスの中で感じた課題感がいくつかある。

例えば pocof の Sample-based testing が結構穴があるのは前から知ってたが、今回 refactoring 始めてみて改めて実感している。
微妙にエッジケースを外してたりして心もとない感じ。
そのへんも強化するとなれば Property-based testing に書き直すまとまった時間が必要となり、これまたハードルが高い。
でもそういう作り直しこそやる意味がある点ではある。

他に、カーソルの制御に関してはもう実装が各所に散りすぎてるので、大幅に整理しないと自分でも何が起こってるかわからない感じはしてきた。
内部状態の整理はずっと課題感あったが億劫でやってなかった。そろそろ本格的にやるしかないか。

あとキー入力から始まる一連の処理の中で、文字列操作が処理速度の中でそれなりに支配的であることが理解できてきた。
これについては比較的着手が容易だ。
なのでこれからは文字列の操作を減らしていく方向でも調整したいと考えている。
具体的には中間文字列の生成を減らすのが目的になる。
そうすることで heap に積む量を減らすのが狙いだ。

`InternalState` や `QueryState` ではそれなりに単発の `String` 操作しかされない形になっているので、それ以外の箇所で中間文字列を作成しているような箇所を減らす。
ここまで対応したい内容が狭まると、自ずと対象も定まる。
pocof では入力した query を正規表現で分割するし、その結果を取り回すのも文字列操作だ。
なので query を読み取ってデータ構造に落とし込むには自前の parser を作るのがいいねという話になる。
これについては既に最近でいうと [8 月ごろ](https://krymtkts.github.io/posts/2025-08-10-writing-cmdlet-in-fsharp-pt69.html) に触れてる。
つまり自分でもわかってたけど放置してただけの課題だ。

2025-10 の半ばも過ぎれば毎週末何処かに行くような状況ではなくなるはずなので、なんとかまとまった時間が取りたい。
ただこの言葉自体何度も言っているし、もしそれも叶わないなら、今の生活スタイル自体を改める必要がある。
具体的には平日に個人開発の時間を確保するような感じ。
でもそれも家事育児で難易度が高い現状なので、仕事の成果を落とさず稼働時間を減らすような試みが必要なのかもなーというのが最近の悩み。
うまく実現できれば一段レベルアップできるかな。
