Railsで送信メールの開封を検知する

はじめに イタンジ株式会社の赤松です。業者間サイトITANDI BBの開発を担当しています。 Railsでメールを送信して、そのメールが開封されたか知りたい時があるのではないでしょうか? 本記事では、送信メールの開封を検知する方法をご紹介します! 背景 現在…

物件検索基盤の一部をAWS DMSに移行する

はじめに イタンジ株式会社の奈良です。基盤チームの開発エンジニアとしてイタンジの複数のサービスが利用している物件検索基盤の開発と運用をしています。 本記事では物件検索基盤の一部をAWSのマネージドサービスに移行した経緯とその方法について紹介しよ…

Sidekiq でジョブの同時実行数を制限する

イタンジ株式会社の清水です。「申込受付くん」という賃貸物件への申込みをWEBで完結させるサービスを開発しており、最近は主にRailsを触っています。趣味はキャンプです。 さて、みなさまはRailsで非同期ジョブを実行する仕組みをどう構築されているでしょ…

AWS WAFを使ってリクエストサイズの制約を設定する

はじめに イタンジ株式会社の李です。SREとしてイタンジサービスの信頼性を向上するための施策やコスト最適化などをしています。 本記事ではAWSのWAFを使ってリクエストサイズの制約をかける方法を紹介しようと思います。 背景 RailsアプリケーションをECSサ…

ReduxのreducerコードをDRYに書く

イタンジ株式会社の中村です。エンジニア兼プロダクトマネージャーをしています。 最近はもっぱら仕様を書いたりフロントエンドを書いたり不動産会社様の業務の知見を深めたりしています。 今回は、Redux Toolkit を使いつつreducerのboilerplateを減らし、…

MySQL8 JSON SchemaでCHECK制約をつける

イタンジ株式会社でテックリードをしている大原です。普段は基盤系のプロダクト開発やSREを担当しています。 今回はMySQL8.0.17以降から使用できるJSON_SCHEMA_VALID関数と、この関数を使用したCHECK制約についてのお話をしようと思います。 また、弊社にはR…

イタンジエンジニアブログ再開します

イタンジ株式会社でVPoEをしています福崎です。 弊社でもエンジニアブログをやることになったので、目的とか背景を書いていきたいと思います。 背景 この施策はエンジニア採用に苦戦しているというところから始まっています。 現在2ヶ月に一人のペースで採用…

登壇レポート『日々変わりゆく技術トレンドの中でスタートアップ4社が技術選定について語ります』

はじめに イタンジのエンジニアリングマネージャーの田渕です。先日、『日々変わりゆく技術トレンドの中でスタートアップ4社が技術選定について語ります』に登壇したので、そのレポート記事として私がお話ししたことを書きたいと思います。 主にイタンジの技…

フロントエンドの変遷に見るイタンジの技術選定〜テンプレートエンジンからNext.jsに辿り着くまで〜

はじめに イタンジのエンジニアリングマネージャの田渕です! 先日、OHEYAGOのフロントエンドのNext.jsへのリプレイスが完了しました。振り返ってみると、リリース前はRailsのテンプレートエンジンを使っていたところから徐々に変更をしていき、最終的にはNe…

Ruby3の静的型検査を活用して、新規プロダクト開発の開発効率を向上させた話

はじめに イタンジのエンジニアリングマネージャの田渕です。 昨年末にリリースされたRuby3では、静的型検査の機能が追加されました。早速、実際の新規Railsプロダクトの開発に活用してみたところ、多くの利点を感じました。 現場で使われている例はまだ多く…

Amazon Aurora MySQLのSystem Databaseが破損していたので、AWSのサポートに直してもらった話

はじめに イタンジのエンジニアリングマネージャーの田渕です。 イタンジで採用を検討しているDebeziumという技術では、(使い方によっては)MySQLのSystem Databaseの一つであるmysql.hostテーブルというテーブルにアクセスする必要があります。先日、その検…

静的サイトジェネレータとして、Preactを実務で使ってみた

はじめに あけましておめでとうございます。イタンジのエンジニアリングマネージャー(以下EM)の田渕です。つい最近のことですが、EMという役職が新設され、そちらの役職に就任いたしました。 イタンジのEMに求められている役割の中で最も大きいものは、「全…

Akka(Scala)で書かれたレガシーシステムをRailsでリプレイスした話

前置き この記事では、AkkaとRails,もしくはScalaとRubyのどちらが優れている、などという話は出てきません。結論を先にも書いておくと、 フレームワークや言語に関わらず、テストや仕様書、CIなどがいかに整っているかが保守性に関わる 技術選定には、会社…

ドメインの管理をVALUE DOMAINからRoute 53に安全に移行した話

はじめに イタンジのSREチームの田渕です! イタンジでは、基本的にはRoute 53でドメインを管理していますが、古くから使っているものに関しては、VALUE DOMAINでも管理をしていました。しかしVALUE DOMAINではIaCツールによる管理ができないため、先日、ド…

terraformとクラウドの状態の差分を定期的に監視する仕組みを作った話

はじめに イタンジSREチームの田渕です! イタンジではクラウド管理のIaCツールとしてterraformを使っています。terraformとクラウドの状態の差分を定期的に監視する仕組みを作ったところ、うまくワークし、かなり運用負荷が下がったため、皆様にも紹介しま…

業務中にrubocop-railsのCustomCopを作成して、そのままOSSにcontributeした話

