最近のブログ記事

I posted several blog platform. So we can easy to summarize of my blog in this page.

HonoでCloudflare Pagesを作りつつ、wrangler.tomlを使ってVectorizeをよびだしてみた

2024年春のDeveloepr WeekでCloudflare Pagesがwrangler.tomlをサポート開始。Cloudflare Pagesプロジェクト作成からVectorizeの追加、Workers AIの有効化まで手順を解説。Vectorizeのデプロイ成功後、API追加し動作を確認。wrangler.tomlを更新しLangChain.js使用を試みるも、エラー発生。Node.js互換フラグの設定やcryptoモジュールの取り扱いについて解説。Cloudflare Pagesを使用したVectorizeの有効活用が可能となる手順を詳細に記載している。

Cloudflare Pagesの設定をwrangler.tomlに出力する

2024年春のDeveloper WeekでCloudflare Pagesがwrangler.tomlをサポートしたことがアナウンスされました。Wrangler CLIを使用して設定をダウンロードするコマンドは簡単で、既存のwrangler.tomlファイルが上書きされます。APIキーや環境変数は暗号化して保存することが推奨されており、暗号化されていない情報はwrangler.tomlに含まれます。必要に応じてダッシュボードで設定を変更し、再度ダウンロードすることが良いでしょう。

外部APIを利用したRAGをLangChain.jsのLCELだけで作る2 – 部分的なベクトル検索を採用する

LangChain.jsを使用して、RAGやテキスト生成機能を実装するシリーズが続いています。前回はWordPressのREST APIを使用して、RAGの検索部分に挑戦しました。今回はエラーが発生した記事本文や複数記事をLLMに渡す試みについて説明されています。MemoryVectorStoreを利用することで、記事の関連性の高い文章を取得し、記事の検索結果をさらに深掘りする方法も紹介されています。WordPressから取得した記事情報の検索結果をMemoryVectorStoreに保存する方法や、RAGのインデックスと検索処理を実装する手順も示されています。Cloudflare Workers AIを使用して生成された日本語の回答に関する内容や、AWS Lambdaのアプリケーションをアップデートする手順についても触れられています。LLMのトークン数上限に対処する方法や、回答を生成する際に必要な文章の抽出方法についても言及されています。ベクターインデックスを利用した検索についての知見が共有されています。

WordCampサイトのローカルテスト中にフォーム操作ができなくなった場合は、スパム判定を疑おう

最近、WordCampのソースコードを触り、決済フォーム周りのスパム対策やスコア処理について勉強中。ローカルで意図的にエラーを発生させたい場合は、スパム判定回避としてget_score_for_ip_address関数を編集し、常に0を返すようにする方法がある。本番環境でスパム誤判定を避けるためには、Transient APIに保存されたデータが消えるのを待つしかない。操作に注意して開発を進めよう。

[LangChain.jsでいろんなRAGを作る]LangChain.jsのRunnableLambdaで入力値を動的に処理する

LangChainを使用してWordPressから記事情報を取得する方法が紹介されています。非同期処理を実装するために、RunnableLambdaを利用することができます。この方法を知っていることで、他のHeadless CMSやSPARQLなどもデータソースとして利用できる可能性があります。Retrieverを使う場合は、ベクトル検索を主に使用しますが、RunnableLambdaを知ることでさまざまな検索方法を適用できます。

メキシコでローンチされている、Stripeのカード分割払いをPayment Linksで試してみる

所属チームがUSベースのため、日本で未利用の機能を試す経験を共有。メキシコで利用可能なクレジットカードの分割払い機能を紹介。Stripeアカウントをメキシコで作成し、Meses sin interesesを有効化。商品作成後、Payment Linksで分割払いを試す。分割払いプランを表示し、支払い完了画面が表示される。支払い時に全額を受け取れる仕組み。Stripeアカウント上では分割払い決済と通常決済の区別は不明。APIからは分割払い情報が取得可能。

[LangChain.jsでいろんなRAGを作る]Cloudflare Workers AIで作ったRAGに翻訳機能を追加してみた

Cloudflareを使用してRAGを構築する際、モデルやプロンプトに関連して回答が英語になる可能性があることが挙げられます。そのため、特定の言語で回答を生成するために翻訳ステップを追加することが有効です。これにより、複数のChainをつなぎ合わせて、質問に対して検索を行い、結果を元に日本語で回答生成する流れを完成させることができます。多言語サポートが必要な場合は、翻訳処理を追加して検索精度を向上させることが可能です。

