Articles
41 postsQiita、Zenn、noteで公開している技術記事やコラムの一覧です。

OpenSearch Serverless から Managed へ移行した話 ~日本語検索とカスタムアナライザーの壁があった件について~
はじめに AWS Amplify Gen2 で検索機能を実装する際、最初は管理の手間が少ない OpenSearch Serverless を採用しました。 「サーバーレスならインフラ管理不要だし、モダンでいいよね」——そんな軽い気持ちでした。 しかし結論から言うと、日本語検索の要件が出てきた時点で Serverless は詰みました。 カスタムアナライザー(Kuromoji 等)が使えないという致

OpenSearch パイプラインの数だけ積み重なる請求額に絶望して抗った話
はじめに OpenSearch Ingestion (OSIS) はサーバーレスでデータの取り込み・加工ができる非常に便利なサービスです。 しかし、小規模なプロジェクトで導入しようとした際、「コスト」 という大きな壁にぶつかりました。 特に、Amplify Gen2 などで複数の DynamoDB テーブル(例: Todo, Order, User...)を OpenSearch に同期したい場合

OpenSearch パイプラインの Lambda Processor で別テーブルを結合して Nested 構造を作る
はじめに AWS CDK で OpenSearch のインデックスに Nested 型フィールドを定義してフィルタやソートをできるようにするの記事では、Todo の中に assignees を Nested 型として持つ構造を扱いました。 しかし、実際の開発では「Todo テーブル」と「TodoAssignee テーブル」のように、データが複数のテーブルに正規化されているケースも多く存在します。

AWS CDK で OpenSearch のインデックスに Nested 型フィールドを定義してフィルタやソートをできるようにする
はじめに Amplify Gen2 × Amazon OpenSearch Service 実践解説 — OSISでDynamoDB連携をCDK構築 の記事では、基本的なデータ連携の構築方法について解説しました。 今回はその拡張として、取り込むデータ構造がより複雑な場合、具体的には「配列(リスト)」の中にオブジェクトを持つ Nested 型フィールドを定義し、それに対して検索(フィルタリング)やソ

Amplify Gen2 のCDKで環境識別子から固定のハッシュを生成して、リソース名の衝突と再作成を防ぐ方法
はじめに 前回の記事「Amplify Gen2 で OpenSearch を設定したらホットリロードの度にサンドボックス反映が15分かかるようになった話」では、OpenSearch Ingestion(OSIS)パイプラインのリソース名(物理名)がデプロイごとに変わってしまい、毎回作り直しが発生していた問題について解説しました。 その記事の解決策として、 実際のプロジェクトでは、環境識別子から短い

Amplify Gen2 で OpenSearch を設定したらホットリロードの度にサンドボックス反映が15分かかるようになった話
はじめに この記事は 「Amplify Gen2 × Amazon OpenSearch Service 実践解説 — OSISでDynamoDB連携をCDK構築」 で紹介した構成を、実際の業務プロジェクトに適用し、複数の開発者が同時に開発できるようにしたときに何が起きたか を振り返る実録記事です。 上記の記事では、Amplify Gen2 のバックエンドに OpenSearch / OSIS を

AWS CDK で Amazon OpenSearch Service のパイプラインは YAML の代わりに JSON で定義できる!
はじめに この記事は 「Amplify Gen2 × Amazon OpenSearch Service 実践解説 — OSISでDynamoDB連携をCDK構築」 の補足解説記事です。前編で YAML 文字列として示した OSIS パイプライン定義を、JSON オブジェクトで記述する場合の具体例を整理します。 前編では、OSIS(OpenSearch Ingestion Service)のパイプ

Amplify Gen2 × Amazon OpenSearch Service 実践解説 — OSISでDynamoDB連携をCDK構築
はじめに Amplify Gen2 で構築した Web アプリで OpenSearch を利用する機会があり、CDK と OpenSearch の設定について理解を深めました。本記事では、その知見を整理し、公式ガイドのコードをもとに実装の意図や実運用での注意点を解説します。 出典: Amplify Docs「Connect to Amazon OpenSearch for search and a

