2020-01-01から1年間の記事一覧

cargo workspaceを使ってRustのビルド時間を改善する

キャディのバックエンドエンジニアをして働いている高藤です。 キャディではRustを使ったAPIサーバを開発しています。今回はその開発の過程で導入したcargo workspaceを使ったプロジェクト構成についてまとめました。 今回のアプリケーションについて Rustで…

Deno 試してみた - 隅田川.js#1 LT

こんにちは、CADDi でフロントエンドエンジニアをしている桐生です。 少し前になりますが Deno 1.0 がリリースされ話題になったかと思います。まだ記憶に新しい方も多いのではないでしょうか。タイムリーにも 隅田川.js #1(オンライン) にてLTをさせて頂く機…

デザインの基本原則2(概念モデル)

前回の記事でデザインの基本原則をご紹介しましたが、そちらで抜けていたもう1つ重要な概念をご紹介したいと思います。 SaaSなどの多機能で複雑な機能要件を抱えるサービスを、「わかりやすく作り上げる」にはデザイナーは何を基準にUI/UXをデザインしてい…

DDDのパターンをRustで表現する ~ Value Object編 ~

はじめに こんにちは、キャディでバックエンドエンジニアとして働いているkuwana-kbです。 キャディではバックエンドで Rust を採用しています。また、設計手法としてドメイン駆動設計(以下 DDD)を取り入れています。Rust と DDD 、それぞれの解説記事は今…

大公開!The letter from CTO をリリース!

キャディでは エンジニア積極採用中! キャディでは エンジニア積極採用中!!!!! ということで、 CTO 小橋の思いが詰まった The letter from CTO を公開しました! [siteorigin_widget class="WP_Widget_Custom_HTML"]

型レベルの単位チェック (基本編)

はじめに この記事は社内勉強会で発表したtypes-for-units-of-measurementの続きである。 メタプログラミングがどのように役に立つのか、弊社で使われている型レベルの単位つき演算を例に説明していく。 本記事ではメタプログラミングを主眼においているため…

陰関数による形状表現 (2)

陰関数による形状表現 (1) のつづき 前回は円領域を例にとって、パラメトリック表現と陰関数表現を比較しました。そこで分かった陰関数による形状表現の利点は「集合演算がメチャ簡単!」でした。 陰関数表現にはもう一つ重要な利点があるので、それを紹介し…

デザインの基本原則

UI/UXデザイナーのモリです。 今回はプロダクトのUI/UXをデザインする時に、僕が常に心がけている「3つの基本原理」を、普段愛用しているセブンカフェのコーヒーメーカーを例に紹介したいと思います。 ※例に出しているコーヒーメーカーですが、実際はブラン…

CI/CDでもはじまるOSS化の波 ~ Orbを使って楽にCI/CDを実装しよう ~

はじめに Orbって何? どうやって使うの? 調べて選ぶ ドキュメントを読む Usage Examples JobとCommandの違い JobとCommandの呼び出し方 Executors リソースクラスとは Orb Source 実装する 最後に はじめに キャディでバックエンドエンジニア兼DevOpsエン…

FirebaseとCloudFunctionで作るサーバレスなファイル処理

はじめに テクノロジー本部バックエンド開発グループの狭間です。所属はバックエンドですが、フロントエンドやインフラなど色んなことをやらせてもらってます。 今回はファイルの処理について書こうと思います。それなりに大きなファイルをオンラインで処理…

突貫工事な Firebase Functions の負債を返していこう!まずは宣言的バリデーションと機能テストを導入した話

はじめまして。むらみんです。CADDi に入って最初に着手したコードを書く仕事で色々とハマったのでまとめておこうかと思います。 コンテキスト CADDi では、顧客から受注した製品の製作フロー管理 (サプライチェーン管理といいます) を営業系 SaaS を用いて…

陰関数による形状表現 (1)

半径 $r$ の円の式を考えましょう。パラメトリック表現はこうです。 \left(\begin{array}{c}x(t) \\ y(t) \end{array}\right) = r\left(\begin{array}{c} \cos(t) \\ \sin(t) \end{array}\right) 対して、陰関数表現はこうです。 f(x, y) = \sqrt{x^2 + y^2}…

高速フーリエ変換の実装を難しそうかなと思っている方が、なんだ簡単じゃないですか!! となるための実装講座です

対象読者さんはどのような方ですか? FFT(高速フーリエ変換)の定義を知っているものの、その実装が難しそうだと感じて困っている方々です。逆に原理や有用性、理論的な子細にご興味のある方のご期待には応えられないと思います。 目標 FFT に苦手意識のあ…

最低限のtoolchainでRustとWebAssembly

Overview 最低限のtoolchainでWebAssemblyを活用してみました。cargo web, wasm pack, wasm-bindgen 等色々と便利なツールがありますが、あえて使わずに全部自分でゴリゴリ。便利なツール使う前に苦しさを自分で実感しないと、ツールの仕様でハマった時に自…

RustでWebアプリケーションを作る

はじめに はじめまして、キャディでバックエンドエンジニアとして働いている高藤です。 キャディではRustを使ったバックエンドAPIを実装しています。業務ではgRPCサーバを実装していますが、今回はRustを利用した簡単なWebアプリケーションを作成し意外と簡…

immer で簡単 Apollo Client キャッシュ更新

こんにちは、CADDi でフロントエンドエンジニアをしている桐生です。 弊社では バックエンドとの通信に GraphQL を採用し、そのクライアントライブラリとして Apollo Client を使用しています。 今回は Apollo Client と immer を使った Tips を紹介したいと…

Rust未経験者が業務でRustを使えるようになるまで

1. はじめに こんばんは、キャディでバックエンドエンジニアをしている kuwana-kb(@kuwana_kb_)と申します。 キャディでは Rust を用いたプロダクト開発をしています。Rust は安全性・速度・並行性に秀でた言語ですが、まだ国内での採用事例は少なくWeb アプ…

Kustomizeを利用してk8sの構成管理をシンプルにやってみる

目次 [toc] はじめに キャディでバックエンドエンジニアとCI/CDやIaC、自動テストなどDevOps的な仕事を兼務している山下です。 k8sを実際にサービスの運用に使おうとすると確実にぶつかる壁があります。それは構成管理です。 具体的にいうと、基本は設定を共…

TypeScriptにおけるgRPC関連ライブラリの比較とプロダクト開発で採用した方法の紹介

こんにちは、テクノロジー本部バックエンド開発グループの山田です。 弊社のプロダクト開発では、以下の図のようにフロントエンド <-> BFF <-> バックエンドの構成をとっており、Node.js上で稼働しているBFFと、Rustで作成しているバックエンドの間をgRPCで…