LangChain.jsでCloudflare Workers AIの翻訳モデルを利用する

LangChain.jsを使用すると、Cloudflare Workers AIを簡単に活用できます。Text GenerationやText Embeddingsのモデルは問題なく利用できますが、Translationモデルなど一部のモデルは対応していない。LangChain.jsでは新たな実装が必要な場合、自身で処理を実装しChainに組み込むことができます。RunnableLambdaを使用すれば、テキスト生成以外のモデルもLangChain.jsで活用可能。Cloudflare Workers AIを効果的に使用していくためには、適切な実装が必要です。

Next.js App RouterでStripe Elementを使う場合は、`loadStripe`はクライアントコンポーネントで実行する

タイトルの通り、Stripe ElementのJSファイルを使ったデモアプリ作成時のハマりをメモ。loadStripe関数の返り値がPromise<null>になり、決済フォームが表示されない問題を解決。解決策は、’use client’を設定しているコンポーネントでloadStripeを実行すること。詳細は参考リンクに記載。

WP APIで_embedと_fieldsをくみあわせるときは、_linksを使う

以前に_fieldsクエリと組み合わせて、WP APIレスポンスを最小限に抑える方法を紹介した。今回は、_embedクエリを使って情報をフィルターする方法について説明した。_embedクエリを使用すると、関連情報も取得できるが、特定の情報を抽出したい場合は_fieldsで指定が必要。_embedと_fieldsを組み合わせる際は、書き方に注意が必要。サンプルでは、authorの情報を埋め込みつつ、取得内容を絞っている。

Stripe Appのローカル開発で、`localhost:4242 is already in use`が発生した時の対処法

Stripeにはサービス連携やカスタムUI、ワークフローなどを構築・カスタマイズできる「Stripe Apps」があります。 https://stripe.com/jp/apps これをローカルで開発する際、時より「localhost:4242 is already in use」というエラーが発生することがあります。 今回はこのエラーが発生した時の対処法を簡単に紹介します。 ステップ1: 現在のポート使用状況の確認 エラーが発生した際、まず確認することは、対象のポートを使用しているプロセスがあるかどうかをチェックすることです。Terminalやコマンドプロンプトで以下のコマンドを実...

No Codeで始めるStripe - 触って覚える Stripe Payment Links

StripeのPayment Linksを利用すると、コードを書かずにクレジットカードなどの決済を受け付けるURLを作成できます。 また、Dashboardで設定を行うことで、割引やGoogle Analyticsでのトラッキング、QRコード発行なども簡単に行えます。 この本では、Stripe Payment Linksを使って、簡単に決済・サブスクリプション申し込みを組み込む方法を紹介します。 サービスやアプリを新しくスタートする際に欠かせない「オンライン決済」を、Payment Linksでシンプルにはじめましょう。

Stripe Connect fundamentals Series

dev.to/stripe のStripe Connect fundamentals Seriesを日本語化していきます。2章以降は随時追加予定

[Cloudflare & Stripe入門] Cloudflare WorkersとStripeで、オリジナルの決済リンクを作ろう

「Cloudflare Workers」を利用すると、サーバーレスなアプリケーションをCloudflareのデータセンターにデプロイできます。 この記事では、これからCloudflare Workers(以下Workers)を触ってみようという方向けの、簡単なAPIの作り方を紹介します。 Stripe SDKを利用して、オリジナルのPayment Linksを作るAPIを作成しよう ここでは、「Stripeの決済フォームへ遷移するAPI」をWorkers上に作りましょう。 ユーザーがWorkersのURLにアクセスする Workers内でStripe SDKを利用して、Checko...

Amazon EventBridgeとStripeで、ノーコードに有料サーバー起動システムを作るワークショップ

このワークショップ資料は、JP_Stripesで開催された「AWSでサーバーレスなSaaSバックエンド開発ワークショップ」の後編資料です。 ここでは、AWS Step FunctionsとAWS CloudFormationを利用したWordPressサーバーの起動システムを構築します。 その後、Amazon EventBridgeと連携させ、Stripeのサブスクリプション申し込みと連動してサーバーが起動するようにします。 AWSマネージメントコンソールとStripe Dashboardのみで完結する、ローコードなワークショップ資料です。

