見出し画像

24時間以内に7つのアイデアをカタチにせよ。NOT A HOTELソフトウェアチームのハッカソンレポート

突然ですが、まずはこちらの映像をご覧ください。

2023年7月4日から6日までの3日間にわたり、NOT A HOTELソフトウェアチームでは合宿を開催。そのうちの1日を使い、ハッカソンが行われました。

全員に課されたミッションは「アイデアを実際にカタチにすること」。事前にチームから開発テーマを募集し、そのなかから7つのテーマを厳選。ソフトウェアエンジニア、プロダクトマネージャーの約20名がのチームに分かれアツい開発が行われました。

ハッカソンの会場は、我らがNOT A HOTEL AOSHIMA(宮崎)。果たして、この最高のロケーションに相応しいアウトプットは生まれたのでしょうか...!?

今回のnoteでは約24時間にわたり繰り広げられたハッカソンの開発現場をレポートします🔥

MASTERPIECEーNOT A HOTEL AOSHIMA

※約1万文字におよぶ読了率を無視した記事になっています。目次をご覧いただき、まずはご興味あるパートからお読みください🙇‍♂️


そもそも、なぜハッカソンを?CTO/CXOに聞く


ー まずはCTOのhakase(大久保)と、guyさん(井上)にお聞きします。なぜハッカソンを開催するのか、その狙いについて教えてください。

guy:普段仕事をしているなかで「こんな機能があったらいいな」とは思うけど、日々の業務に追われてなかなか開発できないことって結構あるような気がしていて。仕事から完全に切り離した時間を設けることで、アイデアを実現させようというのが、今回の狙いですね。

hakase:今回こだわったのはアイデアだけで終わらせないことです。実際にハッカソンの成果発表会ではプロトタイプのデモを見せてもらう予定です。実装を目指して開発してみようと試みたのが、今回のハッカソンになります。

ー ハッカソンで開発するテーマは既に決まっているのでしょうか?

guy:開催の約1ヶ月前にソフトウェアチーム全体にハッカソンのテーマを募ったら、約70ものテーマが集まって…さすがに全てはできないので7つに絞りました。7つのテーマのもとに、興味があるメンバー同士が集まることで、普段あまり関わりのないメンバー同士も一緒に開発できるような編成にしました。


事前に募ったアイデアは70を超えた

ー すごい数ですね。ちなみにhakaseとguyさんは各チームのサポーター役に徹するのでしょうか?

hakase:何を言ってるんですか。僕らも一緒に開発しますよ。

guy:当然ですよ。全員でハッカソンを楽しみます!

ー 気合い十分ですね。

hakase&guy:🔥🔥

ハッカソン前日は懇親会を開催。隣接するレストラン&バー「LDK」にてエネルギーを蓄えます

実質24時間以内に7つのデモは完成するのか?開発現場へ潜入


こうしていよいよハッカソン当日を迎えました。ソフトウェアチーム約20名が各テーマに分かれスタートしたハッカソン。まずは各チームの概要を紹介をしながら、開発の様子を覗いてみましょう。

  1. コンビニチーム

  2. iOS Widget/LiveActivityチーム

  3. PMS(ホテル運用システム)チーム

  4. 音声「Kevin(AIコンシェルジュ機能)」チーム

  5. 手ぶらで解錠チーム

  6. WORK CARE PJチーム

  7. メッシュAPチーム

(1)コンビニチーム

⭐️概要
NOT A HOTELのお部屋内で商品を購入できるコンビニ。ここで販売する商品のバーコード(or QRコード)を読み込み、オーダーを自動作成することで、拠点運営やCSの業務効率化に繋げようという試み。現状は、拠点のスタッフが「何が売られたか」を目視でチェックし、紙で手運用していているため、効率性に加えてミス防止にもつなげる。

👨‍👨‍👧‍👧メンバー
Yusuke Kuroiwa(Software Engineer) Satoshi Kawabata (Software Engineer) Fumika Nakagawa (PdM) Satomi Fukuda (PdM) Tsubasa Ninokura (PdM)

Fumika Nakagawa (PdM)
Satoshi Kawabata (Software Engineer)
夜な夜なQRコードを商品に貼り、実機で試してみる模様
Tsubasa Ninokura (PdM) ※NOT A HOTEL初の新卒メンバーはハッカソンの取りまとめ(大役)も担う
カタカタカタカタカタカタカタカタカタカタカタカタ

