ミツカリ技術ブログ

株式会社ミツカリの開発チームのブログです

科学的根拠に基づく、アウトプットが大切な理由

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 我々IT界隈以外もそうだと思いますが、よく「アウトプットしろ」「学んだことを書け」と言われます。 これは理解できますし、実際に私自身もそこそこアウトプットはしている方だと思います。…

会議の音声を処理するWebアプリを作るための技術調査

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 近年、音声を処理するWebアプリが急速に増えています。たとえば会議の文字起こし・要約を行う Otter.ai や Fireflies.ai、日本語特化の Notta や Rimo Voice、商談解析の amptalk や MiiTel…

生成AIに個人データを渡す前に知っておきたい個人情報保護法の実務知識

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 当社はHR Tech SaaSという特性上、個人情報・個人データを扱う機会が非常に多いです。 例えば顧客が従業員の氏名やメールアドレスをシステム上に登録します。そのほか、当社は生成AIをプロダ…

Elasticsearchでネットスーパーを題材にハイブリッド検索を試してみる

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 先日友人たちと新年会をしてきたのですが、そこで検索技術に関する話を少ししました。 私は門外漢なのですが、友人は大手企業で検索を専門にしているスペシャリストです。そこでキーワード検…

Claude codeのAgent Teamで複数の機能開発を並列実行してみた

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 前回のこちらの記事ではGitButlerを使って並列開発をしてみました。 tech-blog.mitsucari.com 今回の記事ではClaude codeのAgent Teamで全く同じ並列作業をしてみようと思います。 前回はGit…

ミツカリ社の開発タスク優先度決定ロジックの歴史と悩み

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 今回の記事では当社(主に私)が今まで検討してきたタスクの優先度決定ロジックについて、その歴史や悩みについて紹介したいと思います。 優先順位付けに関して「うちはこうしています、こうす…

GitButler × Claude Codeで複数の機能開発を並列実行してみた

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 今回の記事ではGitHubの共同創業者が手がけた次世代Gitクライアント「GitButler」を試してみました。 Virtual Branch(仮想ブランチ)でClaude Codeを3つ同時に走らせて並行開発する、という…

Zero Runtime CSS in JSに乗り換えたのでパフォーマンス測定をしてみた

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 当社では今までCSSライブラリとしてEmotionを使用していました。 Emotionを選定したのは2022年8月頃で、その頃はまだTailwindよりも人気でした。他にMUIを利用することも決めており、MUIもEm…

Next.jsプロジェクトにStyleXを導入してemotionと共存させるまでの道のり

ミツカリのたなしゅん(@tanashun_dev)です。 皆さんは、emotionなどのCSS-in-JSライブラリを使っていて、ランタイムのスタイル生成オーバーヘッドが気になったことはありませんか? 昨今のエンドユーザの端末はスペックがどんどん高くなっているので、msレベ…

DBのプライマリーキーはUUIDか整数か?実際に検証してみた

DB

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 先日、こんなツイートが少し話題になっていました。 結構数値派が多い。雑な投稿だったのでちゃんと書いてなかったが、PostgreSQL使ってUUID使うならv7、シャーディングする想定なし、モノリ…

E2Eテスト:DatadogからPlaywrightへ移行した理由とPros/Cons

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 以前、以下のような記事を書きました。 tech-blog.mitsucari.com tech-blog.mitsucari.com 今まではE2EテストにDatadog Synthetic Browser Test(以下Datadog)を利用していましたが、チーム内…

