Rustで$refを使うJSON Schemaを作成してバリデーションする

次のようなJSON Schemaがあるとする。 { "type": "object", "properties": { "foo": { "$ref": "#/definitions/foo" } }, "required": [ "foo" ] } $refでJSON Pointer "#/definitions/foo"によって参照しているスキーマは内部に存在してほしいが、なぜか今…

async-graphqlで独自の名前とフィールドを持つconnection/edgeを定義する

GraphQLで、適切にグラフ上のノード間の関係を示すために、connectionやedgeに独自の名前をつけて、独自のフィールドも追加したいことがある。 Explaining GraphQL Connections | Apollo GraphQL Blog Instead think of them as the relationship between tw…

定義する例外を減らしつつソフトウェアを設計する方法を"A Philosophy of Software Design"から学ぶ

会社の読書会で"A Philosophy of Software Design"を読んでいる。 A Philosophy of Software Design, 2nd Edition (English Edition)作者:Ousterhout, John K. Amazon 自分の担当で第10章"Define Errors Out Of Existence"をしっかり読む機会があり、けっこ…

中途入社のソフトウェアエンジニアがWebサービス開発に参加するとき役立ったこと

この記事は一休.com Advent Calendar 2023 8日目の記事です。 2023-09-25に入社して2か月半が経ったので、既存のWebサービスの開発にソフトウェアエンジニアとして参加するにあたって役立ったことを書いておく。 『Webサービスのソフトウェアエンジニアとし…

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

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