レバテック開発部のフィード
https://zenn.dev/p/levtech
レバテック開発部の公式テックブログです!
フィード

GitHub ActionsではSHAを指定してリスク回避しよう
1

レバテック開発部のフィード
レバテック開発部の松浪です。先日、GitHub Actionsで使用されているtj-actions/changed-filesが侵害され、シークレット値がログに出力されてしまうという問題が発生しました。https://x.com/azu_re/status/1900812083517943930NISTに公開された情報を確認するとtj-actions changed-files before 46 allows remote attackers to discover secrets by reading actions logs. (The tags v1 through v...
7日前

Enumとパターンマッチでコードの意図を明確にする
レバテック開発部のフィード
コードリーディングをしているときに、「この条件でこの関数を呼んでいるのは分かるが、なぜそうしているのかが分からない」と感じたことはありませんか?そんなときに効果的なのが Enum と パターンマッチを使った書き方です。Enumで「なにをしたいか(意図)」を名前として明示し、パターンマッチで「その意図に応じた処理」を分けることで、意図が明確なコードを書くことができます。Enumとパターンマッチングを使った手法はよく知られていると思いますが、最近リファクタリングをする中で、整理できる場面に遭遇したので、実際にあったPHPのコードを例に紹介します。 元のコード以下のコードは、外部シ...
9日前

MySQLのDDLを安全に使うための全て
レバテック開発部のフィード
これはなにども、LT開発部のもりたです。今回はMySQLのスキーマ変更(DDL)について調べました。DDLってなんとなく使うことは可能なんですが、データ量が増えていくにつれて障害の要因になったりもしますよね。もりたも障害が起きてDDLを調べたクチなんですが、調べれば調べるほどDDLに関する断片知識が絡まり合い、整理をつけるのが大変でした。今回はその断片を撚り合わせ、綺麗に縫合することで、この1記事だけで大体全てがわかるようにしました。もしDDLでお困りの方がいらっしゃいましたら、この記事(と、そこから辿れる諸記事)を足がかりに基礎と応用を身につけていただければと思います。また...
23日前

Next.jsで発生したAPI ルートのメモリリークを3点ヒープダンプ法で解決した話
レバテック開発部のフィード
はじめにNext.js を使用しているシステムでメモリリークが発生したので、3点ヒープダンプ法で原因を特定しました。ヒープダンプを取得するまでの手順や Chrome Devtools の Heap Profiler の使い方が分かったので、備忘録としてまとめました。 3行で要約NextApiResponse の中身は stream なので、res.end() などでストリームを終了させないとメモリリークが発生するメモリリークを特定するのに3点ヒープダンプ法という手法があるHeap Profiler が便利 Next.jsのシステムでメモリリークが発生 メト...
25日前

Docker Hubのレート制限対策をした ~Podman Desktop (Docker Compatibility)編~
レバテック開発部のフィード
もう気軽にdocker pullできない。Docker Hub未認証ユーザーだと。2025年4月1日以降のDocker Hubのレート制限が厳しいので、とりあえず自分の開発PCでmirror.gcr.ioからイメージを取得するようにしておこうと思いました。あくまで私のPC環境でしか試してないので、もしかしたら誰かの参考になるかも程度の記事です。https://docs.docker.com/docker-hub/usage/Starting April 1, 2025, all users with a Pro, Team, or Business subscription...
1ヶ月前

EMConf JP2025参加レポート!
レバテック開発部のフィード
お疲れ様です。レバテック開発部の小堺です。本記事は、2月27日に開催されたEMConfの感想などを綴ったレポート記事になります。どのセクションからでも読めますので、気になるところからお読みください! どんなイベント?Engineering Manager Conference Japan(EMConf JP)は、EMによるEMのためのカンファレンスです。https://2025.emconf.jp/既に存在していたEM系コミュニティイベントのコアメンバー達が協力して立ち上げたのが本カンファレンスで、EM系イベントとしては過去最大規模になっています。今回のテーマは「増幅」...
1ヶ月前

MySQLのオンラインDDL(INPLACE)がどう動くか理解する
レバテック開発部のフィード
これはなにこの記事は米シリコンバレーでデータベースコンサルや教育事業を展開するKloudDB社がポストした『Understanding How ONLINE DDL (INPLACE) works in MySQL』の翻訳記事です。https://klouddb.io/understanding-how-online-ddl-inplace-works-in-mysql/この記事ではDDL(スキーマ変更クエリ)の内部処理について詳細に解説しています。DDLはシンプルに利用できるものの、一歩踏み込むと複雑怪奇で理解の難易度は高いものでした。この記事はそこに焦点を当てたものになり...
1ヶ月前

