diary

0131

間違ってフォームの内容全部消えたので書きなおし。なので多少雑に行きます。


昨夜はずっと頭が痛くて困った。閃輝暗点に関連する片頭痛だと思うのだけど、一応薬も飲んだのに眠れないほどひどくて難儀した。やれやれ。

今日もあまり元気ではない。元気ではないなりにRustの勉強を進めたりはした。いま読んでいる本はちゃんとそれなりに実用的なプログラムを作るところまで扱っていてとてもよいが、やはりどうしてもこの二年でRust界隈もそれなりに変わったために、いろいろ古くなってしまっている。これサンプルコードをactix-web 3系に対応したものをgithubとかに上げとくと喜ばれたりするんだろうか?


Twitterでなんか三点リーダの話が盛り上がっていて、関連して三点リーダ偶数個問題も話題になっていたのだけど、結局それって組版の問題を書き手の責務に誤って帰属させているだけですよね?と思う。日本語と英語の間に四分アキ入れるとか段落の頭を一文字下げるとかfi合字fl合字ffi合字とかいろんなダーシの使い分けとか、そして三点リーダの個数とか、全部それは組版の問題にすぎない。原稿用紙にペンで書いてた文豪が三点リーダの個数を気にしていたわけはないのだし、書き手が気を配るべきことではない(もちろん気を配ってもよいし、それが表現の一部であることはあり得る)。
これらの慣習の多くはUnicodeに収録されていて表現可能になっているが、だからといって書き手の責務に帰せられるのは誤っているだろうと思う。僕もまあ無意味にU+2005(FOUR-PER-EM SPACE)とかを使いこなそうとした時期はあるけれど…… それはやっぱり組版の問題だ。

とはいえ、文章の内容と組版とを区別して考えるというのもあまり一般的ではないのだろうなとも思う。僕も高校の時にパソコン部の部室に置いてあったThe TeXbookを読むまでは考えたこともなかったし。HTML/CSSが文章の意味構造と装飾を分離する、みたいなのとも似通っていて、気にしたことのない人は気にしたことがないことだ。だからまあ、全部を書き手がやるべきと考えるのは自然ではあるけれど、やはりそれは実態にそぐわないこだわりでしかないだろうと思う。


さてまた月曜日が来るな。今週は金曜日に休暇をとるつもり。そういえば天皇誕生日が二月に移動してきたし(移動という表現は相応しくないか?)、二月って営業日がすごく少ない月になるんですね。


0201

2月になった。


仕事はあまり捗らない。CDK職人をやっていた。メインのサービスを走らせるコンテナ群の他に定時バッチを実行させるための設定など。またECSに詳しくなってしまった。サーバーラックの陰から〜 インフラおじさん登場〜♪

夜はrustやってた。相変わらず本に載ってるコードが古くて難儀するが、翻訳の過程がいい練習になっていると感じる。ストリームのAPIとかが新しくなっているみたいだし。ただそもそもHTTPのマルチパートの仕様とかがよくわかっていないという問題もあり、ふうむと思っている。明日はもうすこし進められるかな。


寝る。眠いしな。


0202

最近公私共に忙しくて寝不足。なんでもいいけど仕事は別に「公」ではないよな。普通に自室でやってるし。

仕事はまたCDKおじさん。CSVデータをエクスポートする先のバケットを用意したり。おそらくはここにファイルを吐き出したあとで署名済URLを返してダウンロードさせることになるだろう。まあ普通にsend_fileでもいいのでは?とはいえ今回はGraphQL APIだしそうもいかないしな。

夜はrustやってた。本に載ってるコードを現代的に洗練させようと思っていろいろやっているんだけれど、型合わせゲームに失敗し続けていて辛い。まずはasync/awaitの基本的なところを別途学ぶところから必要なのかも。ウーム。


児童の労働が非人道的だ、という主張のことがいまいちよくわからないことがある。なんというか、どうしても、じゃあ我々がやっている労働は残酷ではないのだろうか?と考えてしまう。そんな残酷なことを子どもにやらせるのはやめようよ、という話ならば理解できるけれど、この製品は児童に労働させていないから人道的にクリーンです!みたいに言われると、なんだか複雑な気持ちになる。別に普通に労働を苦にして死ぬ大人だって大勢いるし、労働という営み自体「みんなやっとるぞ」以上に正当化できるとも思えないし、だからなんというか、児童から搾取しないのは、マシではあるけれど、何かを解決したことにはまったくならないよな、と思う。まあ何かの解決が目的なのではないですと言われてしまえばそれまでですけれども……。


