【社内勉強会レポート】知識ゼロから始めたRust勉強会の記録

当社では、エンジニアの継続的なスキルアップと新しい技術への挑戦を目的として、有志によるRust勉強会が開催されました。 本記事では、2部構成で行われた活動内容とその成果について共有します。 第1部:The Book輪読会 - Rustの基本概念を体系的に学習 第2…

お客様からの質問に対して過去データに基づき回答生成するSlackBotを、Difyを使いローコードで構築した話

Difyのワークフロー機能を使い、お客様からの質問に対して自動で回答を生成するSlack Botを作成しました。回答生成の際には、過去にお客様から頂いた質問と回答させていただいたデータに加え、さらに必要となる専門的な固有の知識も与えるようにしています。…

社内のエンジニアにAIの利用状況を聞いてみた!

AI

はじめに 導入 AI技術の進化が目覚ましい昨今、当社のエンジニアがどのようにAIを活用しているのか、その実態を探るべくアンケートを実施しました。本記事では、その結果から見えてきたリアルな声と、今後のAI活用の可能性についてご紹介します。 ちなみにこ…

テックブログの GitBook から はてなブログ への移行

はじめに 2025年7月、当ブログをGitBookからはてなブログへと移行しました。 今回の記事では、ブログ移行の経緯と実施手順についてご紹介します。 検討移行理由 結論としては、GitBookの年間利用料が割高と感じたためです。 経緯をもう少し詳しくご説明しま…

脆弱性診断 2社同時依頼実施記録

脆弱性診断の依頼内容 A社とB社の2社に、同時にある弊社Webシステムの脆弱性診断を依頼させていただきました。 A社はWebアプリケーション診断を得意とし、B社はソースコード診断を得意とする会社様です。 Webアプリケーション診断とソースコード診断は、それ…

SPF、DKIM、DMARCを使用した迷惑メール対策

はじめに この記事では、メール送信サーバーを設定時に、ほぼ必ず設定することになるSPF、DKIM、DMARCについて、知識の整理と共有のために概要や効果、設定方法を紹介します。 SPF SPFは、Sender Policy Frameworkの略で、ドメインの所有者が「自分のドメイ…

EMConfJP2025_参加レポート

掲題の通りEMConfJP2025に参加してきました。 テーマは「増幅」と「触媒」。 2025.emconf.jp 懇親会付きのチケットも当日分のチケットもすぐに売り切れて、当日も大盛況だったと思います。自分が聞いた限りの講演のテーマとしては「事業・経営戦略と技術戦略…

PostgreSQLにおける、削除行に対するロック獲得時の挙動

環境 RDB PostgreSQL 13.3 トランザクション分離レベル read committed (デフォルト) 実験環境 IntelliJ IDEA 2024.3 (Ultimate Edition) TLDR PostgreSQLにおいて、トランザクション内で同一キーの行を delete - insert する場合、同時に実行される他のトラ…

Github ActionsでIAMロールを利用してAWSリソースを操作する

はじめに 弊社ではAWSリソースをTerraformやCloudFormationで管理し、plan/applyの実行にはGithub Actionsを使っています。本稿ではGithub ActionsからAWSリソースを操作するためのIAMロールの設定について説明します。 IAMロールを利用するメリット Github …

lambrollでAWS Lambda関数をデプロイしたときのTips

前置き AWS Lambda関数について、 ソースコードはgitで管理したい ソースコードのデプロイは容易に行いたい AWSの各リソースはTerraformで管理しており、別途Lambda向けのものを作る必要はない という場合には、Lambdaのデプロイツールである lambroll を使…

問い合わせフォームの項目をサービスごとに出し分け、各サービス担当者に自動で振り分けてメールで通知する

はじめに Zendeskにおいて、社内の複数サービスの問い合わせフォームを一本化し、そこに送られてきた問い合わせを対象サービスの担当者に自動で振り分けてメールで通知するための設定について記載します。 ​前提 Zendesk環境 こちらの手順で問い合わせフォー…

GithubのプライベートリポジトリをGemfileで参照する方法

背景 当社では、社内で共通に使いたい機能をgemに切り出し、機能の利用側のGemfileでプライベートリポジトリを参照しています。 gem "some_internal_library", git: "https://github.com/precena-dev/some_internal_library.git", tag: "v1.0.0" ローカル端…

Amazon SNS + Slack Workflowを使って、CloudWatch Alarmの通知をSlackチャンネルへ投稿する

AWSリソースに対する異常検知として、CloudWatch Metricsに対して設定したしきい値を超過した場合、CloudWatch Alarmで通知を飛ばすことができます。 日頃Slackをよく見ている身としては、何かあったらSlackチャンネルへ通知されると嬉しいことから、仕組み…

AWS SESメールボックスシミュレーターにて、カスタムヘッダや添付ファイル付きのテストEメールを送信する

背景 AWS SESでメール送信環境を構築したときは、合わせて メールが不達になったこと を検知する仕組みも構築します。 AWS SESから送信したメールでメール不達があまりにも多いと、AWS SESの利用が停止されるためです。 さらに、AWS SESの本番運用を始める前…

Railsのアプリケーションサーバーのプロセス数とスレッド数の設定方法

