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

ソフトウェア開発の技術記事まとめ

@jqit-yukiono /

GitHub CodeQLが個人アカウントでは使えなかった話 ― 開発ツールを9本まとめて入れた棚卸しの顛末

  • GitHub CodeQLは個人アカウントのプライベートリポジトリでは導入できず、Semgrepの代替としてOpenGrepに移行した
  • CodeQLはOrganization向けプランで、個人アカウントでは購入メニューが存在せず、OpenGrepはSemgrepの無料フォークでtaint解析が可能
  • 個人アカウントでは有料ツールの利用制限があるため、代替ツールの選定が重要で、LGPLライセンスのOpenGrepを検討すべき

@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エラーが発生
  • コードコメントに誤った前提が残り、環境依存の問題を引き起こした

@rana_kualu /

【JavaScript】Promise.resolveはPromiseでないオブジェクトもresolveするしそのせいで脆弱性がたくさんある

  • JavaScriptのthenable仕様がセキュリティ脆弱性の原因となり、SafeResolveプロポーザルが導入されている
  • thenメソッドの存在でthenableと判定され、Promise.resolveが解決する仕様。SafeResolveではユーザコード実行の可能性を確認し、非同期ジョブで解決する
  • Promise.resolveがthenableを解決する仕様はセキュリティリスクがあり、SafeResolveで解決処理を非同期化することでメモリ破壊系の脆弱性を防ぐ

@榊原昌彦 /

クロスプラットフォームアプリのためのiPhone Duoレビュー

  • iPhone Duoではツールバーとタブがvertical barsに移動し、リストの表示範囲がSafe Area内に収まる
  • ツールバーの操作がvertical barsに配置、リストの枠がvertical bars側のSafe Area内に収まる、タブが文字だけでもvertical barsに移動
  • vertical barsの配置はデバイスが自動で決定し、アプリ側で明示的な設定が必要

@カノン@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をランダムな一回限りの値で管理
  • 診察券番号を外部連携に広げず、通知はホワイトリスト方式で送信可否をコードで固定する

@タックルマン@日本○学 /

AWS DEA-C01 合格点の720点を、社会人の資格勉強で模試10回に割ってみた

  • AWS DEA-C01の合格点720点を10回の模試に割って学習計画を立てる方法が紹介されている
  • 模試10回のうち後半3回で8割を取る目標、4分野の比重に応じた問題数配分、IT資格道場の問題集が教材として選ばれた理由
  • 非採点問題の存在により合格点ぎりぎりの力では採点問題の難易度次第で不合格になる可能性がある

@yasufumi-tsunaki /

業務アプリを解析してOJT教材をAIに作らせた話

  • 業務アプリを解析してAIにOJT教材を生成し、新人が業務コードをスムーズに理解できるようにした
  • 業務アプリの構成・ライブラリ・データフローを解析し、学習観点と制約を定義してAIに仕様書とサンプルコードを生成
  • 業務コードと教材の構成を揃えるためには人が制約を明確に定義し、AIに生成を任せることで効率化できる

@naoki /

FastAPI はどこで待たされていたのか ― イベントループ・スレッド・プロセスで整理する

  • FastAPIで同期DBドライバを使うとイベントループが止まり、リクエストが遅延する
  • async def内で同期処理を実行するとイベントループが停止し、psycopg2のDB待ちはスレッドプールに委譲するか非同期ドライバに変更する必要がある
  • 同期処理はスレッドプールに委譲すると40本の上限で頭打ちになるため、非同期ドライバへの変更が効果的

@タックルマン@日本○学 /

AWS AIP-C01 難易度を、180分75問の資格勉強の計画に落として数えてみた

  • AWS AIP-C01試験は180分75問で、5分野の配点に応じた学習計画が必要
  • 試験時間180分、出題75問(採点65問)、5分野の配点31%・26%・20%・12%・11%、実装と統合が17問、基盤モデルの統合とデータ管理が20問
  • 5分野の配点に応じて学習時間を割り当て、最初の2週間は重い分野に集中するべき

@lucnguyen /

【Physical AI入門】AIは賢くなった。でも、どうやって本物の車輪を回すのか?

  • ジョイスティック入力からモーター制御までをROS 2とSTM32で実装する流れが解説された
  • /joyから/cmd_velへの変換、micro-ROSによるJetsonとSTM32の通信、エンコーダとPID制御によるフィードバックが具体的に説明されている
  • ROS上でのコマンド表示だけでは実機動作が保証されず、ハードウェア接続状態やファームウェアの動作確認が必要な点に注意すべき

@nolanlover0527 /

Claudeに920万件規模のニュース記事を解析させた事例が話題に【大規模データ分析】

  • 920万件のニュースデータをクラスタリングとストーリー化で構造化し、Claudeで分析した
  • クラスタ数78万件、ストーリー数11万件に圧縮、集計結果とサンプルデータをClaudeに渡す
  • LLMに直接生データを渡さず、前処理で構造化したデータを分析させる設計が有効

@suwa_nobu /

Claude Code の新しい監査コマンドは、そのままでは自分のスキル49本を見なかった

  • Claude Code 2.1.283の/doctor prompt-auditコマンドは、デフォルトではユーザー階層を監査しない
  • /doctor prompt-auditは古いモデル向けのプロンプトパターンを検出、--add-dirで~/.claudeディレクトリを指定するとスキルとサブエージェントを監査可能
  • 権限が下りないためスキル49本とサブエージェント286個を監査するには--add-dirを指定する必要があり、コストが高くなる