Techouse Developers Blog

テックハウス開発者ブログ|マルチプロダクト型スタートアップ|エンジニアによる技術情報を発信|SaaS、求人プラットフォーム、DX推進

未経験エンジニアが初めてテストを書けるようになるまですごく苦労した話

先日初めてテストを書く機会があったのですが、私は書き方を習得するまでに非常に苦労しました。そこで今回は初心者の目線で、テストを書くときに苦労した話を書こうと思います!私と同じような未経験エンジニアの方々は共感してくれるのではないかと思いま…

メカニカルシンパシーを体感せよ!キャッシュラインが明かす高速化の真髄

Techouse では技術責任者の山崎による任意参加の社内勉強会を隔週で行っており、そこでは OS・ネットワーク・データベース・ハードウェア・セキュリティ・システムアーキテクチャなど、エンジニアとして基礎的な知識が学べます。ここで先日、メカニカルシン…

STIを利用したRailsアプリのテストが実行順序で失敗する問題を解決した話

弊社では、数万件におよぶ自動テストをGitHub Actionsを利用してランダム実行しています。並列実行されるテストにおいて、特定の順序で実行されると一部のテストが失敗するケースがありました。私がその原因を調査し、修正に取り組むことになったのですが、…

こんにちは。わたしはDocker build --secrets。あなたのクレデンシャルを守ります。

現在環境変数を使って秘密情報を渡す手法は非推奨となっており、Docker Secretsを利用してコンテナに秘密情報を渡す手法が推奨されています。これはなぜでしょうか。本記事では、Docker Secretsを活用して機密情報を安全に受け渡す方法について解説します。…

GitHub Actionsのガードを高くする

