ROXX開発者ブログ
https://techblog.roxx.co.jp/
ROXX開発者ブログ
フィード

新サービス『AI Chat』をリリースしました!
ROXX開発者ブログ
1. はじめに ─ AI Chatリリースのお知らせ このたび、私たちのZキャリアに新しい機能として 「AI Chat」 をリリースしました。 この記事では、なぜこの機能を作ったのか、どんな価値を届けたいのか、そして技術的にどんな工夫をしたのかを簡単に紹介します。 2. 人材紹介ビジネスの壁 私たちが取り組んでいる人材紹介事業は、キャリアアドバイザーが中心となってユーザーである「就職活動をしたい方」を支援するモデルです。 ただしこの仕組みには、従来からいくつかの制約がありました。 求職者の特徴 まず一つ目は、私たちが主に支援しているユーザー層が、一般的な「転職サービス利用者」とは大きく異なる点…
12時間前

ESLint 9へのアップデートとFlat Config移行ログ
ROXX開発者ブログ
この記事は個人ブログと同じ内容です https://zenn.dev/ptpadan/articles はじめに ESLint 9 がリリースされ、新しい Flat Config 形式が標準となりました。 この記事では、モノレポ環境での ESLint 8 から 9 へのアップデート作業と、従来の.eslintrc.yml形式から Flat Config 形式への移行について、実際に遭遇した問題と解決方法を含めて記録します。 ESLint 9のメリット ESLint 9 への移行には以下のメリットがあります。 パフォーマンスの向上: 設定の解析が高速化 依存関係の簡素化: 多くのプラグインが統合…
11日前

Zキャリア AI面接官の技術紹介
ROXX開発者ブログ
はじめに ROXXのZキャリア プロダクト開発部 R&Dチームでテックリードをしている梅本と申します。今回は、私が開発推進しているZキャリア AI面接官の技術的な裏側をご紹介します。 Zキャリア AI面接官は、当初はZキャリアプラットフォームとの連携システムとしてスタートしましたが、現在では単独利用も可能なAI面接システムとして進化しました。Zキャリアプラットフォームをご利用の企業様はもちろん、直接導入を希望される求人企業様にも幅広くご利用いただいております。候補者との自然な対話を実現し、面接結果を自動的に評価・分析することで、採用業務の効率化と質の向上を実現しています。 参考: prtime…
1ヶ月前

【PostgreSQL】複数ユーザーでDB所有者権限を共有する方法:ロールを使った実践的解決策
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 新規アプリ開発で AWS RDS Aurora PostgreSQL Serverless v2 を利用していました。 以下の要件がありました。 Migration用ユーザー: DBリセットやマイグレーションを実行したい Restore用ユーザー: バックアップからのリストアを行いたい どちらもテーブル削除やスキーマ再作成が必要=オーナー権限が要る、という状況です。 ただしPostgreSQLでは、オブジェクトのオーナーは常に1つ(1ユーザーまたは1ロール)に限定され、直接複数ユーザーへは付与できません。 結論 ロールを仲介させれば解決します。スキ…
1ヶ月前

PostgreSQL --data-onlyの落とし穴 - 安全なデータ差し替え方法
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 新規アプリ開発のデータベースに Aurora Serverless v2 for PostgreSQL を利用しています。 普段はRDSが自動で毎日スナップショットを取ってくれていますが、特定のリリース前には手動でバックアップを取得する必要があります。 Aurora PostgreSQLはBacktrackに対応していないため、リリース直前の状態に戻したい場合は、スナップショット復元か、pg_dumpによるバックアップが選択肢になります。 「スナップショット復元すれば良いのでは?」 と思うかもしれませんが、Auroraのスナップショット復元は新しい…
1ヶ月前

Go 1.25で追加されたWaitGroup.Go()の使い方|並行処理がよりシンプルに
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com Go 1.25 が 2025年8月12日に正式リリースになりました。 Go 1.25 is released - The Go Programming Language Go 1.25 Release Notes - The Go Programming Language その中で、sync パッケージにおいて、新たに WaitGroup.Go メソッド が追加されました。これによって、ゴルーチンを作成してカウントするという一般的な実装がより簡単になったので使ってみたいと思います。 sync パッケージおよび WaitGrou…
2ヶ月前