(2)iOS Widget/LiveActivityチーム

⭐️概要
iPhoneのWidget/LiveActivity(ロック画面・ホーム画面)にNOT A HOTEL APPへの導線をつくり、必要な機能(鍵解錠・チャット・スマートホーム)にすぐにアクセスできるようにし、滞在時のオーナー体験をよりスマートにする試み。

👨‍👨‍👧‍👧メンバー
Sachihiko Shiuchi (Software Engineer) Yusuke Nunokawa (PdM)

Yusuke Nunokawa (PdM)
Sachihiko Shiuchi (Software Engineer)
Widgetに満足せず、LiveActivityの開発に取り組む深夜
「好きな飲料はコーラです」とShiuchi。開発を推し進めます

(3)PMS(ホテル運用システム)チーム

⭐️概要
システム化されず、いまだに“手運用”しているNOT A HOTELの「オーナー昇格」「泊数付与」の裏側を大胆に改善するプロジェクト。さまざまな要因を特定し、それらをまとめて自動化(手運用から脱却)する試み。

👨‍👨‍👧‍👧メンバー
Guy Inoue (CXO) Hiroshi Nakao(Software Engineer) Kana Yashiro (PdM)

Kana Yashiro (PdM)
Hiroshi Nakao(Software Engineer)Guy Inoue (CXO)
チーム唯一のEngineerであるHiroshi Nakao

(4)音声「Kevin(AIコンシェルジュ機能)」チーム

⭐️概要
音声経由でオーナーのやりたいことをきちんと理解し、部屋内のあらゆる機能を操作する仕組みをAIコンシェルジュ「Kevin」に実装。スマートホームを音声でコントロールすることで、部屋に備え付けのiPadやAPPいらずで、(家電等の)操作を可能にする試み。

👨‍👨‍👧‍👧メンバー
Kei Kamikawa (Software Engineer) Koki Sawano (Software Engineer) Koichi Saito (PdM) Kie Ikebata (Software Engineer)


Koichi Saito (PdM)Koki Sawano (Software Engineer)Kei Kamikawa (Software Engineer)
全集中なKoichi Saito
沖縄からやってきたKei Kamikawa、疲れを一切感じさせない
二人でPCを覗きながら開発を進める

(5)手ぶらで解錠チーム

⭐️概要
iPhoneのWalletに部屋の鍵をQRコードとして追加し、それをドアホンにかざすと解錠できる機能を開発。わざわざAPPの中から鍵を探す手間(アプリ内で起きる8つのアクション)を省くことで、オーナーの滞在体験をよりよくする試み。

👨‍👨‍👧‍👧メンバー
Hokuto Shimokawa(Software Engineer)+ Special Thanks

Hokuto Shimokawa (Software Engineer)
(おそらく)日本でこの日もっともドアの解錠をしたHokuto Shimokawa

(6)WORK CARE PJチーム

⭐️概要
WORK CARE PJチームからは2つの提案。まずは労働時間を集計・検知を自動化し、健全な労働状況を目指す勤怠打刻をイイ感じにするプロジェクト。そして、事業の質を上げつつ、みんなの心理的安全性の向上を目指すSlack完結型のインシデント報告ツール。Slackを軸にした、NOT A HOTELで働く仲間のための試み。

👨‍👨‍👧‍👧メンバー
Narichika Kajihara(Corporate IT) Takaaki Shirai (Software Engineer) Haruki Nakano (Software Engineer) Alyssa Chang (Software Engineer) hakase (CTO)

Takaaki Shirai (Software Engineer)Narichika Kajihara(Corporate IT)
Alyssa Chang (Software Engineer)
hakase(CTO)
プールにもサウナにも入らず、ひたすら開発を進めます

(7)メッシュAPチーム

⭐️概要
NOT A HOTEL EXCLUSIVE ANYWHEREのネットワーク環境改善を行うプロジェクト。ANYWHEREの建屋がアルミ素材であることから、電波が反射してしまいWi-Fiの電波が部屋の中まで届きづらい課題があるため、改善する試み。

👨‍👨‍👧‍👧メンバー
Yusuke Kuroiwa (Software Engineer) Narichika Kajihara (Corporate IT)

同じ方向を向きながら作業を進めるYusuke Kuroiwa(Software Engineer) Narichika Kajihara(Corporate IT)
NOT A HOTEL EXCLUSIVE ANYWHERE

