前回の転職エントリ から3.5ヶ月、すなわちトヨタに入社してから3.5ヶ月が経ちました。 3.5ヶ月間とても気持ちよく働けたので、振り返り記事を書いていきます。座右の銘は「後ろを振り返らない」だったのに、歳を取ると振り返りがちになるんでしょうか。
インターネットの向こうの皆様にもぜひ弊社に興味を持っていただきたいので、弊社の良いなと思うところを書きます。嘘で興味持ってもらっても誰も得しないので、嫌だなと思うところもちゃんと書きます。
続きを読む
人生初の転職エントリです。お手柔らかにお願いします。
2021/09/01付でトヨタ自動車株式会社に入社しました。大手町オフィス というソフトウェアエンジニアが多く集まる場所で、自動車のデータ収集から分析まで、エッジ(自動車)からクラウドまでの研究開発をやっていきます。
続きを読む
Rustで DI (Dependency Injection)、してますか? 今日話題にするのはドメイン層でインターフェイスを定義してインフラ層でその実装を書くやつです。 例えばドメイン層で trait UserRepository
を書いて、インフラ層で struct UserRepositoryImpl
するやつです。
テストを書くとき、 struct UserRepositoryImpl
はDBアクセスなどしてしまうので取り回しが悪いから、mock を作って fixture を入出力したいことありますよね。 Rustでそういうことやるなら mockall がオススメだよという記事です。
そんなに不満はないのですが、もしベターなやり方があったら記事末尾のコメントやTwitter やらもらえたら嬉しいです。
前職のFOLIO時代の同僚で現CADDiの むらみんさんの記事 に
外部通信のような比較的大きい副作用が絡むテストに於いて テストダブルを差し込むことは可能なのですが、かなりの労力が必要になる印象を持っています。
と書いていたのを今更ながら発見して、自分はこうしてるけど皆はどうしてるんだろ?と思って筆(キーボード)を取りました。
続きを読む
Rustの 'static
、難しいですよね。
「プログラム中ずっと生き残るライフタイムでしょ?簡単簡単」
なるほど。では次の2つの 'static
の違いがわかるでしょうか?
1つめ 1 let x : &'static str = "Hello, world." ;
2つめ 1 2 3 pub fn downcast_ref <T: Error + 'static >(&self ) -> Option <&T> { ... }
「・・・2つめのなんだっけ?」 という人はぜひ読んでみてください🦀
この記事では、Rustの2種類の 'static
、
'static
ライフタイム
'static
ライフタイム 境界
を解説します。
続きを読む
あまり見ない気がするので書きました。特徴は、
lint, testなどの各ジョブが並列に動く(ジョブ実行数を多くしてないとdocker containerの立ち上げ分むしろ全体時間はロスになることもあるが…)。
Travis CI のマトリクスビルド に近いことを、 parameters:
を使ってやっている。
rust-toolchain
ファイル に書かれたバージョンと、 .circleci/config.yml
に書かれた MSRV (Minimum Supported Rust Version) の2つでビルドしている。
cargo-readme
を使ってrustdocとREADMEを比較し、どちらかがメンテされていない場合にエラーにする(お好みで)。
キャッシュ使う。
あたりです。見慣れなさそうなところはインラインコメント付けましたので参考にしてください 💁♀️
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
最終的にはFPGAに自作のCPUを書き込んでいくのだが、筆者はFPGAを使った経験がほとんどない。 CPUの回路設計はまだ手もつけていないが、不確実性を下げるために、先にFPGAを購入して普段遣いのmacOSからFPGA開発ができるように整えておく。
最終的には、macOSから papilio-prog
コマンドでBitstreamファイル (.bit
) を Papilio Pro LX9 評価ボードに書き込むことに成功したので、その記録を備忘として残しておく。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
今回は、自作CPUのパフォーマンスベンチマークとして利用するつもりの riscv-tests の挙動を追ってみる。 関心があるのは、命令セットやOSの機能をどこまで用意してあげればベンチマークが実行できるのかという点。とりわけ、以下の観点をチェックしていく。
ISA (命令セット)
RV64F (単精度浮動小数点演算), RV64D (倍精度浮動小数点演算) を利用しているベンチマークはあるか。あるとしたらどれか。
RV64V (ベクトル演算) を利用しているベンチマークはあるか。あるとしたらどれか。
RV64A (アトミック命令) を利用しているベンチマークはあるか。あるとしたらどれか。
OS機能
ヒープ領域は必要か(スタック領域のみで十分か)。
スレッドをCPUコアに割り当てるスケジューラは必要か。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
今回は、64ビットRISC-V (RV64I) の “Hello World” をRustで作ったので、そのリポジトリの紹介。
自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。
続きを読む
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。
第一回のこの記事では、目指してることとか、作りたい成果物とか、ロードマップとか、進捗とかを記録していく。インプットが増えたり手を動かしていくと色々と軌道修正があるだろうから、この記事は随時更新されていく。ChangeLogをご参考。 進捗報告は 自作CPU & 自作OS タグで追えるようにしておく。
続きを読む