maybe daily dev notes

私の開発日誌

開発

AWS CDKでSOCIインデックスをデプロイする

TL;DR; 以下のコードでCDKからSOCIインデックスをビルドし、ECRにプッシュすることができます。 # 依存関係のインストール npm install deploy-time-build import { SociIndexBuild } from 'deploy-time-build; const asset = new DockerImageAsset(this, 'I…

CDK Tips: 自作コンストラクトをPython向けに公開する

AWS CDK Tipsシリーズです。 AWS CDKのコンストラクトライブラリをPython向けに公開する手順のメモです。 最近 upsert-slr というライブラリをPyPIにも公開したので、その時のコードを例に紹介します。 モチベーション 最近のサーベイによれば、CDKのPython…

AWS Lambda特化のJavaScriptランタイム「LLRT」を紹介

最近にわかに話題沸騰中のJavaScriptランタイム LLRT を紹介する記事です。 github.com LLRTとは LLRT (Low Latency Runtime) は、軽量なJavaScriptランタイムです。サーバーサイド向けのJavaScriptランタイムはNode.js、Deno、Bunなどが有名ですが、それら…

Aurora Postgres Data APIをあらゆるORMから使う試み

あけましておめでとうございます。冬休みの自由工作レポートを提出します。 はじめに 最近Amazon RDS AuroraでData APIが使えるようになりました。Auroraインスタンスに対してHTTP APIでSQLクエリを発行できる便利なものです。 この記事では、Data APIをより…

TIL: ピックの定理とShoelace formulaすごいぞ!

今年もAdvent of Codeにぼちぼちと参加しています。その中で、ピックの定理とShoelace formulaを知ったので簡単にまとめておきます! Advent of Codeについてはこちらも↓ qiita.com ピックの定理とは すべての頂点が二次元格子点上に存在する多角形の面積を…

ISUCON13で下四桁賞を拝領した - 結果は43位でした

子供は生まれましたが今年もISUCONに参加しました。4度目くらいです。 前回は予選でそこそこ良い成績を残しそうになったので、今年は期待ですね。 準備 今年は予選がないということで、ISUCON11本線の問題を事前に見ておきました。結果的にたまたま今回もほ…

CDK Tips: 2種類のaddDependency

AWS CDK Tips シリーズです。 CDKに addDependency メソッドが2種類あることをご存知でしたか?今日は2つの違いをお伝えします。 addDependency とは addDependency メソッドは、コンストラクト間の依存関係を明示的に指定するための機能です。AWS CDKにおい…

CDK Tips: cdk synthを高速化する

AWS CDK Tipsシリーズの記事です。 CDKアプリケーションの開発運用が成熟するにつれ、CDKの合成処理 (synthesize)が遅く感じることがあります。 合成処理はCDKのデプロイやdiffのたびに走るため、速ければ速いほど嬉しいものです。 この記事では、合成処理を…

Amazon Bedrockでもコードレビューしたい!

最近LLMでコードレビューする記事が話題になっていました: zenn.dev 上記の記事ではCodeRabbitというOSS/SaaSを用いることで、ボットがレビュワーとしてGitHubプルリクのレビューに参加する体験が実現されています。 CodeRabbitのOSS版ではChatGPTのAPIを用…

CDK Day 2023に登壇しました

先日CDK Day 2023というイベントに登壇しました。 今後本イベントに登壇を考えている人の参考になればと思い、手続きの概要や感想などまとめておきます。 CDK Dayとは AWS Cloud Development Kit (CDK)やcdktf・cdk8s・projenなどCDK周辺の話に特化した、CDK…

Infrastructure from Code (IfC) ツールまとめ

昨今Infrastructure from Code (IfC)という概念をよく耳にします。先日もAWSのGregor Hohpeが関連する記事を書いていました。 architectelevator.com この記事では、Infrastructure from Codeとはなにか簡単に紹介し、具体的にどのようなツールがあるか網羅…

AWS Lambda Pythonでsqlite-vssによるベクトル検索を利用する

昨今LLMの台頭により、テキストをベクトル化して類似文書の検索に利用する手法が流行っています。 今回はAWSでこの検索を実現するための一方法として、SQLiteのプラグインであるsqlite-vssをAWS Lambda上で使う方法をまとめます。 github.com 意外とハマりど…

AWS CDKのカスタムリソースをCodeBuildで処理する

AWS CDKを使えば、CloudFormationのカスタムリソースをLambda関数で簡単に定義することができます。 しかしながら、時にLambda関数だけでは都合が悪く、別のコンピュート環境を使いたくなる場合もあるでしょう。 私の作っている deploy-time-build というCDK…

完璧より簡潔が良い - バグ修正編

最近タイトルの考えに至ることが短期間に2度あったので、改めて書き出してみる。 問題提起 例えば今、何らかのコードのバグ修正を試みている状況だとする。バグの原因は考慮漏れのエッジケースがあったとしよう。 修正のアプローチとして以下2つがあるとした…

CDK Tips: ID=Defaultの使い方

AWS CDK Tipsシリーズです。 昨日のCDKカンファレンスで触れた ID=Default の話に思わぬ反響があった (嬉しい!) ので、詳しくまとめます。 ID=Default とは この記事では、AWS CDKのコンストラクトの第2引数のID (Identifier) に Default という文字を指定…

