Techouse Developers Blog

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

「実装してみないと分からない」からの脱却。Kaigi on Rails 2025で学んだ「逆算」の設計術

私が直面している失敗は、サービス全体に影響が及ぶ開発での出来事です。「影響範囲の調査」から始めた結果、**設計が抜け落ちた「いきなり実装」状態**に陥り、大量の考慮漏れを生み出してしまいました。まさにその渦中で聞いた、このセッションの学びをま…

Kaigi on Rails 2025 「多重範囲型」の話を振り返ってみた

一般的な予約システムでは「10:00-11:00」「11:00-12:00」といった決まった枠を設けます。しかし、ユーザーが好きな時間を自由に予約できるシステムを作る場合、非常に複雑になり、予約可能時間を算出することが困難になります。

Kaigi on Rails 2025 - Falconサーバの性能検証をして速さを実感してみた

FalconとはRack互換のHTTPサーバです。 Fiberという軽量なスレッドでリクエストを処理することで、特にI/Oバウンドなアプリケーションにおいて優れたパフォーマンスを発揮します。 本講演では「Falcon」というアプリケーションサーバのビルドやデプロイ、監…

KaigiOnRails-2025 day1 入門FormObjectの話を聞いてきた

FormObjectってよく使われているけれど、概念や使いどころをうまく説明できる人って案外少ないんじゃないでしょうか。 「なんとなく使っているけど、本当にここで使うべきなの?」 「他の人に説明を求められても、うまく答えられない。」 「Rails Wayとの使…

Kaigi on Rails 2025 ActionViewからReActionViewへ - HTML構造を理解するERBエンジン

ReActionView(Reactive ActionView)は、RailsのActionViewと互換性を保ちながら、現代のフロントエンド開発の要求に応える次世代のERBエンジンです。Marco Roth氏は、2025年を通じてRubyKaigi、RailsConf、Rails Worldと段階的にこのビジョンを発表してき…

【Kaigi on Rails 2025 Day2】履歴 on Rails : Bitemporal Data Modelで実現する履歴管理

このセッションでは、引っ越しによる住所変更や所属部署の異動など、時間とともに変化する情報を正確に扱う履歴管理について、Bitemporal Data Modelと呼ばれるデータモデルと、その実装を支える自社開発のOSSであるactiverecord-bitemporalを中心に、実務で…

Kaigi on Rails 2025 Webアプリケーションにおける非同期ジョブの設計原則を振り返りつつ実践してみた

非同期ジョブとは、Webサーバーのリクエスト処理とは別のプロセスで実行される処理のことです。 通常のWebアプリケーションでは、ユーザーからのリクエストを受け取ったWebサーバーがその場で処理を行い、結果を返します(同期処理)。一方、非同期ジョブで…

大量データの重複検出をUnionFindと逆引きインデックスで劇的に高速化した話

先日、業務で重複判定を実装する機会がありました。その中でUnionFindと逆引きインデックスという技術を使ったのですが、実際に導入してみると非常に効果的だったので、今回は商品マスタの重複検出を例にこれらの技術を用いて重複検出の課題を解決した話をし…

Sidekiq serverを分離してRailsの非同期処理の遅延を解消した話

弊社では、ノンデスクワーカーに特化した求人サービスジョブハウスを運営しております。 ジョブハウスではサービスにご登録頂いた求職者の方に求人情報を直接お届けするために、メールマガジン (以降メルマガと呼称します) を配信しています。 メルマガの配…

ちょっとだけ、自慢させてください。うちのハイレベルなインターン生。【LTイベントレポート】

今、私たちの会社には、優秀で、面白く、そして何より技術が大好きなインターン生たちが集まってくれています。 先日、そんな彼らが主役のLT(ライトニングトーク)イベント「Techouse Engineer LT Night」を開催したのですが、その成長ぶりには目を見張るも…

AWS Summit Japan 2025 参加レポート

2025年6月25日、26日に開催された AWS Summit Japan 2025 に参加してきました! 弊社からは、総勢 15 名のエンジニアが参加しました! 日々の業務で利用している AWS の最新情報をキャッチアップするとともに、AWS コミュニティの熱気をダイレクトに体感して…

【Flutter】MethodChannelで実装するiOSアプリの漢字→かな自動入力機能

今回は、Flutterアプリケーションにおいてユーザーが漢字で姓名を入力した際に、自動的にふりがなを補完する機能を実装した際の技術的な取り組みについてご紹介します。 特に、FlutterのMethodChannelを活用してiOSネイティブAPIと連携し、オフラインで動作…

RubyKaigi 2025 - Toward Ractor local GC (Day3)

かつてシングルコアCPUが主流だった時代は、毎年のようにCPUのクロック周波数の向上やトランジスタ数の増加が続き、ソフトウェアはその性能向上の恩恵を容易に享受できていました。 しかし、物理的な限界からCPUのシングルコア性能の向上は頭打ちとなり、代…

RubyKaigi2025 - ZJIT: Building a Next Generation Ruby JIT

MaximeさんはShopifyのRuby開発チームのリーダーで、RubyKaigiでも2021年から毎回 JITコンパイラの進化について発表している、いわば常連です。 毎回YJIT に関連する心躍る発表を用意してくださるMaximeさんでしたが、今回はなんと新しいJITコンパイラ「ZJIT…

RubyKaigi 2025 - Porting PicoRuby to Another Microcontroller ESP32(Day3)

