“GoToトラベル”から学んだのは、イレギュラーへの対応力と助け合いの心
スペースキーの小野(@tsugumi_o_camp)です。キャンプ場検索・予約サービス『なっぷ』で「GoToトラベルキャンペーン」対応をしている記事を前回お伝えしました。今回はシステムを構築した開発部サイドの見解を取材。進め方の苦労や課題、予期せず得られた結果などをエンジニア視点で話してもらいました。
辻本 一紀
システム開発・運用部/部長 2011年入社、スペースキーのWebシステムのほぼすべての開発を担う。最近はRECAMP勝浦にワーケーション体験で行きました。
幾見 俊彦
WEBアプリケーションエンジニア 2018年入社。前職は自社WEBサービス開発企業のテックリードとしてアーキテクチャ設計や開発環境整備などを担当。今年から冬キャンはじめました!
山下 絵美
WEBアプリケーションエンジニア 2018年入社。前職はサーバーサイドエンジニアとして自社WEBサービスの開発を担当。今年は20回以上キャンプへ行ったと思います。12月もあと3回行く予定です!
植松 太郎
インフラエンジニア 2019年入社。前職もインフラ等を担当。トレラン好き。でも登山にも行きたい。
大平 哲也
WEBアプリケーションエンジニア 2020年入社。前職はユーザー系SIerで外販のシステム開発を担当。自転車好き。3本ローラー欲しい。
前回までの「GoToトラベル」と動きだし
-「GoToトラベル」対応について、前回は運営チーム側の話を聞きました。今回は開発側でどのような対応をしたのかおしえてください。
▽『なっぷ』運営チーム側の話はこちら
(大平)動き出しは確か4月に入ってからだったと思います。僕は3月に入社したのですが、入社後すぐに在宅勤務を余儀なくされて。その頃から発生した記憶があります。
(山下)『なっぷ』には割引機能がなかったので、まずは他社サービスの調査からはじめたのが4月中旬でした。各自で、他社の予約サービスの仕様などを調査し、報告し合いましたね。
(辻本)上長の中田さんより話があり、「コロナの経済対策でもあるので、やろう!」っていうのがことのきっかけです。僕のほうで簡単に調べて、メンバーへ共有を始めました。
-すでに会社の方針として、開発の指示があったのでしょうか?
(幾見)いえ、指示が降りてきたわけではなく「おそらく対応をすることになるだろう」とチーム内での判断からです。我々エンジニアと飯田さん(Webディレクター)、黒瀬くん(デザイナー)も含め、一斉にサービスの調査をしたのが最初ですね。
(植松)この時点では「GoToトラベル」に関する情報はほぼ皆無でした。仕様を検討するにもどうしたらいいかと思案していたところ、辻本さんが過去にあった施策(ふっこう割)と同じスキームでくるのではとあたりをつけてくれて。どうなるか全く見えない中、自分たちで仮説を立てて、意見を出し合いながら進めていたのを覚えています。
-ほんとに霧の中を進むような感じですね。その時の心境はいかがでしたか?
(大平)僕は入社から浅くて、今回が初めてのがっつりした開発でした。主に予約導線を担当したのですが、これが結構複雑で……。既存のシステムをとにかく壊さないようにしないといけない。システムを理解しながら解析をするのはむずかしかったですね。ただ、運営チームの松本さんたちがしっかり仕様を確認してくれたので、そこの安心感はありました。
(幾見)割引機能はないので、0から作らなくてはいけない。せっかく作るなら、今後『なっぷ』でも汎用的に使えるシステムにしたいなとも考えていました。そこは、開発部内で協議したときに、みんなから出てきた意見でした。結果的には「GoTo」仕様にはなってしまったんですけど。
(山下)『なっぷ』には特有の仕様もあって、例えば複数施設予約だったり、連泊だったり。それが「GoTo」とどうからんでいくのか、どう割り引かれる仕様になるのか。そこが見えずに、頭を悩ませましたね。みんなで想定されるケースを考え、1個ずつクリアにしながら仕様を固めていきました。
仕様が出るまでの進め方
-わからないことだらけでしたが、どのように進めていったのですか?
(辻本)当時はほとんど情報がない状況でしたが、過去の「ふっこう割」を元にやっていくという方針はあったので、そこを軸に進めていきました。「GoTo」における座組みを決め、開発上のタスク管理は僕が担当しました。細かい実装については各メンバーにお任せしたので、細かい指示出しなどはしていません。
(幾見)アーキテクチャに関しては、仕様が出ていなかったので(後々変更とわかっていながらも)こちらで独断的に決めて進めていました。過去の施策からこうせざるを得ないだろうという現実的な部分と、汎用的なシステムにしたいという我々の希望のバランスをとって、開発部内で調整。それを運営チームとも共有しながら展開しました。
(辻本)特に不正利用に関する防止措置については気にする必要があったので、措置としてカード決済に限定することにしましたね。
-開発する上で、特にむずかしかった部分は何でしょうか。
(辻本)運営チームの意見とも重なりますが、宿泊対象となる施設の線引きですね。観光業には簡易宿泊許可が全施設にありますが、アウトドアにはない。そこが『なっぷ』特有であり、対処するべき課題でした。そこをどのように制御するか、みんなで悩みましたね。
(山下)すべての施設さんに参画いただくことが望ましい状態でしたが、それは施設さんごとの状況もあってむずかしいことがわかりました。ただ、過去の施策から鑑みて『なっぷ』でできることを絞り込んでいった結果、プランをベースに設計していくことが最もシンプルではないかと落ち着きました。プランであれば、ある程度柔軟に設計して対応することが可能。松本くんたち運営チームは確認作業が大変だったと思いますが、開発側としてはそこしかないかなと考えていました。
(辻本)あとはキャッシュフローの対応についても、どこまでやるかは悩まされました。支給金はいつ、どうなったら施設さんへ振り込まれるのか。前払い/後払いなど、タイミングによって施設さんへの負担が変わってくるので、そこはシステム開発と直接関係がなくてもみんな気にしていたことでした。
また、「GoTo」の予算についても全国なのか地域によって差があるのかなどがわからず、システムで制御する必要があるのかどうかとか……。
(大平)予算に関して報道がありましたよね。開発で配慮しなくてはいけない問題なのか、不安に思いながら開発していたのを思い出しました。結局、全部一緒になったので不要な心配ではありましたけど。
(辻本)「GoTo」が使える回数の上限はあるのかどうかとか、考えればキリがなかったですね。
仕様発表後の流れ
-仕様が発表される前は見えない中で進めるむずかしさがあったようですが、発表後はスムーズに進んだのでしょうか?
(山下)仕様が固まってきたら、あとはやるしかないって感じでしたね。ただ、スムーズとは言えず、だいぶバタつきました(笑)。なぜかと言うと、公表されてから施行日までスパンが結構短くて、物理的な時間が単純に足りなかったからです。
私が担当したものに「地域共通クーポン発行申請の自動連携」があったのですが、要は発行してほしいクーポンの金額を事務局のシステムに乗せる作業。ただ、地域クーポンの開始時期もなかなか決まらない中、仕様が公表されたのが開始の2週間前で、かなりびっくりしましたね。開発が間に合わない期間は運用チーム側で手動で対応してもらうなど、連携しながらなんとか乗り切ることができました。
(幾見)たしかに、仕様が決まってからのほうがバタバタしてましたね……。事務局から仕様が降りてきたら、これまでに作ってきた仕組みにどうしたらうまくいくかを考えて、実装。山下さんの言う通り時間もなかったので、不安はありましたがとりあえずやるしかないと。開発部には独自の開発サイクルがありましたが、「GoTo」の仕様変更は最優先。開発予定に影響が出てしまう点でも、柔軟さが求められたなと思います。
(山下)不安ということでは、結合テストを行う環境がなかったので、ぶっつけ本番でやらなくてはいけないのもこわかったですね。時間という制約がある中で、ミスなく作らなくてはいけない。そこはプレッシャーでもありました。
-時間の制約があったのは、通常の『なっぷ』の開発と大きく違う部分なんですね。他にもありましたか?
(幾見)一般的な開発は
仕様を決める → Goがでたら開発する → テスト → リリース
で進めるのですが、今回は開発のあとに仕様変更がきたりとフローがイレギュラーだったので、想定通りに進められない点は大変でした。
(植松)仕様は都度出されますが、施行日は変わらないので、そこでのタスク調整は各自苦労したポイントだったのではと思います。また、仕様変更に関しても、通常であれば「〇〇さんに聞けばいい」という絶対的な存在があるのですが、今回はそこのコミットが不安定。運営チームの松本くんたちは再三確認してくれたので助かりましたが、仕様へのコミット感は通常と大きく違うと感じました。
-開発の中で、意外な発見や得られたことはありましたか?
(山下)『なっぷ』を軸に、部署の枠を越えてすごく密に仕事ができたのは、貴重な経験を得られたなと思っています。特に、辻本さんが話されていたキャッシュフローに関しては私たちではどうすることもできず、運営チームの植草さんや経理の三浦さんの助力があってこそ。みんなと連携できたからこそ、大きなトラブルもなく進められたのだと思います。
(幾見)私は、実は平行して技術的アプローチの実証をしていました。『なっぷ』には新旧それぞれのシステムがあり、一部の情報を旧から新システムへ取り込むというもの。結果、微妙だったというのがわかったので、また別のアプローチを検証しようと思います。「GoTo」だからできたというわけではありませんが、開発スケジュールに沿って検証できたのは収穫ですね。
-他にも予想外だったことはありましたか?
(山下)「GoTo」対応をすることによって、『なっぷ』に割引という概念が新たに追加されたのは前述のとおりですが、それによって様々な部分にも手を入れなくてはいけなくなりました。例えば、予約完了メールに割引額を記載したり、「割引対応になってますよ!」的な表示を追加するように変更するなどです。これを機に、今までの予約完了メールの情報を整理し、よりわかりやすいものへアップデートすることができました。
また、施設さんへ発行する請求書も、「GoTo」を入れたことで情報がかなりカオスな状態になってしまって……。これもよりわかりやすい体裁にしようと、引き続き練り直しているところです。総じて、お金回りの情報整理ができたのは予想外でしたが大きな収穫でした。
-なるほど。インフラ面での影響はいかがでしたか?
(植松)実は、インフラ面はほとんど変化ありませんでした。幾見さんと一緒に、新しい取り組みのために小さな変更したくらいで、特別なことはほぼしていません。昨年から、インフラ基盤をAWSに変更し、柔軟に構成変更できるように整えていたのが大きかったと思います。今回の経験から、アプローチに対する知見が得られたのは個人的にはよかったかと。今後、新しい挑戦をする上でも、自信につながる経験となりました。
総括
-今回の振り返りを、ひと言お願いします!
(植松)仕様がなかなか決まらず開発期間も短くて、今回の開発は私の経験上でも稀にみる手強いPJでしたが、改めてみんなのがんばりを目の当たりにしました。傍で見ていて、正直驚きましたね。開発部に限らず、関わるメンバーみんなが強い責任感と粘り強さで乗り切っていました。1人ひとりのサービスに対する熱量や姿勢を改めて再認識しました。とても貴重な機会だったと感じています。
(大平)僕も、関わる全員のモチベーションの高さに驚きました。4月5月で売上が落ちていたからなのか、逆境を糧にゴールに向かって突き進んでいた印象があります。入社間もない時期でしたが、みなさんの底力を見たような気がしました。また個人的には、システムにがっつり関わって理解を深められた機会になってよかったなと思っています。特に予約まわりは触ってみてかなり複雑なことがわかったので、今後の開発に活かしていきたいですね。
(幾見)開発メンバーをはじめ、ディレクター、デザイナー、運営チームも含めて、みんなで開発をしたのは今回が初めてだったので、開発をしたというこの経験そのものがまずよかったと思います。個人的には技術的アプローチを試しましたが課題は残ったので、次に活かしたいです。
(山下)所属や業務が違う人たちと、同じものに向かって同じことを考えて連携して開発できたのは、本当によい機会だったなと思います。また、運営チームの松本くんたちを中心に事務局との綿密なコミュニケーションをしてくれたおかげで、私たちは開発に集中することができました。仕様修正のドキュメントを毎日報告してくれて、「ここが影響あるのでは?」とあたりまで付けてくれて。開発の忙しさから見逃してしまいそうなところまで予想してサポートしてくれたのは、本当にありがたかったし、共助ってこういうことなんだなと思いました。ありがとうございました!
(辻本)僕もみなさんの言ったことがすべてです。今回の開発は規模感的にも、関わる人数としても比較的大きいものとなりました。部署を越えたPJで、滞りなく遂行できたのは、1つ成果だと感じています。また、取り組むにあたっては、個人個人がしっかり責任感をもってやってくれたのはもちろん、キャンプ場さんを継続的に支えるという観点も改めて認識してもらえる場となり、それがみんなの熱量となってよい結果につながったように感じています。
一方で、課題とするならば、当初予定していた汎用的なシステムを実現できなかったこと。今のままでは「GoTo」に偏りすぎているので、仕方ないことではありますが、ちょっと残念ですね。また、提供する上でのユースケースを洗い出しきれなかったことも課題に感じています。仕様が次々と降りてきて日々状況が変わるというこの状況下でできることはやりきったと感じていますが、もっとできたかなと。もっとうまくやれることがあったかなとも思うので、そのあたりは次の開発に活かして改善していきたいです。
-普段とは違った開発で、様々な知見や経験を得られたんですね。今後の『なっぷ』、期待しています!ありがとうございました!
\ 「地図から探す」機能もできたよ! /
※『なっぷ』では、GoToキャンペーンの予約受付を一時的に停止しております。(2020年12月16日現在)