モビリティのテストコース「Woven City」に携わるエンジニアが語る開発の舞台裏──Woven City Tech Meetup "Cloud"

モビリティのテストコース「Woven City」に携わるエンジニアが語る開発の舞台裏──Woven City Tech Meetup "Cloud"
トヨタ自動車がCES 2020で発表した実証都市「Woven City(ウーブン・シティ)」。暮らしの中のあらゆるモノやサービスが情報でつながる”テストコース”だ。開所は2024年から2025年が予定され、静岡県裾野市で今まさに建設が進められている。その開発の中核を担うトヨタ子会社のウーブン・プラネット・ホールディングス(以下、「ウーブン・プラネット」)が、テックミートアップ「Woven City Tech Meetup "Cloud"」を開催。その様子をレポートする。

人を"Move"(感動)させる街「Woven City」

今回のテーマ「クラウド開発」の登壇に入る前に、ウーブン・プラネットでバックエンドサービスエンジニアを務めるHunter Chen(ハンター・チェン)氏からWoven Cityの概要が説明された。

街に住む人だけでなく、世界中の人の役に立つ製品を開発することで「幸せの量産」を目指す未来都市。生活のあらゆる分野を支える技術やサービスを実証し、都市の中に未来の当たり前を発明していくと話す。Chen氏が強調した言葉のひとつが「モビリティ」だ。

「モビリティは、"Move"(動く)という言葉にフォーカスしています。”Move”と聞くと物理的に動くことを連想しますが、Moveは人の気持ちにも当てはまるものだと考えています。街を見たとき、街に足を踏み入れたとき、街を歩いたとき、感動を感じてほしい。」(Chen氏)


第1フェーズでは、敷地面積約5万㎡の街に360名ほどの居住者が住む予定だ。将来的には2,000名まで増えることが見込まれる。居住者は、インベンター(起業家や研究者)や子育て世帯、シニア、など多様性を重視した構成だ。

これらの居住者を対象に、モビリティ(自動運転)、エネルギー(カーボン・ニュートラル)、物流(ロボティクス)、食や農業といった12領域の技術やサービスを実証し、Woven Cityのライフスタイルを実現していく。


既成概念にとらわれないシステムアーキテクチャ設計

続いてウーブン・プラネットのStephen Shum(スティーブン・シュム)氏が登場。「既成概念にとらわれないシステムアーキテクチャ設計」をテーマに登壇した。

Shum氏は、ライフスタイル・サービス・プロダクト・チームで技術リーダーを務める。20年ほど前にJavaエンジニアとしてキャリアをスタートし、オーストラリアや香港などを舞台にグローバルに働いてきた。現在は、システム設計アーキテクチャに注力している。


金曜の夕方だということで、Shum氏は会場にウォームアップの問題を投げかけた。プロブレム・ステートメント(問題文)は、「街中のデバイスが互いに話し合うようなシステムをつくりたい」だ。これには公共と家庭のデバイスが含まれ、IT戦略は「クラウドファースト」だという。

Q. この場合、どこにシステムをホスティングするべきか。
 a. パブリッククラウドプロバイダー
 b. ローカルデータセンター
 c. パブリッククラウドとローカルデータセンターのハイブリッド


会場の答えはaとbに分かれたが、Shum氏は、Woven Cityでは第3の選択肢、cのパブリッククラウドとローカルデータセンターのハイブリッドという選択がとりうることを示した。戦略通りにただクラウドに乗せるのではなく、非機能要件、アプリケーションのレイテンシー、高可用性、災害復旧などを考慮した上で判断すべきだと説いた。

Shum氏は、Woven Cityのアーキテクチャ設計における具体的な課題を並べた。「どうすれば適切な情報を、適切な人に、適切なタイミングで共有できるか」、「ユーザーのプライバシーとデータ利用のバランスをどう取るのか」、「多くの人が多くのアプリケーションを使う状況で認証と認可をどう行うのか」などだ。