Laravel Pennant で始めるフィーチャーフラグ管理
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに システム開発において、新機能のリリースは常にリスクを伴います。 まずは社内メンバーやベータテスター等の一部のユーザーで動作確認を行いたい 機能を段階的に展開して、ユーザーからのフィードバックや負荷状況を見ながら本格公開したい 長期間にわたる開発でも継続的に main ブランチにマージして、コードの乖離を防ぎたい やむを得ず金曜日にリリースはするけど、週明けまで機能は無効にしておきたい このような状況は、開発現場ではよくあることです。 しかし、従来のシンプルなリリースの仕組みでは「デプロイ=機能オン」になってしまい、いきなり全ユーザーに機能が公開され…
2ヶ月前

スクラム開発の視点で見る男子新体操の演技づくり
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 私は高校から男子新体操を始め、現在も社会人チームで競技を続けています。 男子新体操は、毎年ゼロから新しい演技を創り上げていく競技です。そこには「完成形の正解」がなく、アイデアを出し合い、実際に試してみて、フィードバックをもとに少しずつ形にしていくプロセスがあります。 ふと気づいたのは、この演技づくりのプロセスが、ソフトウェア開発の「スクラム」と非常によく似ているということでした。 本記事では、男子新体操における“演技開発”のプロセスを切り口に、スクラム開発のエッセンスを別の視点から捉え直してみます。普段エンジニアとしてスクラムに取り組んでいる方にも…
2ヶ月前

BigQuery のテーブルメタデータを Cloud Run Jobs で自動更新する最小構成
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com 「BigQuery の各テーブルおよびカラムの description が空のままになっているものを、できるだけシンプルに補完できる方法はないか?」 「メタ情報はメタ情報だけで管理したい」 「テーブルを洗い替えてメタ情報が消えても、フックや定期実行など任意のタイミングで補完したい」 これらの実現を模索し色々と試してみた中で、Google Cloud SDK を使ったスクリプトを Cloud Run Job で実行する構成がもっともシンプルでミニマムに実現できたため、その内容をご紹介します。 全体構成 全体の構成は以下になってい…
2ヶ月前

SPAで起こるリビジョンのズレ問題とその解決方法
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 現在、Nuxt.jsを使ってSPA(Single Page Application)としてフロントエンドを構築しています。その中で、ユーザーが長時間アプリを開いたままにすることで発生する「リビジョンの不整合」問題に直面しました。この記事では、その問題の背景と、実際に導入した対策について紹介します。 🐛 なぜリビジョンの不整合が起こるのか? SPA(Single Page Application)では、初回アクセス時に1つのHTMLと、JavaScriptやCSSなどの静的ファイルが読み込まれます。その後はページ遷移しても画面全体が再読み込みされるこ…
3ヶ月前

【3日で開発】Google AI StudioでAIにアプリを作らせてわかったこと
ROXX開発者ブログ
この記事は個人ブログと同じ内容です ⏱ どれくらいで作れたの? 今回のアプリはGoogle AI Studioとやり取りしながら3日で開発しました。アイデア出しから実装、3D表示、デプロイまでをAIと対話しながら進めたプロセスは非常に学びが多く、「AIにアプリを作らせるとはどういうことか?」を実感できました。 🙋♂️ 推奨する読者層 AIでアプリを作ってみたい人 デザインよりも機能を優先してプロトタイピングを素早く回したい人 AIとの協働開発に興味があるエンジニア 🧪 作ったもの:男子新体操やダンスの隊形を可視化できる「Formation Forge」 私は男子新体操という競技に取り組んでお…
3ヶ月前

