Scraps 最終更新 2026/10/01 19:40

#バックエンド

@edinetty /

正確に取れない数字は出さない — 4,000社の財務データで選んだ「諦めて注記する」設計

  • 財務データ処理で不正確な数字は出さない方針を取っている
  • 会社ごと・項目ごと・業種ごと・年度ごとの4段階で諦めを設計し、近似値や非該当マークを注記
  • データの欠損を「取得失敗」「存在しない」「近似値」などに区別し、注記を付けることで信頼性を保っている

@sz_tak /

本番でボタンが全部無反応だった——CSP の nonce と force-static は両立しない(Next.js App Router)

  • Next.js App RouterでCSPのnonceとforce-staticを同時に使うとスクリプトがすべてブロックされる
  • CSPにnonceを指定し、force-staticで静的生成するとnonceが一致しない。strict-dynamicでホストベースの許可が無効化される
  • 静的生成ページではnonceが毎回変わるためスクリプトが実行されず、コンソールでのエラーでしか気づけない。本番ビルドでのスクリプト検証が必要

@Sidejob /

Power Automateのフロー設計で属人化を防ぐ工夫——命名・テンプレート・ドキュメントの3点セット

  • Power Automateのフロー設計で属人化を防ぐための命名・テンプレート・ドキュメントの3点セットが紹介される
  • 命名規則で[部署][処理内容][作成年月]の形式を文書化し、テンプレートで処理パターンを統一し、ドキュメントでフローの概要を明記する
  • フロー名やアクション名に感覚に任せず、命名ルールを文書化し、テンプレートを共有することで混乱を防ぐことが重要

@kanzawa_kentaro /

【自社開発1年目】「チーム経験ゼロ」の27歳元営業が、ダイレクト出版でAIを使い倒し本番コードを書くエンジニアになるまで

  • 未経験のエンジニアが1年でFEとBEを経験し、コードの責任感を身につけた
  • 仮想PJでTypeScriptとGoを使ったアプリ開発、実務で画像アップロードAPIや決済処理、AIを活用したコード作成
  • 1文字のコード変更がユーザーに大きな影響を与えることを実感し、責任あるコード書く重要性を学んだ

@AIフクロウ|夜な夜なClaude Code /

夜間ジョブが朝まで固まっていた自作ツールの外部通信19か所を、Claude Codeに16分でタイムアウト棚卸し表(判定4種)にして、上限つきリトライまで入れてもらった夜

  • 自作ツールの外部通信19か所をClaude Codeでタイムアウト棚卸し表にした
  • タイムアウトなし12か所、リトライ上限なし3か所、判定4種類で分類
  • 上限のないリトライは別枠で記載し、失敗時の影響を列に記載することで判断材料とした

@jqit-yukiono /

個人開発アプリ「MineWatch」の記事まとめ(随時更新)

  • MineWatchの開発・運用で学んだApp Storeリリースフローと技術的取り組みがまとめられている
  • App Store審査対応、JenkinsとGitHub ActionsのCI/CD、Argo Rolloutsのデプロイ、E2Eテスト設計、負荷試験の実施
  • 審査通過後のCI/CD事故やインフラ設計の誤解、テストコードの罠など実務上の注意点が具体的に記載されている

@jqit-yukiono /

Argo RolloutsのBlue-Greenは「2つの環境の交代」じゃなかった ― 名前に引きずられて誤解していた話

  • Argo RolloutsのBlue-Greenは「2つの固定環境の交代」ではなく、activeとpreviewの役割に毎回新規ReplicaSetを割り当てる方式だった
  • activeServiceとpreviewServiceの2つのServiceを指定し、ReplicaSetは毎回新規作成されて古い方は昇格後に破棄される、Serviceのselectorが新しいReplicaSetへ書き換わる
  • 昇格後、旧ReplicaSetは300秒スケールダウン後に0台になるため、旧環境を温存しない

@jqit-yukiono /