まだ見たことのない Woven Cityでは、日々新たな課題やチャレンジが訪れる。既成概念にとらわれていては、自ら制限をかけてしまう。未来を見据えて、新しい要件に対応する柔軟性、膨大なトラフィックを処理するためのスケーラビリティ、他の場所にもサービスを展開できる柔軟性などを持たせていくと話した。

「クラウドソリューションは決して万能薬ではありません。機能要件と非機能要件を満たすのは当たり前ですが、何よりビジネス目標を達成することです。また、何事にも制約や限界があります。フリーランチ(タダ飯)は存在せず、すべてのものにはトレードオフがある。特に時間とコストのトレードオフを理解した上で進めましょう」(Shum氏)

システムアーキテクチャ設計にまつわる質疑応答

ここから、Chen氏が進行役を務める形でShum氏への質疑応答が行われた。主なポイントをまとめる形で紹介する。

「考慮しなくてはならない項目がたくさんある中、どう優先順位をつけているのか」という質問への答えはシンプルだ。「最優先すべきは、ビジネスゴールです」とShum氏。技術的な問題、機能要件と非機能要件などを検討するが、そもそも、ビジネス上の課題を解決するためにシステムを構築していることを忘れてはいけないと念を押した。

「システムの安全性や信頼性がシステムアーキテクチャにどうかかわってくるか」については、マイクロサービスを使用してシステムをできる限り分離していると回答。関連システムが常に100%稼働しているとは限らず、システムの共倒れを防ぐためだ。

最後の「アーキテクチャー設計でやってしまいがちな失敗は?」という質問には、レイテンシーや実行時間のような非機能要件の考慮不足を挙げた。機能要件と非機能要件をどちらも検討し、アジャイル開発で小さくPoC(概念実証)を回すことで、出来上がったシステムが遅すぎるといったトラブルを回避できる。結果、時間とコストの節約にもつながると説明した。

これを司会進行役のChen氏が補足し、


「アーキテクチャは複雑にしすぎてはいけません。初期に柔軟な設計にし、それをベースに構築していくことが大切です」と過去の経験をもとに振り返った。

変化に対応できる柔軟な決済システムを

次に、Chen氏からミートアップ2人目の登壇者が紹介された。ウーブンプラネットのペイメントソリューションチームで、街の決済システムの開発に取り組む小野理絵氏だ。「Woven Cityの決済インフラ - サーバーサイドKotlinを用いた決済システムのシステムアーキテクチャ」について語った。


2021年12月にPayment Teamに加入した小野氏は、主に日本のWeb検索やEコマース会社などで働いてきた。バックエンドサービスのテックリード、フロントエンド/バックエンドエンジニア、ネイティブアプリケーションのプロダクトマネージャーなどの経験がある。

「決済システムの提供を通じて街の価値を高める」をミッションに掲げるペイメントソリューションチーム。経済活動は街の根幹を成すため、使い勝手がよく、安全かつ持続可能なインフラが求められる。また買い手と売り手だけでなく、街に役立つサービスを開発するインベンター(科学者や研究者、スタートアップ、芸術家などを想定)をつなぐインタフェースも必要だ。

可用性の高いシステムをつくるため、Woven Cityの決済システムは、マイクロサービスのアーキテクチャを採用している。個別に開発された小さなサービスを組み合わせることで、システム障害などによる共倒れを防ぎ、スケーラブルな未来に対応することが可能になる。

「Woven Cityはまだ市場に出ていませんから、ビジネスやシステムの要件は今後大きく変化していくことが見込まれます。マイクロサービスアーキテクチャを採用することで、変化に柔軟に対応できるシステムにしていきます」(小野氏)


挑戦する街では使う言語にも挑戦