BigQuery の自動メタデータ生成機能を試す(プレビュー版)
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com 2025 年 4 月 9 ~ 11 日に開催された Google Cloud Next '25 にて、BigQuery に関する新機能も多く発表されました。 その中の、BigQuery ナレッジ エンジン の機能の 1 つとして「自動メタデータ生成」があり、こちらが気になったため、現在はまだプレビュー提供ですが、利用してみました。 自動メタデータ生成(Automated Metadata Curation) 自動メタデータ生成は、BigQuery 上に保存されたデータに対して、テーブルやカラムごとの説明文を自動で作成してくれる…
4ヶ月前

PostgreSQL Row-Level Security 入門 : 行単位でデータアクセスを制御する方法
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 「このデータはあのユーザーには見せたくない」「マルチテナントアプリでユーザーには自分の会社のデータだけ表示したい」 データベースを運用していると、こんな悩みが出てくることはありませんか? PostgreSQL の行レベルセキュリティ (Row Level Security, RLS) は、そんな課題を解決するための機能です。 行レベルセキュリティ (RLS) とは? 行レベルセキュリティ (RLS) とは、データベースのテーブルに対して、どの行をどのユーザーが表示・操作できるかを細かく制御する仕組みです。 例えば、以下のようなケースで非常に有効です…
4ヶ月前

最近のインフラの学びまとめ
ROXX開発者ブログ
この記事は個人ブログと同じ内容です 最近インフラ関連のことで学んだり、初めて知ったことをまとめました。 ECSサービス間の通信 サービスコネクト 同じECSサービス間でのみ通信する場合に使用する。 呼び出す側の場合は「クライアント側のみ」、呼び出すかつ呼び出される側は「クライアントとサーバー」。 CloudMapの名前空間に「APIのみ」で作成される。 terraformではaws_service_discovery_http_namespaceリソースとなる。 サービス検出(サービスディスカバリ) ECSサービスだけではなく、Lambdaからなど同じネットワークでもECSサービス以外から呼び…
4ヶ月前

for文を減らして読みやすく。Goのmapsパッケージを使ったmap操作の整理術
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com Go の map 型を扱うとき、キーだけを取り出したり、値だけを集めたり、2 つの map を比較したりと、さまざまな操作が必要になる場面があります。 そんなときに役立つのが、標準ライブラリの maps パッケージです。 本記事では、map 操作にありがちな for ループの繰り返しを減らし、より簡潔で読みやすいコードを書くための maps パッケージの活用方法を紹介します。 maps パッケージ maps は、Go の組み込み map 型(キーと値のペアで構成される連想配列)を、より便利に扱うためのユーティリティパッケージで…
5ヶ月前

ECS FargateでGoogleCloudとのWorkloadIdentity連携の際のハマった話
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに Google CloudとWorkload Identityで連携されているECS Fargateで動いているアプリからGoogle Drive APIを使おうとしたら以下のエラーが出ました。 Post \"https://www.googleapis.com/drive/v3/files/1234/copy?alt=json&prettyPrint=false&supportsAllDrives=true\": Get \"http://169.254.169.254/latest/meta-data/iam/security-credentia…
5ヶ月前

k6 を用いた API 負荷テストの導入とシナリオ実行の基礎
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com Webサービスを提供する上で、一定の負荷やスパイク的なアクセスがあっても安定して応答できるかどうかは非常に重要です。その確認に欠かせないのが「負荷テスト」です。 今回は、開発者フレンドリーで扱いやすいパフォーマンステストツール k6 を使って、API に対する負荷テストを実施する方法をご紹介します。 k6 とは k6 は、JavaScript ベースで負荷テストが書ける OSS のパフォーマンステストツールです。 主な特徴は以下のとおりです。 JavaScript でテストスクリプトを記述できる CLI で簡単に実行可能 スケ…
5ヶ月前

Workload Identity連携でAWSからGoogle Cloudにセキュアにアクセスする
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに GoogleCloudのWorkload Identityでの連携をAWSのLambdaを使用し、S3のファイルをGoogle CloudのCloud Storageにアップロードする方法を解説します。本記事では、Workload Identityを利用して、IAMロールとGoogle Cloudのサービスアカウントを紐付けることで、安全にアクセスできる環境を構築します。 lambdaではPythonを使用します。また、Terraformを使用します。 Workload Identityとは Workload Identityとは、AWSや他のクラ…
6ヶ月前