Stripe APIマイグレーションガイド (Charge/Token API -> Payment Intents編)

Stripeでは、決済方法の増加や法的な要件の追加といった周りの状況の変化に応じて、大きくAPIを変更することがあります。 その場合、より多くの決済方法や機能・オプションを利用するためには、実装の変更が必要です。 このガイドでは、言語・FW別に、Charge APIやToken APIから、Payment Intentsを利用した決済フローへ変更する方法を紹介します。

Angularのmoduleでネストしたルーティングをやってみた

やりたかったこと /adminのように、特定のパス以下でのルーティングやファイル群をmoduleにまとめたい。 ベースアプリ 公式チュートリアルをやっていたので、これをリファクタリングした。 https://angular.jp/tutorial やったこと 1: 子ページのRoutingモジュールを作成 子ページにしたいコンポーネントのインポートとRouteの定義を実施。 ネスト先の場合、RouterModuleはforChildを使う。 import { NgModule } from '@angular/core'; import { RouterModule, R...

Next.jsとStripeではじめるシンプルなECサイト開発ワークショップ

Next.jsを利用することで、より多様なwebサイト・アプリケーションを開発できるようになります。 今回のワークショップでは、Next.jsとStripeを利用した、シンプルなECサイトをフルスクラッチする方法を体験できます。 なお、このワークショップドキュメントは不定期にアップデートを行います。 内容が前回開催時と変更されている場合もございますのでご了承ください。

Stripe Connectでアカウントを作成する際の住所の正規化に、GeoloniaのOSSライブラリで挑んでみる

年末のJP_Stripe配信で、Stripe Connectでの住所の書き方の記事が話題になりました。 https://gist.github.com/toruf-stripe/60293ec99a333a7af1daaca31b562741 その中で、「Geoloniaがリリースしている住所正規化ライブラリが使えるのでは?」と思いつきで言っちゃったので、どこまでいけるか試してみました。 使用するライブラリ https://github.com/geolonia/normalize-japanese-addresses 表記揺れや新旧字体など、住所入力でありがちな揺らぎを吸収してくれ...

DeveloperからDeveloper Advocateにキャリアチェンジして3週間経った話

DevRel Advent Calendar 2021 20日目の遅刻記事です。 これまで 2013年ごろからWeb業界に入り、PHPやWordPressでプログラミングを始めました。 2015年にAWSを利用するSaaS企業に転職し、そこからはAWS LambdaまたはAmplifyとNetlify / Stripe / Algoliaを組み合わせるようなアプリケーションをJavaScript / TypeScriptで色々作ったり保守したりしていました。 現在地 2021年11月末からDeveloper AdvocateとしてStripeにジョインしました。 まだ1ヶ月経って...

コミュニティ活動がきっかけでStripeに転職した話とコミュニティ採用について

2021/11/29から、Stripeにジョインしました。 自分の知る限りでは、日本でコミュニティ経由でStripeに入社したのは、自分が一人目なはずなので、そのへんの振り返りを兼ねて、Stripe Advent Calendar 1日目の記事としたいと思います。 StripeとStripeコミュニティへの関わり Stripeそのものを触り始め、Stripeコミュニティ(以降JP_Stripesと表記)への関わりが始まったのが2017年でした。 在籍していた会社でStripeを採用することになり、Stripeに関する情報がより知れる場所を探していた時期だったと記憶しています。そして...

Amplify CLIを使って、作成済みのDynamoDBテーブルをアプリにimportする

GraphQL (AppSync)やREST APIですでに作成済みのDynamoDBテーブルにアクセスしたい場合、Amplify CLIでデータをインポートする必要があります。 Storageとしてimportする必要がある これ結構な罠な気がしますが、DynamoDBのテーブルはStorageとしてimportします。 amplify import storageを実行すると、S3バケットかDynamoDBかを質問されるので、ここでDynamoDBを選びましょう。 % amplify import storage ? Please select from one of the b...

Serverless Next.jsをAWS CDKで立ち上げるサンプル

できれば公式のExampleに持っていきたいので、PRたててリクエスト中。 https://github.com/serverless-nextjs/serverless-next.js/pull/1522 マージされたらそっちベースにちゃんとした記事書き直す予定。 Serverless Next.jsでAWS CDK Serverless Next.jsといえば、Serverless Componentを使う印象でした。が、最近CDK版も出たみたいです。 定義イメージ import * as cdk from '@aws-cdk/core'; import { NextJSLa...

