Luup の技術ブログ

Luup Serverチームの開発生産性向上の取り組み:ZodとOpenAPIの共存 & 生成AIの活用

こちらの記事は、LUUP のTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の12日目の記事です。 こんにちは! Luup Serverチーム所属の安元です。私たちServerチームでは、開発の効率と品質を向上させるためにさまざまな取り組みを行っています💪 その一環として、APIドキュメントの整備に関してZodとOpenAPIを共存させる方針を採用しました。また、生成AIの利用を

モバイルアプリの新バージョンのパフォーマンス劣化に気付くための仕組み

はじめに LuupのSREチームに所属している、ぐりもお(@gr1m0h)です。 この記事は、LUUP のTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の11日目の記事です。 LUUPでは、iOS、Androidのアプリを2週間単位でリリースしています。 つまり、2週間単位で新しいバージョンが利用できるようになるのですが、新しいバージョンが前バージョンよりも著しくパフォーマンス

社内向けオペレーションアプリをFlutterで開発している話

この記事はLuup Advent Calendarの10日目の記事です。 こんにちは、モバイルアプリエンジニアの大瀧です。 今回は、Flutterで開発されている社内向けオペレーションアプリについてご紹介します。 OPSアプリの概要 LUUPでは日々ユーザーが快適に使えるよう、車両のバッテリー交換や故障車両の改修やメンテナンス・ポートの設置など様々なオペレーション作業が裏側で行われて

Cloud Tasks キューで遅延プッシュ通知を実装した話

こちらの記事は、LUUPのTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の9日目の記事です。 はじめに こんにちは。Luup Serverチーム所属の井上です。 突然ですが問いを発します。 Q. サーバー(GCP上)からiOS/Androidアプリへ送るプッシュ通知を、ユーザーの行動から一定時間遅延させるには…? A. Cloud Tasks キュー でscheduleDelaySeconds を指定するとキューイングを遅延

iOSアプリのプレビュー、スナップショットテストを使いこなして開発効率を上げる

この記事は、LUUPのTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の8日目の記事です。 はじめに こんにちは、iOSアプリエンジニアの茂呂(@slightair)です。 この記事ではLUUPのiOSアプリ開発で利用しているプレビューやスナップショットテストを実現する上でのテクニックについて紹介します。 LUUPアプリの設計 まず、LUUPアプリの設計について簡単に説明しま

Android Jetpack Compose の BottomSheetScaffold で3つの展開状態をやりたい

こちらの記事は、LUUP のTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の6日目の記事です。 こんにちは、Luup Androidチーム所属の土谷です。 みなさん、Android Google マップでやっているあのUI、標準APIでどうやってやるの?と思うこと多いですよね。 現在地アイコン、ボトムシートの展開状態、など。 今回はボトムシートの展開状態について焦点を当ててみよう

LUUPアプリのダークモード対応をした話

こちらの記事は、LUUP のTVCM放映に合わせた一足早い「Luup Developers Advent Calendar 2024」の5日目の記事です。 はじめに こんにちは!iOSエンジニアとして、Software Development部でLUUPアプリを開発している @tsuboyan5 です。 LUUPアプリは今年5月、ダークモード対応を行いました。本記事では、この対応にあたってiOSアプリへの実装視点で考慮したこと・どのような手順で対応を進めた

新BIツール「Superset」を導入した話

こんにちは。Data Engineeringチームの河野(@matako1124) です! 今年のData Engineering業務としてデータマネジメントからデータ活用促進の仕組み化まで幅広く活動してきましたが、その中でも特に事業にインパクトの大きい変革のお話をしていこうと思います。 結論から言うと、Supersetの新規導入とRedashからの乗り換えを試みています。 注意 執筆に当たり細心の注意を払っており

GCP API Gatewayでpushサブスクリプションを認証するためのOpenAPI v2設定ガイド

はじめに IoTチームの高原です。 GCP上で今回やりたいことは下図です。 Pub/SubのpushサブスクリプションでAPI GatewayにメッセージをHTTPで送信します。 このときpush認証を有効にして、API GatewayでJWT認証をさせます。 API GatewayはOpenAPI v2のドキュメントで設定するため、その手順をご紹介します。 ハマりポイント 最初はAPI Gatewayのサービス間認証を読みながら設定しました。 す

Firebase Emulatorで実現するローカル検証環境の構築とLuupでの応用

はじめに Software Development部 サーバーチームのt-kurimuraです。こちらの記事は、LuupのCM放映に合わせた「少し早いAdvent Calendar」の2日目の記事です。 Luupのソフトウェア開発では、FirebaseをBaaSとして利用しています。そのメリットの1つとして、Firebase Emulatorの充実した機能が挙げられます。今回は、Firebase Emulatorの概要と、Luupでの具体的な活用方法についてご紹介します。 Fireb

Luup Developers Advent Calendar 2024、一足早くスタートします!

はじめに こんにちは!Software Development(SwD)部の @tsuboyan / Niwa です。 Luup では、本日11月1日から同社初となるTVCMの放映が開始されました!🎉 (TVCMについてはこちら) これに合わせて、私たち SwD 部では、毎年恒例になっているアドベントカレンダーをひと足早く、11月より開始いたします!!(それはアドベントカレンダーなのか?!と言うツッコミは置いておかせてくだ

AWS EKSを活用した高可用性MQTTブローカークラスタの構築

はじめに IoTチームの高原です。 みなさんは「AWS IoT Coreを使わずにスケーラブルなMQTTブローカーを使いてぇ〜」って思ったことありません?ありますよね? 例えば、デバイスがMQTT over TLSに対応しておらず、閉域網経由で平文のMQTTメッセージが飛んでくる場合です。 調べてみたところEMQXなるMQTTブローカーソフトウェアがあるようなのですが、これをk8s上で管理するため

Luupの開発組織におけるインシデントマネジメントの変遷

はじめに LuupのSREチームに所属している、ぐりもお(@gr1m0h)です。 6月に「Waroom Meetup #1」にスピーカーとして招待いただきました。また、この勉強会はオンライン配信がなくオフラインのみの開催だったため、7月に広島で行われた「Road to SRE NEXT@広島」でも内容を少しアップデートして登壇しました。 https://topotal.connpass.com/event/317285/ https://sre-lounge.connpass.com/event/320488/ 資

LUUP iOSアプリ開発環境の現状確認 2024年8月

こんにちは、iOSアプリエンジニアの茂呂(@slightair)です。 この記事はLUUP iOSアプリ開発環境の現状確認と題して、我々の開発環境の状況を紹介するものです。1年半くらい前にも自分がiOSアプリ開発環境に関する記事を書きましたが[1]、それからのアップデートになります。 LUUPのサービスを成長させながら、同時に開発環境をどのように前進させているのか紹介させてく

SRE NEXT 2024でクライアントサイドへのSLI/SLOの導入についてお話しました

はじめに LuupのSREチームに所属している、ぐりもお(@gr1m0h)です。 日本最大のSREカンファレンス SRE NEXT 2024 に登壇しました。このカンファレンスはSRE Loungeの運営メンバーが主体となって運営しており、今回で4回目の開催です。 私の登壇の題は「Enabling Client-side SLO」です。これまでの「Enabling SLO」の活動の一環として、クライアントサイド(iOS・Android)のSLOのを計測し始