EMの皆様の悩み・大事にしていることを聞かせてもらいました【#emconf_jp ブース運営レポート】
レバテック開発部のフィード
はじめにレバテックでは2/27(木)のEMConfにてブースを出展させていただきました!ご来場いただきました皆様ありがとうございました!今回のブースは 「EMが大事にしていること・悩んでいること」 というテーマでしたが、たくさんの方にご意見やアドバイスをいただいたため、そのまとめを新米EMの私が記事として書かせていただきます! No1:「メンバー育成」で大事にしていること・悩んでいること 全体的にまずはEMの永遠のテーマ、メンバー育成についてです!こちらについては悩み4割、大事にしていること4割、悩みに対するアドバイスが2割というような割合で、アドバイスが当初の想...
1ヶ月前

[パフォーマンス改善]LaravelのwhereIn()をgroupBy()で改善
レバテック開発部のフィード
こんにちは。レバテック開発部のきょうかです。レバテックの社内業務用システムの保守開発を担当しています。今回、担当しているシステムの中で、実行頻度が高く、処理時間が長い処理のパフォーマンスを改善しました。その過程で学んだことを以下にまとめます。 修正内容 修正箇所の処理内容data1とdata2を取得し、data1に紐づくdata2をリスト化して返却する処理を行っていました。 修正の概要ループ内で繰り返し実行されていた whereIn() を削除し、事前に groupBy() を使ってデータをインデックス化することで、パフォーマンスを大幅に向上させました。具体的なコ...
1ヶ月前

LaravelでN+1を回避!with()を使う or 使わない?
レバテック開発部のフィード
こんにちは。レバテック開発部のきょうかです。レバテックの社内業務用システムの保守開発を担当しています。今回はLaravelのwith()について少し調べたのでそれについて書いていきます。 背景とある改修を進める中で、データの取得方法について悩みました。Laravelのwith()で取得するか、別でクエリを発行して取得をするか...🤔どちらが適切か判断するため、実際に動作を確認しながら進めました。今回はその記録をまとめます。 実装内容を見てみる実装したいのは、「HogeのIDを複数取得し、それらを元に文章を作成する」という処理です。文章の作成には、Hogeに紐づく複...
2ヶ月前

turbo run するときにパススルー引数があるとcache missになる
レバテック開発部のフィード
おつかれさまです。オウンドメディア担当の水谷です。自チームのTurborepoを利用しているモノレポでCIが遅いな~と思っていたらキャッシュが効いてなかったのでその対応をしました。 TL;DRturboのパススルー引数を使わないようにするyarn backend:test --coverage → yarn backend:test:coverage(使わなくて済むようにtask(pipeline)・scriptsを調整する) 事象レバテック開発部ではGitHubを利用しており、PR作成時にGitHub ActionsでCIタスクを実行しています。自チームのバックエン...
2ヶ月前

本当にあった入力フォームの怖い話 〜Enterキーを押しただけなのに〜
レバテック開発部のフィード
はじめにこんにちは。レバテック開発部でオウンドメディアの開発を担当しています、金井です。HTMLのinputタグを使って入力フォームを作成することがあるかと思いますが、今回はその入力フォームについて、1つ怖いお話をしようと思います。 何が起こったか 気づくまでの経緯エントリーフォーム上でのユーザーの行動を分析していたところ、不可解な遷移をしているユーザーがいることがログからわかりました。通常だと、画像のような遷移をして登録完了画面に遷移するはずなのですがメールアドレス入力画面の後に、入力したであろうメールアドレスがクエリパラメータとして付与されて、最初の「希望契約...
2ヶ月前

_sqlx_migrations のレコードに入る checksum を自前で計算するスクリプト
レバテック開発部のフィード
こいつを突破したい はじめにsqlx-cli でのマイグレーションを管理している _sqlx_migrations テーブルを確認すると、こんなテーブル構造をしています。_sqlx_migrations のテーブル構造5 番目のカラムに checksum がありますね。ここには 6ACD14A420A076E4F59F8D11061CF2ABE392DDE34B32A62E83E10B6C0160C9CC3B98D2381E7465C9EB37E1CC72D8EB69 といった値が入っています。このチェックサムの値がどのように計算されているかを調査したので、メモがてら残...
2ヶ月前

たくさんのSREにお悩み相談してきました!【SRE kaigi 2025ブース運営レポート】
レバテック開発部のフィード
はじめにレバテック開発部、SREの金澤です!レバテックでは先日のSRE kaigi 2025にてブースを出展させていただきました!ご来場いただきました皆様ありがとうございました!今回のブースは 「レバテックのSREの悩みにお知恵をお貸しください」 というテーマでしたが、たくさんの方にご意見やアドバイスをいただいたため、そのまとめ記事を書かせていただきます!↓このように用意していたボードを埋め尽くすほどのアドバイスや共感コメントをいただきました! お悩みNo1:SRE文化がなかなか浸透していかない...皆さんどはどうしていますか 全体的にこちらの悩みについては、全...
2ヶ月前

