Nealle Developer's Blog
https://nealle-dev.hatenablog.com/
株式会社Nealleのエンジニアによる開発者ブログ
フィード

BigQueryで自由記述形式のデータを分類する方法 Part 2 ~ Vector Search 編 ~
22

Nealle Developer's Blog
はじめに さて今回はBigQueryで自由記述形式のデータを分類するPart 2ということで、予告通りVector Search を利用したテキスト分類を手軽にできるのか検証していきたいと思います。 (前回のブログでVector Search Indexと述べてますが、Vector Searchを利用するという部分が趣旨になります。) 利用するデータはPart 1と同じ駐車場申し込みのキャンセル理由となりますがインデックスの作成なども検証したかったので前回よりもデータが多めです。 検索対象となるデータが5000件に満たない場合はそもそもインデックスを作成する意味がないため、Vector Sea…
4日前

LLMにコンテキストを効率よく渡すには?【前編】 〜大量のファイル群から欲しい部分だけ〜
115

Nealle Developer's Blog
はじめに こんにちは、ARCHチームの野呂です。 本当は近所の美味しいラーメン屋についてのテック(?)ブログを書こうと思っていたのですが、社内で行われている「LTL会*1」というイベントで共有するために作ったスライドがあったので、先にそれをブログにしたためました。 近所の美味しいラーメン屋は永久に不滅*2ですが、LLMの話題は賞味期限が短いからです。 コーディングエージェントなどのLLMに効率よく追加の情報を渡すためのTipsと、そのための基礎知識について書いておりますので、興味あれば是非ご一読ください。 でも、近所の美味しいラーメン屋についても後で絶対に書きますからね。 たとえ上司や同僚の反…
4日前

AWS WAFでユーザー体験やSEOを損なわずに、厳しめのレートリミットを設定する
36

Nealle Developer's Blog
SREの大木 (@2357gi)です。最近スノボのオフトレにトランポリンに行ったら、初めてスノボした時ぐらい体がバキバキの筋肉痛になりました。オススメです。 すでにAWS WAFを導入し、スクレイピング対策としてレートリミットも設定しているものの、GoogleBotなどをブロックしたくないため緩い閾値しか設けることができない状態だったのですが、「厳しめのレート制限でスクレイピングを遮断しつつ、Bot Control のラベリングを用いて必要な Bot を許可する」ことを実現したので、記事にしておきます。 背景 弊社はインターネット上で月極駐車場の検索から契約まで行えるwebサービスである「Pa…
7日前

バッチ監視改善 ~手動再実行のトイル削減とNAT gatewayコスト急増の失敗談付き〜
26

Nealle Developer's Blog
はじめに SREチームの森原(@daichi_morihara)です。今日はバッチの監視周りの取り組みについて共有していこうと思います。 これまではバッチのモニタリングに関して、エラーログの検知・対応のみの最低限の監視を行っている状態でした。そこでバッチ関連のオブザーバビリティの強化およびトイル削減のために以下の3つに取り組みました。 バッチ失敗時の自動再実行の設定 バッチ毎の実行時間や実行結果・インフラレイヤーのメトリクスをまとめたDatadogのダッシュボード作成 DatadogのAPM導入 それぞれの実装において得た学びや注意点を紹介していきたいと思います。 バッチのインフラ構成図 ニー…
7日前

Playwright移行プロジェクト奮闘記 〜現場で直面した3つの壁と、乗り越えるためのTips集〜
44

Nealle Developer's Blog
はじめに 本記事は、前回の記事「Playwrightへの移行 〜ノーコードツールから乗り換えた理由と、その裏側〜」 nealle-dev.hatenablog.com の続編です。 前回は、私がノーコードツールからPlaywrightへの移行を決断した背景や、準備・設計段階での工夫についてお話ししました。 今回はその続きとして、移行プロジェクトの現場で実際に直面したリアルな課題や、それをどう乗り越えてきたのか、そしてその過程で得られた実践的な運用ノウハウやTipsをご紹介します。 この記事が、すでにE2E自動化やPlaywrightを使い始めている方、そして実装や運用で壁にぶつかっている方にと…
8日前

