自社メールがOutlookに届かない — SPF/DKIM/DMARC起因のメール不達問題を解決した話

はじめに こんにちは、株式会社Spacelyでバックエンドエンジニアをしているtoshichanappです。普段はRailsアプリケーションの運用・保守を担当しています。 近年、メール認証の要件は急速に厳格化しています。 2024年2月:Google/Yahooが大量送信者(1日5,00…

「後回し」を片付ける技術 — Claude Codeで2ヶ月で119PRをマージした話

はじめに こんにちは、株式会社Spacelyでバックエンドエンジニアをしているtoshichanappです。普段はRailsアプリケーションの運用・保守を担当しています。 Spacelyでは「Claude Code」を本格的に開発フローに導入しています。 今年の2ヶ月間でマージされたt…

EC2 から ECS on Fargate に移行して、運用と障害対応が楽になった話

はじめに こんにちは、株式会社Spacelyでバックエンドエンジニアをしているtoshichanappです。 本記事では、Rails アプリケーションを EC2 ベースの運用から ECS on Fargate へコンテナ化したことで、 運用・障害対応・デプロイ体験がどのように変わったのか…

可変高なViewとignoresSafeAreaの組み合わせでSwiftUI TabViewはタブ切り替えができなくなる - 分析

こんにちは、株式会社SpacelyでiOSエンジニアをしているmorninです。 TabViewに可変高なViewとignoresSafeAreaを組み合わせるとタブ切り替えができなくなるSwiftUIのバグに遭遇しました。 SwiftUIは内部実装が隠蔽されているためこのようなバグの追跡は困難…

ECSオートスケール × Sidekiqで発見した“スケールインの落とし穴”

導入 こんにちは、株式会社Spacelyでバックエンドエンジニアをしているtoshichanappです。 普段はRailsアプリケーションの運用・保守を担当しています。 今回の記事では、ECSオートスケールとSidekiqの組み合わせで発生した問題と、その解決プロセスについて…

Stable Diffusion Inpaintingを活用した家具消し機能の開発

はじめに スペースリーの研究開発チームでエンジニアをしているLUOです。この記事では、弊社で新たに開発している家具消しサービスについて紹介します。 弊社は空間データプラットフォームを提供しており、不動産VR内覧サービスや研修向けVRサービスなど、実…

Rails 7.1から7.2へのアップグレードで学んだこと

こんにちは、Tony Duongです。SpacelyでRailsバックエンドエンジニアとして働いており、Spacelyプラットフォームの開発に積極的に取り組んでいます。 私たちの開発しているスペースリーのサービスはRuby on Railsのバージョン7.1で動作していましたが、7.1の…

スペースリーのiOSアプリの技術スタックと開発体制

はじめに 株式会社スペースリー iOSエンジニアのHikawa Taisei(@teeeee441)です。普段は不動産業者向け物件撮影アプリを開発しています。 今回は、そのアプリの技術スタックや1人開発での運用について紹介します。 プロジェクト概要 どんなアプリ? 不動産…

ソフトウェアエンジニアとして、Cursorで日常の生産性を向上させる方法

こんにちは、Spacelyでソフトウェアエンジニアをしているトニー・デュオン(Tony Duong)です。フルスタック開発者として、SpacelyではRuby on RailsとVue.jsを使ってWebアプリケーションを開発しています。 僕と同じように、多くのソフトウェア開発者がAIツ…

生成AI社内ハッカソン、やってみた

はじめに こんにちは、Spacelyのジョンです。 普段はEMとしてプロダクト開発やチーム運営をしています。 今回は、年に2回開催している全社オフサイトの中で、 開発チームが取り組んだ生成AIをテーマにした社内ハッカソンの様子をご紹介します。 「生成AIをも…

ECS でオートスケーリングを設定しました!

はじめに はじめまして、スペースリーでインフラエンジニアをしている久下です。 アーロンチェアを買おうかずっと迷っていたのですが先日、中古品を購入しました。 想像より状態も良くて、リモートワーク環境がより整って良い感じになりました。 さて、この…

ElasticsearchのためのSearchkickの導入

はじめに 株式会社スペースリーのWebエンジニアの小澤です。弊社のプロダクトの中で、私は主に物件管理サービスを開発しており、物件一覧の検索基盤をAlgoliaからElasticsearchにリプレイスしました。このサービスはRuby on Railsで開発しており、本稿ではEl…

bashで回せ!!!

はじめに spacelyでEMとかなにとかやっている いちろー です。 結構shell scriptとか one liner で、何かをグルグル回す事って多いと思います。 その方法をいろいろと並べてみようと思います。 n回回せ!!! seqを使う方法 seq commandの出力を使います。 for …

社内モバイルLT会はじめました!

はじめに 株式会社スペースリー iOSエンジニアの樋川です。 普段は弊社サービスの、物件の撮影を補助/管理するアプリのiOSの開発をしています。 現在、モバイルアプリチームはマネージャー1人、iOS/Android 2名ずつの計5名の構成となっています。 今回は、モ…

リードレプリカの導入に関する挑戦

概要 弊社のサーバ(Ruby on Rails 6.1, Ruby2.7, MySQL5.7)環境にてデータベースの負荷が増加し、アラートが頻発しています。この問題を解決するために、 rails guide を読みながらリードレプリカの導入を検討しました。 このブログでは導入までの試行錯誤を…

Recoil で管理する状態を atom から atomFamily に変更した話

目次 目次 はじめに 状態管理したいデータ構造と機能要件 atom と atomFamily について atom atomFamily atom と atomFamily の使い分け atomFamily を使った実装 atom で実装した場合 atomFamily で実装した場合 atomFamily だからこその課題 atomFamily か…

AWSでFTPを実装するためのいくつかの方法

AWS spacelyはなぜAWSにFTPを実装するのか 私はこのあたり全くの門外漢なのですが、不動産業界で古くから利用されてきた基幹システムではシステム間の連携の手段としてFTPを利用することが多かったそうです。 不動産VRを掲げるspacelyの場合でも例にもれず、…

Spacelyの研究開発プロジェクト紹介

はじめに スペースリーの研究開発チームでエンジニアをしている植木です。この記事ではスペースリーで行っている研究開発について紹介します。 弊社は空間データプラットフォームを提供しており、具体的なアプリケーションとしては、不動産領域でのVR/Web内…

3DのWebサービス開発で宣言的なWebGLライブラリを導入して感じた保守運用上のメリット

1 はじめに スペースリーでエンジニアをしている長谷川です。 最近は3DのWebアプリの開発を担当していて、弊社でリリースしている「パノラマ変換3Dプレイヤー」のコンテンツ作成機能などを開発しています。 3DのWebアプリを開発する際には「React/Vue × WebG…

[Kotlin] GLSurfaceViewをキャプチャーしてbitmapを取得したい

まえがき 株式会社スペースリー Androidエンジニアのふかまちです。 普段は弊社サービスのツールであるAndroidアプリ「Spacely Photo Task」を開発しています。 現在、後述するパノラマ画像の360°Viewerをキャプチャーした動画を生成する開発に取り組んでお…

GitHub ActionsでPRを自動生成するチュートリアル

株式会社スペースリーのRailsエンジニアの海老原です。 スペースリーが提供するサービスの反映は、CSチームでテストを実施してから本番環境にリリースする業務フローになっております。各featureブランチごとに、テストを実施できるように、プルリクエストに…

WaylandでX sessionの環境変数を設定したり、初期起動をしたりする方法

Waylandではxprofileやxsessionは読まれない。 株式会社 スペースリーでEngineering Managerをやっている いちろー です。 最近仕事で開発の事を全くやっていないので、家のlinuxの環境回りからネタを引っ張って来ました。 Wayland環境では、~/.xprofileや~/…

An interface is not an interface - Recent thoughts about clean coding

Introduction Recently I've had to work on code which seemed to be based on clean architecture, but after a while I concluded that it is probably not and it made me think about clean coding in general and the principles of clean architectur…

150万レコードを持つ画像テーブルの移行

株式会社スペースリー Railsエンジニアの大津です。 弊社サービスでは物件画像データの管理機能を提供しており、サーバーサイドのフレームワークにはRuby on Railsを、データベース管理にはMySQLを採用しております。これまで物件画像は用途ごとにテーブルを…

Vue 2 から 3 へ移行しようとしたらいちばん大変なのが Vuetify 2 から 3 への移行だった話

はじめに 株式会社スペースリー フロントエンドエンジニアの宮坂と申します。 ふだんは3Dビューアやその編集画面のDOM部分をReactやVueで書きつつ、たまにフロントエンド開発環境構築おじさんとして他チームへ出しゃばったりして生きています。 今回はその環…

Using RenderDoc to Analyze Browser Rendering

What's RenderDoc? RenderDoc is a powerful tool for capturing and analyzing the rendering process of applications utilizing rendering APIs (Direct3D, OpenGL, Vulcan, etc.) RenderDoc injects itself into the application's execution process in…

モノレポでreviewdog/action-tflintを実行するためにOSSコントリビュートして解決した

インフラエンジニアの thaim です。 スペースリーではインフラの構築にTerraformを、Terraformのコードに対する静的解析にtflintを利用しています。 このtflintを上手く活用するために取り組んだこと、OSSコントリビュートに取り組んだことについて紹介しま…

MonoSDFによる360°パノラマ屋内シーンのテクスチャ付きメッシュ復元

はじめに スペースリーでインターンをしている大隣嵩です。弊社は空間データ活用プラットフォームとしてパノラマ画像を使った空間の3D化技術に関する研究開発を行っております。 最近では、iPhoneやAndroidで簡単に3Dスキャンができるアプリが登場しています…

NeRFによる360°パノラマ屋内シーンの任意視点画像合成

はじめに スペースリーでインターンをしている大隣嵩です。 弊社は空間データ活用プラットフォームを提供しており、パノラマ画像を使った空間の3Dビューワーをリリースしました。 研究開発チームでは、更なる精度向上やコンテンツ制作負担軽減のため、より精…

比べてみよう リレーショナル vs ドキュメントDB

はじめに 株式会社スペースリー Railsエンジニアの海老原です。 スペースリーではメインのデータベースとしてMySQLを採用していますが、今後、MongoDBの活用も視野に入れて検討をしています。 最適な活用方法を日々模索するなかで、一覧形式で機能を比較検討…