spacelyのブログ

Spacely Engineer's Blog

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の活用も視野に入れて検討をしています。 最適な活用方法を日々模索するなかで、一覧形式で機能を比較検討…

社内ライブラリを Swift Package Manager に対応させた

はじめに 株式会社スペースリー iOSエンジニアの樋川です。 普段は弊社サービスの、物件の撮影を補助/管理をするアプリのiOSの開発をしています。 今回は、研究開発チームが作成した、画像を台形補正する社内向けのライブラリをiOSプロジェクトに入れた時の…

counter_cacheの導入でレイテンシ改善

株式会社スペースリー エンジニアの出口です。 普段は弊社サービスの建物や物件といった情報の管理画面を開発しています。 バックエンドはruby on railsで開発されており、今回は建物一覧のレイテンシ改善のためActiveRecordのcounter_cacheを導入した経緯と…

家具を撮影した1枚の画像から3D形状を復元する【後編】〜ShaRFの実データへの適用と複数枚画像への拡張〜

はじめに スペースリーでインターンをしている大隣嵩です。 前回は、家具を撮影した1枚の画像から3D形状復元するタスクに取り組んだShaRF[1]の説明と、既存データセットを用いた実験を紹介しました。 この記事では、ShaRFを実データに適用した実験と、推論時…

家具を撮影した1枚の画像から3D形状を復元する【前編】〜ShaRFの紹介とPix3Dでの実験〜

はじめに スペースリーでインターンをしている大隣嵩です。 1枚の画像から家具の3D形状復元を行う問題は、結果が1つに定まらない不良設定問題です。しかし、深層学習を用いて、カテゴリ特有の形状に関する事前知識を獲得し、精度向上を達成した手法がいくつ…

MySQL 5.7で学ぶMySQLの最適化 (コスト計算と統計情報)

前回はMySQLのオプティマイザの挙動について詳しく学びましたが、今回はオプティマイザが動作するにあたって必要な情報について確認していきます。MySQL 5.7から新たに、server_cost、engine_costというスキーマが導入されてオプティマイザがクエリの実行計…

MySQL 5.7で学ぶMySQLの最適化 (環境設定とパラメータ理解)

いよいよ、昨年11月から、Amazon Aurora 8.0がリリースされ、8.0への移行の日が差し迫ってきました。 Spacelyでは、現在、Aurora MySQL5.7を利用していますが、8.0移行の前準備として、最近の最適化の仕組みを学びはじめました。筆者が知っている時代よりも…

AWS Backup for S3なしにS3をバックアップする

インフラエンジニアの thaim です。 つい先日、待望のAWS Backup for S3がリリースされました! aws.amazon.com ちょうど利用したい案件があったのですが、スケジュールの都合上GAを待たずバックアップを取得する必要がありました。 そのため、AWS Backup fo…

HashiTalks: Japanで発表しました「Terraform workspaceとTerraform Cloudを用いたDRYでシンプルな運用フロー」

インフラエンジニアの thaim です。 先日 2021-09-30 に開催された HashiTalks: Japan 2021にて、ついに弊社におけるTerraformの活用状況を発表しました!今回その発表概要と発表した感想についてまとめておきます。 発表の経緯 HashiTalksはHashiCorp社が主…

DocumentDBを使用したサービスをAlgoliaに完全に置き換えた

「AI空間設計」の家具データ 別の記事でVR空間に家具を配置する「AI空間設計」の基本的な実装方法について解説しました。その際は使用した家具は1種類のソファだけでしたが、実際の「AI空間設計」の中では、さまざまな家具ブランドから提供された家具を自分…

VRの部屋に家具を置いてみた

「AI空間設計」とは? スペースリーは360度VRを活用したサービスを提供しています。2016年のサービスリリース以来、VRを使ったさまざまな機能を開発してきました。そして、今年の3月に「AI空間設計」という機能をリリースしました!!360度パノラマで撮影し…

AWS Firelensでfargateログをdatadogに集約する

AWS ECS Fargateでアプリを実行・運用するときでも、アプリケーションログはdatadogに集約して監視・運用したい。これを実現する方法として AWS Firelensを導入したのでその詳細についてまとめました。

360度パノラマ画像を魚眼画像に変換する過程

パノラマ画像と魚眼画像の射影変換は3次元の極座標の図が書ければすぐ求められますが,3次元でイメージしたり,実装までやってみると結構手間が掛かります。 今回はスペースリーにおける画像処理の前処理的な部分の取組みとして,360度パノラマ写真から2つの…