Dinii Tech Blogのフィード
フィード

オンコール調査を自動化する Slack bot で人間の労力削減とアラートの適正化を実現した話
Dinii Tech Blogのフィード
ダイニーのオンコール業務を支援する dev-bot という Slack bot について説明します。dev-bot は、Google Cloud のアラートが鳴ると人間より先に調査を始め、影響範囲を Slack のスレッドに書き込んでいく bot です。ダイニーにはすでに人間のオンコールの仕組みがありますが、それを bot でサポートするイメージです。この記事では、その経緯と仕組み、それから「どこを自動化しないか」を説明します。 対象読者オンコールの負荷に悩んでいるエンジニア、技術面の意思決定者 1. dev-bot は何をしているのか役割は一つです。システムアラート...
1ヶ月前

Chromium(V8)のArray.prototype.copyWithinを最大約450倍高速化した
Dinii Tech Blogのフィード
はじめに!修正や追加等はコメントまたはGitHubで編集リクエストをお待ちしております。ダイニーで一番若いエンジニアのriya amemiya(21歳)です。これまで Array.prototype.flat を2回にわたって高速化してきましたが、今回は Array.prototype.copyWithin(以下 copyWithin)を最大約450倍高速化しました。「copyWithinって何だっけ」となった方も多いはずです。ES2015から実はあります。JS大改革のES6に実は入ってるメソッドなんですよね。flat や includes のようなメジャーなメソッドと...
2ヶ月前

AMEX 対応で入金元が2社になったので、統合決済台帳を作った話
Dinii Tech Blogのフィード
はじめに飲食店向けに「All in One Restaurant Cloud.」でオールインワンクラウドプラットフォームを開発しています。その中でダイニーキャッシュレスというサービスを提供しており、7月に念願の AMEX をリリースすることができました。決済代行会社としては Adyen を使用しています。お金の流れは次の図のとおりで、どのブランドで決済されても入金は Adyen からの1本にまとまっていました。ところが AMEX の売上については従来の Adyen 経由の入金ではなく、AMEX からダイニーに直接 入金されるルールになっております。入金元が2社になった結果、A...
2ヶ月前

PR 数が 4 倍に増えても AI レビュー代を爆発させないために、レビューをサブスクに相乗りさせた話
Dinii Tech Blogのフィード
アウトプットは 4 倍。でもレビューのコストは?こんにちは、ダイニーの whatasoda です。ダイニーでは主要プロダクト群を 1 つのモノレポで管理しています。そのモノレポでは、この 1 年弱で月間 PR 数が約 600〜800 本から 3,100 本超まで、およそ 4 倍に増えました。昨年は採用も停止していたので(※ 今は再開してます)エンジニア一人あたりの生産性の向上だけで約 3.5 倍の成長を実現したことになります。一人当たりのアウトプットが 3.5 倍になっても、レビュアーがレビューに使える時間は 3.5 倍にはなりません。そこでダイニーでは、「AI が承認する」...
3ヶ月前

Chromium(V8)のArray.prototype.flatをバルクコピーでさらに約5倍高速化した
Dinii Tech Blogのフィード
はじめに!修正や追加等はコメントまたはGitHubで編集リクエストをお待ちしております。ダイニーで一番若いエンジニアのriya amemiya(21歳)です。以前、V8の Array.prototype.flat(以下 flat)を2パス方式で高速化したという記事を書きました。https://zenn.dev/dinii/articles/675d47a6c21c83今回はその続編です。2パス方式で最大約5倍になった flat を、サブ配列の「バルクコピー」でさらに約5倍速くしました。2つの最適化を合わせると、何も手を入れていなかった頃と比べて約20倍になります。...
4ヶ月前

Claude Managed Agents で社内データ・ログ・コードを横断調査する Slack bot を安定運用する方法
Dinii Tech Blogのフィード
はじめに前回の記事『Claude Managed Agentsで「まずエンジニアに聞こう」を「まずbotに聞こう」に変えた』では、ダイニーが社内向け Slack bot @ask-anything を Claude Managed Agents で組み、社内エンジニアへの調査依頼 (= dev-help) を半減させた話を書きました。本記事はその技術編で、Slack から Claude Managed Agents を安定運用するためのダイニーの実装パターン を紹介します。記事1に書いた通り、Managed Agents を使うとダイニー側で書くコードは 3 種類に収束します。...
4ヶ月前

Claude Managed Agentsで「まずエンジニアに聞こう」を「まずbotに聞こう」に変えた
Dinii Tech Blogのフィード
はじめにダイニーでは、開発チーム宛ての質問(社内では dev-help と呼んでいます)が日に8件ほど来ます。1件 10 分でも、積み上がれば月に数十時間が消えていきます。前回の記事では、過去の dev-help チケットを RAG(過去の文書を意味検索で引っ張ってくる仕組み)で引いて関連事例をスレッドに貼る bot を作り、リードタイム中央値を 10 日から 5 時間まで縮めました。ただし、構造上どうしても拾えない層が残っていました。「いまのデータ・ログ・コードを、人が読みに行かないと答えが出ない」 タイプの問い合わせです。今回作った @ask-anything は、この層を...
4ヶ月前

