見出し画像

移動体験から超ワクワクを創る ~ NOT A HOTEL SOFTWARE

はじめに

こんにちは。NOT A HOTELでスマートホームエンジニアを務めている今井(@imashin_)です。2023年に入社し、約1年が経ち、日々の開発と出張を楽しみながら新しい暮らしづくりに取り組んでいます。

今回は入社して以降、約半年にわたり携わった、テスラカーシェアの開発についてご紹介します。このnoteを通じて、NOT A HOTELのソフトウェア開発の様子や魅力が伝われば嬉しいです。

また現在、NOT A HOTELのソフトウェアチームでは、エンジニアやプロダクトマネージャーを募集していますので、興味がある方はぜひご応募ください。スマートホームエンジニア、ネットワークエンジニアを募集しています!

なぜNOT A HOTELでカーシェアサービスをするのか

NOT A HOTELは単に別荘やホテルをつくるだけでなく、“新しい暮らし”を提案したいと考えています。その一環として、暮らしに欠かせない移動手段の一つとしてカーシェアを提供しています。

お客さまには、自宅からNOT A HOTELまで、車、飛行機、ヘリコプター、電車など様々な交通手段でお越しいただいていますが、交通手段の予約は煩雑になりがちです。

NOT A HOTELでは宿泊日にテスラ Model 3のカーシェアを利用できるようにしており、アプリから直接予約できるシステムを提供しています。また、乗り出しや返却も人を介さずにアプリ上で完結でき、決済も滞在中の費用と合わせて実施。よりスムーズな移動体験を実現しています。

アプリからテスラを操作
アプリからテスラを操作

では、ここからは価値検証から設計概要、開発の雰囲気まで、各トピックに沿って記述していきます。

価値検証

私が入社する前の2022年から、このカーシェアサービスは運用が行われていました。当初はコンシェルジュチャットまたはGoogle Formsで予約申請を受け付け、予約管理はGoogle Calendarで行われていました。しばらくの運用やお客さまからのフィードバックを踏まえ、移動手段を提供することの価値があるとの判断から、より利用しやすい形態にアップデートすることを決めました。

NOT A HOTELで面白いと感じたのは、コンシェルジュAIチャットボットの活発さです。このAIチャットボットが問い合わせの一次受けを行い、対応できないものはカスタマーサポートスタッフが対応します。利用頻度の低いオプションや価値が不明確なオプションについては、開発を行う前にチャットで対応。サービスの課題や利便性を検証することができます。

現状の確認

突然ですが、NOT A HOTELには個人のグレードに応じて年間一定額を会社から補助する「旅行補助制度」があります。この制度を利用してNOT A HOTELのプロダクトやサービスの理解を深めるメンバーが多くおり、私も入社早々NOT A HOTEL AOSHIMAに宿泊をしてきました。

CHILLの朝焼けが美しすぎた

もちろん、空港からNOT A HOTELへの交通手段はテスラ。その際の予約や利用時の不便さを体感することができ、多くのインサイトを得られることができました。

あとあと社内に聞くと、マニュアルでの運用に多くの時間を割いており、ミスなく運用を続けることの限界も見えていました。

テスラ体験レポート
当時のテスラを利用した後のレポート

旅行補助を使用した際には、社内でレポートを共有するルールがあり、私自身の当時の感想を振り返りを行いました。

段階的開発

カーシェアを一から開発するにあたっては、様々な要素を解決する開発が必要です。

  • お客さまの予約画面

  • カスタマーサービスの予約管理

  • 運営やパートナーとの貸出・返却連携

  • お客さまの免許証登録・管理

  • 貸出・返却時の遠隔操作

  • 料金計算・精算

マニュアル運用状態からの移行を考慮し、裏側の仕組みから開発はスタート。Google Calendarで管理していた状態を社内のPMS(Property Management System)で行えるようにしました。次に、お客さま側の機能開発に着手しました。このように部分的にリリースを行うことで、社内オペレーションの混乱を軽減することができました。

テスラの操作APIは公式には公開されていませんでしたが、公式APIがリリースされるとの噂が立っており、API公開を待ち他の機能を実装していたところ、正式にAPIがリリース。そのおかげもあり、迅速に実装を進めることができました。本当にタイミングが完璧で幸運だったと思います。

設計概要

システム構成を簡略に示すと以下の通りです。

システム概要図
カーシェアシステム概要図

サービス間連携

車両に関するサービスは、他のサービスとは独立させた方がスムーズと判断し、マイクロサービスとして切り出しました。サービス間通信はgRPCで行っています。vehicle-apiサービスは、ユーザーフレンドリーなAPIを通じて利用されるように設計され、全てGoで書かれたアプリケーションです。

ユーザーおよびカスタマーサービスサイドのアプリは別の開発チームが担当しており、綿密に連携して開発を進めました。チーム間の壁がないため、自ら他チームのプロダクトにプルリクエストを出し、開発を進めることができできました。

vehicle-api

vehicle-apiは、車両の予約管理、操作、状態取得、免許証管理を担っています。

免許証画像管理

カーシェア業を行うにあたり、免許証画像というお客さまの重要な個人情報を扱います。これらの画像はCloud Storageで保管し、閲覧権限は限られたカスタマーサービスメンバーのみに絞っています。これらはTerraformで閲覧権限管理。また、画像のアップロード時にはPresigned URLを発行し、アプリから直接アップロードしてもらうフローを取っています。