果たして結果は? いざ、成果発表へ

ハッカソンがスタートして約24時間後、朝9時から成果発表会が行われました。開発が深夜まで及んだチームもあるなか、全員が開始時間通りに集合。発表前から既に達成感に満ち溢れているメンバーもいるなど、とても和やかな雰囲気のまま成果発表が開始されました。果たして、どんな成果を得られたのでしょうか?

(1)コンビニチーム

⭐️成果
 コンビニアプリの開発に成功!🎉(以下、できたこと)
 ・Studioでセルフレジ利用を案内する
 ・バーコ ードリーダーで商品のバーコードをスキャンする
 ・カート画面が立ち上がり、商品が追加される
 ・数量変更や商品の削除ができる
 ・確認画面に進む
 ・購入完了画面に進む

🏃‍♂️残対応
 開発面
 ・バーコードと商品情報の紐付け
 ・商品情報の取得
 ・オーダー作成

 運用面
 ・オペレーションの詳細検討
 ・バーコードがない商品へのQR発行、貼り付け

👨‍👨‍👧‍👧開発者のコメント
 ・コンビニの請求作業は現場スタッフの負荷が非常に高く、以前から解消したいと考えていたため今回ゴールが見えたことはとても有意義でした!

 
実際に現場スタッフにもその場でデモを見せてFBいただけた点も、現地でのハッカソンならではの良い時間だと感じました

 ・まずは来月を目指してベータ版をリリースし検証を進める予定なので、システム開発・オペレーション構築のいずれもスピード感を持って進めていきたいです!

 ・普段は担当していない領域の開発をするということで純粋にワクワクしましたし、あまり関わらないメンバーと取り組めたのも良い経験になりました

プレゼンテーションするSatomi Fukuda (PdM)
完成度の高いデモをするYusuke Kuroiwa (Software Engineer)

(2)iOS Widget/LiveActivityチーム

⭐️成果
Main App Widget (α版)の開発に成功!🎉
 ・ReadyToCheckin 状態:チェックイン (キー詳細) に遷移
 ・Staying 状態:キー詳細あるいはコンシェルジュに遷移
 ・チェックアウト日:チェックアウト (キー詳細) に遷移
 ・予約なし:ホーム画面に遷移

ライブアクティビティへの挑戦
 ・一時的に表示されるウィジェット拡張
  ・ロック画面、ホーム画面、Dynamic Island に表示できる
  ・ユーザーの追加操作なしに滞在時のみ表示することが可能
  ・Push通知を利用し動的にデータを更新できる

🏃‍♂️残対応
LiveActivityのブラッシュアップ

 ・結果として、Widgetはユーザー設定が必要になるため、設定不要のLiveActivityを採用することに決定。実装に向けて、今後は(LiveActivityがiOS16以降のため)iOS15への対応、実機での画像表示の検証、表示すべき鍵の仕様などを詰めていく

👨‍👨‍👧‍👧開発者のコメント
NOT A HOTEL のアプリは日常的に利用されるものではないのですが、滞在時には頻繁に利用されるという特徴を持ってます。チェックイン・チェックアウト、鍵の解錠、運営スタッフとのチャットなどのよく使われる機能にすぐアクセスしたいというニーズがあり、LiveActivity はまさに最適なソリューションでした

・比較的新しい機能である LiveActivity を採用したサービスは事例が少なく、公式以外の情報もあまりないため、あーでもないこーでもないと手探りで実装を進めていくのはハッカソンならではという感じで、知的好奇心と緊張感が相まってチームの温度を高めてくれました

・発表時にはテスト環境で動作するところまで持って行けたので、この機能の実用性を開発者自身も実感できたのは大きかったです。本番リリースまで、いくつかクリアすべき課題は残ってますが、滞在時の体験を1ランク高めることができると信じてるので、今期中のリリースを目指していきます!

(裏目標として、実際にユーザーが触れるハッカソン企画のなかで最速で出したいですね)

Yusuke Nunokawa (PdM)
Sachihiko Shiuchi (Software Engineer)

(3)PMS(ホテル運用システム)チーム

⭐️成果
契約管理リストの自動化の整理
🎉(「オーナー昇格」「泊数付与」)
・Hubspotで管理される契約リストを自動連携
・オーナー昇格に必要な情報を集約
・泊数付与に必要な情報の集約
・既存DBの一部更新