はじめに OHEYAGOの開発の田渕です! 先日、OHEYAGOで書いたコードを流用して、rubocop-railsというOSSに新機能を追加して、contributeしました! マージされたPRはこちらです。 github.com 経緯 OHEYAGOのレビュー中に、content_tagをtagにしたほうが良いと…

Railsのテンプレートエンジンを、slimやhamlから、erbに戻して乗り換えた話

はじめに OHEYAGOの開発をしている田渕です! Railsのテンプレートエンジンには、デフォルトのerbや、代替のslimやhamlなどがあります。 OHEYAGOではslimを採用していましたが、先日、テンプレートエンジンをslimからデフォルトのerbに変更しました。細かい…

Reactを使ったコンポーネント指向設計で、Atomic Designをやめようとしている話

はじめに OHEYAGOの開発をしている田渕です! OHEYAGOはtoCサイトなので、UI・UXを重要視しており、チームとしてデザイナーを2人抱えております。デザイナーは他業務との兼任ですが、それに対してエンジニアは3人なので、デザイナーの割合がとても多いチーム…

【Rails + AWS Fargate】簡単なシェルスクリプトでデプロイ前後の外形監視を行い、デプロイの安定性を高めた話

はじめに OHEYAGOの開発をしている田渕です!OHEYAGOのwebサーバーはFargate上で動いていますが、AWS Fargateでのデプロイを行う際に、マイグレーションやデプロイが本当に完了したタイミングがわかりにくいという問題がありました! 例えば、マイグレーショ…

React + TypeScriptのtoCサービスでのIE対応の際にハマったことまとめ

はじめに OHEYAGOの開発をしている田渕です。去年の話になるのですが、OHEYAGOでInternet Explorer(以下IE)対応を行いました。 いろいろ詰まる部分があったので、知見として共有します。 経緯 リリース時には、IEの対応を完全に切って、IEでアクセスした場合…

typescript-eslintの最新オプションno-unsafe-*を使って、TypeScriptの型リファクタリングを簡単に行った話

はじめに OHEYAGOの開発の田渕です。 先日eslintを最大限活用してTypeScriptの型安全を少しずつ高める方法という記事を書きました。 さらに加えて、つい最近(約2週間前)、3/8にリリースされたtypescript-eslintの新機能を活用して更にリファクタリングするこ…

CloudFront+Lambda@Edgeでエッジコンピューティングする

GA technologies / イタンジの中村です。 技術者寄りのプロダクトマネージャーとして、プロダクト企画・開発からリサーチ・営業まで浅く広く何でも屋をしています。 CloudFrontでエッジコンピューティング? 今日は小ネタとして、n番煎じですがLambda@Edgeを…

デプロイ後のAWS ALBエラー数高騰に対処した話

はじめに こんにちは、はじめまして。イタンジ株式会社のtakumi1129と申します。 私事ではありますが、最近体重計に乗ったら体重が3桁になっておりました。流石に冗談かと思って乗り直してみたものの冗談ではありませんでした。正月太りって恐ろしいですね!…

PageSpeed Insightsの結果を30点台から70点台まで上げるまでにやったこと

はじめに OHEYAGOの開発をしている田渕です。 OHEYAGOではページの大部分をReactでレンダリングしているので、スマホなどで見た際のパフォーマンスが問題になりやすいです。SEOにも悪影響がありますし、ユーザーからも「OHEYAGOが重い」という声をしばしば頂…

OHEYAGOでファーストビューでのJavaScript容量を28%削減した話

はじめに OHEYAGOの開発をしている田渕です。特にフロントエンド専門というわけではないのですが、最近はフロントエンドのチューニングをたくさんやっていたので、フロントエンド関連の記事が多くなりそうです。 サイトの速度はSEOなどの面からも重要で、そ…

eslintを最大限活用してTypeScriptの型安全を少しずつ高める方法

はじめに あけましておめでとうございます! OHEYAGOの開発の田渕です。 OHEYAGOではTypeScriptを導入し、少しでもバグが発生しにくい状態を心がけています。しかし、リリース直後(昨年9月末)にはTypeScriptの良さを活かしきれていない状態でした。具体的に…

正月にfullstackopenをやってみた

はじめに イタンジの福崎です。 社内のslackで煽られてblog記事2本書くって言ったことを思い出し、2本目の記事を書いています。 正月休みに入ってから速攻インフルエンザになって、インフルエンザ治ってからはやろうと思ってた fullstackopen をちょいちょい…

メール送受信系サービスを構築する際に気をつける事

AWS

はじめに イタンジの福崎です。 弊社で運用しているサービスで現在年間約1000万通ほどのメッセージを送受信しています。 チャットなども含みますがメールが大半を占めており、メール送受信周りでは障害含め色々ありました。 今回はメール送受信系に限って運…

VPoEに就任しました

はじめに イタンジの福崎です、postするのが遅くなりましたが、11/1にイタンジ株式会社のVPoEに就任しました。 イタンジは前CTOの後ポストが空いたままでしたが、エンジニア組織が徐々に大きくなってきて、採用も強化していく必要があるこのタイミングでエン…

stylelintを使うためにSassからScssに乗り換えた話

TL;DR auto-fix機能付きでSassに対応しているlinterが見つからなかったので、stylelintを使うために、SassからScssに乗り換えた。変換については、sassc-rubyを使った簡単なスクリプトと、エディタの置換機能を用いて行った。 はじめに OHEYAGOを開発してい…