Datadog ErrorTracking を導入して通知アラート数を1/3以下にしました
Nealle Developer's Blog
こんにちは。最近は湿気にやられ気味のSREチームの高 (@nogtk) です。 先日、アプリケーションのエラー監視改善の一環として、Datadog ErrorTracking を導入しました。 厳密には、エラーログをデータソースとして扱う ErrorTracking for Logs を導入しております。長いので、以降本記事では ErrorTracking と呼んでいきます。 実際に導入するまでにやったことをご紹介したいと思います。 ErrorTracking 導入前のアプリケーション監視のやり方 導入前のアプリケーションのエラー監視としては、開発チーム単位で分担しながら以下のように行っていま…
8日前

データカタログを社内公開するためにdbtソース定義ファイルを作った話
Nealle Developer's Blog
はじめに ソース定義ファイルとは? ソース定義ファイルはなぜ作る? yamlの生成 テーブル説明・カラム説明の追加 やってほしいこと 追記対象 カラム説明 おわりに はじめに こんにちは、Analyticsチームの清水です。 ガーゴイルゲッコーというヤモリ(8歳)とサイベリアン(1歳4ヶ月)を飼っています。とってもかわいいです。 バナナを食べています(左)ビーズクッション占領猫(右) 前回のブログでは、dbtのデータカタログ機能を使ってみた話を書かせていただきました。 nealle-dev.hatenablog.com その後、社内でよく参照されているトップ50テーブルのソース定義ファイルを作…
9日前

Playwrightへの移行 〜ノーコードツールから乗り換えた理由と、その裏側〜
Nealle Developer's Blog
こんにちは、ニーリーでSET(Software Engineer in Test)を担当している宮内です。 本記事では、私が入社して最初に取り組んだ「E2Eテスト自動化ツールの移行」について、特に「なぜ移行を決断したのか」という背景と、「移行の準備・設計で工夫したこと」を中心に、その舞台裏を書きます。 E2E自動化ツールの移行は、単にツールを置き換えるだけではありません。現場の運用や開発体制にも大きな影響を与える、重要な取り組みです。 「ノーコードツールからコードベースへの移行を検討している」 「E2Eテスト自動化の体制づくりに、まさに今悩んでいる」 そんな方々にとって、私が歩んできた道のりが…
9日前

Amazon Auroraのエンドポイントを変えずにKMSキーを交換する方法
Nealle Developer's Blog
はじめに こんにちは。SREチームの森原(@daichi_morihara)です。最近はゴルフにはまっており、先日初めてラウンドをまわりました。スコアは138😇😇😇、伸び代ですね。 今回はAmazon Auroraのクロスアカウントバックアップの実装と、その際に生じたAmazon AuroraのKMSキーの差し替え作業で得た学びを共有しようと思います。 前提 AWS Backupというサービスを利用してAmazon Auroraのクロスアカウントバックアップを実装しました。AWS BackupはAmazon Auroraに限らず、RDSやDynamoDBなどの多くのサービスのバックアップを簡単…
10日前

既存の Angular アプリケーションの Zoneless 化への道のり
Nealle Developer's Blog
はじめに こんにちは、ARCH チームの立川です。 先日、Angular v20 がリリースされましたね。 https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301 今回のリリースで v18 から Experimental であった Zoneless(Zone.js に依存しない変更検知) が Developer Preview に昇格しました。新しくアプリケーションを作成される方はインストール時に Zoneless を選択するかどうかの確認が入ります。まだまだ先の話かと思いますが、現在 Zone.js を使用しているアプリケーシ…
10日前