🏃‍♂️残対応
今回のハッカソンで進められたのは、契約テーブルからオーナーと紐づけるところまでで、実際泊数を付与するロジックまでは開発できなかったので、実運用に向けて今後そこを詰めていく

👨‍👨‍👧‍👧開発者のコメント
・今回は、開発の前段階としてオーナーの契約の仕組みや種類について議論し、再整理することができ、とても有意義でした

・このテーマはオーナーや宿泊者の体験に直接影響がないが、オーナーの契約フローをシステム化することで、社内の業務効率化に大きく貢献できると感じました

・発表時には初期のオーナー管理リストのベース実装はできました。ここから更に詳細を詰めて今季の早い段階でリリースまで行いたいと思います

※PMSは社内向けのツールのため、ハッカソン資料は公開できませんので、代わりにPMSに関する開発資料を掲載します

Kana Yashiro (PdM)Guy Inoue (CXO)
Hiroshi Nakao(Software Engineer)

(4)音声「Kevin(AIコンシェルジュ機能)」チーム

⭐️成果
ChatGPT(function calling)を利用したアプリケーション開発に成功🎉

🏃‍♂️残対応
確率的出力をする挙動の制御の方法を検討する

 ・最終実行前にユーザーの同意を取るフロー
 ・(あるいは)プログラムロジック側での制御

レスポンスのパフォーマンスを高める(発話終了から機器の動作まで7〜9秒程度かかってしまっている)
・相槌、インタラクションのアニメーションによる心理的な待ち時間の軽減
・GPT3 turboの利用(ただしfuntion callingの精度は下がる)
・ChatGPT Steam APIの利用
・Azure環境でのChatGPT AI API利用
・ローカルLLMでのfunction calling
・そもそもLLMに依存しないのか県庁

👨‍👨‍👧‍👧開発者のコメント
ChatGPT/Function callingという新しい技術の制約と可能性を感じることができ有意義でした

・スマートホームについてはAPIでの制御を現地で行うことができ、非常にワクワクしました!

・今後もHowには囚われすぎずに、ベストなUXを実現する方法を追求したいです

Koichi Saito (PdM)
(中央)Koki Sawano (Software Engineer)

(5)手ぶらで解錠チーム

⭐️成果
・NFCタグを用いた解錠に成功!
🎉
・Wallet PassでQRコードを用いた解錠に成功!
🎉

🏃‍♂️残対応
精度、速度の改善
 ・いろんなライブラリを試してみる
 ・画像の前処理工夫する(QR部分を切り出す、カメラレンズによって変形した画像を平面に戻す、夜間にスマホの光が起こすフレア部分を補正)
・読み取り状況のリアルタイムなフィードバック
・24時間pollingし続けるのか検討
※以上は現状のデバイスを使う場合の検討事項。QRコード専用の読み取りデバイスを設置できれば解決する。
・Wallet Passの見た目の改善
・passファイルを自動生成する機構づくり
・Apple Watchでの検証
・玄関以外にも導入できるかの検討

👨‍👨‍👧‍👧開発者のコメント
・手ぶらで解錠するのが最終目標なのですが、今回はハードウェア的な制約も鑑みて2つの非接触型解錠を試してみました。普段の業務とは違う開発でとても楽しめた一方、課題も残り、これは今後の宿題として進めていこうと思います。NFCを使った全く違うアプローチも試したいです

デモの完成度の高さに、拍手が送られるHokuto Shimokawa(Software Engineer)

(6)WORK CARE PJチーム

⭐️成果
勤怠打刻をイイ感じにする
・自然言語で打刻ができるように成功!🎉
・残業時間の自動レポートにも成功!🎉


Slack完結型のインシデント報告ツールの開発
・Slackプラットフォームを活用し、インシデント状況のステータスや情報を管理し、Notionと連携することで流動化を防ぐことに成功!🎉

🏃‍♂️残対応
Slack完結型のインシデント報告ツールの開発
・フォームの内容が現状と整合性がとれているか検証する
・Slackのスレッド内の会話に、リアクション(スタンプ)をつけるとNotionのページにどんどん情報が上書きされていったり、Kevin(AI)が文章にまとめてくれたりもできるようになるので、そこまでやり切りたい

👨‍👨‍👧‍👧開発者のコメント
勤怠打刻をイイ感じにする