TerraformでSecurity Command CenterのアラートをSlackに通知する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Security Command Center(SCC)とは Google CloudのSecurity Command Center(SCC)は、クラウド環境のセキュリティリスクの可視化・検出・管理を行うためのセキュリティ管理ツールです。 主な機能: • 脆弱性の検出(IAMの設定ミス、不正アクセス、脆弱なVMなど) • 脅威の監視(マルウェアや異常なネットワークトラフィックの検出) • コンプライアンス管理(PCI DSS、ISO 27001 などの基準への適合確認) Google Cloud環境全体のセキュリティを統合的に管理できるサービスです。 今回…
6ヶ月前

Tidy First? を読んでみた
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Tidy とは「整頓する」という意味。 コードを書く際に、いきなりシステムの振る舞いを変えるような大きな変更をするのではなく、まずは周辺を整えるような小さなリファクタリングから始めようというのが本書の大筋になります。 以前、著者ケント・ベックさんの XP 本を読んだことがあり、今回新刊が出たということで前情報なしに購入しましたが、冒頭から引き込まれたので、要旨をまとめてみました。 本書について Tidy First? ケント・ベック (著) https://amzn.asia/d/0YrvP74 第I部 整頓 ガード節 if 文によるネストした条件分岐を早期…
6ヶ月前

Go における Adapter パターン - インターフェースの適用と統一
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com ソフトウェア開発では、異なるインターフェースを持つコンポーネント同士を統一的に扱いたい場面があります。そのような場合に役立つのが Adapter(アダプター)パターン です。 本記事では、Adapter パターンの基本概念を理解しつつ、Go 言語での具体的な実装方法を紹介します。 Adapter パターン Adapter パターンは、「あるインターフェースを、別のインターフェースに適用させる」ためのデザインパターンです。既存のコードを変更せずに、新しいインターフェースで利用できるようにするのが特徴です。 Adapter パター…
6ヶ月前

ALBで簡単にメンテナンスモードを実装する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに サービス運用の中で、計画的なメンテナンスや障害対応時に「メンテナンスモード」を導入することは重要です。本記事では、AWSのアプリケーションロードバランサー(ALB)を活用して、簡単にメンテナンスモードを実装する方法を紹介します。 ALBのリスナールールとターゲットグループを活用し、柔軟かつ迅速にモード切替を実現する方法について解説します。 実装方法 1. メンテナンスモード用のリスナールールを追加 まず、メンテナンスモードを実現するためのルールをALBのリスナーに追加します。 設定内容 条件: パスがすべて(*)に一致するリクエストを対象とする。 …
7ヶ月前

NotebookLMの実践レビュー
ROXX開発者ブログ
この記事は個人ブログと同じ内容です NotebookLMとは NotebookLM(Notebook Language Model)は、Googleが提供するAIアシスタントツールで、指定したソースに基づいて質問に回答したり、情報を整理する支援を行います。特に、セキュリティや業務関連の質問回答を効率化する場面で活用されています。 https://notebooklm.google.com/ 使った経緯 社内で、セキュリティチェックシートへの回答が求められる際、効率化のためにNotebookLMを導入しました。これまでスプレッドシートに回答を手入力していた状況で、既存の情報ソースを活用してAIに…
7ヶ月前

Go学習ロードマップを完走!141時間かけて学んだこと
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com Go の理解を深めるために roadmap.sh を利用し学習したので紹介します。 roadmap.sh とは roadmap.sh は、開発者向けの学習ロードマップを提供するオープンソースプロジェクトです。 フロントエンド、バックエンド、DevOps、データエンジニアリング、AI/ML など、さまざまな分野で必要なスキルを視覚的なロードマップとして整理し、学習の指針を示しています。 ユーザーはロードマップを参考にしながら、自分に必要なスキルを順序立てて学ぶことができるのが特徴です。 OSS のため料金は無料です。そして誰でも…
8ヶ月前

