リターン

2024/11/25リターンを決意!カワサキZX-4RR、これに決めた!というより、4気筒エンジンで乗れるものがほかにない。なんだこれ。
2024/11/26カワサキプラザ大分改装工事開始
2024/11/27カワサキプラザ大分商談予約申し込み
2024/11/28カワサキプラザ大分から現在ZX-4RRの在庫なし、注文受付もしていない、再開の見通しもないとの連絡があり、断念。
4気筒縛りで調べたらCB650Rがある。大型二輪免許が必要?よし、取ろう。
2024/11/29大分東自動車学校訪問。入校決定。支払い完了。
2024/11/30大分東自動車学校入校式。
RICOLAND大分で、ヘルメット、グローブ、ブーツ、ジャケット、オーバーパンツを購入。
2024/12/01ホンダドリーム別府でのE-Clutch店頭体験商談会で足つきチェック。つま先立ちだけど何とかなりそう。注文受付可能で、むしろ在庫があるとのこと。売買契約成立!在庫がっても免許取得の点で年明け納車で進めてもらう。
オプションはETCとタンクパッドのみ。どうせこかして傷つけるだろうからコーティングなどはいらない。
2024/12/05大型二輪教習1-1(1段階1時限)
年内取得は無理だろうとのこと。
2024/12/07大型二輪教習1-2
2024/12/08大型二輪教習1-3
2024/12/12大型二輪教習1-4
ホンダドリーム別府でアラーム、リアシートUSB電源のオプション追加。社外品であるデイトナマルチメータUSB電源もセットアップしてもらう。
2024/12/14大型二輪教習AT
大型二輪教習1-補習→みきわめ
2024/12/17大型二輪教習2-1
年内取得に向けて教習計画を立ててもらえることになった。
2024/12/19ホンダドリーム別府に年内納車に方向転換で進めてもらうよう連絡。
大型二輪教習2-2
大型二輪教習2-3
2024/12/20大型二輪教習2-4
大型二輪教習2-5
2024/12/21ホンダドリーム別府に住民票提出。ネットで銀行振り込み。12/23に陸運局登録予定。
2024/12/22大型二輪教習2-6
大型二輪教習2-7
2024/12/23大型二輪教習卒検。合格。卒業証明書受け取り。
ホンダドリーム別府から車両登録情報をメールで受け取り。
三井ダイレクト損保加入。開始は12/26。
2024/12/24免許センターで大型二輪を追加した免許発行。ここから5年間有効。
2024/12/25RICOLAND大分でシートバッグ、インカム、U字ロック、カバーを購入。
2024/12/26ホンダドリーム別府でCB650Rを受け取り。
自宅→徒歩→電車→徒歩→店で、ライダー装備で合計1時間半歩いた。きつい。バイク受け取りじゃなければ絶対しない。
シートバッグを付けると、足を後ろから回して乗ることができない。大誤算。
ETC動作確認OK。楽である。
本日の走行距離:130km
2024/12/27RICOLANDでタンクバッグを購入。
2024/12/28RICOLANDでQUAD LOCKを購入、取付。
本日の走行距離:20km
2024/12/29家を出て最初の十字路で右下がり右折時に立ちごけ。最短記録になってしまった。
下りに向かって倒れていると自分だけでは引き起こせないことが判明。傷を増やすのを気にしなければ方向転換して起こせるかもしれないが。
本日の走行距離:150km
2024/12/30本日の走行距離:200km
メーカー指示の500km慣らしは達成。
2024/12/31本日の走行距離:220km
エンジンフィールの荒々しさがマイルドになったような気がする。

読めるようになった

Rustプログラミング入門の第5章Webアプリケーションの開発の途中で長らく進めずに止まっていたが、改めてほんの最初から読み通していくと、何の問題もなく通過終了した。これはやはり公式の標準ライブラリに一通り目を通したことが利いているんだろう。ついでに、ここしばらくPythonだけど仕事でからんでいたPostgreSQLとWebアプリケーションで全体への理解が進んだというのも大きいと思う。ついに一山超えたか?

tauriがよさそう