・GCPの各種サービス、Open AI / Freee / Slack APIを用いて時間内に実装するというなかなかシビアなプロジェクトでしたが、様々な方と協力して完成できたのは良い思い出です。また、(後日)自然言語での勤怠打刻の方はすでにサービスインしてソフトウェアチーム内で使ってもらっているので、開発したかいがありました

Slack完結型のインシデント報告ツールの開発
・インシデント対応時のスピード感を残すために基本的にactionの起点をSlackに置いて、ストックしたい情報が手軽にnotionに蓄積されていくのが理想
なので、今回はそこまでつくりきれなかったですが近々残対応の実装をしてリリースしたいです!

・Slackアプリを作るだけではよくやっていて面白みがないので今回は新しく出たSlack platformを使って作ったのですが、これが中々ハマりポイントがあるものの、開発していて楽しかったです!実装段階でミスをしてしまい500件ぐらい通知がきてしまったのは焦りましたが、今となっては良い思い出です

Kajihara Narichika (Corporate IT)
Takaaki Shirai (Software Engineer)

(7)メッシュAPチーム

⭐️成果
電波を3本 (RSSI -70db)立たせることに成功🎉
・Anywhereの真ん中だと、アンテナ1~2本(RSSI -40db)
スループットも約50Mbpsを安定して出力することに成功🎉

🏃‍♂️残対応
・アンテナをトレーラーハウスよりも高い場所に配置することで、ネットワークを遮断しない工夫をする
・実機を敷地の中央に配置するなどしたいところだが、内線規程の問題があるため、調整が必要

👨‍👨‍👧‍👧開発者のコメント
・結構検証が大変だった分、私ひとりでやると100%心が折れていたはずです。Corp-IT の kajinari さんがリードしてくださいました。他のチームのお手伝いとかしてて、まともに工数が割けず、申し訳なかったですが、何も言うほどがないくらい強い味方でした

・検証中、kajinari さんとダブルチェックしていたのにも関わらず、ドキュメントに載っていない箇所でループを起こしてしまい、1分ほどネットワークをダウンさせてしまいました…。しかしながら、ネットワーク施工業者にお願いしていた部分が多かったので、理解度がかなり深まり、何かしらの問題が合ったときでも自社で解決できる自信が付きました

ラボなう by  Kajihara Narichika (Corporate IT)
ネットワーク構築の難しさを熱く語る、Yusuke Kuroiwa (Software Engineer)

「実装するまでがハッカソン」CTO/CXO総括


ー 全チームの発表が終わりましたが、いかがでしたか?

hakase:本当にお疲れ様でしたと言いたいですね。想像以上に全チームの完成度が高くて、正直驚きました。プロダクト開発の延長線上のアイデアというよりも、未知の分野や新しい挑戦もできたハッカソンになったんじゃないかなと思います。あと、ハッカソンという形式ではなくても、気づいたことや挑戦して得た学びなどは、社内外にどんどん発信していきたいですね。メンバー同士で共有していくと、さらに強い組織になると思うので、日々継続していきたいと感じました。

「完成度が高くて驚いた」と、ハッカソンを総括するhakase(CTO)

guy:今回のハッカソンで出たアイデアは本気(マジ)で実装したほうがいいものばかりなので、早速明日からイシューを立てて取り組んでいきたいですね。特に社内ツールに関してはすぐに実装して検証したいなと思いました。実装するまでがハッカソンですからね(笑)

hakase:本当そうですね。実装されたら、このハッカソンの価値が証明されるので、またAOSHIMAにこれる(笑)。

guy:たしかに(笑)。やっていきましょう!🔥

「このアイデアは本気(マジ)で実装しよう!」とメンバーを鼓舞するGuy Inoue (CXO)

編集後記


こうして無事に幕を閉じたハッカソン。いかがでしたでしょうか?

社内ながら「本当に1日で開発したの?」と疑うほどの完成度でしたし、自らのチームの開発に集中するなかでも、他のチームへフィードバックをしたり、仕様を教え合うなどといったシーンもあり、まさにワンチームを感じる時間でした。今回の成果が社内外のみなさんの目に触れるまで、そう長くはなさそうですね。楽しみです。

それでは、ここまで読んでくださったみなさんありがとうございました。また次回のnoteでお会いしましょう!NOT A HOTEL・ハッカソンレポートでした。

ソフトウェアチームの仲間たち。また来年も開催なるか?ハッカソン、お疲れ様でした!

採用情報


STAFF
EDIT・TEXT・PHOTO:Ryo Saimaru


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