【参加レポート】Kiro Meetup Japan #1 に行ってきた — 仕様駆動 × エージェントの“いま”
9月3日(水)に開催された Kiro Meetup Japan #1 に参加しました。Kiro は AWS が発表した「仕様(Spec)を中心に進める」AIコードエディタです。要件定義から設計・実装計画・品質管理までを一貫で支援するという触れ込みのとおり、現場視点のナレッジがぎっしり詰まった良い会でした。会場はファインディ株式会社の大崎オフィス&オンライン、ハッシュタグは #kiro_findy

「ドキュメント駆動開発」と「仕様駆動開発」 : 現場でどう使い分ける?Kiroを使ってみてわかった本質
はじめに2025年、AWSが新サービス「Kiro」を発表し、Webエンジニア界隈でも大きな話題になりました。Kiroはバイブコーディングによる探索的な開発と、仕様駆動開発(Spec-Driven Development, SDD)による堅牢な開発の両立をうたっています。自分も実際にKiroを触ってみて、初めて“ガチ”の仕様駆動開発に出会いましたが、最初はやり方を勘違いしたり、自分のやり方を見直すき

AWSのAI搭載IDE「Kiro(キロ)」を実際に試した詳細レビュー
はじめに2025年7月にAWSがプレビュー版としてリリースしたAI搭載の統合開発環境「Kiro」を実際に使用してみました。普段はCursorというAIエディタを使っている私が感じた、Kiroならではの良さやCursorとの違いを解説します。 Kiroとは?「Kiro(キロ)」はAWSが開発したAIベースのIDEで、プロンプトと呼ばれる自然言語の指示を与えることで、AIが要件定義から設計、タスクの

BusinessプランにCopilot Coding Agentが来た!──AIチームメイトと開発する未来がはじまる
はじめにAWS Summit 2025に参加された皆さま、お疲れ様でした! 私は2日目に幕張メッセを訪れ、とても刺激的な時間を過ごしました。 今回は、最近試して感動した「GitHub Copilot Coding Agent」について記事をまとめたいと思います。普段からAIアシスタントでコードを書くのには慣れていましたが、このCopilot Coding Agentは一味違います。GitHub上

ChatGPTに2025年宝塚記念を予想させて買ってみた
はじめにまず最初にお断りしておきますが、筆者は競馬のことを何も知らない完全など素人です。 馬の名前もレースの仕組みもよく分かっていません。ただ、「AIのガチ予想に全部乗っかって本当に当たるのか?」という純粋な興味だけで、人生初めての馬券購入にチャレンジしました。 今年の宝塚記念(2025年)は、最新のGPT-4.5(Deep Research)を使ってAIに予想させ、そのまま実際に馬券を購入して

Nuxt3 × Amplify Gen2 で環境変数が自動上書きされない落とし穴とboolean型の注意点
はじめに AWS Amplify Gen2上にNuxt3アプリケーションをデプロイした際、「Amplifyの環境変数設定がローカルのように自動で上書きされない」という落とし穴に遭遇しました。本記事では、その仕様と注意点、さらに追加で発生したboolean型の取り扱いについても解説します。Amplifyで環境変数を利用する際の実践的な知見を共有します。 Nuxt3の環境変数の基本的な設定方法 まず、

AI時代、エンジニア職はどう変わる? ~日本ソフト業界の現状と生き残る人材像~
はじめに近年、生成AI(チャットGPTをはじめとする高度なAIツール)の急速な進化により、ソフトウェア開発の現場にも大きな変化が訪れています。コードの自動生成やテストの自動化など、これまでエンジニアが手作業で行っていた業務の一部をAIが肩代わりできるようになりつつあります。 こうした動向に伴い、エンジニアという職業そのものの将来性について不安や議論が広がっています。「プログラマーはAIに職を奪わ

AIで加速するエンジニアの情報発信:効率的な記事作成と思考整理の新スタイル
はじめに 「自分の得た知見を他のエンジニアにも共有したい」「便利なツールや解決策を広めたい」 エンジニアであれば、このように考えた経験は少なくないのではないでしょうか。私自身も、技術記事やアイデアの発信は、コミュニティへの貢献はもちろん、自身の知識整理やキャリア形成にも繋がる価値ある活動だと考えています。 しかし、「記事を書く時間がない」「文章を書くのが苦手」といった理由で、情報発信をためらったり