以前react+electronを調べたことがあったが、react+tauriはもっとよさそう。フロントエンドとバックエンドが同じスレッドで動作しているのか?プロントエンドから呼び出したrustプログラムが終了するまでウィンドウ操作もブロックされる。一方で、rustで別スレッドを建てるのは手間ではないのでtauriのブロッキング回避のための呼び出しを介して非同期処理を実行すると、別スレッド実行中もきちんとウィンドウ操作ができるようになる。別スレッドからメインスレッドへの結果の通知も普通の関数呼び出しと大差なく書けるし、イベントを投げてフロントエンドで受け取ることも簡潔に書ける。細かい制御をしようとするとまた別なのかもしれないが、簡単なGUIプログラムならreact+tauriがいいんじゃないかと思う。

とにかく速い

Rustの練習帳を買ったのは今年の1月なので、もう5か月になる。いまだに終わってない。ほかにも手を出していたからというのもあるけど、とにかく日が経つのが速い。困ったものである。あ、そうそう、ついにrustの標準ライブラリの説明ページを一通り舐めた。四苦八苦しながらでも、試しに小さなコード片を書いて、疑問に思ったらその周辺をいじって確認して、といったことができるようになった。

わずかでも

進んでいるならそれでよし。clap::Parserをderiveすることで、commandやargの属性を利用できるようになり、clap::Argsをderiveすることでgroupの属性を利用できるようになる。このつながりが分かるともやもやがだいぶ晴れる。

公式ページのstdクレートの説明をたどって実装を確認できると、いざというときに役立つ。まずは、stdクレートで何が定義されているかをざっと見ておくとしよう。Pythonも標準モジュールを一通り眺めてからは、REPLでちょこっと確認することで実装を進めるうえでの効率が良くなったし。

stdクレートに列挙されているモジュールを開き、そこに定義されている構造体を開き、実装されている関数を確認する。構造体と密接に関わるトレイトとこの構造体での実装も(使いそうなものだけ)確認する。実装の詳細を確認するには右側にしれっと存在するsourceリンクをクリックする。

構造体やトレイトに実装した関数を宣言時のままでも呼び出せるというのがわかり、構造体やトレイトの定義と実装の定義を分離するrustの流儀が「Cで書いているときに欲しかったのはrustのimpl ~ for ~だったのだ」とつながった気がする。

// 定義
struct Hoge;
impl Hoge {
    fn hoge(&self) {
        println!("Hello from Hoge");
    }
}

// 利用
fn main() {
    let hoge = Hoge;
    // 宣言そのままの形式で呼び出し
    Hoge::hoge(&hoge);
    // シンタックスシュガー(と呼ぶのは正しいのかわからないが…)で呼び出し
    hoge.hoge();
}

時間がない

どうにも追い立てられる状況から抜け出せない。追い詰められてないだけマシか。それでもやはり、興味のあることに時間を突っ込めないのは先細りでうれしくない。

Rustの練習帳

オライリーの「Rustの練習帳」が発売されると同時に購入し、半分読んだところで忙殺されて、そして諸々やる気も失せて、放置していたが、ようやく再開した。

rust全般に言えることだけど、必要な情報にすんなりたどり着かないことが多く、APIの変化が激しいクレートとかでそれが起きるとうんざりして遠ざかってしまいやすい。このRustの練習帳はコマンドラインのプログラムをいくつも書きつつ馴染んでいこうよというスタンスで書かれているが、そこでキーの一つになるのがclapというモジュール。コマンドライン引数をきれいにまとめて管理するためのクレートでよくできていると思う。しかし、利用者からみてうれしい情報整理がされているとはとても思えない。そのうえで、本で書かれているバージョン2から現在のバージョン4までで破壊的変更が加わっているので、ほんとうんざりする。いや、していた。

このままうだうだしていても何も進まないので、1日かけるつもりで本腰を入れてドキュメントを眺めたり、サンプルコードを眺めたり、試したりすると、なんとなく見えてきたような気がして、ドキュメントの記述にはもやもやしつつも、半日くらいで簡単なコマンドライン引数をゼロからclapで定義して利用することはできるようになった。

ここまでで3章。以前読んだ8章までは特段難しい話もなかったはずなので、少しずつ手を動かしながらおさらいを兼ねて進めるのみ。のみを実行するのがまた(やる気の点で)難しいんだけど。