PdMツールの比較 (Centou, Dovetail, Flyle, Productboard, etc)

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 私はCTOですが、スクラムにおいてはプロダクトオーナーの役割を担っており、同時に製品開発全般においてはプロダクトマネージャー(以下PdM)の役割も担っています(現状はCPO不在のため私が担…

Automaによる自動化 - CSVを使った大量データ登録

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 みなさんはWebページを操作していて、こんなことを思ったことはありませんか? 「繰り返しが面倒だ。大量のデータを登録するのが大変だ。」 Webに限りませんが、こう言う問題は一般的によく…

DNSに再入門: NS, AAAAレコードの必要性を整理する

DNS

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 DNSは昨今のWebを支える技術です。 前回はDNSサーバーをRoute53からCloudflareに移行したという記事を書きました。 tech-blog.mitsucari.com 今回は移行中に生じた疑問をベースに、各種レコ…

DNSに再入門: DNSサーバーを移行し、結果と速度を検証する

DNS

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 DNSは昨今のWebを支える技術です。 前回の記事ではDNSのフルリゾルバについて調査・説明しました。 tech-blog.mitsucari.com 今回はDNSサーバーの移行作業および速度検証についてです。私は…

DNSに再入門: DNSサーバー(フルリゾルバ)を実際の家庭や実例を交えて詳解する

DNS

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 前回の記事では弊社のインターンの井上さんがDNSの歴史について解説してくれました。 tech-blog.mitsucari.com 今回はDNSサーバーにフォーカスを当てて説明をしてみたいと思います。DNSサー…

DNS誕生までの歴史

DNS

はじめに ミツカリインターンの井上です。今回、DNS誕生までの歴史について、IT初心者の方にもわかりやすいように、このブログ記事にまとめました。 現代のインターネットでは、Webサイトのアドレス(例:www.example.jp)を入力するだけで、目的のページに…

Findy Team+ Award 2025で開発生産性の高い組織に選ばれました!

ミツカリのたなしゅん(@tanashun_dev)です。 以前、弊社のつかびーさんからFindy Team+という生産性の可視化ツールの導入について記事を公開しました。 tech-blog.mitsucari.com そちらのツールを導入している企業のうち、特に生産性の高い企業を表彰するイ…

rspecで特定のミドルウェアをSkipする方法

ミツカリのたなしゅん(@tanashun_dev)です。 ミツカリではこれまではCommitteeのRequestValidationを有効化していましたが、組織のコーディングルールとしてValidationをFormに統一しようということになったので、現在Formへの移行作業が行われています。 な…

committeeのRequestValidationは便利だが使うのをやめた話

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 弊社では数年前からWeb API開発においてOpenAPIおよびスキーマファーストの開発スタイルをとっています。 今回の記事ではスキーマファーストの開発に interagent/committee を使っていました…

React + ViteのSPAをCloudflareのルーティングを理解しながら作る

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 ミツカリではPaaSには専らAWSを利用しており、Cloudflareはほとんど利用していません。また、私自身もCloudflareを過去がっつり触ってきた経験はないため、Cloudflareに入門(学習)してみるこ…

Github Actions(ワークフロー)で無闇にSecretsを定義してはいけない話

ミツカリのたなしゅん(@tanashun_dev)です。 Github ActionsでCI/CDを構築する際、ビルドやデプロイ時に秘匿情報を環境変数として渡す場面がありますよね。 例えば以下のような形です。 jobs: jobA: runs-on: ubuntu-latest steps: - uses: docker/build-pus…

マーケティング出身のジュニアエンジニアが教える、Webエンジニアなら抑えておきたいデザインの4原則: ①近接編

はじめに デザインとは? デザインの4原則とは? デザインの4原則① 「近接」 「近接」を使った事例と注意点 最後に はじめに こんにちは!ミツカリでジュニアエンジニアをしています。tt(髙橋)です。 この記事ではWebエンジニアなら抑えておきたい「デザイ…

GithubActionsに標準搭載されていない複雑な実行トリガーを表現する

ミツカリのたなしゅん(@tanashun_dev)です。 GithubActions、皆さん使っていますでしょうか? Pull request(PR)をトリガーにテストを実行したり、プッシュをトリガーにデプロイを実行したりしますね。 ほとんどの場面ではPRが作られたとき、プッシュされた…

Playwright Component Testを用いた単体テストでJestで書けなかったテストを実現する

ミツカリのたなしゅん(@tanashun_dev)です。 弊社で提供しているサービスの一部のアクションでドラッグアンドドロップで画面上の要素の並び替えをする機能があります。 この実装にはdnd-kitというライブラリを使っています。 dndkit.com ライブラリのおかげ…

時系列DBに入門しつつ、パフォーマンスを計測してみる(InfluxDB v2 vs PostgreSQL v15)

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 ITシステムにおけるデータベース(DB)には様々な種類が存在します。一般的によく使われるのはリレーショナルデータベース(RDB, RDBMS)であり、PostgreSQLやMySQLが有名です。これらとは別の種…

Sentryのエラーをアーカイブするときの考え方(エラーバジェット)

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 今回はエラーモニタリング(エラートラッキング)サービスであるSentryの扱い方についての記事です。 Sentryとは Sentryとはエラーモニタリングサービスであり、アプリケーション上で発生した…

DevOpsDays Tokyo 2025 に初参加した感想

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 先日DevOpsDays Tokyo 2025というカンファレンスに参加しました。今回の記事はその感想レポートです。 DevOpsDays 詳細は以下のページを御覧ください。 www.devopsdaystokyo.org 過去に何度…

Bedrock AgentのDraft, Version, Aliasの構造とTerraform管理の難しさ

AWS

こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。 先日弊社は生成AIをプロダクトに組み込んだとある機能をリリースしました。 ミツカリもAIエージェントに!!AIアシスタント機能がリリースされました。早速使っていただき面接の動機づけや面…

ReactHookFormのuseFieldArrayを使った動的フィールドでの不具合解決

はじめに ミツカリのたなしゅん(@tanashun_dev)です。 ReactHookForm、皆さん使っておりますでしょうか。 React開発においてかなりメジャーなFormライブラリですね。 ミツカリでも採用しています。 ReactHookFormにはuseFieldArrayという動的に入力項目を増…