NestJSとStripe Checkoutで簡易的な商品注文ページをフルスクラッチしてみよう

Stripe Checkoutは少ないコード(ローコード)で単発・定期課金のカード決済システムを提供できるStripeのサービスです。この機能を、NestJSをつかったAPIと静的ホスティング機能を利用して、簡単な商品購入ページを作る本です。 # 触れるもの - NestJSで作るREST API - NestJSで静的なHTMLを配信する - Stripe Checkoutの決済URLの発行方法など NestJSの入門と、Stripe Checkoutのことはじめに役立てばと思い執筆しました。

【本編無料】Stripe CLIの本

Stripeから提供されているCLIツールのインストール方法や使い方について紹介します。 JP_Stripesなどのコミュニティイベントで紹介する内容を本としてまとめたものですので、本編については無料公開としています。 有料部分には個人的に使っているTipsのようなものを載せていますので、興味がある方はあわせてご覧ください。 ## 紹介しているCLI version v1.7.9 ## 前提としている環境 macOS / zsh

Alexaスキル開発を効率化するためのフレームワーク「Talkyjs」を作った背景など

https://talkyjs.dev/ この記事について Amazon Alexaのカスタムスキルを開発する際に使用するnodejsのライブラリ、「ask-sdk」をより便利に使えるようにするフレームワークを作りました。 そして例によってその紹介記事をまともに書いていないことを思い出したので、ここにまとめます。 背景: スキル開発100チャレンジからask-utilsまで 2018 -> 2019年に「#スキル開発100チャレンジ」というものに挑戦してました。 https://twitter.com/search?q=%23スキル開発100チャレンジ&src=h...

Amplify SDK + Reactでビルド後「Cannot read property 'call' of ~」

ブログにまとめるほどでもないけど、記録しておきたかったのでこちらに。 現象 Ionic ReactでSPA AWS Amplify SDKをいれてAppSync(GraphQL)を使う ionic buildを実行 ビルドした後のアプリでCannot read property 'call' of undefinedが発生する 原因 どうもIonic Reactが内部的に使っているreact-scriptがAWS Amplify SDKの地雷を踏むらしい。 Issue: https://github.com/aws-amplify/amplify-js/issues/2667...

WordPressのカスタムブロックで、その投稿のカテゴリ / タグを取得する

そのままデータが取れる系のAPIが見当たらない様子だったので、作ってみました。 コード import { useSelect } from '@wordpress/data'; const useCurrentPostCategories = () => { const categoryIds = wp.data.select('core/editor').getEditedPostAttribute('categories') return useSelect((select) => { const {getEntityRecords} = select('co...

AWS NorthstarでAWSっぽいReactアプリを作ってみる

AWSが突如としてリリースしたOSSが「AWS Northstar」です。 Aboutをざっと読む限り、「社内でのプロトタイピングなどを目的に作られたデザインシステム兼FWをオープンにしました」というところかなという感じですね。 せっかくなので触ってみます。 セットアップ 実際の実装ではTypeScriptを使っていますが、説明が面倒なのでこちらでは省きます。 $ npx create-react-app northstar $ cd northstar $ yarn add aws-northstar react-router react-router-dom Provid...

JestでsessionStorageの値を使ったテストをする

TypeScriptでいい感じにかけるライブラリとかが見当たらなかったので、自前で書いた覚書。 参考記事 https://stackoverflow.com/questions/51566816/what-is-the-best-way-to-mock-window-sessionstorage-in-jest https://github.com/facebook/jest/issues/2098 setupTests.ts const localStorageMock = (() => { let store = {}; return { getI...

AWS Certified Alexa Skill Builderに合格したのでやったことをまとめる

Zennで何か書いてみようと思ったので、最近受験したAWS認定試験のことについて振り返ります。 AWS Certified Alexa Skill Builderとは AWSの認定資格の1つで、「Specialty」というカテゴリに含まれています。 Alexaスキルの開発や運用に関する知識の試験ですので、Alexaスキル開発に注力したい方は受験しておくとよいでしょう。 また、Alexaスキルに関する人材を採用したい企業は、この資格を持っている人であればある程度の知識があると判断できるかなと思います。 試験結果 試験は制限時間170分で、1,000点中750点以上獲得する必要がある...