Tesla fleet-api

テスラは公式のAPIサーバーfleet-apiを公開しており、これを利用するGoのライブラリも公開されています。テスラの状態監視や操作が可能です。

様々な情報を吸い上げることができ、個人的にとても面白いです。バッテリー残量、外気温、車内気温、タイヤの空気圧などの情報取得や、解錠、施錠、エアコン操作、クラクション、ライトのフラッシュ、ゲストモード移行などの遠隔操作が可能です。

時系列データベースと可視化

テスラ車両の状態を把握するため、時系列データベースInfluxDBを導入し、可視化ツールとしてGrafanaを使っています。アラートやリアルタイムでの確認が求められるため、社内ではよく使用されているSpanner、BigQueryではなく、時系列データベースが必要と考えました。

また、人的運用コストを減らすためにマネージドなAmazon Timestream for InfluxDBを使用。可視化ツールとしてはInfluxDBと相性の良いGrafanaを選定しています。

これらを導入したことにより各車両の状態を逐一把握できるようになりました。また、セルラー通信が前提のテスラとの通信が取れない状態を検知でき、タイヤ空気圧の低下も検知可能です。

Grafanaの画面

開発風景

開発期間の約1ヶ月間、会社のテスラを借り、動作検証をしながら開発を進めました。これまで様々なIoT機器を自宅に持ち帰り開発してきましたが、間違いなくテスラは最も大きなデバイス、家のガレージに停めたテスラを眺めながらの開発は面白い体験でした。

1ヶ月間テスラに乗ることで、その特有の挙動や運転の特徴を把握し、後のトラブルシュートにも役立ちました。ちなみに開発中、自分の車は近くのコインパーキングに放置していました(笑)。

お気に入りの機能

今回開発した機能はたくさんあるので紹介しきれないのですが、そのなかでも私のお気に入りの機能を紹介します。

利用前、利用時の車両の位置情報確認

無人での受け渡しが前提のため、車両の正確な駐車場所の把握が重要です。これは私が初めてテスラを利用した時に感じたペインでした。特にAOSHIMAの貸出駐車場は広く、車両を見つけるのにも精一杯です。

既存の運用ではチャットを頼りに広い駐車場からテスラを探す必要がある

そこでテスラの正確な位置情報を利用し、車両の開始時や利用時にマップ上で表示することで、車両を見つけやすくしました。

乗り出し前のエアコンON

社内でも盛り上がった機能の一つです。これも自分が実際に利用した時に感じたペインから開発することを決めました。特にAOSHIMAのような南国気候だと夏の車内温度は60度近くまで上がります。テスラは天井がガラスになっているため特に暑くなるのでしょう。

飛行機を降りて暑い中車両まで辿り着き、かなり暑い車両に乗り込むのは当たり前かもしれないですが、あまり体験したくないものです。真夏に検証した際、車内が涼しい状態で乗り出すのは非常に快適でした。

ナビ案内

車両を貸し出す場所は拠点近くの公共交通機関付近です。特に初めて滞在する拠点ですと、拠点までの道のりはナビを頼るしかありません。

そこで、拠点以外で借りられる場合は拠点までのナビルートを自動的にAPI経由で入れるようにしています。これにより、ナビに住所を入れるという小さな手間を解消することができました。

乗り込んだら行き先が設定されている状態のテスラ

最終テスト

多くの人に巻き込んでいく開発

NOT A HOTELでの開発は多くのメンバーを巻き込んでいく必要があります。プロダクト開発チーム間のみならず、カスタマーサービスとの運用方法の連携や、現場の運営メンバーとの連携も必要。さらにはカーシェアという業態を満たしているか法務の協力も必要です。

多くの人の助けを借りてこのカーシェアをリリースすることができました。自律したチームメンバー多いこの会社では、壁をつくらず積極的にサポートしてくれる人で溢れています。

スマートホームエンジニアとは

最初にスマートホームエンジニアと名乗りましたが、カーシェアの開発はホームから少しかけ離れた領域のように見えるかもしれません。しかしながら、暮らしをアップデートしてくためにはなんでもやるというのが我々スマートホームチームです。本当にいろんなデバイスを管理し、お客さまが快適に利用できるように開発を行っています。テスラもその一つというわけです。

テスラの開発がひと段落つくと、KNX(ホーム・ビルオートメーションのオープンプロトコル)を勉強し、ネットワークを勉強し、SIPを勉強し、ありとあらゆる範囲の知識取り入れ、開発を行っています。

正直、飽き性の私ですが、いまのところ少しも飽きることなく仕事に向き合えているのは、このNOT A HOTELのプロダクトが持つ可能性といっても過言ではないでしょう(笑)。やりたいこと、実現したいことが多すぎて、人も時間も足りていないほどです。

そこで大事なお知らせです。そんなスマートホームチームでは現在2つのポジションでエンジニアを募集しています。

今後、拠点が加速度的に増えていくNOT A HOTELにとって、スマートホームやネットワークは、間違いなく要となるポジションです。ぜひこの記事を読んで、少しでも興味が沸いた方、ぜひご応募お待ちしています。カジュアル面談からでもウェルカムですよ。

FUKUOKA開業準備時のスマートホームチーム

ここまで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?