BigQueryで自由記述形式のデータを分類する方法 Part 1
Nealle Developer's Blog
はじめに Park Directでは利用者が駐車場契約の申し込みをキャンセルする時に理由を自由記述形式で入力してもらっています。なぜなら、サービスの改善や顧客満足度向上に不可欠な情報だからです。 また、 キャンセル理由をカテゴリに分類することで、 傾向の把握: どんな理由でキャンセルが多いのか具体的な傾向を数字で把握する 課題の特定: サービスやプロダクトの改善点、顧客サポートの強化すべき点を明確にする 優先順位付け: 影響の大きいキャンセル理由から優先的に施策を講じる 施策の効果測定: 改善施策がキャンセル率にどう影響したか、カテゴリ別に測定できる が行いやすくなります。 しかし、自由記述形…
11日前

DevHRの募集を始めました!
Nealle Developer's Blog
プラットフォーム開発グループの菊地(@_tinoji)です。自グループのマネジメントをする傍ら、採用と技術広報でもミッションを持って活動しています。 この度ニーリーはDevHRのポジションを新設し、募集を開始したので宣伝です! 求人票はこちら! まずは結論からってことで求人票を貼ります。 herp.careers ↑はすでにDevHR的な経験がある方向けですが、未経験歓迎な求人も作りました。理由については後述します。 herp.careers まずは話だけ聞いてみたい方はカジュ面へ! youtrust.jp 応募ボタンはポチっていただけましたか??? ポチらなかった方は続きをお読みください^^…
11日前

【LAPRAS Engineer Talk #11】で「染み出す」カルチャーについて話しました!
Nealle Developer's Blog
プラットフォーム開発グループの菊地(@_tinoji)です。 先日、LAPRASさんのYouTubeチャンネルのシリーズ LAPRAS Engineer Talk にCTOの三宅と一緒に出演させていただき、動画が公開されたのでぜひご覧ください。 先日と言いつつ4月公開なのは許してください。いつの間にか夏が来ていた、、、 ニーリーのプロダクト組織の「染み出す」カルチャー 動画の中では、お客様に郵送する書類を封入する作業にエンジニアが積極的にヘルプに入るエピソードや、カルチャーを維持していくためには継続的な発信や採用で妥協しないことが必要といったお話をしました。 今回お話ししたのは主に「事業への」…
14日前

地方都市でフルリモートって実際どうなの?デスク周りとリモートワーク環境について
Nealle Developer's Blog
はじめに こんにちは!Park Direct開発2グループの畠山です。 近年、働き方の選択肢として「フルリモートワーク」が一般的になり、都心から離れた場所で働くことに興味を持つエンジニアの方も増えているのではないでしょうか。 私自身も現在、宮城県仙台市で暮らしながら、フルリモートで開発業務に携わっています。 この記事では私のデスク環境のご紹介から、地方都市でのリモートワーク、そしてそれを支えるニーリーの文化についてご紹介したいと思います。 デスク環境 リモートワークにおいて、仕事のパフォーマンスを左右するといっても過言ではないのが「デスク環境」です。 ウチのメンバーこだわりのデスクたちをご紹介…
15日前

Angular Signals を用いて表示フォームとバリデーションの切り替えを効率化する
Nealle Developer's Blog
はじめに こんにちは、ARCH チームの立川です。 今回は、Angular Signals を用いて表示フォームとそのバリデーションの切り替えを効率化する方法ついてご紹介します。ユーザーの選択によって入力フィールドが動的に表示・非表示になったり、それに伴ってバリデーションの付け外しが必要になったりするフォームは、コードが複雑になりがちです。この記事では、そうした切替フォームを Angular Signals や Effects を活用して、よりシンプルかつ宣言的に実装する方法を提案します。複雑なフォームのロジックを整理し、保守性の高いコードを書くためのヒントになれば幸いです。 今回のサンプル …
15日前

