タグ

moznionのブックマーク (3,532)

  • 地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning

    技術選定を突き詰める】Online Conferenc​​e 2025 の発表資料です。

    地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning
    moznion
    moznion 2025/05/15
    昨日の懇親会でちょっと話したんですが、このスライドは網羅的にAIプロダクトを作る時の選定を様々書いているものの、泥臭い工夫やズルの話はしてないのでそれはまた別の機会に……
  • Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社

    要約 メモリ断片化は測定や診断が困難ですが、驚くほど簡単に修正できることもあります。マルチスレッドのCRubyプログラム(mallocのスレッド単位メモリアリーナ)におけるメモリ断片化の原因を追ってみましょう。記事のボリュームは3343語、20分程度です。 単純な設定変更だけで問題を完全に解決できることはめったにありません。 私の顧客のSidekiqプロセスが大量のメモリを消費していたことがありました(1プロセスあたり1 GB程度)。開始当初の各プロセスは300MB程度でしたが、時間の経過とともにじわじわと肥大化してほぼギガバイトレベルにまで達したところで落ち着き始めました。 私は顧客にMALLOC_ARENA_MAXというたった1つの環境変数の変更を依頼しました。「2に設定してください」と。 プロセス再起動後、「じわじわ肥大化」現象はピタリと止みました。プロセスのメモリ使用量は以前の半

    Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社
    moznion
    moznion 2025/05/13
  • RubyKaigi 2025で使用したSIITのRuby実装について - KMC活動ブログ

    こんにちは,id:hanazukiです.松山で開催されたRubyKaigi 2025に何人かのKMC部員とともに参加し,Wi-Fiの構築・運用をやっていました.KMC活動ブログに記事を書くのは2023年のDNSリゾルバの記事ぶりです. 現地でも噂されてしまっていたようですが,今年のRubyKaigiでは15人いたNOCメンバーの過半数が会期中に体調不良でダウンするインシデントに見舞われてしまいました.私はどうやら風邪と中毒を時間差でもらったようで,RubyKaigi編もNOCの活動も満足に参加できず,たいへん残念でした.愛媛で買ってきたみかんを1週間くらいべ続けていたら快復しました. さて,RubyKaigi 2025では,今年からの新しい試みとしてIPv6-mostlyネットワークを提供していました.IPv6-mostlyとは,464XLATと呼ばれるIPv6移行技術を対応クライア

    RubyKaigi 2025で使用したSIITのRuby実装について - KMC活動ブログ
    moznion
    moznion 2025/05/13
  • ISUCONが業務に役立つ瞬間 - 決済処理時間の悪化を解決するまでの軌跡 - inSmartBank

    こんにちは。スマートバンクでサーバーサイドエンジニアをやっております、@moznionです。 Webアプリケーションのパフォーマンスに問題が起きている時、みなさんはどのようにアプローチしていますか? 私はISUCONで培ったテクニックを使うことが多いように思います。 今回はそのような「ISUCONで学んだ知見」が役に立ったパフォーマンスチューニング事例があったのでそのご紹介をできればと思います。 背景と課題 スマートバンクではカード *1 決済をサービスとして提供しており、この決済が快適に行なえているかどうかはサービスの品質を捉える上で重要な指標となります。 そこで我々はこの決済処理にかかる処理時間を「決済レイテンシー」と定義して1.5秒のSLI *2 を設定し、エラーバジェットを設定して継続的な監視を行なっています。 SLI/SLOの設計・運用の詳細につきましては同僚の@maaaatoに

    ISUCONが業務に役立つ瞬間 - 決済処理時間の悪化を解決するまでの軌跡 - inSmartBank
    moznion
    moznion 2025/03/24
    Blogged
  • ISUCON 14: ClickHouse と OpenTelemetry で ISUCON の計測環境を作ったら快適だった - Unyablog.

    ISUCON 14 に id:utgwkk, id:wass80 と「ミレニアムサイエンススクール」というチーム名で参加した。 結果は 28875 点で 22 位!去年は fail して最下位だったので反省を活かすことができたのでは? 一昨年に Kibana / Elasticsearch / Filebeat で解析環境を組んでサクセスしていたが、今年は OpenTelemetry (Otel) をベースにモニタリング環境を作り直し、バックエンドは ClickHouse、フロントは Grafana の構成でやってみた。これがなかなか良かったので紹介。 コンテスト当日のアプリ改善周りは utgwkk の記事を見てください。 blog.utgw.net 序: ISUCON で必要な計測 ISUCON ではパフォーマンスを継続的に確認してボトルネックを探しながら改善していくのが王道ルート。 イ

    ISUCON 14: ClickHouse と OpenTelemetry で ISUCON の計測環境を作ったら快適だった - Unyablog.
    moznion
    moznion 2024/12/09
  • 生成AIを有効活用した「魔力」のあるプロダクト作り - inSmartBank

    先日、スマートバンク史上初となる生成AIを活用したプロダクトである「AIレシート読み取り機能」をリリースいたしました。この機能はざっくり言うと生成AI (記事では「大規模言語モデル」と同じ意味として利用します) を用いてレシートの内容を解析し、店舗名や総額などを抽出しつつその支出カテゴリを推定してB/43アプリ内の家計簿に登録できるというものになります。なかなか良い感じにレシートを読み取ることができ、それだけでもなかなか楽しいのでまだお試しになられていない方は是非使ってみていただければ嬉しく思います。 b43.jp さて、そうして世に出たAIレシート読み取り機能なのですが、生成AIを始めて利用したプロダクト作りということもあり試行錯誤を重ねながらの開発となりました。記事ではその過程で得られた知見について共有したいと思います。 なお、今回は技術的詳細に踏み込んだ話ではなくプロダクト作りそ

    生成AIを有効活用した「魔力」のあるプロダクト作り - inSmartBank
    moznion
    moznion 2024/11/19
  • プロダクト開発におけるリスクを排除するためにモバイルアプリエンジニアができること - inSmartBank

    こんにちは、スマートバンクでモバイルアプリエンジニアをしているロクネムです。 書籍『INSPIRED 熱狂させる製品を生み出すプロダクトマネジメント』ではプロダクト開発には以下の4つのリスクがあると説明されています: 実現可能性のリスク: エンジニアが、持っている時間とスキルとテクノロジーで必要なものを作れるかどうか 価値のリスク: 顧客が購入するかどうか ユーザビリティーのリスク: ユーザーが使い方をわかるかどうか 事業実現性のリスク: ソリューションが、販売、マーケティング、財務、法律など、ビジネスのさまざまな分野でも問題がないかどうか (順番は入れ替えています 🙏) 同書では、優れた開発チームはこれらのリスクに対して開発の早い段階で取り組むと記されています。 自分はこれらのリスクのうち「実現可能性のリスク」「価値のリスク」「ユーザビリティーのリスク」の3つについてはモバイルアプリエ

    プロダクト開発におけるリスクを排除するためにモバイルアプリエンジニアができること - inSmartBank
    moznion
    moznion 2024/10/31
  • 「最高のチューニング」をしないために / hack@delta 24.10

    https://hack-at-delta.connpass.com/event/332966/

    「最高のチューニング」をしないために / hack@delta 24.10
    moznion
    moznion 2024/10/31
    めっちゃよかった
  • ここまでできるの!?LLMにクイズ画面作ってもらったらすごかった - inSmartBank

    こんにちは!スマートバンクのmitaniです。 だんだんと寒くなってきて年末の足音が聞こえてきましたね。スマートバンクでは10月25日から行われるKaigi on Railsで今年最後のブースを出展します。ブースではクイズに答えて全国各地の名産お菓子を掴み取りする企画をやるのでぜひ遊びに来てください。 今回のブログでは、ブースで使うクイズ画面のコーディングを完全にLLMに任せてみた取り組みを紹介しようと思います!果たしてLLMは期待通りのコーディングをしてくれるのか?気になる方はぜひチェックしてみてください! 作りたいもの ネプリーグというテレビ番組でやっている「パーセントバルーン」というクイズをご存知でしょうか?初めに100個のバルーンが残りライフとして与えられます。0~100の%で答えられるクイズが出題され、正解との誤差だけバルーンが破られていきます。そして最後に残ったバルーンの数を競

    ここまでできるの!?LLMにクイズ画面作ってもらったらすごかった - inSmartBank
    moznion
    moznion 2024/10/23
    マルチモーダル活用してデザイン指定できるの素朴にすごい
  • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

    こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
    moznion
    moznion 2024/10/11
    良い
  • MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank

    こんにちは。スマートバンクのサーバーサイドエンジニアをやっておりますid:moznionです。 すっかり秋めいてきましたね。秋といえばMySQL*1、ということで今回は先日解消した「MySQLのロックに起因するブロックタイムアウト」のトラブルシューティングついて記していきたいと思います。 事の発端 ある時を境にSentryに ActiveRecord::LockWaitTimeout というエラーがしばしば報告されるようになっていました。 SentryにActiveRecord::LockWaitTimeoutが上がってきている様子 Mysql2::Error::TimeoutError: Lock wait timeout exceeded という文言から、MySQL上でロックを取っている他のクエリにブロックされ、そのブロックが長時間に渡ったため自クエリがタイムアウトしてabortしてし

    MySQLのロックに起因するブロックタイムアウト撃退記 - inSmartBank
    moznion
    moznion 2024/10/02
    Blogged
  • PostgreSQLのチェック制約でSELECTの結果を使って制限する - そーだいなるらくがき帳

    今北産業まとめ チェック制約ではSELECTが書けない 代わりにストアドファンクションを使う 最終手段なのでメインで多用するのはやめよう やりたいこと チェック制約でカラムの値をチェックしてバリデーションしたいことがある。 同じINSERTの値であればCASEで下記のような方法で対応することができる。 soudai.hatenablog.com しかしチェック制約ではSELECTによって事前のデータを確認することができない。 正しくRDBで対応しようと思うと正規化していけば実はできるのだけど、レコード数が増える。仕組みが複雑になるなどの理由で嬉しくない場合も多い。 例えば中学校の時間割とかがそうで、先生、教科の組み合わせと時間割を重複しないように管理する必要*1がある。 設計したことがない人はぜひ、設計してみてほしいのだけど、単純に先生テーブル、教科テーブル、時間割テーブルくらいで実装する

    PostgreSQLのチェック制約でSELECTの結果を使って制限する - そーだいなるらくがき帳
    moznion
    moznion 2024/09/17
  • iPhoneのカメラで夜空に名前を描く :: デイリーポータルZ

    1971年東京生まれ。デイリーポータルZウェブマスター。主にインターネットと世田谷区で活動。 編著書は「死ぬかと思った」(アスペクト)など。イカの沖漬けが世界一うまいべものだと思ってる。(動画インタビュー) 前の記事:モバイル監視カメラでなんでもわけありに > 個人サイト webやぎの目 ゴーストとは ゴーストとは暗いところでネオンなどを撮ったときに、意図してないところに出る光の反射のことだ。iPhoneは数世代前から出るようになった。 こういうの出ますよね テープ状に貼ってあるLEDは特に出る iPhoneのような狭いところに無理してレンズを入れているせいか、レンズのなかで光があっちゃこっちゃに反射しているようだ。 でも逆に考えたら、これを利用して夜空に模様を描くことができるんじゃないだろうか?

    iPhoneのカメラで夜空に名前を描く :: デイリーポータルZ
    moznion
    moznion 2024/09/03
    めっちゃいい
  • MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank

    データベースアップグレード後の性能劣化、イヤですよね。 去る2023年某日、弊社ではAmazon Aurora MySQL 互換エディション 2 (MySQL 5.7 互換) から Aurora MySQL 互換エディション 3 (MySQL 8.0 互換) にアップグレードしました。当時の背景やアップグレードに関する知見は以下の記事をぜひ読んでみてください。 blog.smartbank.co.jp ソフトウェアバージョンアップをするとき、旧バージョンが抱えていた問題の解決などの恩恵を我々は期待します。しかし時には予期せぬデグレーションに遭遇することもあります。我々のMySQL 8.0へのアップグレード前後においてもいくつかの問題に遭遇しました。 記事ではそんな問題の一つ、MySQL 8.0のオプティマイザが選択したセミジョイン最適化が性能劣化を引き起こした事例と解決方法について紹介し

    MySQL 8.0アップグレード後に性能劣化したクエリ: セミジョイン編 - inSmartBank
    moznion
    moznion 2024/07/29
  • PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog

    こんにちは ハタ です。 Mirrativ では 2020年頃から サーバサイドの技術PerlからGoへのシステム移行 を行っており、2024年現在でもサグラダファミリアのように移行作業は継続しています PerlGoという2つの環境を同時に運用していますが、 基的には 新機能は Go で実装 し、 Perlでは積極的に新規実装を行わない というスタイルで進めていました しかし、既存の機能の一部に手を加えたいとなった場合、まだまだ Perl の実装に手を加えることが一定あり、Perl から Go の機能を呼び出したいというニーズが出てきました (配信やギフトといったビジネスの根幹を支えるレガシーな実装においては顕著) そこで PerlXS を利用することで Perl から Go を直接呼び出せるようにできないかと考え検証を進めることにしました Goの -buildmode=c-shar

    PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog
    moznion
    moznion 2024/05/07
  • https://upamune.github.io/go-lunch-lt-2024-04/1

    moznion
    moznion 2024/04/23
  • Signed Query は GraphQL の Trusted Document の新しい実装パターンです - スタディサプリ Product Team Blog

    こんにちは。スタディサプリの小中新規開発チームで Web エンジニアをしている @YutaUra です。 去年の4月に新卒で入社をしまして約 1 年が経ちました。インターン生時代にもブログを書いているのでご興味あれば合わせてご覧ください。 GraphQL と Persisted Query スタディサプリ小中講座ではデータ通信に GraphQL を採用しています。 GraphQL を利用することで、クライアントはスキーマに定義された範囲で自由にデータを取得することができます。 query GetUser { user { name age } } また、 GraphQL はデータのグラフ構造に基づいて関連する複数のデータを一度に取得することができます。 query GetUser { user { name age posts { title content } } } GraphQL

    Signed Query は GraphQL の Trusted Document の新しい実装パターンです - スタディサプリ Product Team Blog
    moznion
    moznion 2024/04/16
  • Deep Dive

    TiKV is a distributed, transactional key-value database. It has been widely adopted in many critical production environments — see the TiKV adopters. It has also been accepted by the Cloud Native Computing Foundation as a Sandbox project in August, 2018 and since then has moved to the Graduated project maturity level. TiKV is fully ACID compliant and features automatic horizontal scalability, glob

    Deep Dive
    moznion
    moznion 2024/02/01
  • チバユウスケが亡くなった (山崎洋一郎の「総編集長日記」)-rockinon.com|https://rockinon.com/blog/yamazaki/208246

    チバが亡くなるなんて思ってもみなかった。いまだに受け止められない。がんと闘っていたと聞いてはいても、絶対大丈夫だと勝手に思い込んでいた。 J-POPや渋谷系ポップが全盛で、真にロックなバンドの新たな系譜が久しく途絶えていた時期に突如現れたのがミッシェル・ガン・エレファントだった。そこから僕は取り憑かれたように何度も彼らにインタビューし、特にチバには長い時間に渡ってい下がるようなインタビューを何度も試みて、そのすべてをJAPANのページに刻んできた。 ミッシェルが登場したことで、日音楽シーンは一気にロックの色に染まっていった。だがべつに、ミッシェル以外に多くのロックバンドが登場して盛り上がったわけではない。ミッシェル・ガン・エレファントという一つのバンドの力で、それが起きたのだ。当時を知っている人には、それはわかるだろう。とてつもないバンドであり、事件ですらあった。 チバはその時、自分

    チバユウスケが亡くなった (山崎洋一郎の「総編集長日記」)-rockinon.com|https://rockinon.com/blog/yamazaki/208246
    moznion
    moznion 2023/12/07
  • RailsアプリのCI高速化

    参加しているプロジェクトで、RailsアプリのCIの高速化を行った。 まだ進行中の部分も幾つかあるが、結果から言うと、元々8分前後だったテストが3分半程度に短縮された。行った作業を幾つかの観点に分け、どのように高速化を行ったか、どの程度高速化されたか等を記述する。 プロセス数とマシン性能の調整 元々は2コア1プロセス4マシンで8分程度掛かっていたが、8コア8プロセス1マシンに変更することで5分程度に短縮された。 このプロジェクトではCIにGitHub Actionsを利用している。GitHub Actionsではデフォルトで2コアのマシンが利用されるが、Large runnerを利用して8コアに変更した。コア数を2倍にした代わりにマシン数も半分に減らしたので、結果的に費用は変わっていない。 また同時に、8プロセスで並列実行するためにparallel_testsを導入した。このプロジェクト

    moznion
    moznion 2023/10/31