Amplify バックエンドにおける循環参照エラーの回避策
はじめに Amplify Gen2 を使用してバックエンドを構築する際、リソース間の依存関係が原因で循環参照エラーが発生することがあります。この記事では、特に S3 トリガー関数と他の関数/リソース間で発生しやすい循環参照エラーの原因と、resourceGroupName を用いた解決策について解説します。 循環参照エラーとは? Amplify でリソースをデプロイする際、CloudFormati

Amplify環境でAWSアカウント毎にLambdaレイヤーを切り替える方法
はじめに AWS Amplify を利用して開発環境と本番環境で AWS アカウントを分けて運用している場合、Lambda レイヤーの管理で問題が発生することがあります。特に、Amplify の管理外で手動でアップロードしている Lambda レイヤーがある場合に顕著です。 この記事では、そのような状況で発生する問題と、CDK のカスタムリソースと AWS SDK を利用して解決する方法について解

「とあるSNS」のAI機能について思うこと
はじめに最近、私が利用している「とあるSNS」上で、AIによる調査結果や要約を目にする機会が非常に増えたように感じています。これは、プラットフォームに統合された新しいAI機能によるものと思われます。非常に便利な機能である一方、その使われ方や情報の扱われ方について、個人的に少し気になる点が出てきました。この記事では、あくまで一個人の感想として、そのAI機能について思うこと、特に情報の信頼性や活用にお

エンジニアこそAIエディタで記事を書こう!情報発信を加速させる執筆術
はじめに日々進化するテクノロジーの最前線にいるエンジニアの皆さん、その知識や経験を発信してみませんか?「でも、記事を書くのは時間がかかるし、文章力にも自信がない…」そう感じている方も多いかもしれません。技術的な知見は豊富でも、それを分かりやすく伝える文章を書くのは、また別のスキルが必要ですよね。 そんなエンジニアの皆さんにこそ、AIエディタの活用をおすすめします。なぜなら、AIエディタはあなたの

手軽さと落とし穴?サプリメントでビタミンを摂るメリット・デメリット徹底解説
はじめに私たちの健康維持に欠かせない栄養素、ビタミン。本来は日々の食事からバランス良く摂取することが理想ですが、忙しい現代生活の中では、なかなか難しいと感じる方も多いのではないでしょうか? 近年、手軽にビタミンを補給できるサプリメントへの関心が高まっています。ドラッグストアやオンラインショップでも、多種多様なビタミンサプリメントが並んでいます。しかし、「本当に効果があるの?」「摂りすぎても大丈夫

街角の広告から考える、システム開発の「創造性」と「再現性」〜エンジニアよ、バランスを取れ!〜
先日、街を歩いていると、あるビジネスフレームワークの広告動画が目に飛び込んできました。そこでは、「再現性」と「クリエイティブ」という、一見相反する二つの概念が巧みに融合されていました。 その時、ふと疑問が湧きました。「システム開発の現場において、この『再現性』と『創造性』はどう位置付けられるのだろう?」 と。 普段、私たちはバグのない安定したシステムを作るために「再現性を重視」し、一方で、新し

チームの技術力UP!輪読会で得られる効果と実践方法
皆さん、こんにちは!日々の業務お疲れ様です。ITエンジニアの皆さんにとって、技術トレンドのキャッチアップやスキルアップは永遠のテーマですよね。 特に最近は、AI技術の進化が目覚ましく、私たちITエンジニアも常に最新情報を追いかける必要があります。実は、この記事を書くきっかけになったのも、まさにAIツールのキャッチアップのために、私の会社で輪読会を始めることになったからなんです。 そこで、今回は

Google WorkspaceのGemini Advancedで4つのモデルを選択できるように! 2つのProモデルを比較してみた。
皆さん、こんにちは! システムエンジニアのToMYF(トミー)です。 実は最近 Gemini を愛用していて、仕事中は常にGoogleカレンダーやGoogleメールに加えて、Geminiを開いて働いています。 今週もいつものように Gemini を開いたらなんと、4つのモデルが選択できるようになっていたことに気が付きました! 今までは Google Workspace 版の Gemini Adv

