BATONZ Tech Blog

https://batonz-tech.hatenablog.com/

M&Aプラットフォーム運営の株式会社バトンズによる技術ブログです。

フィード

記事のアイキャッチ画像
AI × Vue でリアルタイム翻訳アプリを作ってみた
BATONZ Tech Blog
こんにちは!バトンズのエンジニアをしているr1hです。 今回は第3回LT大会で発表した、リアルタイム翻訳アプリの開発内容をテックブログとしてまとめました。 音声をそのままブラウザ上で録音し、OpenAIのWhisperでテキスト化、DeepLで翻訳し、即座に画面に表示する。そんな翻訳アプリを Nuxt3 + Whisper + DeepL で構築した実践レポートです。 背景と目的 知人から海外旅行に誘われた 「通訳できたら便利なのでは?」と考えた 音声で話す → 翻訳されるUIを作ってみたくなった 使用技術スタック 技術 役割 Nuxt 3 フロントエンドのUI制御とサーバーAPIの仲介処理 …
1ヶ月前
記事のアイキャッチ画像
第3回LT大会を開催しました!
BATONZ Tech Blog
こんにちは! バトンズでエンジニアをしているr1hです。 バトンズではプロダクトの改善、個々のスキルアップを目的とした有志での勉強会や委員会活動を行っています。 今回の記事では、その一環として行った『第3回バトンズエンジニアLT大会』について触れていきます。 ライフハック系からAI、MCP、Rails周り、果ては量子コンピュータまで多様なトピックでした。 そもそもLTとは? LTとは『Lightning Talk(ライトニング トーク)』の略です。稲妻の名の通り、5分などの短時間で行うプレゼンテーションを指します。 また、LTのメリットとしては、 伝える能力の向上 技術に関する知見の共有 など…
1ヶ月前
記事のアイキャッチ画像
RubyでできるExcel操作について(rubyxl)
BATONZ Tech Blog
こんにちは、バトンズのエンジニアhohohohoho-tです。 今回は、RailsアプリケーションからExcelファイルを出力する機会がありましたので、その際の備忘録として記事を執筆いたします。 主にRubyXLというGemを例に挙げ、RubyでどのようなExcel操作ができるかをご紹介できれば幸いです。 RubyXLについて RubyXLの選定理由 実行環境 ExcelをRubyで読み取る Excelの表からデータを読み取ってRubyで操作 結合されているセルからのデータ取得の方法 RubyでExcelファイルを作成する Excelファイルを新規作成 Excelファイルを編集して作成 複雑な…
2ヶ月前
記事のアイキャッチ画像
ワンクリックでテスト実行!MagicPod用Chrome拡張で実現した業務効率化
BATONZ Tech Blog
こんにちは。株式会社バトンズでエンジニアをしている鈴木です。 バトンズでは日々のテスト自動化にMagicPodを活用しています。 本記事では、Chrome拡張の技術的な実装方法の詳細ではなく、MagicPodのAPIを活用することで日々のテスト業務をどのように効率化できるか、その具体的なアイデアと実践例をご紹介します。 今回のChrome拡張で実現した主な機能は以下の通りです。 ワンクリックでの一括テスト実行 PC用とスマートフォン用のシナリオを、それぞれボタンひとつで実行開始できるようになりました。 複数環境への対応 ステージング環境だけでなく、その他のテスト環境でも同様にテストを実行できま…
2ヶ月前
記事のアイキャッチ画像
AIで作成したブラウザアプリをセキュアに社内共有する方法 - Google Sites活用
BATONZ Tech Blog
こんにちは!株式会社バトンズでエンジニアをしているyamafです。 当社では、Google Workspaceを活用した業務環境を整備しており、最近ではエンジニア以外の方々もGeminiのCanvas機能を使って、便利なブラウザアプリを作成する機会が増えてきました。 今回は、AIツールで作成したブラウザアプリを、Google Sitesを利用してセキュリティを保ちながら社内で効率的に共有・運用する仕組みについてお伝えしたいと思います。 なお、本記事ではGeminiを例に説明しますが、ClaudeやChatGPTで作成したアプリでも同様の手順で共有可能です。 共有に関する制約 ClaudeやCh…
2ヶ月前
記事のアイキャッチ画像
ArcブラウザBoost機能でMagicPodを自分好みにカスタマイズ!
BATONZ Tech Blog
こんにちは。株式会社バトンズでエンジニアをしている鈴木です。 バトンズでは2024年度からMagicPodを導入し、QAチームでのテスト自動化を推進しています。 私自身も今年の11月からMagicPodを使用し始め、日々のテスト業務をより効率化し、快適にする方法を模索しています。その中で、MagicPodのUIや挙動をカスタマイズすることで、さらに使い勝手を向上させられるのではないかと考えました。 そこで活用したのが、私が普段愛用しているWebブラウザArcに搭載されているBoost機能です。この機能を活用して、以下のようなカスタマイズを実現しました。 テスト実行時のスクロール追従 テスト実行…
9ヶ月前
記事のアイキャッチ画像
【Rails】enumの名称変換をcase文を使わずにSQLレベルで行えるようにする仕組み
BATONZ Tech Blog
こんにちは! 株式会社バトンズでエンジニアをしているyamafです。 当社が運営するM&Aプラットフォーム「BATONZ」はサーバーサイドフレームワークとしてRuby on Railsを採用しています。 今回はRailsにおいてenumで定義されているフィールドの名称をSQLレベルで取得できる仕組みについてお伝えしたいと思います。 要約 RailsアプリケーションでDBのenum値に対応するラベル(表示名称)をSQLで取得する際、一般的には次のようなcase文を記載すると思います。 SELECT t.id, t.status, case t.status when 0 then '未着手' w…
9ヶ月前
記事のアイキャッチ画像
【Vue Fes Japan 2024】Vueに恩返し:7年お世話になっているのでボランティアにいきました
BATONZ Tech Blog
まぁ、恩返しどころか恩恵を授かって帰ってきましたけれども!! 初めまして。株式会社バトンズの土屋と申します。 バトンズには2024年7月から参画させていただいております。前職はフロントエンド系フリーランスエンジニアです。 先日、Vue Fes Japan 2024のボランティアへ行ってきまして、終始とても楽しく、学びあり刺激あり笑いありの1日を過ごせましたので、執筆させていただきます。 Vue Fesの様子や、得た知見・感想など書いています。 本稿を通して、Vueに関わる人が増え、世のプロダクトもVue自体もよりよくなっていく一助になればと思います。 ネームカードを下げていました ボランティア…
9ヶ月前
記事のアイキャッチ画像
とある帰阪エンジニアが、Developers Summit 2024 KANSAI(デブサミ関西)に参加してきました
BATONZ Tech Blog
バトンズエンジニアのほんま@CkRealです。 私は2年前大阪に帰阪し、普段は大阪から業務を行っているため、最近の技術系イベントは関西開催のイベントに参加しています。 先日、Developers Summit 2024 KANSAI(デブサミ関西)に参加してきたので、そのときの参加レポートを書かせていただきます。 セッション資料については、イベント参加者に共有されるセッションもあったりするので、X上で公開されているものを転記しています。 イベントタイムテーブル event.shoeisha.jp タイムテーブルの通り、会場はAトラックとBトラックに分かれており、聴講者はどちらかのトラックに参加…
1年前
記事のアイキャッチ画像
Amazon QuickSightのアセットをエクスポートする際、「NetworkInterfaces should have more than 1 item for VPC connection」というエラーに遭遇したときの作業メモ
BATONZ Tech Blog
バトンズエンジニアのほんま@CkRealです。 バトンズでは、社内のBIツールとしてQuickSightを利用しています。 先日、このQuickSight上に作成されていた、とあるダッシュボードをエクスポートしておきたい要件が発生しました。 その作業中、表題のようなエラーに遭遇したので、今回はその対応内容を備忘録として記事を執筆させていただいています。 どのような状況が発生したのか 今回の作業では、下記のブログでも紹介されているQuickSightのアセットをエクスポートするコマンドを使って、 作業担当者がQuickSightのダッシュボードをエクスポートを試みていました。 dev.class…
1年前
記事のアイキャッチ画像
GitLabのOpenTofuコンポーネントとOIDCを使って、アクセスキーを発行せずにAWSリソースを構築してみた
BATONZ Tech Blog
バトンズエンジニアのほんま@CkRealです。 バトンズではソースコード管理にSaaSのGitLabを使っており、サービスはAWS環境で運用しています。 バトンズ入社後に稼働中のAWSリソースをIaC(Infrastructure as Code)化しようと、terraformで環境を整えようと考えていたのですが、GitLabの公式ドキュメントにおいて、terraformテンプレートが将来的に削除される旨が記載されていました。 docs.gitlab.com The Terraform CI/CD templates are deprecated and will be removed in …
1年前
記事のアイキャッチ画像
RubyMine 2023.3を使い始めたらlint-stagedで実行しているRuboCopの実行が終わらなくなってハマった
BATONZ Tech Blog
こんにちは。株式会社バトンズでエンジニアをしている鈴木です。 先日開発中にハマった出来事についてご紹介します。 要約 RubyMine 2023.3から、RuboCopのサーバーモードがサポートされるように RuboCopのサーバーモードのプロセスが起動していると、lint-stagedで実行したRuboCopが終了しない lint-stagedでRuboCopを実行する際に、--no-serverオプションを付与して解決 問題発生:RuboCopが終わらない・・・ 弊社バトンズのとあるサービスの開発では、Ruby関連のファイルのコミット時に、gitのpre-commitフックの仕組みで、Ru…
2年前
記事のアイキャッチ画像
利用頻度の低いフラグをカラムを追加せずに管理する方法
BATONZ Tech Blog
こんにちは、バトンズのエンジニア山本です。 アプリケーションを開発しているとテーブルにフラグを追加したい要件が出てきます。 フラグはそのレコードが特定条件に当てはまるかどうかを端的に表すのに便利です。 例えばユーザーのメールアドレスが確認できたらTRUEにするカラムがあるとします。 BATONZでもメールアドレスの確認がサイトの利用に必須なので、 多くのユーザーのレコードでTRUEが設定されています。 このようなメジャーな機能のフラグは特に考えることもないのですが、 機能が増えていくと条件に該当するレコードが少なくかつ、あまり参照もしないフラグというのも出てきます。 フラグを追加する場合、専用…
2年前
記事のアイキャッチ画像
generate_seriesとCROSS JOINを用いた月次集計SQL
BATONZ Tech Blog
こんにちは! 株式会社バトンズでエンジニアをしているyamafです。 エンジニアはマーケや営業からデータ集計の依頼を受けることがよくあるのではないでしょうか。 以下のようなデータ集計の依頼があった場合、皆さんどのように取得しますか? 企業別の新規ユーザー登録数を月毎に出してほしい。 期間は2022年10月から2022年12月まで。 その後のデータ分析の都合上、月毎に抜けもれなくカウントを出してほしい。 例えば、その月対象企業が登録がなかった場合でもカウントは0と出してほしい。 以下のイメージ。 企業名 月 ユーザー登録者数 株式会社AAA 2022-10 3 株式会社AAA 2022-11 0…
2年前
記事のアイキャッチ画像
M1、M2 MacでPSequelを使う
BATONZ Tech Blog
こんにちは! 最近Intel MacからM2 Macへと乗り換えました、株式会社バトンズでエンジニアをしているr1hです。 PCを新調するとテンション上がりますよね。 PCを新調したことで必然的にデータ移行が必要になり、Macに標準で搭載されている「移行アシスタント」を利用してみましたが便利ですね。 コンソールの設定や各ツールの設定まで上手く移行されていて感動しました。 しかし、当然ながら一部のアプリケーションは非互換により動作しませんでした。ただ、設定値は移行ができているのであれば、使い慣れたアプリケーションを利用したいですよね? そこで今回はM2 Macで利用できなかったMac OS用のP…
2年前
記事のアイキャッチ画像
フルスクリーンモードのVDialogに任意のz-indexを設定する方法
BATONZ Tech Blog
利用環境 Nuxt: 2.16.1 Vuetify: 2.6.14 はじめに 今回は長らくバトンズのエンジニアを悩ませた「フルスクリーンモードのVDialogがグローバルナビゲーションより前面に表示できない問題」についてお話ししたいと思います! ※ 分かりやすさのため必ずしも正確な表現になっていないところもありますが、ご了承くださいませ。 「フルスクリーンモードのVDialogがグローバルナビゲーションより前面に表示できない問題」とは? 直面した問題としては、読んで字の如く、グローバルナビゲーションよりフルスクリーンモードのVDialogを前面に表示したいのに常にグローバルナビゲーションが前面…
2年前
記事のアイキャッチ画像
第1回LT大会を開催しました!
BATONZ Tech Blog
はじめまして!株式会社バトンズでエンジニアをしている麻婆豆腐とメロンパンが大好きr1hです。 バトンズではプロダクトの改善、個々のスキルアップを目的とした有志での勉強会や委員会活動を行っています。 今回の記事では、その一環として行った『第1回バトンズエンジニアLT大会』について触れていきます。 そもそもLTとは? LTとは『Lightning Talk(ライトニング トーク)』の略です。稲妻の名の通り、5分などの短時間で行うプレゼンテーションを指します。 また、LTのメリットとしては、 伝える能力の向上 技術に関する知見の共有 などが挙げられます。 開催形式 今回バトンズでは以下のような形式で…
3年前