0211
休日だったのでのんびり過ごしつつRustの勉強をする。自転車本の最後の章はC FFIが題材で、生ポインタとRustの参照を行ったり来たりする技法などをやった。所有権をCに譲ったり奪い返したりすることができるが、明示的にunsafeとマークされた操作なので所有権を二度奪うことなどができ、コンパイルは通るが実行時に二重解放でクラッシュする。なるほどスコープと所有権でメモリ管理が行われているなあと思う。
このあたりは、どうしてもどっちにリソースを管理させるかで混乱が生じやすい部分であるらしく、本にも「ときにはRustのリソース管理を呪う事さえあるでしょう」「博愛の気持ちを持って臨みましょう」などと書いてある。著者はどんな地獄を見たらこんなことを入門書に書こうと思えるんだ?まあ覚悟はしておこう。
今日読み終われればよかったのだけど、あと数ページでタイムアップ。OnigmoをRustから呼び出すところで、naïveなFFI呼び出しは動いたけど、これをもうちょっとRust的にラップするのが残っている。しかし、この本は本当に実践的な題材が多くて助かる(しかし、長いこと新しいプログラミング言語に本気で入門したことないから知らないだけで、案外こういう本が普通なのかもしれない)。
小説を書くことにした。まあ書きたいなとはずっと思っていたけれど、僕は小説を書くことができない。嘘の日記みたいなのしかできない。嘘の日記みたい、っていうのは、まずどうしても頭の中にいる人格が僕しかいないから何を書いても僕になってしまうし(僕なりにキャラクタの使い分けはあるが、それだって結局全部「嘘の僕」だ)、文章を構成する方法を日記かREADME.mdしか知らないということだ。まあ前者はどうしようもないし諦めもつくが、後者は純粋に技法の問題だと思うので、まずはこれを学ぶことをしようと思う。そうすれば、エンタメ的に正気のリーダビリティのある長文が書ける可能性がある。
なんでそんなことをしようと思ったのか、というのは僕もよくわからないが、とにかくずっと書きたかった。だって(日記をこうして10年以上書いていることから明らかなように)考えていることはたくさんあるし、それをお話の形できちんとパッケージしたら、もっと(僕が)手に取って眺めて見やすくなるだろう、と思うからだ。でも僕にはその技法がないというのがずっと気懸かりなことだったのだけど、ないなら学べばいい、と思ったので学ぶことにした。僕はまだ31歳で、たとえ何かを学ぶのに5年掛かったとしても、それはただ5年後に何かを学んだ36歳の僕がいるというだけのことで、それってけっこう悪くないことじゃん。そういうことを素直に思うようになったから、だから一つでも実行しようと思ったわけだ。まあRustを勉強し始めたのもそういうのの一つと言えなくもないし。Rustは5年と言わず3年後くらいには本業になっている可能性がないわけではないけれども。
さて、一日しかない休みというのも変な感じだけどももう寝ます。そして明日が終わればまた土日。でも普通に忙しいので土日なんてこなければいいのにともちょっと思う。そんなことはまったくないのにね。