カードゲームは思考力アップの秘密兵器!? 親子で楽しむコツをコミカル解説
子どもが夢中になって遊べるものといえば、テレビゲームやスマホゲームが真っ先に思い浮かぶかもしれません。でも、「画面ばかり見ていて大丈夫かな?」と心配になる親御さんも多いですよね。そこで今回は、昔から親しまれている カードゲーム に注目! 実はカードゲームには、頭をフル回転させる仕掛けがたくさんあるんです。子どもはもちろん、大人もハマること必至! 思考力アップに役立つポイントを、ちょっとコミカルにご

Cloudflareのデータベースサービスを比較してみた
皆さん、こんにちは! システムエンジニアのToMYF(トミー)です。 せっかくCloudflareのサービスを活用したハンズオンのレポートを投稿したので、今回はエンジニアらしくシステム開発に関連したお話を持ってきました。 エンジニアなら一度はCloudflare触ってみたくなりますよね。 私もその一人です。何かサービスを作って触ってみようと思っていたのですが、その際にCloudflareでデータ

Cloudflare WorkersでLINEミニアプリをホスティングしたハンズオンレポート
はじめに先日、2025年2月6日開催の 「Cloudflare×LINEミニアプリで実践!モダンな予約システムハンズオン」 に参加してきました。 このイベントは、Cloudflareのサービスを活用してLINEミニアプリの開発を体験する内容で、登壇者は LINE APIエキスパートの三浦 耕生さん と Cloudflare社エバンジェリストの亀田 治伸さん でした。 なぜ参加したかというと

ボードゲームで社内のコミュニケーションが円滑化?
先週の金曜日に会社の同僚4人でボードゲームカフェ「JELLY JELLY CAFE」に行ってきました。 普段は仕事上で絡みが少ない人とも、ボードゲームを通じて楽しく親睦を深めることができたので、会社内でのコミュニケーションにボードゲームが与える影響について考察してみます。 300種類以上のボードゲームが楽しめる「JELLY JELLY CAFE」今回お邪魔した「JELLY JELLY CAFE

ついに花粉症デビュー…? くしゃみの猛威に怯える日々
皆さん、こんにちは! ここ数年、春の訪れとともに憂鬱な気分になる人が増えているようです。そう、花粉症です。 実は私も、つい最近、花粉症らしき症状に悩まされるようになりました。 数年前までは「花粉症? なにそれ美味しいの?」状態だった私。周りの人が鼻をすすり、目をこすっていても、全く他人事でした。 しかし、今年の春は様子が違います。 まだ涙や鼻水、目の充血といった典型的な症状は出ていないも

グレシャムの法則と生成AI記事:質と量のバランスを見極める時代
グレシャムの法則と生成AI記事:質と量のバランスを見極める時代 グレシャムの法則とは何か? グレシャムの法則は、経済学で広く知られる原則であり、一般的には“悪貨は良貨を駆逐する”として説明されます。この法則は、質の異なる貨幣が同じ額面で流通すると、価値の低い貨幣が市場で優先的に使われ、価値の高い貨幣は貯蔵されて流通から消える現象を指します。簡単に言えば、価値が低いものが価値の高いものを駆逐する

🤖 新年早々にコロナに感染して知ったウイルス事情
はじめに 新年を迎えたばかりの頃、私は1年間風邪を引くこともなく健康に過ごしていましたが、突然コロナウイルスに感染してしまいました。その際に調べて得た情報を、AIを使ってまとめてみました。 コロナとインフルエンザの同時検査 最近、コロナウイルスとインフルエンザを同時に検査できるキットがあることを知りました。このキットを使用すると、コロナの結果がなんと1分もかからずに出るため、その迅速さには驚

Heroku Connect で同期した Sales Cloud のデータを pgvector でベクトル検索してみた
:::note Heroku Advent Calendar 2023 24日目の記事です🎄 ::: はじめに はいどうもー!リバネス開発チームのトミー(@tomyf)です٩( 'ω' )و 今回は、最近発表された Heroku Postgres 15 の pgvector の機能を使う機会があったので、初めて知ったことや気がついたことを記事にしたいと思います。 最近、弊社の Sa