いよいよ明日が節分本番ですよ!
むっちゃドキドキしてきた…。

鬼の皆さん、今日くらいは人喰いは休んで明日に備えますよね?


0203

昨夜夜更かししたせいで眠い。眠いが仕事の前にRust書いてたら昼になっていた。コンパイラが親切だと言われることがあるが、アスキーアートみたいなエラーメッセージを出されても何もわからない。しかし型合わせゲームを1つ成功させたぞ。苦しんで成功させたので少し所有権の気持ちがわかったような気がする。

仕事は忙しかった。完全にRust書いてる場合ではなかった。フロントエンドを気合いで進めたが、やはり最近キャパシティを超えている感じがある。今のところはメンタルに問題はないが、長く続くと良くないかもしれない。観察が必要だ。


明日も忙しいらしい。なんかカレンダーに予定が6つある。マジかよ。明後日は有給休暇だからなおさら明日はがんばらないと。


0204

なんか会議ばかりしていた日だった。午前中は多少コードを書けたけど、午後はもうほぼ会議。もろもろ調整役をやっているが、さすがにきついものがある。
僕はどうも疲れてくると話すべきことの優先順位を判断できなくなるらしく、思いついたことを順番に話して余計混乱させるモードに入ってしまうようだ。僕自身も混乱する。回避策はない。

会議が終わって少しはまだ仕事できるかなと思ったら不具合調査が舞い込む。なんかRxを駆使して書かれたコードで、デバッグにならない。Rx自体は別に使いたいなら使えばいいんだけど、すべてをストリームだと思い込むためにUIKitとかに謎の拡張がなされたりしていると、厳しい。読めない。iOS開発初心者になったみたいな気分だ。
正しく動かないコードを書くのは二流だが、まともに保守できないコードを書くのは三流だ。

夜は映画観た。僕はミュージカル映画好きなのかもしれない。普通にミュージカルが好きな可能性もあるが、それは観たことがない。

あとRust触っていた。死闘の末に型合わせゲームに勝利したが、まだ正しく動いていない。Rustコンパイラは、賢ぶってあれがダメこれがダメ言ってくるくせに、結局実行時の動作を完全に保証できるわけではない。ふうむ…… まあなんか非同期処理の所有権あたりでトラブってるんだろうとは思う。明日見るか。


さてこんな時間ですが今から寝る。明日は何と有給休暇なのだ。なんか最近有給休暇が完全に余ってきてるので、腐る前に使わないともったいないのだけど、そんな暇がもうない。


0205

有給休暇だったし昨晩は五時くらいまで夜更かししていたので昼頃まで寝た。起きてからはRustを勉強した。VSCodeの拡張機能でRustの型推論の結果がエディタ上に表示されるけど、Futureをチェインしまくった結果はAndThen<Then<Fitler<ErrInto<Multipart, ...>, impl Future>, || -> impl Future>, impl Future, || -> impl Future>, impl Future...みたいなえげつない型になってしまって何のことだか全然わからん、とぼやいていたら、普通にtokioのチュートリアルを薦められたので読んでいる。なんか昨夜の僕は寝惚けてたんだけど、普通にasync/awaitがある言語なんだからこういうのはawaitしておけば透過的に書けるんだった。tokioのチュートリアルも普通に勉強になってよい。いま読んでいる本はちょっと前の本で、まだasync/awaitの仕様が今のような形に定まっておらず、従って網羅的な解説もなかったので、それを補う役に立ちそう。結局Rustの非同期処理ライブラリはどれが2021年のデファクトスタンダードなのかよくわかってないけれど……。まあtokioは名前をよく聞く気がするし、これを薦めてくれた人も仕事でRust書いてる人みたいだから、とりあえずこれを読んで間違いはないでしょう。