構造化ログのユニットテストでassertLogsが効かない理由とStringIOを使った解決策
Nealle Developer's Blog
こんにちは。 Nintendo Switch 2 の抽選予選に無事コマを進め続けている、SREチームの高 (@nogtk) です。早く当選してこの大会からドロップアウトしたいものです。 今回は、構造化ログのユニットテストを書いたときのプチハマりと、それを解決した方法についてご紹介したいと思います。 なぜログのテストコードを書いたか 前回のブログで、Django アプリケーションが出力するログを構造化したお話をご紹介致しました。 nealle-dev.hatenablog.com ログを構造化するにあたって、出力されるログのエントリを定義しそれに沿ってログが出力されるような実装を追加しています。…
16日前

TypeScriptの条件分岐をスマートに記述するためのTips
Nealle Developer's Blog
はじめに こんにちは、ARCH チームの立川です。 今回が初めてのテックブログになります。 先日、社内で「条件分岐をスマートに評価する」というテーマで、TypeScript(JavaScript)における条件分岐の書き方について発表する機会がありました。古いコードに触れる中で、見通しの悪い記述を多く見かけることがあったため、発表に至った経緯があります。 この記事では、その発表内容をベースにコードの可読性を高める条件分岐のテクニックをご紹介します。基礎的な内容ではありますが、少しでも役立つヒントがあれば幸いです! 三項演算子をよりスマートに使うためのヒント 三項演算子は非常に便利ですが、状況によ…
17日前

ちょっとしたライブラリを書いた話: 処理の前提変数確保
Nealle Developer's Blog
こんにちは、ニーリーの佐古です。 現在開発速度や開発者体験の向上のため、取り組みの諸々を遂行しています。 事前準備がかさばって本題にフォーカスできない問題 さあ本題です。本題までが長い話は読む気がなくなりますね。 成長期のプロダクトをDjangoで開発していると あまり型情報が信用できなかったりそもそもなかったり 値すら無かったり するケースがあると思います。Pylanceなどのご利益にあずかろうと思うと ガードなりチェックなり書くことになるのですが 有無チェックとデフォルトをやると本題までが長い こういうことになりがちですね。 真面目に読まなくてよいです。 if val0 is None: …
23日前

CIの時間を(できるだけ楽して)半分にしてみた
Nealle Developer's Blog
こんにちは、ニーリーの佐古です。 現在開発速度や開発者体験の向上のため、取り組みの諸々を遂行しています。 開発者体験とCI 天井の雨漏りが4か月ほど止まらないので私の開発者体験は酷いことになっています。 さて、皆さんCIの待ち時間はお好きですか?私は大嫌いです。 弊社バックエンドリポジトリのPR時CIはプロダクトの成長に合わせて実行時間が順調に伸びており、 開発速度と開発者体験の双方に悪影響をもたらしていました。 実は別チームで改善のための試みがなされたことはあったのですが、 そこで行き当たった問題をある程度解決してどうにかエピソードになる程度の成果を得られたので 簡単に記しておこうと思います…
24日前

【dbt活用事例】データカタログから始める、AI活用可能なデータ分析基盤への道のり
Nealle Developer's Blog
はじめに TROCCOでdbtジョブを実行・ワークフロー化 dbtのドキュメント生成機能を試してみた 社内のデータ利活用者に公開したい 作成した構成 おわりに・今後やりたいこと はじめに Analyticsチームの清水です。 今回はアナリティクスチームの業務紹介として、将来のAI活用を本格的に見据えたデータ基盤変革の第一歩、 データマートおよびデータカタログ整備の取り組みについてご紹介します。 現在のデータ基盤には、要所要所でViewやデータマートとなるテーブルが手動で作成されており、バージョン管理やメタデータ管理ができていない状態でした。 Analyticsチーム内だけであればコミュニケーシ…
25日前