社内問い合わせをAIエージェント化して爆速で解決できるようにした
Dinii Tech Blogのフィード
はじめに:社内問い合わせがじわじわ開発を削っていくダイニーでは、飲食店舗から日々、運用サポートチームに問い合わせが寄せられます。そして、運用サポートチームだけでは解決できない技術的な問い合わせを開発チームへつなぐ"入口"が 社内問い合わせシステム です。「会計がうまくいかない」「設定画面の操作が分からない」といった声が、社内問い合わせシステムを通って日々エスカレーションされます。ただ、運用が軌道に乗るにつれて次の課題が顕在化しました。1日あたり約8件の問い合わせが発生する1件の調査に数時間かかるリードタイムの中央値が10日ステータス管理が弱く、クローズされずに放置され...
7ヶ月前

Chromium(V8)のArray.prototype.flatを最大約5倍高速化した
Dinii Tech Blogのフィード
はじめに!修正や追加等はコメントまたはGitHubで編集リクエストをお待ちしております。ダイニーで一番若いエンジニアのriya amemiya(21歳)です。タイトルの通り、V8の Array.prototype.flat(以下 flat)を高速化しました。パッチはこちらです。https://chromium-review.googlesource.com/c/v8/v8/+/7526287最初のコミットから約1ヶ月、やりきりました。Chrome 147(V8 14.7)でリリースされます。https://chromiumdash.appspot.com/com...
7ヶ月前

デバッグはもう人間の仕事ではなくなった
Dinii Tech Blogのフィード
こんにちは、ダイニーの ogino です。弊社では、ほとんどの技術的な不具合の調査・解決を AI に丸投げできるようになりました。これは単なるコードレベルのバグに限りません。本番環境や特定のユーザーだけでしか発生しない問題、インフラの設定ミスなど含めすべてに言える話です。Claude Code を使い始めてからここに至るまで、大きく 2 つ転換点がありました。AI が本番データベース、ログ、Sentry などに直接アクセスできるようにした複数のエージェントが仮説を並列検証し、もう一体が対立してレビューするチーム構成にしたそれぞれについて詳しく説明していきます。 AI ...
7ヶ月前

「全エンジニアが Claude Code を 100% 活用する」を目指してダッシュボードを作った
Dinii Tech Blogのフィード
はじめに「全エンジニアが Claude Code を 100% 活用する」これは、ダイニーの今期の目標のひとつです。正直、最初に思ったのは「何をもって 100% なんだ?」です。手がかりを探るために、まずチーム全員にアンケートを取りました。結果はバラバラで、「かなり活用できている」という人もいれば、「スキルやサブエージェントはほとんど使えていない」という人もいます。中でも多かったのが、「他の人がどう活用しているのか分からない」という声でした。実際、有志がスキルやサブエージェントを作っても、その存在自体を知らないメンバーがいます。知っていても中身が分からないから使えない...
8ヶ月前

最近のHTMLを改めてちゃんと学んでみた
Dinii Tech Blogのフィード
はじめに!修正や追加等はコメントまたはGitHubで編集リクエストをお待ちしております。この記事は、以下のモダンCSSに関する記事のHTML版です。https://zenn.dev/gmomedia/articles/6ed3718b4c6bc1せっかくならHTMLもちゃんと学んでみようと思い、最近のHTMLの新機能を改めて学び直したので、アウトプットついでにこの記事を書いています。 HTML Living Standardの時代へ2019年5月28日、W3CとWHATWGは、HTMLとDOM標準の開発をWHATWGが主導することで合意しました。これにより、HTML...
1年前

インシデント対策から目を背けないための計画と戦略
Dinii Tech Blogのフィード
ダイニーの urahiroshi です。昨今のプロダクト開発では、開発チームが開発だけではなく運用も行うというDevOpsのプラクティスが浸透してきたように感じます。一方で、開発と運用を同じチームが扱う場合はインシデント対策に関して以下のような難しさもあるかと思います。プロダクト開発の機能開発スケジュールに、インシデント対策のアクションを組み込むのが難しい対策が必要なことは理解しているものの、何から優先して着手すべきか分からないそもそも、どのようなインシデント対策をすれば良いのか分からないこのような課題は、多くの組織で共通して見られます。この記事では、ダイニーでの実例を用い...
1年前

AI 時代のコード品質戦略 - バグに強いコードを型でデザインする
Dinii Tech Blogのフィード
こんにちは、ダイニーの ogino です。この記事では、複雑なビジネスロジックを正確に実装するために、TypeScript の型を最大限活用する考え方を解説します。 なぜ AI 時代にコード品質を考えるのかAI エージェントが自律的にコードを書いてくれる時代に、人間基準のコード品質をわざわざ考える意義は何でしょうか?最大のボトルネックであるコードレビューの負担を減らすため、というのが私の考えです。現状の AI のレベルでは、プログラミングをゼロから完全に任せきりにすることはできません。まだ今のところは人間のレビューが必要です。しかし、人のレビューは AI のコード生成速度と比べ...
1年前