AWSのEC2にPHP+Nginx+phpMyAdminの環境を構築する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です はじめに 本記事では、EC2上で Nginx と PHP、および phpMyAdmin をインストールし、MySQL データベースとの接続を行う手順を紹介します。実際にコマンドを実行しながら、各設定の意味や注意点も含めて解説します。 環境 OS: Amazon Linux 2023 yumのアップデート はじめに、Linuxのパッケージ管理ツール yum を使って、システムのアップデートを行います。 $ sudo yum -y update 1. Nginxのインストール Nginxをインストールします。 $ sudo yum -y install ngin…
8ヶ月前

GitHub ActionsとECSタスク定義の循環依存を解消した話
ROXX開発者ブログ
この記事は個人ブログと同じ内容です ECSタスク定義とECRリポジトリの設定で苦戦したため、その解決の記録を共有します。 起こった問題 インフラ側 ECSタスク定義を作成する際、指定するECRリポジトリが空の場合、タスク定義の作成が失敗する問題が発生しました。 このため、事前にリポジトリに最低1つのDockerイメージをプッシュする必要がありました。 アプリ側 GitHub Actionsでは、ECSタスク定義のイメージURI(ECRリポジトリ)を参照しますが、タスク定義が存在しない場合にイメージをプッシュする処理が失敗する問題がありました。 これにより、以下のような循環依存が発生しました: …
8ヶ月前

スクラム入門
ROXX開発者ブログ
この記事は個人ブログと同じ内容です この記事はスクラム開発について学ぶために読んだ SCRUM BOOT CAMP の読書メモと感想です。 本について SCRUM BOOT CAMP THE BOOK【増補改訂版】 スクラムチームではじめるアジャイル開発 西村 直人, 永瀬 美穂, 吉羽 龍太郎 (著) https://amzn.asia/d/1fo7IBF ソフトウェアを作る上で本当に重要なことは何か? できあがったソフトウェアを実際に活用することで顧客や利用者の課題を解決したり、お金を稼いだりする、つまり成果を上げること。 ソフトウェアを作ること自体は目的ではなく、成果を上げるための手段。…
8ヶ月前

Laravel Docker イメージサイズ削減に挑戦!~実践と効果~
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Dockerイメージサイズを削減することは、プロジェクトの効率化やコスト削減において非常に重要な取り組みです。特に、Laravelのようなフレームワークを使ったプロジェクトでは、サイズが膨らみがちで、ビルドやデプロイの速度が遅くなることがあります。 今回、私は約400MBのイメージを約200MBまで削減することに成功しました。その過程で得た知見や具体的な手法を、実例を交えてご紹介します。 イメージサイズ削減のメリット Dockerイメージのサイズを小さくすることには、以下のようなメリットがあります。 ビルド時間の短縮 イメージのサイズが小さくなると、ビルドや…
8ヶ月前

Go における Builder パターン - 構造体生成の整理と制御
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com Go では、構造体を利用してデータを管理することが一般的ですが、オプションの多い構造体の初期化や、変更を避けたいオブジェクトの生成には工夫が必要です。 本記事では、柔軟かつ一貫性のあるオブジェクトの生成を可能にする Builder パターンについて、その基本的な実装方法と適用例を紹介します。 Builder パターン Builder パターンは、複雑なオブジェクトの生成を簡潔にし、可読性を向上させるためのデザインパターンです。特に オプションの多い構造体の生成や、イミュータブルなオブジェクトを作成する場合に便利です。 Go で…
8ヶ月前

ALPS, ASD でセマンティクス重視のドキュメントを作成する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です ソフトウェア設計をする際に以下のような課題が発生する場合があります。 ドキュメント化のコストと、管理コストの増加 システムが複雑化するにつれて、コードの理解が難しくなる 一貫性のない命名規則 これらの課題を解決するために、今回は ALPS という情報設計手法を学習しました。 ALPS とは ALPS QuickStart によると、以下のように説明されています。 Application-Level Profile Semantics (ALPS)は、アプリケーションレベルのセマンティクス(語句の意味や構造)を表現するフォーマットです。JSON、HTMLなど汎…
9ヶ月前