Hello! I‘m Hidetaka Okamoto

JavaScriptを利用して、ServerlessなWebアプリケーションの開発を行う。 また、StripeのDeveloper Advocateとして、オンライン決済の組み込み方法の紹介やサンプルコードの作成、イベントでの登壇などに取り組みます。

WordPressのREST APIエンドポイントを追加する方法

WordPressのREST APIは/wp-jsonから始まるパスで提供されており、独自のAPIを追加して外部サービスと連携する方法を紹介しています。rest_api_initフックでregister_rest_routeを使用し、プラグインコードを追加するとAPIが追加されます。第一・第二引数で指定したパスでAPIにアクセスすることができ、APIの情報は自動的に登録されます。また、正規表現を使用してパスに商品や店舗のIDなどを渡すこともできます。さらに、バリデーション処理を追加することで、リクエスト内容のバリデーションとエラーメッセージの表示が可能です。最後に、WordPressのREST APIを活用することで、ブロック開発に役立つことも紹介されています。

SupabaseのDatabase Webhookを試してみた

SupabaseのWebhook機能について試してみた結果を報告しています。WebhookはAPIリクエストをDB操作と連動して外部に送ることができます。デフォルトではINSERTに対してイベントが発火し、指定したURLにJSON形式のデータが送信されます。開発時はngrokなどを使用してローカル環境にProxyを設定する必要があります。Webhookを活用することで、サービス開発とデータ連携を効率化することができますが、双方向の連携には注意が必要です。

WordPressのカスタムブロックで、子ブロック(InnerBlock)を扱えるようにする覚書

レイアウト系や認証エリアなどの機能を備えたブロックを作成する場合、InnerBlocksを使用する必要があります。InnerBlocksを編集画面に配置し、コードをビルドすると、ブロックの中にブロックを配置できるようになります。保存時にもInnerBlocksに対応し、配置した子ブロックも保存されます。また、allowedBlocksを使用して追加できる子ブロックの種類を制限したり、templateを使用して子ブロックの初期配置をカスタマイズすることもできます。詳細は参考記事をご覧ください。

WP APIのレスポンス内容をPHPでカスタマイズする方法

WP APIを使ってWordPress内の記事データをREST形式のAPIリクエストで取得できます。レスポンスカスタマイズ方法として、_fieldsパラメータを使用する方法や、register_rest_field関数を使用してカスタムなデータを追加する方法が紹介されています。ただし、デフォルトで提供されているAPIのレスポンス内容を減らすことは非推奨であり、注意が必要です。カスタムフィールドの情報を含める場合には、get_post_meta関数と組み合わせることができます。また、追加したフィールドには_fieldクエリを使用して必要なデータのみを取得することもできます。

WP APIで必要なデータだけレスポンスに含める方法

2023年2月にWordCamp Asia 2023で聞いた話をようやく試せたので、覚書です。WP APIのレスポンスは情報が豊富であり、不要な情報を絞るために_fieldsクエリパラメータを利用することができます。また、JavaScriptでAPIを利用する場合はURLSearchParamsを使用して_fieldsを指定することができます。参考記事に詳細があります。

Supabase AIを使って、SQLの構文エラーを修正する

SupabaseのダッシュボードのSQL Editorでは、構文エラーのSQLを実行するとSupabase AIボタンが表示されます。クリックすると、AIがサジェストと説明を提供してくれます。追加したい場合は「Accept addition」を押し、元のSQLを置換したくない場合は「Discard」を押します。AIのサポートは非常に強力で、SQLの試行錯誤をサポートしてくれます。Supabase AIは、SQLの学習に役立つでしょう。

SupabaseでDB Functionを試してみる

最近、SQLにも関数があることを知りました。Supabaseでも関数を作成できるので、SQL Editorを使って入門しました。関数はCREATE FUNCTIONで定義し、処理の本体は$$で囲んで書きます。関数の定義には関数名・戻り値の型・実行言語を指定します。戻り値がテキストの関数を作成する例を紹介しました。また、テーブルの情報を取得する関数や複数件取得する方法も説明しました。関数は後片付けにDROP FUNCTIONで削除できます。参考記事: https://supabase.com/docs/guides/database/functions

LangChain.jsでChatの履歴をMomentoに保存させてみた

Chat形式のUIを提供する際には、過去の会話履歴を保存する必要があります。この記事では、MomentoのCacheに保存する方法を紹介しています。MomentoのSDKを使用するためには、MomentoのAPIを呼び出すためにSDKをインストールする必要があります。また、Cloudflare Workersなどの一部のエッジサービスでは、Web SDKをインストールする必要があります。具体的なコードのセットアップ方法も述べられています。コードの実行例や関連記事へのリンクもあります。

Supabase AuthをNext.jsで触ってみた-1