「見るだけ」から「操作できる」へ ― MinecraftサーバーへのRCON実行を、個人開発でどう安全に作ったか

  • MinecraftサーバーのRCON操作機能を個人開発で実装する際のセキュリティ対策を解説
  • 接続情報はFernet暗号化で保存し、パスワードはAPIレスポンスとログに一切出さない。RCON失敗時は成功記録として扱い、監査ログに実行履歴を残す
  • RCONパスワードはDBとAPIレスポンスに絶対に表示せず、監査ログで実行履歴を残すことで操作の追跡性を確保する

@jqit-yukiono /

Web/admin/iOSにE2Eテストを整備した話 ― 認証を迂回したら、次はテストコード自身の罠が待っていた

  • Web/admin/iOSにE2Eテストを整備し、認証を迂回する仕組みを構築した
  • Web/adminはFirebaseカスタムトークンとApp Check debug token、iOSは起動引数によるDevBypassで認証を迂回、XCUITestのローカライズ文字列やnavigation barの曖昧さが罠
  • Jenkinsのまっさらな環境でAPNs鍵やFirebase設定が不足する問題が発覚し、フォールバック処理を追加した

@jqit-yukiono /

同一人物がApple/Googleどちらでログインしても同じアカウントにする ― Firebase純正のlink(with:)を使わなかった理由

  • Firebase純正のlink(with:)を使わず、バックエンド独自のauth_identitiesテーブルでアカウント連携を実装した
  • Firebaseのcredential-already-in-useエラー対応が破壊的で複数ステップ、auth_identitiesテーブルで1 User : N firebase_uidを管理
  • コンフリクト解決は1つのDBトランザクションに閉じ込め、失敗時ロールバックで詰み状態を回避

@jqit-yukiono /

個人開発のiOS共通ライブラリをSSHフリー化した話 ― 「publicだから認証不要」の勘違いに、Dockerビルドだけが気づいていた

  • YoLibraryのSSH参照をHTTPSに変更したが、認証情報の依存が隠れていた
  • Forgejoミラーはprivateで認証が必要、Dockerビルドで401エラーが発生
  • コードコメントに誤った前提が残り、環境依存の問題を引き起こした

@カノン@Zenn /

RX 5500 XTからV100S×4まで、4台の計算機でローカルLLMを測り比べた話

  • 4台のGPUでローカルLLMの性能を測定し、pp512とtg128の差が主な指標となった
  • pp512は行列演算器の有無で、tg128はメモリ帯域で差が決まる。V100SはHBM2でtg128が速く、RDNA4はVulkanの方がROCmより速い
  • pp512は行列演算器の有無が重要で、tg128はメモリ帯域の効率が鍵。マルチGPUは容量拡張に有効で、ベンチマークと実運用の差に注意が必要

@TechStudioLab /

LINEと診察券番号を安全に紐付ける医療連携設計

  • LINEのuserIdと院内患者IDをアカウント連携で安全に紐付ける設計を採用
  • LINE公式アカウント連携フローで本人確認済みの院内アカウントと結び付け、nonceをランダムな一回限りの値で管理
  • 診察券番号を外部連携に広げず、通知はホワイトリスト方式で送信可否をコードで固定する

@さいとう /

AIに任せてAndroidの激重画面を8倍高速化した話

  • タスク詳細画面の初期表示時間を3,620msから440msに短縮した
  • 担当者一覧の取得タイミング遅延、コメントと添付写真の一括取得、黒板プレビューの再利用、Realm開く処理のcompact設定変更
  • Realmのcompact設定を50MB以上かつ使用率50%未満に変更することで処理時間を146〜191msから2〜4msに短縮した

@まつ /

JVMメモリ設定を「値」ではなく「構造」で理解する

  • JVMメモリ設定では-Xmsと-Xmxが同じJavaヒープを指し、ダイレクトメモリとMetaspaceは別領域として扱う
  • -Xmsと-XmxはJavaヒープの初期サイズと最大サイズ、-XX:MaxDirectMemorySizeはNIOダイレクトバッファの上限、-XX:MaxMetaspaceSizeはメタデータ領域の上限を設定
  • Javaヒープに加えてダイレクトメモリやMetaspace、OSや他のプロセスのメモリも考慮し、ホストやコンテナに余力を残す