短いGWが終了してしまった。今年は何もやらずにどこにも行かずに、という感じで過ごすより他はなかったが、それでも終わってしまうと名残惜しいというか…
GW中は随分暑くなりましたが、非常に小さなてんとう虫が部屋に迷い込んで来たんです。てんとう虫は季語で言うと夏の終わりあたりらしいですね。
さそわれて 部屋に舞い入る てんとう虫
…という俳句を思いついた。ロクでもないGWの、少ない成果。だがこのハイクのままではGWの出来事とは思ってもらえないだろうな。「子てんとう」みたいな言い方の方がいいのかも。実際は舞って入ってきたわけではなくて、ガラスについていたのが、引き戸をなんやかやした拍子に窓の内側に移動してしまったというわけなんだけどね。苦心して逃がしてあげたので、入ってくるところではなく逃がすところをハイクにした方が良かった可能性も。
あとは成果というところまでは行ってないが、wait-for-itをコンパイル言語で書いていくということをやってみていた。まあシンプルにCLI/unittest/ソケットプログラム/サブプロセス実行などをどう書くかの練習ってだけなんだけど、副作用として最小のwait-for-itのdockerイメージを作れる、という成果が出るかもしれない。もしかして。元のwait-for-itはtimeoutとncをシェルから呼び出すスクリプトだけど、この利用頻度が意外と高い。あまりに高いので、busyboxにwait-for-itの機能が入ってくれればいいのになーと思っていた。
えーと、wait-for-itというのはTCPのポートが開くのを待つプログラム。connectが成功するまで待って、成功したらコマンドを実行したりexit 0したりする。失敗したらexit 1したり。コンテナ時代の基本ツールですね。mysqlやJavaのように起動しようとしてからreadyになるまで時間がかかるサーバの準備を待ってから、次を起動したいという要求がある。実際は、待つのはconnectだけでいいの? という疑問があるんだろうけど。
で、それをC, C++, Rust, Golangで書いてみたけど、やはりCの書きづらさは別格だな。C++はstdc++とかboostがあるのでstatic linkするのが辛い。かと言ってboostなしでは、やってられん。Rustはマジで悪くないですね。正直どちらかと言えばGolangの方が書きやすさは上と思ったけど、C++よりはRustの方が数段優れていると思った。unittestは、研究部門にいた頃はunittestなんて書いてなかったけど、転職で開発部門に移ってからは常識の1つに昇格した。