夕飯はパクチージェノベーゼを作った。こないだ買ったハンドブレンダーが届いたのでそれを使ってみたかったという趣旨なんだけど、なんか固定観念に囚われた結果フードプロセッサー機能で作ってしまった。普通にブレンダーでやればよかったのに。そのせいか完全なペースト状にはならなくて、ふーむと思っていたけれど、フードプロセッサーは元来そういうものではない。
それはそれとしてパクチージェノベーゼはそれほど気に入る出来ではなかった。別にまずくはないし、パクチーの味がするけれど、こう、だからって別に全体的にパクチーの味がするパスタが食べたかったわけじゃなかった気がするな?と思った。ネットで出てきたレシピを雑に総合して勘で作ったのもよくなかったのかも。勘で料理をするとろくなことがないというのが経験の教えるところである。


母校の中学入試の算数の問題がシェアされてきて、解いたらおもしろかった。10分くらい掛かったと思うけど、アイデアに気づけば計算は簡単だった(それでも電卓を使った怠惰な僕!)。20年前と形式が変わっていなければ、あれに掛けられる時間はせいぜい5分というところだ。ブランクがなければ……とも一瞬思ったが、たぶん僕は当時もそんな短時間では解けなかったんじゃないかと思う(算数は最後まで不安要素だった)。

こんな問題ばかり解いて、僕は本当によかったんだろうかと思うことがある。この問題も、具体的な情報はあまり示されていないので、「さあ不変量に着目しなさい」と言わんばかりだけど(だからって簡単ではないが)、結局この手の問題への対応は、そういう出題者の意図を最短で直観する訓練でしかないのではないか。少なくとも僕はこの時期の訓練のために、あらゆる問題を「意図がわかれば解けるように作られた問題である」という色眼鏡で見ることになってしまった(あと、3分で方針が立たない問題は考えなくなってしまった)のではないかと思っている。それは意図がわかれば解けるように作られた問題を解くのには役に立つが、残念ながら暮らしの多くの場面には意図などないし簡単な解決もない。キッチンを整頓するのに最適な補助線の引き方などない。

まあ、それでも長い時間が経ったわけだし、僕も簡単じゃない問題をどうにかこうにか乗りきっていく方法をすこしは覚えたと思う。だから結局べつに有害だったと言いたいわけじゃないんだけど、すこし反省があるな、というような。


明日は外で夕食。馬肉を食う。楽しみだ。今夜はもうそろそろ寝たほうがいいかな。眠いし。


0206

昼前くらいに起きてtokioのチュートリアルを読んでいた。思いのほかコアに近い話題も扱われており、どんな感じに非同期処理が表現されているかもわかった。結局標準のfutureのStreamを使うべきなのかtokio-streamを使うべきなのかはよくわからないのだけど、おそらく将来的には標準になるがまだ入っていない機能がtokio-streamにあるのかな。そういうわけでtokioを使っていこうと思う。昨日のえげつない型はawaitの駆使でかなり読みやすくなってきた。あと少しだと思う。

ところで夜は馬刺しを食べた。お昼が遅かったわりに夕飯は早かったのでベストコンディションとはいえなかったが、まあおいしかったのでよしとしよう。


明日も非同期処理と格闘する。あとガトーショコラをまた作るつもり。ハンドブレンダーがあるからメレンゲもへっちゃら。


0207

日曜日。Rust書いてた。StreamとFutureと所有権について、少しはわかってきたが、まだレバガチャプレイをやっている部分もある。しかしまあ、レバガチャプレイでやっててもコンパイルが通る限りは安全に動くことを(ある程度)保証するのがこの言語の強みだ。ゆっくり直感に馴染ませていこう。

それはそれとして幾分洗練された記法が使えるようになってきた気がする。awaitとか、Option/Resultの?記法とか、型強制とか。ただerr_intoするとrust-analyzerがそこで型の推論を止めてしまう気配があって、これは僕の使いかたが悪いせいなのかよくわからない。調べてもあまり情報がない。あとStreamのfilterは同期のクロージャをとることはできないのだろうか。tokio-streamだとできるんだけど、futuresのだと非同期しかとれない。でもtokio-streamだとTryStreamが定義されてなくて不便なんだよね。ふーむ。

非同期I/Oまで進めたかったんだけど時間とテンションが足りなかったのでできず。HTTPのマルチパートのこととかよくわからないし。明日時間取りたいけど仕事忙しそうだなあ。

あとガトーショコラもう一度作った。ハンドブレンダーを使うとメレンゲが何の苦労もなくできたので笑った。昔の人は何でこんなもの食べようと思ったんでしょうね。それとも案外新しい料理なのか?


寝ます。