ローカルブランチを大掃除したいなら、思考停止してgh poi使うと良い!ポイっ!
レバテック開発部のフィード
1. githubのcli、ghコマンドをインストールbrew install ghとかで。https://github.com/cli/cli 2. ghコマンドの拡張機能として作られているseachicken/gh-poiを追加gh extension install seachicken/gh-poihttps://github.com/seachicken/gh-poi 3. ポイっ!gh poiちゃんとマージ済みのブランチだけ一気に消えます!seachicken/gh-poigithubのユーザー名もコマンド名も覚えやすくて好きです。毎日有難...
2ヶ月前

iOS18.2×SendGridでのメールのクリック追跡には注意が必要!?
レバテック開発部のフィード
SafariにHTTPアクセス時に警告ページを出す設定が追加されたiOS18.2以降のSafariにはHTTPを使用しているWebサイトにアクセスしようとした際に警告ページを出す設定が追加されたようですね。https://support.apple.com/ja-jp/guide/iphone/iphfba2ed790/ios警告ページとはこの画面のことです。デフォルトではこの設定はオフになってます。とはいえ設定の項目名は「接続が安全ではないときに警告」となっていて、注意深い人であればオンにする人も少なからずいるのでは無いでしょうか? SendGirdのトラッキングU...
2ヶ月前

スキルマップを作成して、チームの強みと弱みを可視化!
レバテック開発部のフィード
これはなにこんにちは!レバテック開発部の宮下です。皆さんは、チームのメンバーが何の技術が得意不得意で、モチベーションが高いかご存知ですか?スキルマップを作成することで、チームの強みと弱みを可視化し、相互理解に繋がるだけでなくプロジェクトの進行やリソース配分を最適化できると考えています!この記事では、スキルマップを作成する意義とその具体的な方法、そしてどのような効果があったのか解説します!!! 対象読者チームリーダーの人メンバーのことをあまり知らない人モチベーション管理に悩んでいる人チームの強みと弱みが直ぐに回答できない人 スキルマップとはスキルマップ...
2ヶ月前

非エンジニアがAutifyでテストを自動化してみた
レバテック開発部のフィード
TL;DR非エンジニアがシステムリプレイスのプロジェクトでAutifyを使ってみました入力内容と結果のセットを検証するシナリオテストと相性がよいと感じました受入テスト負担を減らせましたが、検証の内容によってはテストしづらかったりエンジニアと協力する必要もありそうです はじめにレバテックでPM・ディレクターをやっている綾塚です!普段は以下のような業務を担当しており、特に実装要件を詰める時やテスト後の修正依頼をする時には、エンジニアの皆さんと連携しながら進めることも多いです。システム改修要望のヒアリングや実装要件の策定改修機能のテストや修正依頼他、進捗管理や関係...
2ヶ月前

Firestoreの稟議を出したときに考えたこと
レバテック開発部のフィード
これはなにあけましておめでとうございます。レバテック開発部のもりたです。今回はFirestoreの稟議出しをしたときに考えたことを記事にしました。もりたの担当プロダクトではFirestoreを使っているのですが、先日、色々あって利用料の稟議をだし直しました。もりたはFirestoreについても稟議についてもな〜〜んも知らん状態だったので、Firestore×稟議初見勢として今後Firestoreの稟議を出すみなさんのために情報を残しておこうと思います。 もりたの考えたこと 稟議提出の作業内容こんな流れで考えました。(以降スラスラ書いてますが実際は上長にツッコミを入れら...
3ヶ月前

「アーキテクチャカンファレンス 2024」で学んだアーキテクチャとの付き合い方
レバテック開発部のフィード
TL;DRアーキテクチャカンファレンス 2024 に参加したトレードオフ分析では、評価軸の重み付けや市場の変化に応じた継続的見直しが重要組織とアーキテクチャは相互に影響を与えるアーキテクチャはあくまでビジネス目標達成の手段であることに留意するべき進化的アーキテクチャ実現のために、シンプルさと柔軟性を重視し、偶有的複雑性を最小化するべき はじめにこんにちは、直近はシステムのリプレースに着手している内藤です。リプレースや大規模な設計変更を進めている方にとって、アーキテクチャ設計の悩みは尽きないですよね...先日参加した「アーキテクチャカンファレンス 2024」で...
3ヶ月前