マイクロサービスやデータモデルの設計には、EventStormingを活用している。業務フローを明確にすることで、経験値にかかわらず、誰もが業務フローを理解しやすくなったと話す。また、複数の参加者と一度に知識を共有できるメリットもある。その一方で時間がかかり、リモートではなく対面のほうが使いやすいと感想を述べた。

ペイメントソリューションチームの技術スタックには、KotlinやKtorなどが並ぶ。チーム全員がJavaコーディングの経験者であるため、Kotlinは挑戦的な選択肢だったという。


そのほか、パッケージ管理にはGradle、ユニットテストとカバレッジの測定にはJUnit5とJaCoCo、データオブジェクトの作成にはOpenAPIジェネレータを使用している。

「Woven Cityは新たなことに取り組む挑戦の街なので、使用する技術についてもチャレンジすることにしました」(小野氏)

次に、Kotlinで開発するメリット・デメリットが共有された。ペイメント・ソリューションチームのメンバーは殆どがJavaの開発経験者で、Kotlinを使った開発にはそれを活かせる点がメリットである。 また、開発にはIntellijを使い、アプリケーションフレームワークにはKtorを利用することなど、Kotlin開発と親和性の高い開発環境を実現できている。

今後は、Kubernetes上でのアプリケーション動作など、技術面での挑戦を続けていく予定だ。


決済システムにまつわる質疑応答

小野氏の登壇が終わると再びChen氏が登場し、Woven Cityの決済システムに関して会場から質問を受け付けた。

オンライン参加のオーディエンスからは、決済システムの海外対応について複数の質問が寄せられた。Felicaのような日本独自のハードウェアに依存するのか、それとも海外のスマートフォンにも対応するのか。また、決済はグローバルな利用を想定して設計されているかなどだ。

Woven Cityでは、QRコードやFelica、NFCなどさまざまな技術にオープンで、デバイス制限のない柔軟な決済システムを目指している。グローバル利用も想定しているものの、まずは日本での導入が先決だ。

既存の決済システムを使わずに独自開発する理由については、Woven Cityで行われる各サービスの実証に際し、決済に関わる機能の提供やそのデータの適切な管理を行うためと説明。ちなみに、居住者だけでなくビジター(訪問者)も専用アカウントを作成することで決済システムを利用できるようになる予定。


JavaからKotlinへの移行時に苦労した点について聞かれると、小野氏はサーバーサイドのKotlinを学ぶための資料が少ないことを挙げた。CI/CDパイプラインとビルドの開発やツーリングに携わるChen氏は、ツール周りの違いとビルドの同期の難しさを指摘した。

「JavaやKotlinなどのJVMエコシステムではMavenやGradleなどを利用して依存関係を自動的に解決します。それは便利ではありますが、一方で裏側で自動的に行われていることをコントロールすることは難しく、どのように管理がされているのかには注意を払う必要があるでしょう」(Chen氏)

ペイメントソリューションチームはバックエンドにKotlinを使用しているが、Woven Cityでは各チームがそれぞれ得意または慣れ親しんだ言語を活用している。社内で人気の言語はGolang、Java、Kotlinで、一部NodeとRustも使われているという。

ウーブン・プラネットが100以上のポジションで人材募集

ミートアップの最後には、司会進行役のChen氏からウーブン・プラネットの採用情報が共有された。現在、100以上のポジション、そのうち、40%以上を占めるエンジニア職種のポジションを募集中だ。

Stephen Shum氏率いるライフスタイル・サービス・プロダクトチームでは、フロントエンドエンジニア、機械学習エンジニア、データエンジニア、機械学習パイプラインエンジニア、バックエンドエンジニア、テスト/オートメーションエンジニアなど、ほぼすべての職種を募集している。

ペイメントソリューションチームは、決済サービスのバックエンド、ソフトウェアエンジニアを探している。また、同社では初めてインターンシップを実施する予定もあるという。

Woven Cityも含むウーブン・プラネットの採用情報はこちらに掲載されている。
※Woven Cityについての詳細はこちら

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす