RustでTestcontainers入門: テストコードから依存サービスを起動してテスト環境を作成する

この記事はRust Advent Calendar 2023 シリーズ1の4日目の記事です。 あるソフトウェアをテストするとき、そのソフトウェアがデータベースやメッセージブローカのような外部のサービスに依存する場合に、その依存をどのように扱うかという問題がつきまとう。…

タスクに「〜対応」という名前をつけるのを避けたい理由

先日同僚と雑談的に話してたことを書いておく。ソフトウェア開発のバックログにおける話です。 「〜対応」とは 主に差し込みで入ったタスクやなにか早めに単一の解決したい事象のためのタスクに名付けられやすい名前。 あくまでも例としてだが 「マーケから…

RustでTiberiusを使ってSQL Serverのコンテナに接続する

Microsoftが提供しているSQL ServerのDockerイメージを使うと、デフォルト設定では無料のSQL Server Developer Editionのコンテナを起動できる。 learn.microsoft.com このコンテナに対してRustからクエリを発行したい。Rustでは、SQL Serverのクライアント…

ghでカレントディレクトリをもとにGitHubの新規リポジトリを作る

GitHub CLI (gh)でカレントディレクトリ配下のリポジトリをGitHubの新規リポジトリとしてプッシュする方法。 $ gh repo create $(basename $(pwd)) --push -s . --pushでリポジトリ作成とともにローカルのコミットをリモートにプッシュする。そのソースとな…

宣言的マクロでfor内包表記を部分的に実装する

Rustの宣言的マクロ(declarative macro)でScalaのfor内包表記(for comprehension)を部分的に実装してみた。Scalaの for { x <- xs y <- ys } yield doSomething(x, y) をRustで for_vec! { x <- xs, y <- ys; do_something(x, y) } のように書けるようにする…