公式のチュートリアルに従って、Supabaseを使用した認証画面をNext.jsで作成しました。手順を紹介します。まず、create-next-appを使用してNext.jsアプリをセットアップしました。次に、Supabase CLIを使用してSupabaseプロジェクトをセットアップしました。.env.localにプロジェクトIDとAPIキーを設定し、SDKをインストールしました。ログインページを作成し、ユーザーの作成とログインを試しました。セットアップに時間がかかりましたが、便利でカスタマイズ可能なAPIも使用できるため、CLIがあることは素晴らしいと感じました。チュートリアルの続きは後日紹介します。

registerBlockVariationで、WordPressのコアブロックを拡張したブロックを作ってみる

WordPressにはデフォルトでさまざまなブロックが用意されていますが、ブロックをカスタマイズしたい場合もあります。そのようなケースでは、「ブロックの拡張方法」が役立ちます。まず、create-blockコマンドなどを使用してブロックプラグインをセットアップし、registerBlockVariation関数を追加します。これにより新しいブロックが作成されます。また、コードでブロックの設定値をカスタマイズすることもできます。さらに、inserterプロパティを使用すると、コマンドや本文内からもブロックを追加できます。innerBlocksプロパティを利用すると、子ブロックも指定できます。カスタムブロックを作成する際には、保守コストに注意しながら検討することが重要です。

Spoken events

  1. Company
    JP_Stripes Online Meetup Vol.4~ECやサブスク決済を手早く作るには?~
    Role
    ローコード、ノーコード志向の人のためにStripe使いこなし術
    Date
    2022-06-29T11:00:00.756Z
  2. Company
    Stripe&Ionic Reactハンズオン - Ionic Meetup #20 札幌
    Role
    オンライン決済とStripeについて
    Date
    2022-06-19T05:00:00.000Z
  3. Company
    JP_Stripes in サッポロ Vol.7 Stripe再入門 & アプリ開発入門
    Role
    Stripe 再入門 & Stripe Appsではじめるサービス連携・UIカスタマイズ
    Date
    2022-06-18T06:00:00.000Z
  4. Company
    [Web技術でモバイルアプリをつくる] Ionic Meetup #19 Tokyo
    Role
    Next.jsでIonic Reactを利用したWebサイトを開発した話
    Date
    2022-05-29T05:00:00.000Z
  5. Company
    LINE de 決済勉強会!LINE API×Stripeエキスパート秘伝のノウハウを共有!
    Role
    Stripe Search APIを利用した、LINEとStripeの顧客情報連携
    Date
    2022-05-16T10:00:00.000Z
  6. Company
    JP_Stripes What's new 2022/04
    Role
    Date
    2022-04-26T03:15:00.000Z
  7. Company
    【Stripe Japan & Engineer Cafe 主催】Next.jsではじめるシンプルなECサイト開発ワークショップ
    Role
    Date
    2022-04-22T04:00:00.000Z
  8. Company
    JP_Stripes DeepDive 2022/04
    Role
    Stripeでクレカ決済に加えて、 コンビニ決済/銀行振込を追加する
    Date
    2022-04-20T03:15:00.000Z
  9. Company
    PHPerKaigi 2022
    Role
    AWS LambdaとStripeでオンライン決済・定期課金APIを実装しよう
    Date
    2022-04-11T06:00:00.000Z
  10. Company
    AWS CDK Conference Japan
    Role
    AWS CDKを利用して、 Next.js/Stripeで構築したフルスタックSaaSアプリをデプロイ・管理する
    Date
    2022-04-09T03:00:00.000Z
  11. Company
    JP_Stripes What’s new in 2022/02
    Role
    コンビニ決済/Payment Links API他
    Date
    2022-03-08T03:15:00.000Z
  12. Company
    AWS エバンジェリストシリーズ AWSの基礎を学ぼう - 特別編 AWS CDK v2 ハンズオン
    Role
    Stripeを組み込む際の CDK実装Tips
    Date
    2022-02-26T04:15:00.000Z
  13. Company
    Shifter ミートアップ!Shifter Headless ではじめる Headless CMS 入門
    Role
    Stripe / Next.js / AWSによる Headless WordPress活用法
    Date
    2022-02-25T11:00:00.000Z
  14. Company
    ジャムジャム!!Jamstack_5
    Role
    microCMSとStripeを使ったJamstackなECサイトの作り方(Next.js篇)
    Date
    2022-02-22T10:30:00.000Z
  15. Company
    JP_Stripes DeepDive
    Role
    Stripe Quotesで見積書発行から請求業務をノーコードで管理しよう
    Date
    2022-02-10T03:15:00.000Z
  16. Company
    JP_Stripes What's new 2022/01
    Role
    Date
    2022-01-13T03:15:00.000Z