はじめに この記事では、Railsの本番環境におけるアプリケーションサーバー(pumaやunicornなど)のプロセス数とスレッド数のパラメータ設定に関する情報をまとめます。 プロセスとスレッドの特徴概要 アプリケーションサーバーのパラメータを設定する際に、…

AWS Vaultを使ったスイッチロール設定手順

背景 AWS CLIやterraformでスイッチロール時にMFAを利用する際、コマンドを実行する都度MFAコードを入力するのは煩雑です。AWS Vaultを使うとスイッチロール後のプロファイルのシェルに入れるようになります。 構成 defaultプロファイルでIAM ユーザーによる…

AWS CLIでのスイッチロールの設定手順

概要 スイッチロールの設定手順にて、AWSコンソールでのスイッチロールの方法について記載しました。 開発中にスイッチロール先でAWS CLIを利用したい場面もあるかと思います。 その場合の設定内容について記載します。 状況定義 以下のようにアカウント設定…

ActiveSupportのto_jsonメソッドの注意点

to_jsonメソッドの注意点 ActiveSupportには、to_jsonという便利なメソッドがあります。 Railsで開発しているときに使う場面としては、DBから取得したレコードをAPIのレスポンスとして返す場合があります。 しかし、deviseを認証に使っているサービスなどで…

コンテンツ執筆時のルール

ルールを設定する目的は、コンテンツ全体の統一感を出したり、定まったルールの元でコンテンツを書くことで、読者にとって読みやすいコンテンツにすることです。 しかし、コンテンツを書くためのハードルを上げたくもないので、ルールを多く管理したくもあり…

データ分析プロセス

この記事では、一般的に知られているデータ分析プロセスを簡単に紹介します。 データ分析における標準プロセス データ分析において、一般的に知られている標準プロセスには以下が存在します。 CRISP-DM(*1) KDD(*2) 以下、それぞれについて概要を紹介し…

Storybookを利用したビジュアルリグレッションテスト

ビジュアルリグレッションテスト(Visual Regression Test)とは ビジュアルリグレッションテスト(以下、VRT)は、画像回帰テストとも呼ばれます。 VRTは、改修による予期せぬ UI のデザイン崩れを検出することを目的としています。 UIのスクリーンショット…

危険なJSON出力を禁止するRuboCopカスタムルールの作成方法

背景 userの情報を返すAPIを実装する際、render json: user とするとuserモデルのすべてのフィールドを含むJSONを返してしまい危険です。パスワードはハッシュ化されているものの、deviseが提供するフィールドlast_sign_in_ip などクライアントに返してはな…

AWS CLI

インストール 公式サイトでインストーラーをダウンロードしてインストールしてください。 docs.aws.amazon.com 設定 基本的に以下の公式サイトに従うだけです。 docs.aws.amazon.com 公式サイトにも載っている内容ですが、以下のコマンドを入力して、 % aws …

schema.rbで差分が発生する事例とその復旧について

Railsには、スキーマファイルと呼ばれる schema.rb があります。 Railsガイドには Active Recordはマイグレーションの時系列に沿ってスキーマを更新する方法を知っているので、履歴のどの時点からでも最新バージョンのスキーマに更新できます。Active Record…

ngrokの導入

ngrokとは ngrok(エングロクと読む)は、httpのトンネリングサービスです。 ngrokでホストされるURL(例:http://xxxx.ngrok.io/ )へのアクセスをローカル環境のwebサーバー(http://localhost:3000 など)にトンネリングしてくれます。 例えば、stripeやL…

HerokuのStackの設定

Stackとは Herokuで稼働するサーバーのベースとするOSのバージョンのようなものです。 公式サイトを見ると分かりますが、Ubuntu Linuxのバージョン番号とStack名が揃えられているようです。 Stack関連のコマンド 使用中のStackを確認 以下で、Stackの確認が…

M1 Macでの開発環境構築(rosetta 無し)

はじめに この記事では、M1 Macでの開発環境構築でハマったところを共有するために、記載して行きます。今後、随時新しいハマりどころが発生した場合は、情報を追加していきます。 環境構築の前提 筆者の環境では、環境構築の検証もかねているので、Rosetta …

tmux + overmind を利用して、複数システムを1コマンドで起動できるよう設定する

はじめに 当社のRailsシステム間連携では、各システムで公開しているWeb APIを使っています。 今までは各システムを bin/rails s で起動し、開発を行ってきました。 ただ、 連携するシステムが増えたり、各システムで使うジョブワーカーが増えたりした結果、…

GitHubのプライベートリポジトリをGemfileで参照する方法

背景 当社では、社内で共通に使いたい機能をgemに切り出し、機能の利用側のGemfileでプライベートリポジトリを参照しています。 gem "some_internal_library", git: "https://github.com/precena-dev/some_internal_library.git", tag: "v1.0.0" ローカル端…

RubyKaigi 2023 に現地参加しました

はじめに 5/11(木)~5/13(土)に、長野県松本市のまつもと市民芸術館にてRubyKaigi 2023が開催されました。 弊社からは4名のエンジニアが現地で参加しました。 この記事では、RubyKaigi 2023に参加したエンジニアの中で印象に残ったセッションをピックアップ…