yag's blog

Twitter以上Zenn以下なことを書く場所

生活をちょっと便利にするクローラーを書く

以前紹介したGrafana環境を自宅に整えたことで、色々と時系列データを取得するコードを書きたくなった。そこで携帯電話のデータ使用量と残量を定期的に取得して可視化することに。当然ながらAPI等は無いので、Seleniumでブラウザを操作して値を取得している。

以前は自然言語処理のデータ集めとしてクローラーを作ることが多かったが、最近はめっきり書いていなかった。久しぶりにこうしたコードを書くと、やはり楽しい。

無心で手を動かす

この週末は、とあるシェルスクリプトPythonに移植するコードを書いた。処理としてはWebAPIを叩いて値を取り出してといった簡単なもので、コマンドの意味などは手元で試したり調べる必要があったが、ほぼ何も考えずにコードを移植することができた。

自分の場合は、まずはnaiveにベタ書きで一通りの処理を書いたあとに、classやmethodにまとめたりdataclassとして処理をまとめていく。最初にベタ書きで動く状態にしているから、あとはその動く状態を維持しながらリファクタリングができる。それにclassやmethodなどにまとめていないから、デバッガを使わなくとも変数を確認できるのも良い。

こうした無心で手を動かす作業は、具体的な進捗が見えやすい一方で逆になにかに躓いたりyak shavingになることも無い。ちょっと軽めのストレスがちょうど良い。たまにはこういうことをして気分転換しないと、普段の「あれを勉強しなきゃ」「これがコードで書けるようにならないと」という重圧がしんどくなってしまう。

家の玄関ドアを直した

家の玄関ドアが数ヶ月も前から調子が悪く、人間が力をかけないと完全に閉まらなかったり、ドアの開け締めで金属の擦れる音がしていた。気付いてはいたがずっと先延ばしにしていたものの昨日一念発起して調査したところ、ちゃんと閉まらないのはネジが緩んでいただけで、あとはシリコンオイルを挿したら音もなくなった。この間わずか3分。もっと早く取り組んでいればと思うばかりである。静かにきちんと閉まるドアは、当たり前だが使っていて気持ちが良い。

なんで3分で解決する問題を数ヶ月も放置し続けていたのか。理由としては

  • 調べるまでやることが分かっていない、見積もりが立てられない
  • 使う分には困らず、ちょっとした不快感や面倒さを一瞬味わうだけ

の2つだろう。取り組むまでは3分で済むのか30分かかるのか、それとも自分では直せないのかの見積もりが立てられていない。自分で直せないとなると業者を手配したりという別の重いタスクが生じることになるので、その心理的ハードルの高さも影響していたと思われる。また、困り度合いとしてもそれほど優先度が高くなく、1日に数回の頻度でそれも一瞬感じるだけなので、その場で対応しなければもう頭の中から抜け落ちて他のことをやり始めてしまう。

さて、これは仕事ではchoreと呼んでいる作業だ。チケットに起票するほどでもない作業や、ちょっとしたリファクタリング、環境整備などがこれに当たる。チームでは持ち回りで当番を決めて対応することで、放置しないようにしている。ボールの譲り合いや見なかったことにするのが一番良くない状態なので、こうして明示的に担当する人や期間を決めるのは良いと思う。

自分の日常でも意図的にchoreなことをする時間を設けないと、こうして延々と先延ばしにするんだろうなということを、家の玄関ドアを直しながら考えた。

ネットワーク、何も分からない

家の環境整備の一貫で、家の無線LANルータをWi-Fi 6対応の高機能のものに買い替えた。2019年11月に1.6万で購入した2台の無線LANルータは、2022年11月に6,000円程度でメルカリで売れたので、3年で1万円、サブスクリプションぽく言い換えると月300円程度で使えた計算になる。基本的に製品の発売から時間が経つほど中古価格は低下していくものなので、もう少し早く売っておけばもう少し高く売れたかもしれない。こうした壊れない限り価値があまり下がらないガジェットは、高機能な新製品が発売されたら躊躇なく買い替えたほうが、低機能のものをずるずる使い続けるより総合的にお得かもしれない。まあ新機能を使えないことによる損失の計算方法次第だが。

ところでWi-Fi 6対応になったからには、端末からのネットワークスピードが上がってほしいという期待がある。が、期待していたものとは少し異なる結果となった。

まず自宅のネットワーク構成としては、寝室に大本のルータがあってそこに無線LANルータを1台を繋げ、そしてリビングにブリッジ用の無線LANルータが1台あり、そのルータから有線でスイッチングハブを経由してNASNE自作PC群につながっている。ネットワーク速度の測定は、ブリッジした無線LANルータに繋がっているRaspberry Piから、10分に1回speedtestを走らせて記録している。切り替え前後の計測結果は以下のようになった。上のグラフの緑がDownload、黄色がUpload、下のグラフがネットワークのlatencyである。切り替えたタイミングは、真ん中あたりの上グラフがガクッと落ちたところ。

これをみると、下りは少しスピードが上がって安定したが、上りは変化がない。事前想定ではどちらも全体的に上がってくれることを期待したが、何故か片方だけが上がるという結果となった。不思議だ。

グラフからは何か別の要因でupper boundに当たっている雰囲気もあるが、スイッチングハブやLANケーブルによる律速は思い当たらない。そもそも1 Gbpsなら125 Mbps付近で頭打ちになるはずなので、おそらく違う気がする。ネットワークというのはどこか1箇所が狭いとそこがボトルネックになるので難しい。考えられるのは以下の箇所だが、結局分からない。

まあLatencyは安定したようなのでWi-Fi 6自体の効果はあったのだろうけれども、なにか釈然としない結果となってしまった。

ネットワーク、何もわからない。

物理で家に置いているメトリクス収集/可視化サーバが落ちた

wolfin.hatenablog.com

ちょうど昨日ブログを書いたら、今朝確認したところメトリクス収集と可視化を担っているRaspberry Piサーバが落ちていた。Grafanaにも繋がらず、sshもできず、Tailscaleもofflineになっている。起こりうることは起こるんだなぁという気持ち。今は出先にいるから、いまなにが置きているのか全く分からない。これはクラウドに移行したほうがいいのか……。