GitHub Actions上のRustアプリのDockerイメージビルドを高速化する

Rust + Docker + GitHub Actions = めちゃ遅い

以前、GitHub Actions 上の Rust ビルドを高速化する記事を書いたけど、 今回は Kubernetes 環境にスムーズに移行できるよう Docker イメージ化するという要件も加わったことで、改めて試行錯誤する必要が出てきた。

それぞれに対するビルド速度の最適化は存在しているものの、3つ (Rust, Docker, GitHub Actions) すべてを満たすとなるとコピペで終わるほど情報がまとまってないし、見つけた Tips もちょっと古かったり、これというものは見つけられなかった。

公式ドキュメントを見ると正当進化していて新しいオプションが生えていたりしたので、賞味期限は短そうだけど、自分の試行錯誤の結果を残しておこうと思う。

成果としては 12 分 22 秒かかっていた Rust アプリケーションの Docker イメージビルドが最短で 2 分 43 秒まで縮まった。Docker layer caching 最高だっ!!!!

返り値でレスポンスを返すタイプのWebフレームワークでPresenterを実現する

なにこれ?

ちょっとコンテキストが面倒なんだけど、

  • DDD で Web フレームワークを隠蔽して Controller/Presenter できっちり分けてる実装少ない
  • 返り値をレスポンスにしてる Web フレームワークが諸悪の根源っぽい
  • Future を使えば実現できるんじゃね? → やってみた

記事のタイトルをどうするかすごく迷ったけど、迷ったわりにわかりやすくなってないのが悲しい。

というわけで久々のやってみた系記事です。実用性はまったくない。

Competitive CyclistからENVEパーツを買う Part2

購入成功

先日書いた Competitive Cyclist で購入した ENVE パーツ がそのあとどうなったか、忙しい人向けに 3 行でまとめると、

  • 転送サービスを使って ENVE パーツを入手できた
  • 順調にいけば 2 週間前後で手元に届く(今回は 3 週間)
  • 多少のトラブルはあった(後述)

やはりというか、海外通販に付き物のトラブルはあったので、注文後から実際に手元に届くまでを細かく書いてみる。

カーボンシートポストをぶった切る

ゼロオフセットシートポスト

夏の筑波8耐に向けてどんな機材アップデートができるか?と考えて、試してみようと思ったことの1つはゼロオフセットのシートポストへの交換だった。

ヒルクライムの頻度が高くなって、前乗りをすることも必然的に増えた。最初はダンシングが下手なだけだと思っていたけど(※ダンシングが上手になったわけではない)、ダンシングするよりも、ギリギリまではシッティングで踏ん張った方が自分は速く走れることもわかってきたし、特にレースではもうちょっと楽に前乗りしたいと思った。

というわけで速攻で CHAPTER2 の公式サイトからTERE ZERO SETBACK SEATPOST をポチった。注文日が 6/23 で届いたのが 6/25。香港からなのに国内通販レベルの速さ。

ただ、ここからが大変。

too-long-seatpost

いざ取り付けてみると全部入らない。考えてみれば当たり前じゃん・・・って感じなんだけど、シートポストの内部は下まで空洞ってわけではなく、途中までしか 差し込めない。もちろん無駄な重量になるのでカットすることは念頭にあったけど、いったん取り付けて、あとで Limbocycling でカットしてもらおう、くらいに考えていたけど完全に甘かった。

ということで令和最新版のカーボンシートポストをカットする方法を紹介する。