PicoRubyとは、組み込み環境でRubyを動かすために開発された、超軽量なRuby実装です。 通常のRuby(MRIやCRuby)は、PCやサーバのようなある程度リソースがある環境向けに作られています。一方、PicoRubyはマイコンのような小さな機械でも動作するように設計…

RubyKaigi 2025 Performance Bugs and Low-level Ruby Observability APIs (Day2)

Low-level Ruby Observability API とは、Ruby プログラムを動かす CRuby VM のレイヤーに近い、通常は意識されない詳細に関わる計測を行う API のことです。これらの API を使うことで、アプリケーション内部の動きを可視化できます。 アプリケーションの応…

RubyKaigi 2025 - Making TCPSocket.new Happy!

本記事では、RubyKaigi 2025の2日目に行われたMisaki Shioi(@coe401_)さんによるセッション、「Making TCPSocket.new "Happy"!」について紹介させていただきます。が、その前に前提知識として Happy Eyeballs について軽く紹介します。1981年から長く使われ…

RubyKaigi 2025 - From C extension to pure C: Migrating RBS (Day2)

2日目はpicorubyやビルドシステムに関する話を中心に聞きました! その中でも自分が紹介したいのは、Alexander MomchilovさんによるFrom C extension to pure C: Migrating RBSというセッションです。本記事では、その内容をまとめてご紹介します。

RubyKaigi 2025 - Ruby Taught Me About Encoding Under the Hood

本記事では、1日目の Mari Imaizumi (@ima1zumi)さんによるKeynote セッション、Ruby Taught Me About Encoding Under the Hoodについて紹介させていただきます。今回紹介するセッションの登壇者はハンドルネーム@ima1zumiとして活動し、Stores,inc に在籍さ…

RubyKaigi 2025 に参加しました

2025年4月16日-18日に開催された RubyKaigi 2025 に参加してきました。 ということで、RubyKaigi 2025 に3日間参加してきたレポートをお届けします。 今年の RubyKaigi 2025 は、愛媛県松山市の愛媛県県民文化会館で開催されました。 会場は道後温泉や松山城…

RubyKaigi 2025 Automatically generating types by running tests (Day1)

Rubyは動的型付け言語であり、型宣言に該当する文法が存在しません。一方で、Rubyで型を扱う手段が一切ないわけではなく、型宣言を記述するための言語であるRBSや、RBSを用いて型検査をするgemであるSteepなどが開発されています。RBS::Traceは、この発表の…

RubyKaigi 2025 - Speeding up Class#new (Day2)

Rubyではオブジェクト指向プログラミングの基本として、Class#newメソッドを使ってインスタンスを作成します。この基本的かつ頻繁に使用されるメソッドの最適化は、Ruby全体のパフォーマンス向上に直結します。この記事ではRuby 3.5(4.0)にてClass#newがど…

RubyKaigi 2025 - On-the-fly Suggestions of Rewriting Method Deprecations (Day3)

Masato Ohba(@ohbarye)さんによる「On-the-fly Suggestions of Rewriting Method Deprecations」についてご紹介します。このセッションでは、開発者なら誰もが経験する「メソッド非推奨化」に伴うコード修正を、もっと楽にするためのツールとその仕組みが提…

RubyKaigi 2025 - Improvement of REXML and speed up using StringScanner (Day2)

本記事では、RubyKaigi 2025 2 日目の NAITOH Jun さんの講演 Improvement of REXML and speed up using StringScanner の中で触れられていた、REXML が v3.2.7 で遅くなった件について、その原因と解決までの流れを調査した結果をご紹介します。 個人のメモ…

RubyKaigi 2025 - Ruby's Line Breaks (Day1)

本記事では、RubyKaigi 2025 1日目のYuichiro Kaneko (@spikeolaf) さんによるセッション、「Ruby's Line Breaks」について紹介させていただきます。Rubyを書いていると、どこで改行できるのか、迷うことがあると思います。例えば、以下の2つのコードを見て…

RubyKaigi 2025 - コード懇親会 に参加しました

コード懇親会 はアンドパッド様とクリアコード様が主催する、通常の懇親会とは一味違ったコンセプトのイベントです。一般的な懇親会では参加者同士が飲食しながら会話を楽しむ形式が多いですが、コード懇親会はその名の通り「コード」を軸にした交流の場とな…

RubyKaigi 2025 - Make Parsers Compatible Using Automata Learning (Day1)

Rubyには、parse.yからパーサージェネレータを使って生成したパーサーと、手書きパーサーであるPrismの2種類のパーサーが存在します。 本セッションでは、「オートマトン学習」という技術を用いてこれら2つのパーサーの間の互換性の問題を発見したことについ…

RubyKaigi 2025 - How to make the Groovebox (Day2)

RubyKaigi 2025 DAY2 の @asonas さんによる "How to make the Groovebox" というセッションについて紹介させていただきます。私自身は音楽制作をしたことがない初心者です。専門用語や理論について誤った解釈がある可能性があります。ご理解をお願いします…

RubyKaigi 2025 - The Implementations of Advanced LR Parser Algorithm (Day2)

今回は RubyKaigi 2025 の二日目のセッション、junk0612 さんの「The Implementations of Advanced LR Parser Algorithm」について内容を紹介させていただきたいと思います。junk0612 さんは Ruby で実装された parser generator である Lrama のコミッター…

RubyKaigi 2025 - TRICK に参加しました

今回は、RubyKaigi 2025 で開催された「TRICK」というイベントに参加した経験と、自分の作品について紹介させていただきます。TRICK (Transcendental Ruby Imbroglio Contest for rubyKaigi) は、Ruby の言語特性を活かした技巧的なプログラミングを競うコン…