フレームワークをつかいわけて いい感じに「ふりかえり」をしよう!
Nealle Developer's Blog
はじめに Park Direct開発2グループの畠山です。先日在籍エントリを書いて、筆が乗ってきたので続けてもう1本書きました💪 スクラム開発における「ふりかえり」は、チームが継続的に成長するための大切な時間ですが、「毎回同じような話ばかりでマンネリ化している」「具体的な改善策に繋がらない」「メンバーの発言が少なく、どうすれば良いか分からない」といった課題を感じている方もいらっしゃるのではないでしょうか? この記事では、私たちのチームがふりかえりで実践しているフレームワークや、そこから得られた学びをご紹介します!皆さんのチームのふりかえりをより良くするための一助となれば幸いです。 ふりかえりの…
1ヶ月前

データ分析での迷子を防ぐ - Miroを活用した分析結果の整理方法 -
Nealle Developer's Blog
はじめに Analyticsチームの上田です。 皆さんは、データ分析を進めているうちに「このデータ、何のために出したんだっけ?」と目的を見失ってしまったことはありませんか? 目的を見失った分析は本来のゴール達成に繋がりにくいため、望ましくありません。 そこで今回は、迷子を防ぐためのデータ分析結果の整理方法をご紹介します。 はじめに なぜ迷子になるのか 要因1. 分析には繰り返しが伴うから 要因2. 分析では並行作業が発生しやすいから 要因3. 生成AIの発展により、分析のリードタイムが短縮されたから どうすれば迷子を防げるか 実践してみた結果 Miroを使うメリット おわりに ※ CHUO T…
1ヶ月前

2人目アナリティクスエンジニアとして入社して1年が経ちました【在籍エントリ】
Nealle Developer's Blog
こんにちは。ニーリーのAnalyticsチームで働いている五十嵐です。普段は鹿児島からフルリモートで勤務しています。下の写真は鹿児島の日常です。この程度では誰も見向きもしません。 桜島 5月で入社1年が経ちました & 入社エントリを書くタイミングを逃してしまったので、禊の振り返り記事を書かせていただきました。 面接ではよく「テックブログ読みましたよ」と言われるらしいので、ニーリーへの入社を考えてくださっている方の参考になれば幸いです。 2024 上期(2024年5月〜6月) 2024年5月に入社し当初2週間程度はオンボーディングメニューに沿って月極駐車場やPark Directに関するドメイン…
1ヶ月前

プロダクトエンジニアとして入社後の1年を振り返る【在籍エントリ】
Nealle Developer's Blog
ゴールデンウィークが明け、新たな気持ちで業務に取り組まれている方も多いのではないでしょうか。 長期休暇は、日々の業務から離れて立ち止まり、これまでの歩みを振り返ったり、今後の目標を再確認したりする良い機会になりますよね。 今回、私が株式会社ニーリーに入社してちょうど1年という節目を迎えましたので、この1年間を振り返る在籍エントリーをお届けしたいと思います。 テックブログなのに技術の話じゃないのか、といったツッコミもあるかと思いますが、「妖怪テックブログ」こと菊地さんが率先して書いてくださったので、それに倣おうと思います。 妖怪テックブログについてはコチラ nealle-dev.hatenabl…
1ヶ月前

Gemini 2.5 Proと取り組んだデータ分析のリアルな道のり
Nealle Developer's Blog
はじめに はじめまして。Analyticsチームの清水です。 2024年12月に入社しまして、約4ヶ月が経過しました。今回が初めてのテックブログになります。 ▼先日、入社エントリも公開しました。 本稿のテーマは、自由記述のテキストをラベリングして分類する分析タスクに対し、Geminiと共に取り組んで分かったことの共有です。 私は生成AIをそれほどたくさん使った経験があるわけではないので、これが最良の使い方というわけではないと思いますが、どのようにプロンプトを組み立て、どう効率的に分析を進められたのかを可能な限りリアルに書いていきます。 ※今回利用したモデルは、Gemini 2.5 Proです。…
2ヶ月前

