maybe daily dev notes

私の開発日誌

開発

CDK Tips: Propsバケツリレーが辛いときの対処法アイデア

AWS CDK Tipsシリーズです。 モチベーション 大昔の記事で、CDKスタックをコンストラクトで構造化することをおすすめしました。 tmokmss.hatenablog.com この方法を取るとき、ネストの深い子コンストラクトに対して、親の階層からプロパティを渡すのが面倒に…

AIエージェント開発 - コンテキストエンジニアリング観点でのTODOツールの良さを語りたい

AIエージェント自体の開発に関する記事です。 7月頃から、コンテキストエンジニアリングという言葉を目にする機会が増えました。これは私のAWS Summit Japanの登壇でも軽く触れましたが、エージェントへのコンテキストの与え方を工夫することで、トークン効…

AIエージェントアプリのコンテキスト長上限回避方法まとめ

LLMの基盤モデルには、コンテキスト長の上限があります。例えばClaude4では20万トークンが上限で、これを超えるトークン数を入力するとエラーになります。 一方、昨今のAIエージェントアプリでは、複雑なタスクを任せる場合、エージェントとユーザー・ツール…

AWSの安価でスケーラブルなウェブアプリ構成 2025年度版

3年前、趣味で開発するウェブアプリ向けの安価なAWSアーキテクチャについて記事を書きました。当時流行りの話題だった記憶です。 趣味Webサービスをサーバーレスで作る ― 格安編 - maybe daily dev notes 最近はAWSにも新たに色々なサービスが出てきて、以前…

Devin的な自律型開発エージェントを自作して得られた知見をいくつか

先日Devinリスペクトのクラウド型開発エージェントを公開しました。 tmokmss.hatenablog.com 今回は、この開発から得られた知見をいくつか紹介します。コーディングエージェントに興味のある方や、一般のAIエージェント開発について知りたい方にも役立ててい…

Devin的な自律型開発エージェントをAWS上に作ってみた!

協働的AIチームメイトを謳うソフトウェア開発エージェント、Devin が注目を集めています。日本コミュニティでの勉強会は参加者が1000人を超えるほどです(!) 今回はDevin的な動きを実現するセルフホスト型のソリューションを開発してみたので、その紹介です…

Aurora DSQLをPrismaで使う

次世代のサーバーレスRDBであるAurora DSQLを、TypeScript用ORMのPrismaと一緒に使う話です。DSQLドンドン使っていきたい! DSQL x Prismaは実現できるのか そもそも、今のPrismaはDSQLを扱えるでしょうか? 幸いにもDSQLは多くの面でPostgres互換を実現して…

CDK Tips: Step Functionsで別リージョンのAWS APIを呼び出す

AWS CDK Tipsシリーズです。 先日久々にAWS CDKの新機能をマージしてもらえたので、その宣伝をさせてください。Step Functionsで別リージョンのAWS APIを呼び出すためのコンストラクトです。 github.com TL;DR 以下のコードで、Step Functionsからクロスリー…

Difyのコード実行機能で任意のPythonライブラリを使う

LLMアプリ開発プラットフォームのDifyでは、ワークフローのコードブロックでPythonコードを実行できます。 この記事では、このコード内でboto3やnumpyなど任意のライブラリを呼び出す方法をまとめます。セルフホストのDify向けです。 Difyコードブロックの例…

Amazon S3で分散ロックを実装する

先日Amazon S3でconditional write機能がリリースされました。本記事では、この機能を用いた分散ロックについて検討します。 aws.amazon.com 分散ロックとは 分散ロック (distributed lock) とは、分散環境で排他制御を実現するために必要な機構です。実現で…

Python Lambdaのコールドスタートが遅いときの対処法

AWS Lambdaのコールドスタートはアプリ開発でしばしば悩まされる問題です。この記事では、特にPythonのLambda関数 (コンテナも含む) において、コールドスタートが遅い際の対処方法をいくつか紹介します (注意: 網羅は目指してません)。 第一歩: 計測する Py…

Amazon OpenSearch Serviceのfine-grained access control機能をCDKで管理する

Amazon OpenSearch Serviceでは、ドメインに対するアクセス制御の手段の一つとして、Fine-grained access control (きめ細かいアクセス制御、以下FGAC) が利用できます。 この記事では、FGACの設定をAWS CDKから管理する方法を紹介します。 なぜFGACを使うか…

CDK Tips: CDKのインテグレーションテストに救われた話

AWS CDK Tipsシリーズです。 松尾さんの記事に触発されて、今回はCDKにおけるインテグレーションテストの体験談を書きます。なお、本記事では以降integ testという言葉は、CDKのinteg-testsとinteg-runnerモジュ―ルで実現される自動テストのことを指すことと…

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を使ったクロスリ…