サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
times.hrbrain.co.jp
HRBrain Advent Calendar 2023 の24日目の記事です。 qiita.com はじめに こんにちはー プラットフォームチームの東島です。 これまでHRBrainのアプリケーション実行環境はGoogle Kubernetes Engine(GKE)を用いて構築してきました。しかし、2023年9月に運用負荷削減、プロダクトエンジニアがオーナーシップを持ってインフラ管理できることを目的にGKEからGoogle Cloud Runへ実行環境を移行しました。この変更に伴い、GKEで構築していた「ブランチデプロイ」と呼ばれるプルリクエストプレビュー(以後ブランチデプロイ)環境もCloud Runへ移行しました。 times.hrbrain.co.jp この記事では、どのようにCloud Runでブランチデプロイ環境の構築を実現したのかを紹介します! HRBrainの構成について
こんにちは。Dev.Enablementチームの@yug1224です。 梅雨に入り、ジメジメした日が続いていますね。皆様いかがお過ごしでしょうか。 オフラインの開発者イベントも増え始め、少しずつですがコロナ禍前の日常が戻りつつあるように感じます。 弊社でも4月以降イベントを開催してきましたが、ここで改めて「HRBrain Fly High」についてご紹介します。 HRBrain Fly High とは 「Power to the people」をPurposeとして掲げるHRBrainによるデベロッパーミートアップです!🍖 働くひとりひとりの成長を支え、会社ひとつひとつを成長に導く。どこよりも成長に伴走し、成長を科学し、成長を具体的にソリューションとして提示できる存在になる。 そんな想いから、技術を深く掘り下げる Deep Dive ではなく、より高く飛び上がる Fly High を目指
こんにちは。HRBrainでVP of Engineeringを担当している川田です。本記事は、開発組織の概要を伝えるために書きました。 カジュアル面談ではよく伝えている内容ですが、対外的な発信はしていなかったので、改めて実例を交えながら紹介します。 想定読者は、HRBrainの開発組織に興味を持った方、興味を持つかもしれない方です。カジュアル面談の前などに軽く目を通しておいていただけると、より深い話ができるのでぜひご一読ください。 HRBrainとは HRBrainは、HR TechのSaaSプロダクトを提供するスタートアップです。 開発組織として、開発者が顧客の本当に求めているものを作り出し、しっかり届けられていることを実感できることを大切にしています。 HR Techのサービスと言うといわゆる業務アプリケーションのような古いイメージを持たれがちですが、HRBrainではより良いユーザ
この記事はHRBrain Advent Calendar 2022の19日目の記事です。 qiita.com はじめに HRBrainではタレントマネジメントシステムHRBrainを提供しています。 社員名簿機能では、運用に合わせて自由に社員情報に紐付く項目を作成・編集することで、あらゆるデータを管理できます。 項目には種類があり、文字列や数値、カスタムプルダウン、計算式など項目の種類も選ぶことが可能です。 レイアウト編集画面(このレイアウト編集画面も一年半ほど前に自分が実装を担当しました。) 計算式項目はさまざまな用途に利用されています。 例えば生年月日から年齢を算出したい場合の計算式は下記の通りです。 ISBLANK({生年月日}) ? '' : DATEDIF({生年月日}, NOW(), 'Y') 計算式の言語仕様は下記をサポートしています。 ISBLANKやDATEDIFなどの関
こんにちは、プラットフォームチームのテックリードの星井です。HRBrainのAdvent Calendarの8日目の記事です。 先日、Terraformコマンドを実行するGitHub Actionsのワークフローを作成しました。 作成するにあたって、いくつかインターネットの記事を参考にしましたが、monorepo用でシンプルなワークフローが意外となかったので、ブログにまとめることにしました。 メンテナンスしやすいワークフロー GitHub Actionsは便利ですが、数が増えてくると、依存関係のアップデートなどが面倒です。なので、今回はメンテナンスコストを最低限にしたワークフローを作ることを目指しました。コマンドスクリプトを使って動的なワークフローにして、便利なtfcmtを使うことで、メンテナンス性を高めています。 name: terraform-plan on: pull_request
こんにちは。HRBrain でフロントエンドエンジニアをしている山本です。 今回は git commit の commit type についての考えを紹介します。 refactor や feat など、果たして誰に向けた commit type なのか、分からなくなってしまうことがよくあります。 多数の人間が介在するプロジェクトにおいて、ここの考えがまとまらないと、feat なのに refactor といった自体になってしまいます。 今回は commit type のおさらいと、誰に向けて書けば良いのかの整理をします。 git commit message にフォーマットを設定する commit message をあるフォーマットで統一すると、 見やすさの向上 外部ツールとの連携(commit message を元に document を生成するなど) などが可能ではないかという声が上がり
この記事は HRBrain Advent Calendar 2021 13日目の記事です。 qiita.com はじめに こんにちは。フロントエンドエンジニアの村崎です。 社会人になって8ヶ月が経ちました。あっという間ですね。 みなさんはどのような方法でテストに使うmockを定義していますか? 弊社では、OpenAPIを用いてスキーマ駆動開発を行っているプロダクト及びチームが多く存在し、フロント・サーバーそれぞれgeneratorを用いて型を自動生成しています。 そこで、スキーマからテストで扱うmockデータも生成できたら便利ではないか?と考えました。 今回はOpenAPIのスキーマからmockを生成して、フロントエンドのあらゆるテストで使い倒す方法を紹介します。 前提 最終形のコードはこちらになります。 github.com 現在開発を担当しているプロダクトでViteを採用しているため、
HRBrainプラットフォームチームのテックリードのhidetatzです。札幌に住んでいるんですが雪がヤバいです。 このブログでは、HRBrainのプラットフォームチームとはどういうチームで、普段何をしていて、何を考えているのかを紹介します。社内のメンバーに知ってもらいたくて書いている部分もありますが、私達のことをもっと知ってもらうために、そして私達の仲間を増やすためにこの記事を書くことにしました。この記事を読んでもらって、私達の仕事の面白さを知ってもらい、話してみたいと思ってもらえたらいいなと思います。 プラットフォームチームは「インフラチーム」「DevOpsチーム」「SREチーム」のいずれでもありません。私達のチームが向き合っているプラットフォームエンジニアリングというタームは比較的新しいもので、よく説明されている記事は (特に日本語では) 筆者はあまり見かけません。この記事では、プラ
この記事は HRBrain Advent Calendar 2021 10日目の記事です。 qiita.com はじめに こんにちは。主に人事評価サービスのバックエンド開発や運用を担当している@tonarinoheyです。 筆者の2021年ベストバイはMINIクラブマン クーパーSDです。私事ですが、1歳になる長男が無限中耳炎編に突入しており、勤務中に中抜けして通院するのが最近のトレンドです。助けてくれ。 さて、HRBrainにおいて最も運用期間が長いサービスである人事評価サービスにおいて、開発チームは今年度からサービスレベル目標 (SLO) を定めています。運用を始めたばかりなので、今回は主にSLO運用に至った背景や、サービスレベル指標(SLI)・SLOをどのように決めたかご紹介します。 導入経緯 人事評価サービスが今後も利用テナント数を増やし、稼働継続しながら新たな機能追加が続くことを
この記事は HRBrain Advent Calendar 2021 7日目の記事です。 qiita.com はじめに HRBrainでメール配信基盤を担当している鈴木です。 個人としては前職でもテレビ番組のプレゼント応募などで当選・落選を送るようなメール配信基盤を作っていたので、それを含めると5年くらいメールの到達率と戦っています。 低レイヤー?な部分について前職も現在もSendGridを利用しています。 今回はメールの到達率を上げるために今までトライアンドエラーをしてきたことについてお話ししようと思っています。 前提 HRBrainでは企業向けにタレントマネジメントシステムを提供しており、企業の人事担当が企業の従業員に向けて通知を行うときにメールが利用されます。 企業によってはGoogle Workspaceなどを利用して全従業員に対してメールアドレスを発行、それを登録している企業から
この記事は HRBrain Advent Calendar 2021 2日目の記事です。 qiita.com はじめに Goで構造体をバイナリエンコーディングする際、大抵は encoding/json か encoding/gob を使うと思います。 以下の記事を読んで、標準の encoding/binary パッケージを使えば任意の構造体のエンコード・デコード処理を自前で書けることを知りました。 zenn.dev 構造体のエンコード・デコード処理を自前で書くとどれくらい速くなるのか気になったので試してみました。 単純にreflectionを使わない分速くなりそうです。自前で書いたエンコード・デコードのパフォーマンスを、 encoding/json encoding/gob と比較してみます。 ※最初に言っておきますが実用性は殆ど無いと思います。 型ごとのエンコード・デコード方法 int
こんにちは、バックエンドエンジニアの鈴木(善)です。 昨年に引き続き、今年もHRBrainではアドベントカレンダーをやっていきます! qiita.com この記事はその第一日目となります。 みなさん、マイクロサービスの開発ってどうされてますか? HRBrainでは現在マイクロサービス構成をとっており、日々の開発では個人のマシン上で各サービスを立ち上げて動作確認やデバッグができるようになっています(以下、ローカル開発環境と呼びます)。サービスが成長するとともにこの環境にも課題が出てきました。 これを改善するため「Tilt」というソフトウェアを試したところよかったので、今はTiltベースのローカル開発環境に乗り換えています。 Tiltに関する日本語の情報もまだ少なそうなので、今回は一つの導入事例として紹介してみようと思います。 本記事ではまず弊社の抱えていた課題に触れ、次にTiltの概要を説明
どうも、こんにちは。HRBrain でフロントエンドエンジニアをやってます。ちゃんかつです。 この前初めて代々木公園に行ったのですが、めちゃくちゃ広いですね。自然がいっぱいで気持ちが良かったです。 さて、HRBrain では今年の 6 月から、毎週月曜日に「type-challenges」を用いて社員の TypeScript (以下 TS) の型表現の向上を図っています。 この記事では、HRBrain ではなぜ type-challenges を解く時間を設けているのか、また、type-challenges への取り組み方を紹介します。 なぜ type-challenges を利用するのか いろいろ理由があるのですが、「解答がなるべく簡単にできる」が一番大きな理由です。 Typescript Playgroundで解答することが出来て環境構築の手間は不要、そして、type-challeng
こんにちは!HRBrainプラットフォームチームの桜庭です。 この度HRBrainでは、アプリケーションごとにリポジトリを持つ形式から複数のアプリケーションを1つのリポジトリにまとめる形式(以下モノレポ)へ移行しました。 この記事ではいかにしてモノれぽに移行したのかを書いていきます。 アプリケーションやチームの規模その他諸々の事情によって良し悪しは変わってるのでこの記事ではモノレポとPolyrepoの比較については書きません。 どうして移行するのか HRBrainではマイクロサービスアーキテクチャを採用しています。 そのため、提供しているそれぞれのサービス(人事評価、社員名簿、組織図、組織分析)や認証基盤などのフロントエンドとバックエンドを別なリポジトリで管理していました。 最初はそれでうまく回っていましたが、最近では以下のような問題が発生するようになりました。 他のリポジトリにある共通処
こんにちは HRBrainでフロントエンドを書いている鈴木です この記事はHRBrainAdventCalendar8日目の記事です Reduxには @reduxjs/toolkit という超メガドデカハチャメチャ便利ライブラリがありますが、 createAsyncThunk で作ったコードでなんやかんやしようとするとかなりハマったのでそちらの紹介です redux-toolkit.js.org 型パラしんどい 結論 Returned ThunkArg ThunkApiConfig 使い方 動きがいまいちわからん 作った関数を実行する 非同期のアクションを受け取る おわりに 型パラしんどい createAsyncThunk には3つの型パラメーターが必要ですが、複雑でかなりしんどいです まずは型定義を見てみましょう function createAsyncThunk< Returned, T
こんにちは。HRBrainでSREをやらせてもらっている@mano_0307です。 今年も早いものでアドベントカレンダーの時期になってしまいました。あっという間の年末ですね。 昨年まで弊社ではアドベントカレンダーをやる文化はなかったのですが、先月終了間際にダメ元で「やろうよ!」とチームの方々にお声がけしたところ、予想よりも多い方が「書く!」と集まってくれました。僕としては赤井秀一(名探偵コナンの登場人物)を真似して 「・・・嫌だ、と言ったら?」 と、全員から断られてしまうことも覚悟していたので、とても嬉しく思います。 まぁでも急すぎたのもあって、さすがに25人は集まらなかった・・・。なので穴開きカレンダーです。構うものですか!アドベントカレンダーに穴が開いているからとて、別に犯罪でもあるまいに!(居直り) でも、このようなツイートをしたのですが、 会社の人たちにアドベントカレンダー書こうよ
こんにちは。HRBrainでインフラエンジニアをしている間野(@mano_0307)です。 今年の5月にインフラエンジニアとして入社しました。Kubernetesを使っている弊社で、Kubernetesをまったく触ったことのない私のような人間がインフラエンジニアになれるというのが弊社の素晴らしいところです。合言葉は「トライドリブン」。日々トライができる素晴らしい環境です。 Dev環境という各社共通の悩み 多くの会社で何かと困っているのがdev環境なのではないかと思います。 dev環境今日も空いてないよ・・・フルリモートでどうせバレないし、寝ちゃお あれ?久々に使ったdev5環境がうまく動かないよ。・・・(数時間後)あー、最新のmasterがrebaseされてないからAPIのinterface変わってんじゃん!うわー寝よ・・・ そろそろdev環境増やしたいな・・・でも、あの設定も複製しなきゃ
こんにちは、エンジニアの稲垣です。 はじめに この記事はこちらの続きです。 今回は前回Auth0に設定した情報をもとに認証のGoのクライアントを実装してみます。 なお、OpenID Connectの仕様は深掘りせずに、ユーザ認証の雰囲気を掴むことを目的としています。 それでは、見てみましょう。 認証フローについておさらい あらためて、認証フローについて確認します。 ユーザのログインボタンクリックなどをトリガーにアプリケーションサーバにリクエストが送信されます。 アプリケーションサーバはリクエストを受信すると、クライアント識別子(Client ID / Client Secretなど)を含めたリクエストを生成し、OPにリダイレクトします。 OPはリクエスト情報を検証し、認証・認可画面を表示します。 ユーザは認証に必要な情報を入力し、OPはその情報を検証します。OPは認可コードを付与し、アプリ
こんにちは、VPoEの川田です。 今回はVPoEらしく、エンジニア組織っぽいことを書きます。 エンジニアチームのパフォーマンスを定量的に計測する方法についてです。 なぜ計測しようと思ったのか 課題が大きく2つありました。 1. エンジニア個々人の事業目標が立てづらい HRBrainでは、エンジニアの立てる目標の中に事業目標というものがあります。 事業に対してどういう貢献をするために、何をやるのかを毎月頭に各メンバーに決めてもらっています。 全社である程度の方針は決めているので、その中から自分がやりたいものを拾うというのが基本的な流れですが、決めた内容がどれだけ事業に貢献するかが分かりづらいという問題がありました。 例えば、今月はSSOを実装するぞという目標を設定したとします。 そうした場合に、SSOがどれだけのお客様に利用してもらえるのか?新しく営業に行った場合にどれくらいのお客様に刺さる
はじめまして!HRBrainでフロントエンドエンジニアをしている鈴木(@suzuesa)です さて、早いものでHooksがリリースされて2ヶ月が経とうとしています みなさんHooksを使いこなせてますか?私はまだまだ使いこなせません… 今回はその新しいHooksの機能をパフォーマンスチューニングの話と絡めてご紹介したいと思います 前提 これまでのチューニング方法 ClassComponent FunctionComponent Hooks以降のチューニング useMemo memo() + useCallback() 実践 前提 パフォーマンスチューニングと言っても、どうしてReactが遅くなるのか、何処を改善すれば速くなるのかを知っておく必要があります qiita.com 上の記事にすごい詳しく書いてあるので、そちらを見てからこの記事を読むともっと理解度が深まるかもしれません 簡潔に言え
こんにちは、サーバーサイドエンジニアーのユキチです。 SaaSの開発を行う上では複数の企業様のデータを扱うことになります。 そういったマルチテナントのデータ設計を行う上で、弊社ではPostgreSQLのRow Level Securityという機能を使って実装しました。 今回はPostgreSQLのRow Level Security(以下RLS)という機能を使ってマルチテナントのデータ操作を安全に扱う方法を紹介していきたいと思います。 マルチテナントデータベース設計 主に3パターンの設計手法が考えられます。 Multi Tenants in 1 Database:複数企業のデータを一つのデータベースで管理 1 Tenant in 1 Database:テナントごとにデータベースを分けて管理。物理的なインスタンスは同じ。 1 Tenant in 1 Instance:テナントごとにデータベ
こんにちは。エンジニアのゆきちです。 普段はGoでアプリケーションを書いたりAWSでインフラ構築をしたりしてます。 HRBrainという企業の目標管理サービスを作っています。 なので、弊社では様々な企業さんの大切な情報を取り扱っています。 それにはもちろん個人情報も含まれるわけですが、そうなると僕ら管理スタッフが直接データを見ることができてはいけません。 とはいえ、こういうエラーが出たんですが...などの問い合わせに対応するためには、時によって本番のデータにアクセスして調査する必要があります。 制限も何もなければ当然丸っとそのまま見れちゃうわけですが、それができてしまってはSaaS企業としてのプライドが廃る!という所存でやっていきます。 そんな時にはどうすればいいんでしょうか? 答えは、 データを匿名化すること です。 今回、本番環境のデータベースのデータをマスキングして、調査者が見れる環
このページを最初にブックマークしてみませんか?
『times.hrbrain.co.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く