Data Cloud でID解決したデータをAPIで取得して Heroku Connect 経由で Sales Cloud に連携する
:::note Heroku Advent Calendar 2023 21日目の記事です🎄 ::: はじめに はいどうもー!リバネス開発チームのトミー(@tomyf)です(`・ω・´) 弊社にSalesforceを導入してから10年が経とうとしています。 今回は Data Cloud を使うことになったので、蓄積された20万件以上のユーザアカウントの中で、同一人物と思われるユーザア

Laravel 9 から Google Drive API で共有ドライブを操作する
:::note Laravel Advent Calendar 2023 9日目の記事です🎄 ::: はじめに みなさん、お久しぶりです!リバネス開発チームのトミー(@tomyf)です! 今回は Google Drive の共有ドライブをWebサービスから管理したいという要望があったので、動かす所まで検証しました。 システムの概要としては、複数のGoogleドキュメントをまとめて、冊

レベル別解説! Laravel のファイルの作り方
はじめに リバネス開発チームのトミー(@tomyf)です。 前回「[Laravel9 の app ディレクトリ構成はこれに決まりだ!](https://qiita.com/tomyf/items/4743aab2777177a78638)」という記事を出したのですが、慣れていない人がいきなり理解するには難しいと思いましたので、段階的に実装できるように解説していきます。 最近社内でバックエ

Swift 5 で画面遷移時にフルスクリーンモードのモーダルのタッチアクションに処理を渡す
はじめに 普段は Laravel や Nuxt を使って Web アプリケーションを開発しているのですが、年に数回 iOS アプリに改修が入ることがあります。 Swift を触っていない期間が空いていて、これどうするんだっけ?という事が多いので、メモ代わりに投稿します。 概要 リーダー画面(ReaderPage)でQRコードを読み込んだら、同意画面(AgreementPage)をモー

Laravel9 の app ディレクトリ構成はこれに決まりだ!
はじめに みなさん、初めまして!リバネス開発チームのトミー(@tomyf)です。 最近弊社の求人を出すようになりましたので、少しでも開発のイメージがつきやすいように書いていきたいと思います! 弊社では、アプリケーションの一部に Laravel を使用しています。 Laravel を初期インストールした段階で、ある程度ディレクトリ分けされていますが、そこから先は開発チームの方針や開発者個人

Lambda で MedliaLive の稼働状況を監視して Slack に通知するようにした話
:::note AWS LambdaとServerless Advent Calendar 2022 2日目の記事です🎄 ::: はじめに みなさん、おはようございます!リバネス開発チームのトミー(@tomyf)です😀 弊社では、自社サービス向けのライブ配信システム(以降、ライブ配信システムと表記します)で AWS Elemental MedliaLive を活用しています。 ライブ

Laravel9 + S3 (MinIO) で署名付き URL を発行してファイルをアップロードする
概要 元々 Heroku 上で Laravel 経由で S3 にファイルをアップロードしていたのですが、ファイルのサイズが大きいとタイムアウトエラーになっていました。そのため Laravel でアップロード用の署名付き URL を発行し、クライアントから直接 S3 にアップロードすることになりました。 ローカル環境では S3 の代わりに MinIO を利用できるように構築したので、備忘録とし

Laravel9 + Postgres + Heroku Connect のプロジェクトでスキーマの指定を省略する
概要 Salesforce と連携したアプリケーションの開発をする際に、便利な設定を見つけたので記事にしました。 Salesforce のデータを Heroku Connect によって Heroku Postgres とデータ同期をすると `salesforce` というスキーマが作成されます。 今までは Eloquent モデルにテーブル名を指定する際に、下記のようにスキーマ名を入れてい

Laravel9 + Jetstream + Passport で OAuth2 サーバを構築する
概要 ログインが必要なWebサイトが複数存在し、それぞれでログインページを作成していましたが、ログインを扱う箇所を一つに纏める目的で OAuth2 サーバを構築することになりました。 事前調査を兼ねて Laravel9 で構築したので、備忘録としてまとめます。 GitHub: https://github.com/tomy-develop/proto-laravel-9 前提条件 -