テックブログ開設からの1年を振り返る 〜アドカレ、評価、そして妖怪テックブログ〜
Nealle Developer's Blog
プラットフォーム開発Gの菊地(@_tinoji)です。 ニーリーのテックブログを始めて1年が経ったので、振り返りをまとめておこうと思います。 なぜテックブログを始めたのかについては、最初に投稿した記事に書いてあるのでそちらをお読みいただけると。 こういう振り返り記事は、これからテックブログを開設しようとしている人などを想定して「こういう良いことがあるからやろうよ!」という示唆に富んだものが多いと思うのですが、なんかうまく書けなかったのでやめました()。運営した人間が思いつくまま書いた随筆としてお楽しみください。 定量面振り返り 初めてのアドベントカレンダー テックブログ(を含む外部発信活動)と…
2ヶ月前

S3 + CloudFront構成のSPAでWAFによるブロックが効かないときの解決策
Nealle Developer's Blog
はじめに SREチームの森原(@daichi_morihara)です。今後は積極的に発信していこうという誓いを込めてXのアカウントを作成しました。 今回はEC2+ALBでホストしていたフロントエンドをS3+CloudFrontに移行する際に起きた問題について紹介しようと思います。移行後のフロントエンドのインフラ構成としては下の図の通りで、S3の前段にCloudFrontを配置しており、CloudFrontに紐づいたWAFがアクセス制限を行います。 フロントエンドのインフラ構成図 ここでハマった問題というのが「CloudFrontに紐づいたWAFが、なぜかブロックすべきアクセスまで通してしまう……
2ヶ月前

JaSST '25 tokyo 参加レポート 〜現地参加ならではの交流と熱量〜
Nealle Developer's Blog
こんにちは、QAチームでSETを担当している宮内です。 少し時間が経ってしまいましたが、JaSST '25 Tokyoに初参加してきたのでレポートを書きました。 1日目は現地参加、2日目はオンライン参加でした。本記事では、現地参加での体験を中心に会場の様子や印象に残ったセッションを共有します。 今回初めてJaSSTに現地参加し、月並みな感想ではありますが現地ならでは熱量を感じ、このようなタイトルにしました。1日目の終了後には有志コミュニティの交流会にも参加させていただき、改めてオフラインでの交流の良さを再確認できました。 オンラインで参加した別のメンバーも先日レポートを投稿しているので、あわせ…
3ヶ月前

JaSST ‘25 Tokyo 参加レポート:「触れて語る」ことで築く品質文化
Nealle Developer's Blog
こんにちは、ニーリーでQAエンジニアをしている鹿間です。 先日 JaSST ‘25 Tokyo にオンラインで参加し、品質に対する新たな視点を得ることができました。 その中でも、内容に親近感がありつつも品質とは何かを再考させてくれた2つのセッション B4)ゲームテストシラバスを読み込んでみた C5-2)チームで自信を持つためにアウトプットに触れて対話する機会を増やす から学べたことを書いてみようと思います。 https://jasst.jp/tokyo/25-about/ B4)ゲームテストシラバスを読み込んでみた まず、「ゲームテストシラバスを読み込んでみた」の企画セッションについてです。 …
3ヶ月前

GitHub Actionsで実行されるCIのキャッシュが初回実行だけ効かない問題を紐解く
Nealle Developer's Blog
背景と悩み SREチームの大木(@2357gi)です。いよいよ暖かくなってきましたね。春スキーの季節です。 チーム開発においてCIを如何に高速化するかという話は日夜行われていると思います。 弊社でも同様のことが行われており、その中でパッケージ管理ツールによるライブラリのキャッシングなどの高速化も実施しています。 しかし、キャッシュを指定しているはずなのに、「PRを作成して最初に走るCIではキャッシュがまったく効いていない」 というケースが存在しました。 お使いのGitHub Actions Workflow によっては実は同じ症状の方もいると思うので、ご参考になれば幸いです。 GitHub A…
3ヶ月前