ITANDI Engineer Blog

https://tech.itandi.co.jp/

ITANDI Engineer Blog

フィード

記事のアイキャッチ画像
Pydanticには暗黙的な型変換があると知った話
ITANDI Engineer Blog
はじめに こんにちは、データコネクタチームの韓です。 業務ではPythonを主に利用してデータ基盤の開発を行っています。PythonのデータバリデーションにおいてはPydanticというライブラリが有名で、私の業務でもよく利用しています。今回の記事では、実際にPydanticを使用してバリデーションを実装する際に直面した問題を再現しながら話したいと思います。 環境 Python 3.11.6 Pydantic 1.10.14 問題 サンプルコードは以下になります、バリデーションはmakerのidを0より大きい数字であることを保証しています。 from typing import Any fro…
2日前
記事のアイキャッチ画像
CircleCIでMinitestを並列にして実行時間を1/3に短縮した話
ITANDI Engineer Blog
はじめに イタンジ株式会社の小林です。ノマドクラウドという不動産仲介向けのSaaSを開発しています。 ノマドクラウドではバックエンド開発にはRuby on Railsを採用し、CIツールとしてCircleCIを利用しています。これまでCIの高速化について真剣に取り組んだことはあまりなかったため、CIでのテストの実行に最大10分~15分程度要していました。ちょっとしたlintの修正や文言修正のコミットにも15分程度かかっており、「コード上にコメント残しておきたいけど面倒だな」「こちらの文言の方が良い気もするけど15分かかるの面倒だな」など心理的負荷をあげている状態でした。 修正前のテスト実行時間…
1ヶ月前
記事のアイキャッチ画像
新卒1年目がRailsのバージョンアップをやってみた
ITANDI Engineer Blog
# はじめに イタンジ株式会社でITANDI BBの開発をしているVO HUU DUC(ボ ヒュ ドゥック)です。 背景 ITANDI BBプロダクトは主にRailsを使って開発しています。ITANDI BBはRails 6.0でしたが、バージョンのEOLに伴ってRails 6.1まで上げました。 やったこと やったRailsバージョンアップの手順 テストのカバレッジを確認しました。カバレッジが約94%で、必要なテストはあると判断できたため、バージョンアップに際してはテストを追加しませんでした。 developmentグループとtestグループのgemのバージョンを先に更新しました。 その後、…
2ヶ月前
記事のアイキャッチ画像
エンジニアが気をつけたい思考のクセと育児の共通点を考えてみた
ITANDI Engineer Blog
はじめに イタンジ株式会社の兼田です。 現在更新退去くんというプロダクトの開発をしていますが、イタンジにjoinしてから早4年半程経ちました。 私自身は2014年の新卒ですので、エンジニアになってからでいうともう間も無く10年が経とうとしています。 イタンジのメンバーは20代のメンバーがかなり多いので、 弊社の中で見ると(エンジニアに限らずとも)私はもはや古参の分類に該当しているかもしれません。 ということで、今回は10年程エンジニアとして働いてきた感想を述べたいと思います!! ・・・と言っても、感想だけ書くと抽象度の高い内容になってしまいそうなので、 自身の体験も踏まえて私が個人的に思うエン…
3ヶ月前
記事のアイキャッチ画像
Amazon RDS for MySQLのメジャーバージョンを5.7から8.0にアップグレードした
ITANDI Engineer Blog
はじめに イタンジ株式会社の李です。SREとしてイタンジプロダクトの信頼性を高めたり開発の効率を向上させるなどの活動をしています。 直近Amazon RDS for MySQLのメジャーバージョンをアップグレードする機会があったので、今回はその手順と工夫したことなどをまとめてみました。 背景 弊社のプロダクトで利用するデータベースは主にMySQL 5.7を採用していました。(Auroraを使用するかRDSを使用するかに関しては、プロダクトのユースケースに合わせて対応しています) RDSのMySQL 5.7の標準サポートの終了が今年12月中と予定されていたため、MySQL5.7使用中のDBインス…
4ヶ月前
記事のアイキャッチ画像
ApplicationMailerのdeliver_nowメソッドが返す例外をRSpec Mocksでテスト
ITANDI Engineer Blog
はじめに こんにちは! イタンジ株式会社で更新退去くんというプロダクトを開発している沈です。 新卒一年目で学ぶことが多く、フロントエンド(Next.js)とバックエンド(Rails)両方の開発に携わり、システムがどのように動作するか、総合的に理解しています。直近は、Amazon SES(aws-sdk-ruby)が返すエラーに対して、エラーハンドリングを行いました。今回は、このエラーハンドリングを行った際のことを、ブログで発信していきたいと思います。 背景 メールの送信に失敗した場合に、エンドユーザーに原因が記載されたエラーメッセージを表示するため 仕様 SESから返されるエラーをApplic…
4ヶ月前
記事のアイキャッチ画像
Open APIとCommitteeを利用したRSpecによるAPIテスト
ITANDI Engineer Blog
はじめに イタンジ株式会社で物件管理くんの開発をしている三島です。 物件管理くんでは、RailsによるAPIサーバを採用しており、テストにはRSpecを利用しています。 本記事ではOpen APIとCommitteeを使用し、RSpecでAPIテストを行う方法について記載します。 Committee Committeeは、OpenAPIで定義したスキーマに基づいて、アプリケーションのリクエストとレスポンスの検証を行うミドルウェアを提供してくれます。 Committee::RailsはCommitteeのラッパーライブラリでrailsへの導入を容易にし、OpenAPIの仕様の保証、開発の整合性と…
5ヶ月前
記事のアイキャッチ画像
私の考える良いRSpecの書き方
ITANDI Engineer Blog
はじめに イタンジ株式会社の安倍です。今年7キロのダイエットに成功しました。 精算管理くん、家主管理くんの開発を行っています。 私は学生時代のインターンとイタンジにきて4つのプロダクトの開発に携わりました。その過程で自分のRailsのRSpecのコードの書き方に変化があり、昔と比べると読みやすくなった & テストの質も良くなったと感じたのでどんなRSpecを書いてきたのか、今考える良いRSpecの書き方はどのようなものかを今回紹介します。 ユーザー作成のapiのテストをするサンプルコードを元に紹介していきます。作成されたユーザーの情報を返すAPIです。 学生時代 学生時代のインターンではスター…
6ヶ月前
記事のアイキャッチ画像
AWS RDSのデータベースエンジンをMySQLからAurora MySQLに変更したログ
ITANDI Engineer Blog
はじめに イタンジ株式会社の稲垣です。ノマドクラウドという不動産仲介向けのSaaSを開発しています。 最近はACVIにハマっており、本当はACVIの記事を書こうと思ったのですが、先日表題のようなネタになることをしてしまったのでそれについて書きます。 弊社サービスのノマドクラウドでは、DBとしてAWS RDSを採用しています。 RDSのデータベースエンジンとして、以前はMySQL 5.7 (以下MySQLと記載)を使用していました。 このデータベースエンジンをAurora MySQL(以下Auroraと記載)に変更したので、備忘録としてその手順と注意点をブログに残していきます。 モチベーション …
6ヶ月前
記事のアイキャッチ画像
immersedで仮想作業空間にdiveしてみた
ITANDI Engineer Blog
はじめに 150cmくらいの高さがあるフェイクグリーンを買いました、ぶっかくん開発チームの阿部です。 最近引越しして部屋が広くなったのでインテリアやIoTの沼にハマりかけています。 今回はVRアプリ immersedを紹介しようと思います。 immersedとは VR空間にワーキングスペースを作成するアプリで、多種多様な景色にマルチモニターを展開できます。 また複数人でのコラボレーションも可能で、オフィスのような空間に各人のアバターを投影したり画面共有などもできます。 どうなる? 早速ですが導入するとこんな感じになります。 ※業務に関係するものが映らない様にグレーで塗りつぶしています モニター…
7ヶ月前
記事のアイキャッチ画像
RBSとSteepに入門してみた
ITANDI Engineer Blog
はじめに イタンジ株式会社で物件管理くんの開発をしている河合です。最近、ミニシアターで「怪物」という映画を観てきました。作品の世界観と映画館の雰囲気が相まって、映画に没入できとてもいい体験になりました。 物件管理くんでは、フロントはTypeScript、バックエンドはRubyで開発を行なっています。最近チーム内でRubyにも型を導入しようという話になり、RBSとSteepを触ってみたため、今回はそれを記事にしようと思います。 型を導入するメリット エラーの機械的検出 静的型検査によって、開発者が意図していない操作(型に関するエラー)を機械的に検出することができます。加えて型定義を変更すれば、静…
8ヶ月前
記事のアイキャッチ画像
Vimのグローバルコマンドでコード編集を高速化
ITANDI Engineer Blog
はじめに こんにちは! イタンジ株式会社で更新退去くんというプロダクトを開発している佐藤です。 最近Vimの魅力に取り憑かれてしまった一人です。 約3ヶ月前にVimに手を出して、もう後戻りできないくらい夢中になっています🤩 (VScode1年、RubyMine1年を経て、Vimに辿り着きました🎉) Vimは毎日新しい発見があり、とても面白いです! 特に、最近「グローバルコマンド(global command)」なるものを発見! 少し触ってみたところ、勉強しがいがあるかもと思いました! 今日はこのグローバルコマンドを一緒に勉強して行けたらなと思います。 グローバルコマンドって何? Vimにはたく…
8ヶ月前
記事のアイキャッチ画像
AWS JumpStart 2023 設計編に参加してきました!
ITANDI Engineer Blog
はじめに ITANDI BBの開発をしている渡邉です。 8/8, 8/9に開催された「AWS JumpStart 2023 設計編」に参加したので体験レポートを書きたいと思います! aws.amazon.com イベント概要 大まかな流れは以下のとおりです。 事前学習 はじめてのアーキテクティング - YouTube AWS Solution Architect Associate資格勉強会(講義パート) - YouTube 1日目 講義 ハンズオン1 ハンズオン2 2日目 設計課題を個人で設計 設計課題をチームでまとめる fig1. スケジュール 1日目 講義 インフラ構築には絶対的な正…
8ヶ月前
記事のアイキャッチ画像
TypeScriptのstrict オプションは最初から有効にしたほうが良いという話
ITANDI Engineer Blog
はじめに はじめまして、イタンジ株式会社で内装工事くんというプロダクトを開発している櫻井です。 最近見たおすすめの映画は「キャッチ・ミー・イフ・ユー・キャン」です。 早速ですが皆さん、TypeScriptは使っていますか? TypeScriptには型に関するいくつかのオプションがあり、その全てのオプションを有効化するstrict オプションがあります。 strict オプションを有効化すると、TypeScript のコンパイラによる型チェックを厳しくして、より安全なコードを書くことができます。 私が所属しているプロダクトではTypeScriptを使っているのですが、一部オプションを無効化してい…
10ヶ月前
記事のアイキャッチ画像
AWS JumpStart 2023 運用編に参加してきました!
ITANDI Engineer Blog
はじめに 5/17に開催された「AWS JumpStart 2023 運用編」に、新卒2年目エンジニアの佐藤と小山が参加したので、体験レポートを書きたいと思います! イベント概要 このプログラムは、AWS初学者のエンジニアを対象としており、AWSサービスの学習だけでなく、運用時に直面する具体的なユースケースや課題に対する対応を自身で検討・実施できるようになることを目的に構成されています。今回は、AWS 運用時のIaC やCI /CD 、トラブルシュートについて講義形式で学んで頂いた後に、ハンズオンでそれぞれ体験してみるという内容でした。 IaC編 IaC編では、そもそもIaCとはから始まり、I…
1年前
記事のアイキャッチ画像
CircleCIのダイナミックコンフィグでできないこと
ITANDI Engineer Blog
1. はじめに イタンジ株式会社の藤崎です。現在は、物件データ基盤の開発を担当しています。 先日、私達のチームが管理している4つのプロダクトのリポジトリを、コミット履歴を保持したま1つのリポジトリに統合する作業を行いました。 それぞれのプロダクトのCI/CDにはCircleCIを利用していたため、統合後のリポジトリのCI/CDも引き続きCircleCIを利用したのですが、 各アプリケーションのディレクトリ配下に差分がある時など、状況によって実行するワークフローを制御するために、 CircleCIのダイナミックコンフィグ を使用した構成にしました。 その際、ダイナミックコンフィグについて色々と調…
1年前
記事のアイキャッチ画像
MySQLのALTER TABLEを監視するgemを作った話
ITANDI Engineer Blog
1. はじめに イタンジ株式会社の藤崎です。現在は、物件データ基盤の開発を担当しています。 今回は、弊社のとあるRailsプロダクトで使用するために作った「MySQLのALTER TABLEを監視するgem」を紹介しようと思います。 ※ MySQL/MariaDBでのみ使用できます RubyGems: https://rubygems.org/gems/mysql_alter_monitoring ソースコード: https://github.com/akito-fujisaki/mysql_alter_monitoring 2. 背景 弊社では、「リアルタイム」不動産業者間サイト ITAND…
1年前
記事のアイキャッチ画像
Pydanticでフィールド間の値を検証する
ITANDI Engineer Blog
はじめに こんにちは、物件連動チームのコヤマです。 私たちのシステムでは、物件データのETL処理にPydanticを活用しています。物件情報には多様な条件や規則が存在するため、単一項目の型定義だけでは表現しきれない場合があります。そのような場合に、@validatorデコレータを使用してカスタムバリデーションを実装することで、複雑な制約を表現できます。本記事では、フィールド間のバリデーションについて紹介します。 キーワード @validator @validatorは、Pydanticのデコレータで、データモデルのフィールドに対してカスタムバリデーションを適用するために使用されます。このデコレ…
1年前
記事のアイキャッチ画像
asyncioの非同期処理を試す
ITANDI Engineer Blog
こんにちは、物件連動チームのコヤマです。 本記事では、Pythonが提供する非同期処理ライブラリのasyncioを学習します。非同期処理を理解して使用できるようになることが目標です! 同期処理と非同期処理 同期処理 同期処理は、プログラムがある処理を実行している間、その処理が終わるまで次の処理を開始ません。 処理が完了するまで待ってから次の処理を実行するので、処理の完了までに時間がかかる場合は待ち時間があります。 非同期処理 非同期処理は、処理の完了を待たずに次の処理を開始する方式です。 非同期処理は待機時間を他の処理の実行に割り当てることができるので、複数の処理を同時に実行しているようになり…
1年前
記事のアイキャッチ画像
Headless CMS + Next.js + Vercel で2年間サイトを運用した感想
ITANDI Engineer Blog
はじめに はじめまして、イタンジ株式会社で執行役員COOをしております永嶋です。 私は日頃から弊社エンジニアメンバーに「自分のプロダクトはいいぞ!楽しいぞ!」と言っており、私も個人で「Craft Beer Hunt」というクラフトビールのレビューサイトを運営しております。 このサイトは「Headless CMS + Next.js + Vercel 」で運営しているのですが、意外とこの構成でのサイト運営の知見がWeb上にないので、ここで紹介してみようと思います。 Headless CMSとは HeadlessのHeadは見た目のことで、そのHeadを除いたコンテンツ管理に特化したCMSのことで…
1年前
記事のアイキャッチ画像
acts_as_paranoidで論理削除しているモデルを物理削除に戻す
ITANDI Engineer Blog
はじめに イタンジ株式会社の磯谷です。不動産賃貸仲介業向けのSaaSであるノマドクラウドの開発をしています。 今回は、Railsアプリケーションでacts_as_paranoidによって論理削除しているモデルを物理削除に戻すといったことを行ったので、それについて書いていこうと思います。 前提について 対象のモデルは、gemのparanoiaが提供するacts_as_paranoidを利用して論理削除を行っていました。ただ、このモデルについて論理削除されたレコードを後から利用していないことと、持っている情報の内容として物理削除の方が好ましいと考えられることから、論理削除をやめて物理削除に戻したい…
1年前
記事のアイキャッチ画像
UMPC のすすめ
ITANDI Engineer Blog
はじめに はじめまして、イタンジ株式会社で ITANDI BB の開発をしている加藤です。 休日は個人サービスの開発をしたり、ジムで筋トレしたり前職のエンジニアと Discord でボイスチャットをしながらゲームをしていることが多いです。 今回は最近はまっている UMPC のことについて書いていこうと思います。 UMPC とは? まず、UMPC は Ultra-Mobile PC のことでノート PC とスマートフォンの中間くらいに位置するタブレット PC のことです。 画面が 9 インチほどで、重量も 1kg 以下のため持ち運びが楽なのが特徴ですね。 昔はノート PC ですら排熱と性能のトレ…
1年前
記事のアイキャッチ画像
Embulk入門!Filterプラグインのサンプルコードを見てみる
ITANDI Engineer Blog
どうもこんにちは、イタンジ開発のコヤマです。物件連動チームに所属しています。 テックブログデビュー戦です。一発どうぞよろしくお願いいたします🤜🏻🤛🏻 背景 物件連動チームにはEmbulkを利用したプロダクトがあります。 私がチーム異動したのが最近であること、元々Embulkを知らなかったことから設定ファイルを見たり処理の流れなどを追ったりするのに苦労しました。 苦労したんですがなんとなくそのままになってたので、この機会によく見てみようと思います! 特に初見でよくわからなかったFilterプラグインにフォーカスします。 Embulkとは Embulkとはプラグインを利用して、データを効率的に転送…
1年前
記事のアイキャッチ画像
自作キーボード始めてみませんか?
ITANDI Engineer Blog
はじめに イタンジ株式会社の峯岸です。 現在、「申込受付くん」という賃貸物件への申込みをWEBで完結させるサービスを開発しています。 イタンジエンジニアとして、本当は有益な技術記事を書きたかったのですが、今回は僕の趣味の一つでもある「自作キーボード」の魅力について語りたいと思います。 幸い、イタンジには優秀なエンジニアがたくさんいるので、技術的なお話は他の皆にお任せすると致しましょう・・・(小声) キーボードはインターフェイス アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうとも、鞍は自分で担いで往く。 馬は消耗品であり、鞍は自分の体に馴染んだインタフェー…
1年前
記事のアイキャッチ画像
N+1問題を解決するActiveRecordのメソッドの使い分け
ITANDI Engineer Blog
はじめに イタンジ株式会社の開発の越智です。現在、「物件管理くん」というサービスの開発を担当しています。 本記事ではRailsアプリケーションのN+1問題を解消する方法として挙げられる、ActiveRecordのメソッドについてまとめます。 N+1問題とは? N+1問題とは、ループ処理の中で都度 SQL を発行してしまい、大量の SQL が発行されてパフォーマンスが低下してしまう問題のことです。 これだけだと抽象的すぎるので、具体例を示します。 以下のようなテーブルを考え、companiesテーブル:storesテーブル = 1:多の関係とします。 今回使用するテーブルのER図 以下は、企業(…
1年前
記事のアイキャッチ画像
データエンジニアリングで活用するPydantic
ITANDI Engineer Blog
エンジニアの長部です。社内の分析用データ基盤構築の傍ら、物件連動基盤のリアーキテクチャや新規機能に関わる開発・設計に携わっています。 イタンジでは大量で多様な物件データを用いたETL処理を行っていますが、その信頼性向上のため行っている工夫の一つとして、Pydanticを利用したモデルベースのバリデーションについて紹介します。 イタンジにおける物件連動基盤とは イタンジでは様々な経路で入力された物件情報を社内の物件情報基盤に取り込み、それを組み合わせたり加工した上で、社が運営するサービスで利用したり、必要に応じてさらに外部のシステムに出稿したりといったことを行っています。 イタンジ社内における物…
1年前
記事のアイキャッチ画像
ChatGPTにChrome拡張機能を作らせてみた
ITANDI Engineer Blog
はじめに イタンジ株式会社の佐藤です。新卒で入社して、更新退去くんという管理会社向けのSasSを開発しています。 今回は最近流行りのChatGPTを使用して、Chrome拡張機能を作らせてみようかと思います! ChatGPTに関しては少し触ったくらいで、あまり使いこなせていないので体験談的なブログだと思って読んでもらえると幸いです! 作らせる拡張機能のお題 では本題に入りたいと思います。 まず、どういった題材で作らせるかを考えないといけないですが、 正直どこまでできるのか分からないので、めちゃくちゃ簡単なお題にしようと思います。 今回はGoogleChrome公式が公開しているサンプルの拡張機…
1年前
記事のアイキャッチ画像
SidekiqをRailsなしで使ってみる
ITANDI Engineer Blog
はじめに イタンジ株式会社の藤崎です。現在は、物件データ基盤の開発を担当しています。 年末年始は、本を読んだり、AWS ECSで遊んでみたり、Gemのソースコードを読んでみたりと色々やっていました。 今回はその色々やった中でも簡単に紹介できそうな、「SidekiqをRailsなしで使ってみる」をテーマに書こうと思います。 モチベーション SidekiqはよくRailsと一緒に使われることが多く、Sidekiq関連の記事ではRails前提のものが多い印象です。 しかし、ちょっとした検証をするためだけにRailsアプリケーションを作成するというのは面倒です。 そこで、RailsなしでSidekiq…
1年前
記事のアイキャッチ画像
digdag × Rubyで動的ワークフロー!
ITANDI Engineer Blog
はじめに はじめましてイタンジ株式会社の藤井と申します、更新退去くんという管理会社向けのSaaSを開発しています。 先日開催されたトレジャーデータさま主催のテックトーク非常に楽しく拝見させていただきました。CDPというアプリケーションがどのように構築されているのか、非常に興味深かったです。 speakerdeck.com 上記セッションの場でdigdagでerbやhttp_callオペレーターを用いた動的ワークフローを扱う手法の紹介がありましたが、私も過去Rubyのlanguage APIを用いた別の手段で動的ワークフローを利用したことがあるので、この場を借りて紹介させていただきます。 dig…
1年前
記事のアイキャッチ画像
筋トレ好きエンジニア達の合同トレーニング
ITANDI Engineer Blog
はじめに 2020年新卒入社の渡辺です。入社後は親会社のGA technologiesでシステム開発に従事し、今年の8月からITANDIの電子契約くんというサービスの開発をしています。主にNode.jsとReactで開発をしています。 趣味はサウナで、推しサウナは池袋「かるまる」の薪サウナです。 エンジニアブログなので技術っぽいことを書こうと思ったのですが、普段の日常をテーマにゆるく書いていこうと思います。 エンジニア合同トレーニング 先日、同期のエンジニア3人で合同トレーニング(通称合トレ)を行いました。 エンジニアは筋トレとは無縁なイメージ(?)がありますが、最近の筋トレブームのせいか私の…
1年前