AWS CDK Tips 記事まとめ

AWS CDKを日々使う中で溜まった知見を書き出しています。記事を追加するごとにここも更新していきます。 以下はベストプラクティス的な話です: CDK Tips: コンストラクトで構造化しよう すべてのリソースをスタックのコンストラクターにベタ書きしないほうが…

AWS CDK Tips: クロスリージョンのデプロイ

AWS CDK TIpsシリーズの記事です。 AWSでサービスを構築する際、単一リージョンで提供するサービスであっても、クロスリージョンのデプロイが必要になる場合がまれにあります。AWS CDKでは、そのような構成も簡単に実装可能です。今回はCDKを使ったクロスリ…

AWS SDK JavaScript v3でS3のファイル操作 チートシート

ワタミチートシート以来、久々のカンペ記事。 AWS SDK JavaScript v3がリリースされて久しいが、移行は進んでいるだろうか? LambdaのNode.js v18ランタイムではv3 SDKのみビルトインされているなど、そろそろ移行を進めないとまずい状況も増えてきている。 …

TypeScriptのcode-firstなGraphQL開発ツール比較: TypeGraphQL vs Nexus vs Pothos

GraphQLサーバーを開発する際は、まず schema-first か code-first かを決めることになるでしょう。前者はまず graphql.schema を手書きし、そこから言語固有のコードを生成する方法です。後者は言語固有のコードを書いてから、 graphql.schema を生成する方…

Next.jsをLambda + API Gatewayでサーバーレス化する (standaloneモード)

これは AWS LambdaとServerless Advent Calendar 2022 の記事です。 Next.jsをホスティングする手段の一つとして、Standaloneモードで動かす方法があります。 コンテナ1個で動かせるため非常にお手軽な選択肢で、GCPのCloud RunやAWSのApp Runnerなどで動か…

AWS CDK Tips: コンストラクトで構造化しよう

AWS CDK TIpsシリーズの記事です。 CDKのコードが散らかってきた、スタックのコードがベタに数百行以上もあって読みづらい… そんな状況に直面したことはないですか?今回はCDKコードを構造化して、可読性・保守性を高めるコツを紹介します。 背景 前回の記事…

TIL: AWS SDK for JavaScript v3 で s3.GetObject する最新の方法

最近はもっぱらNode.jsのAWS SDKはv3を使っているのですが、一つ大きな不満がありました。 それは s3.GetObject がv2よりも使いづらかった点です。ユーザーはS3のファイルを読み込むために ReadableStream をなめていくコード (例) を自分で書く必要がありま…

TIL: ソフトウェア文脈における modal behavior とは

最近話題になっている AWS Fault Isolation Boundaries を読んでいると、こんな言葉が目に入った: Allowing individual workloads to make their own failover decisions makes the coordination less complex, but introduces modal behavior through the s…

AWS CDK Tips: スタックの分け方について

AWS CDK TIpsシリーズの記事です。 AWS CDKのスタック、まとめてますか?分けてますか?分けている方はどういう基準で分けていますか? この議論は人によって割と意見の分かれることも多く、最高の飲み会ネタになるでしょう。今日は私見も交えながら、CDKの…

Today I Learned の記事を書いていきたい

ブログ、元々日次で更新するぞ!という気概で始めたが、結局月1更新が関の山となっている。どうしたものかと思っていたところで、つい先程以下のブログを読んだ。 simonwillison.net 継続的にブログを書くことに成功しているエンジニア Simon Willson による…

AWS CDKのおもしろいバグを直した (Unhandled rejection編)

先日自分が修正してマージされたAWS CDKのバグが個人的には結構面白かったので、ざっくりとまとめます。 github.com どういうバグか CDKのhotswapデプロイ*1をするとき、hotswapできそうでできない変更が2つ以上あると、CDKがクラッシュするという現象が起き…

リモート会議で 「今声聞こえてますか」 の確認、いる?

問題提議 リモート会議などで良く耳にする、初めて発話する人の第一声 「今私の声聞こえてますか」、これが必要なのか考えてみた。 この一言は次のようなシチュエーションでしばしば聞かれる。 司会 「… それでは、次はXXさんどうぞ。」 XX 「はい、よろしくお願…

MariaDBコントリビューション録その6 (完) - どのOSSにコントリビュートするのか

前回のあらすじ MDEV-18873に取り組み中。これはクエリ内で指定されたperiodの名前が空文字列 (``) であるときに、MariaDBがクラッシュするというバグだ。 ALTER TABLE t ADD PERIOD IF NOT EXISTS FOR `` (s,e); 一旦自力で考察してPRを作成したが、レビュ…

ISUCON12予選通過しそうでした

ISUCON12予選に参加しました!結果、スコア自体は予選ボーダー通過していましたが追試で失格でした チームいすもなで参加 もなちゃんすまん… 通過した気満々で参加記事書いてましたが、供養のため投稿します。 なお過去にはISUCON9, 11に参加していずれも上…

会社をマイクロサービスアーキテクチャのシステムとして捉えたら

はじめに 会社組織をマイクロサービスアーキテクチャとして捉える見方があります。この記事ではその概要、またそうした場合に考察される「良い」チームのあり方についてまとめます。 マイクロサービスの要点 ここでいうマイクロサービスとは、技術分野における…