Techouseに入社して純粋に思ったこととして、「セキュリティ意識が高いなぁ…」と思いました。 過去に勤務した経験のあるどの組織よりもセキュリティ意識がしっかりしていると感じました(もちろん近年はセキュリティ意識をより求められているというのもあり…

Figmaプラグインを使って楽をしようとしたらCORSの壁に阻まれた

弊社が提供するATSサービス『クラウドハウス採用』では自由度高くウェブサイト制作が可能という特徴があります。画像も自由に利用することができるため、1ウェブサイト作るのに少なくとも50ファイル以上の画像を利用されるお客様がほとんどです。 その際、…

Ruby のファイル操作で覚えておきたいバッファリングと flush/fsync

先日、新機能の開発を進める中で、ファイルへの書き込みを扱うコードを書く機会がありました。 その際、Ruby でファイル書きこみを行う際のバッファリングの仕組みと、それを制御する IO#flushとIO#fsyncというメソッドに改めて注目することになりました。 …

インターン生が突如現れた最強CTOとペアプロした話

私事ですが、この秋に、2ヶ月ほど「ペアプログラミング」なるものを初めて行いました。今回はその経験をまとめるとともに、ペアプロの魅力について自分なりに語って参ります。24年10月に新卒入社する直前までインターンとして働いていた私ですが、年末調整で…

エンジニアインターンオンボーディングの効率化を目指して

本日は私の携わっているプロダクトであるクラウドハウス労務で行っているエンジニア長期インターン生のオンボーディングの効率化について紹介します。

金曜日の夜は自然とエンジニアが集まって技術を語り合う、そんな会社にしたいんです。

今年5月、Techouse は「RubyKaigi 2024」に参加しました。RubyKaigi 2024 への参加はとても勉強になることが多く、エンジニアとして成長に対してとても有意義な時間でした。そこで、社内でも「成長や挑戦につながるイベントを企画してみよう!」ということで…

資料作成ゼロ!ChatGPTで効率化する勉強会運営の秘密

弊社Techouseには、素質ある多くのエンジニアインターンが在籍しています。エンジニアインターンの文化については、こちらの記事をご参照ください。彼らは将来優秀なエンジニアになることが期待される「金の卵」であり、各事業部に配属されています。しかし…

localStorage の値を Zod で安全にパースする

今回は、localStorage に保存された値を検証する場面で、Zod の parse 関数を利用した方法を紹介します。 筆者はこれまで localStorage から取得した値のパースに、JSON.parse を使っていましたが、Zod の parse 関数と組み合わせることで、より型安全に値を…

配属1ヶ月のインターンが勝手にRBS::Inlineを導入して怒られた

みなさんはRBS::Inlineをご存知でしょうか。 RBS(Rubyに型システムを導入するインターフェース言語)をコメントから生成出来るようにしたものです。 先日参加したRubykaigi 2024 follow upというイベントでRBS::Inlineを知り、これはいいものだと早速私は会社…

OIDCの仕組みを完全理解して、SaaSプロダクトに2FA機能を実装しました

本記事では、私が設計・実装を担当した2FA機能について、開発中に得られた知見や学んだことについて紹介します。クラウドハウス労務では企業向けの人事労務管理サービスを提供しています。利用企業は従業員に対してアカウントを払い出し、従業員は自身のアカ…

Active Storageを使った画像のCORS対応で沼った話

Ruby on Rails の Active Storage は お手軽に画像ファイルなどをクラウドストレージに保管できる便利なライブラリです。しかし正しく利用するにはクラウドストレージの仕様やWeb標準への理解が必要不可欠です。今日はそんなActive Storageを使って、Amazon …

開発チームマネージャが考える、Techouseインターン生が圧倒的成長ができる3つの理由

私が携わっている開発チームの中には、現在20名近くのインターン生が在籍しております。インターンは企業によってさまざまな形態がありますが、Techouseのインターンは、長期インターン(本人の希望にもよる、大学・大学院を卒業するまでずっと)である、プ…

Sidekiq Middleware でコンテナイメージの整合性を確認する

本日は、異なる Amazon ECS Service のコンテナイメージの整合性を確認するために Sidekiq Middleware を使用した話を書きます。クラウドハウス労務は、企業の人事労務業務を支援するクラウドサービスです。企業に属する従業員の情報を集めるため扱うデータ…

皆に優しい Ruby が俺にだけ BUILD FAILED してくる

先日、自身の参画しているプロジェクトの Ruby のバージョンが 3.3.5 に更新されました。これに伴い、手元の開発環境にも Ruby 3.3.5 を install しようと思いました。 開発環境では Ruby のバージョン管理マネージャとしてrbenvを利用しております。

「エンジニア100人に聞きました」〜Techouse紹介編〜

今回の記事では「エンジニア100人に聞きました」を実施いたします。 「エンジニア100人に聞きました」とは、10年以上前にサイボウズ社を中心に行われた会社を跨いだコラボ企画であり、各社のエンジニアの気風を紹介し合った取り組みになります。

maintenance_tasksとData Migration - Kaigi on Rails Day2 Data Migration on Rails を受けて

本記事では、個人的に印象に残った@ohbarye様のDay2での発表「Data Migration on Rails」についてのまとめと、それに関連して、紹介があったmaintenance_tasks gemを試してみた内容を共有していきます。本セッションは、未だRails Wayが確立されていないと思…

Kaigi on Rails 2024 でデプロイでやらかした話をテーマに登壇しました!

Kaigi on Rails 2024 の Day1 で『デプロイを任されたので、教わった通りにデプロイしたら障害になった件 〜俺のやらかしを越えてゆけ〜』というセッションで登壇した上野です。セッション内容はタイトルにある通りで、自分のデプロイにおけるやらかしとその…

Sidekiq と Solid Queue の機能比較 - Kaigi on Rails day2 Sidekiq vs Solid Queue によせて

本記事では、Shinichi Maeshimaさんによるセッション Sidekiq vs Solid Queue の簡単なまとめと、聴講後 Sidekiq と Solid Queue について機能面に着目して調べた内容 を共有させていただきます。本セッションの内容は、Rails 向けバックグラウンドワーカー…

UNIQUE制約の理解が甘くて二重にインデックスを張りそうになった件

実行計画とは、データベースが SQL クエリを実行する際に、どのようにデータを操作するかを決定するための詳細な手順のことです。クエリを実行して期待される結果を得る方法にはいくつかの選択肢があり、その選択によって処理の効率が大きく異なります。Post…

Techouseノベルティノート付録クイックリファレンス 正誤表

2023年10月23日当社発行のノベルティノート巻末付録の Ruby クイックリファレンスに誤りがありました。 以下の通り訂正いたします。(最終更新日: 2024/9/24(火))

PostgreSQL Row Level Security (RLS) を使って顧客データ保護の安全性を高めている件

本日はクラウドハウス労務で利用している RLS (Row Level Security) の技術について紹介します。Techouse では、重要技術として RLS を多用しています。通常 PostgreSQL の運用時には利用しないものであるため Techouse の開発メンバーとしてジョインしたみ…

SDBs (Sustainable Developers Blogs) 〜持続可能な開発者ブログ運用を目指して〜

本記事では、Techouse の開発者ブログの運用についてご紹介します。皆さんの会社では、開発者ブログの運用はされていますでしょうか?Techouse では、2024年の4月に開発者ブログを立ち上げました。それから2024年8月1日現在までに合計 28 本の記事を投稿して…

RubyKaigi 2024 - Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜 (Day1)

本記事では、1日目の@kokuyouwindさんによるセッション、Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜について紹介させていただきます。@kokuyouwindさんは、LLM(大規模言語モデル)を使ってRBS(型構造)を推測するRBS Gooseというプロジェクト…

Techouse社内勉強会の内容を紹介します(2) データベース<分離性編>

Techouse では「基礎勉強会」と称して2週間に1回、わたしが OS・ネットワーク・データベース・ハードウェア・セキュリティ・システムアーキテクチャなどをお話する勉強会を開催しています。 今回お試し的に、勉強会の内容を公開してみます。 * データベース(…

Techouse社内勉強会の内容を紹介します(1) データベース<ACID編>

Techouse では「基礎勉強会」と称して2週間に1回、わたしが OS・ネットワーク・データベース・ハードウェア・セキュリティ・システムアーキテクチャなどをお話する勉強会を開催しています。 講師は私ひとり、資料を準備するのも私ひとり、動画を収録して You…

社内LT(Lightning Talk) に参加して 〜稲妻の如く語れ〜

本記事ではTechouseで行われている社内LT会に発表者として参加したので、その様子を紹介しようと思います。皆さんは、LTというものをご存知でしょうか。LTとは、Lightning Talk「ライトニングトーク」の略です。「雷や光のように素早く終わるプレゼン」とい…