🧹.env にさよなら!全てのサービス開発者が実感するビルドプロセス改善🔐⏱️⚙️
Dinii Tech Blogのフィード
はじめにこんにちは!株式会社ダイニーの Platform Team に所属しています。0tanyです。モダンなモジュラーモノリスアーキテクチャでは、環境変数の管理が重要な課題の一つです。事業成長とともにサービス数と環境数が増加すると、その管理複雑性は指数関数的に増大していきます。本記事では、この移行を通じて得られた知見を共有します。同様の課題を抱えるチームの参考になれば幸いです。 従来のアーキテクチャの問題点 環境別の.env ファイルと Docker イメージの管理地獄上記が従来のアーキテクチャです。ダイニーでは飲食店向けのモバイルオーダーサービスを 4 つの環境...
1年前

月額40万円分の高負荷クエリの発見を経て実現したBigQueryモニタリング体制の強化
Dinii Tech Blogのフィード
はじめにこんにちは、ダイニーのData Teamでエンジニアをしているmasaです。ダイニーでは飲食店向けデータ分析プロダクトを開発しています。このプロダクトは、飲食店経営に必須である日々の売上といったデータからアンケート分析のような発展的なデータまで提供しています。それらのデータをプロダクトとして提供するための手段として、以前はRDB(PostgreSQL)のデータをバックエンドから直接参照して集計していましたが、パフォーマンスの悪化等を理由にBigQueryに集計済みのデータを用意して参照する形式に変更しました。https://zenn.dev/dinii/article...
1年前

大規模 Node.js サーバーに潜むパフォーマンス上のリスクを Event Loop から理解する
Dinii Tech Blogのフィード
潜んでいるリスク、一番苦手なリスクです!どうも、whatasoda です。モノリシックなサービスでは、サービスの成長とともに 1 つのアプリケーションの中にさまざまな性質の処理が混在するようになります。Node.js のようなシングルスレッドで処理が実行されるランタイムでは、複数の処理を走らせる場合に 1 つしかないスレッドを取り合う形で互いの処理を待機させ合うような振る舞いをすることがあります。技術スタックを TypeScript に統一しているダイニーでは当然バックエンドの API サーバーを Node.js 上で実行しています。過去、「注文の受付」や「会計処理」といったリアルタ...
1年前

データ基盤再設計でレスポンス速度を 40倍高速化し、顧客体験を改善するまでの軌跡
Dinii Tech Blogのフィード
はじめにこんにちは、ダイニーのデータチームのエンジニアをしている kawamitsu です。ダイニーでは飲食店さま向けのデータ分析プロダクトを提供しています。本記事では、膨大な店舗データの処理によるアプリケーションのボトルネックを、データ基盤によって解決した事例を紹介します。先に成果を説明しますが、データ基盤の再設計によりユーザーのデータ分析においてタイムアウトのほぼ全廃と全店舗・任意期間のデータ取得を可能にしました。この記事を通して、データエンジニアリング × アプリケーションエンジニアリング の開発に少しでも興味を持っていただけたら幸いです。 背景:飲食店におけるデ...
1年前

プロファイラを利用して Node.js サーバーのレスポンス時間を 200 秒 → 20 秒に短縮した話
Dinii Tech Blogのフィード
どんな問題を解決したのかこんにちは、ダイニーの ogino です。ダイニーでは、飲食店向けのクラウド POS レジを開発しています。その機能の一つとして、一ヶ月分の売上などの情報を印刷できる「月締伝票」があります。月締伝票のサンプル月締伝票に記載するデータは、Node.js バックエンドで集計をしています。この API はダイニーのバックエンド全体の中で最も重く、最近では一部店舗でレスポンスに 200 秒以上かかりタイムアウトエラーが発生していました。その結果、月締伝票を発行することができないため顧客の業務に支障をきたし、複数の問い合わせが来ている状態でした。プロファイ...
1年前

AI エージェントを仕組みから理解する
Dinii Tech Blogのフィード
はじめにこんにちは、ダイニーの ogino です。この記事では、AI エージェントや MCP に入門しようとしている人向けに、エージェントの内部実装について概説します。これを理解することで、現状の AI にできることが明確になり、今後の技術動向を追う上でも役に立つはずです。 本記事の要旨MCP の表層的なプロトコルには大した意味も革新性も無いので、AI エージェントを理解するにはまずコンテキストを把握しましょう。 素の LLM の能力と、エージェントの実装を切り分けるAI エージェントは、自律的に判断してファイル操作や Web ブラウザなどのツールを使い分けることが可...
1年前