はじめまして。株式会社スーパーソフトウエア ナタデココチームの⼭澤です。普段はプロダクトマネージャーとして⾃社サービスの運営に関わる全般的な業務にはじまり、サービス設計および提供基盤の整備、サーバサイドプログラムの開発を担当しています。今回、⾃社サービスのインフラ構築にカゴヤ・ジャパン様のサービスを活⽤させていただいているご縁があり、寄稿させていただきました。
スーパーソフトウエアは今年、複合商業施設の複数地点において、イベント向けフォトプリントサービスの実証実験をおこないました。実証実験で提供したB2Cのフォトプリントサービスは「natadeCOCO」という弊社が開発したB2Bのプラットフォームサービスを⽤いて実現しました。この記事では、実証実験の実施内容を中⼼に、プラットフォームサービスでコンテナ技術をどのように活⽤しているかをお伝えしたいと思います。
目次
実証実験の実施条件
今回の実証実験では、⼤阪南港ATC施設内の3地点で8⽇間にわたり、各地点を往来した⼀般の⽅々にフォトプリントサービスをご利⽤いただきました。フォトプリントサービスでは「思い出の写真をその場でお持ち帰り」というコンセプトのもと、地点ごとに3種類のデジタルフォトフレームを選べるようにしました。実施場所の調整などにおいては、⼤阪市からの委託でAIDOR共同体が運営する、IoT・ロボットビジネス実証実験プログラム「AIDOR EXPERIMENTATION」の⽀援を受けました。以下が実証実験としてフォトプリントサービスを提供した際の実施条件です。
実施場所と⽇時
地点名 | 提供⽇ | 提供時間 |
---|---|---|
O’s棟北館2階 ITM連絡通路前 | 2021年3⽉19⽇〜3⽉22⽇、 3⽉26⽇〜3⽉29⽇ | 10:30〜16:30 |
ITM棟5階 ATCあそびマーレ | 2021年3⽉19⽇〜3⽉22⽇、 3⽉26⽇〜3⽉29⽇ | 10:30〜16:30 |
ITM棟3階 キッズテックエキスポ会場 | 2021年3⽉27⽇〜3⽉28⽇ | 10:00〜17:00 |
3種類/地点のデジタルフォトフレーム
フォトプリントサービスの利⽤⼿順
プラットフォームサービスとしてのポータビリティ
上記の実施条件に適した形態でフォトプリントサービスを提供するためには、運⽤⾯でのポータビリティの⾼さが重要になります。今回の取り組みを通して、以下の3点が実証できたことにより、イベントのような短期間でも利⽤できるサービスとしてプラットフォームを特徴づけることができました。これらの実現にはコンテナ技術が持つ⾼いポータビリティの恩恵を受けていると考えています。
1. 運⽤スタッフが簡単に設置&撤収できること
フォトプリントサービスを提供する場所は、往来のあるパブリックスペースや有料施設、イベント会場とさまざまです。場所ごとに営業時間が異なり、⽇ごとに設置と撤収を繰り返す運⽤になります。今回の場合、場所ごとに必要な機器としてはホームルーター・フォトプリンター・エッジ版配信ユニット(後述)でしたが、提供開始時間の30分前に設置を始め、提供終了時間30分後に撤収するという運⽤を、地点ごとに1名で⾏えることが実証できました。
2. 来場者がサービス認識後すぐに利⽤できること
各地点では不特定多数の⼀般の⽅がそれぞれの⽬的で往来します。必然的に本来の⽬的と異なる主旨のサービスへの関⼼は低くなるため、⼿間がかかったり時間を拘束することは利⽤にあたっての障壁となります。natadeCOCOではプラットフォームサービスの⼀部として、セキュリティと利便性を担保するためにスマホアプリを提供しています。当初はスマホアプリをインストールすること⾃体が障壁になり得ると考えていましたが、メールアドレス等の⼊⼒を不要とするユーザーアカウント体系やQRコードを介してWi-Fiに⾃動で接続できる仕組みにより、デジタルサービスに不慣れな⽅にも受け⼊れられるものであることが実証できました。
3. 場所ごとに異なるコンテンツを提供できること
飲⾷店ごとにメニューが異なるように、場所の持つ個性や魅⼒は様々です。そのため同じフォトプリントサービスであっても、来場者に場所ごとの個性や魅⼒を伝えるために異なるコンテンツを提供できる必要があります。このコンテンツの差別化が場所に多様性をもたらし、場所の価値を⾼めることにつながると考えています。⼀⽅で、コンテンツの差別化に⾼度な技術を要する場合、それが⽣産性の低下により多様性を⽣み出す障壁となります。natadeCOCOには「開発スキルを要するアプリ」と「差別化要素となるデータ」を分けて扱える仕組みが備わっています。今回の場合、各地点共通で使⽤するフォトプリントアプリと場所ごとのフレームに分けて準備することにより、場所に適した形でサービスを提供できるということが実証できました。
natadeCOCOの仕組み
コンテナ視点でnatadeCOCOの仕組みをご紹介するにあたり、サーバーサイドはすべてコンテナで構成しているという実態があります。⼀⽅で、natadeCOCOにはユーザー⽣成コンテンツ(UGC)の⼀種として「コンテナ化したウェブアプリが使える」という性質があります。今回は主にUGCとしてのコンテナにまつわる仕組みについてお伝えしたいと思います。
natadeCOCOを⼀⾔で表すと「指定したWi-Fiエリアでデジタルコンテンツを配信できるサービス」です。これには2つの側⾯が含まれています。
- UGCの⼀種としてコンテナ化したウェブアプリ(コンテンツアプリ)を動かす環境
- 他の⼈を⾃⾝が管理するWi-Fiを提供範囲とするコンテンツに誘導するツール
UGCを取り扱うことから「コンテンツを配信する⼈(配信ユーザー)」と「コンテンツを利⽤する⼈(⼀般ユーザー)」でサービスの捉え⽅が変わってきます。双⽅にこれまでにない体験を⽣み出せる仕組みであることがプラットフォームサービスとしてのnatadeCOCOの⼤きな特徴です。コンテナ技術がなかった従来においては、ウェブアプリをUGCとしてパッケージングするための汎⽤化された最適な⼿段がなく、実現性に乏しい状況でした。このような背景からnatadeCOCOでは配信ユーザーがコンテンツの表現⽅法の⼀つとしてコンテナ技術を活⽤できるようにしています。
配信ユニットの役割
配信ユーザーがコンテンツアプリを配信する際、コンテンツアプリは配信ユニットという専⽤サーバーに配置されます。この配信ユニットはシングルノードのKubernetesクラスタとして稼働します。配信ユニットにはクラウド版とエッジ版の2つのタイプがあり、ノードが配置されるネットワークに違いがありますが、ソフトウェア的な機能に差異はありません。OSにはk3OSを採⽤していて、配信ユニットの追加/削除やコンテンツの追加/削除といった操作は配信ユーザーが管理コンソール(後述)から⾏います。(2021年6⽉時点ではクラウド版配信ユニットのプレビュープランのみ⼀般公開中です)
配信ユニットの内部では、natadeCOCOのサービスプログラム群が動作していて、インターネット上にあるnatadeCOCOのサービス基盤とメッセージングシステム(NATS)により繋がります。サービス基盤もまたKubernetesクラスタで構成されているため、アプリケーション層でスター型を形成するマルチクラスタ構成がプラットフォームの全体像となっています。配信ユーザーの任意で配信ユニットが増減する動的な構成です。
配信ユニットとWi-Fiの関係
natadeCOCOでのマルチクラスタ構成において、各配信ユニットは必ず1つのWi-Fiに紐づくように構成されます。エッジ版配信ユニットの場合、コンテンツサーバーとしてWi-Fiと同⼀ネットワーク内に配置することになります。通常のコンテンツサーバーを考えた時、既存のネットワーク設定への影響が懸念されますが、配信ユニットはクライアントとしてサービス基盤に接続するため、ルーターのポート開放を必要とせず、DHCPによる動的なIPアドレス割り当てで利⽤することができます。(アウトバウンド通信を制限している場合を除きます)
Wi-Fiエリアでコンテンツの配信エリアを区切るのには、配信ユーザーがnatadeCOCOを利⽤して提供するサービスの物理的な提供エリアをわかりやすくするという⽬的があります。配信エリアを区切ってしまうことは⼀⾒不便に思えるかもしれませんが、物理的な境界との整合が必要なサービスにおいて有利に働きます。例えば、沖縄のホテルでビーチにいるホテル利⽤者が注⽂したドリンクを提供するというサービスを考えた場合、北海道など地理的に離れていて届けようのない注⽂を受けるわけにはいきません。利⽤者の現在地などに応じてサービスの利⽤制限をかけることを考えた時、Wi-Fiエリアであればサービス提供者がある程度柔軟に調整することができるのです。
これらを踏まえて、無料/有料にかかわらずWi-Fiサービスには提供主体が存在することから、Wi-Fiエリアと配信ユーザーの事業ドメインもほとんどのケースで⼀致することが⾒込まれます。そのため、配信ユーザーが具体的な活⽤を検討する際には「Wi-Fiが届く範囲」という物理的なキャパシティに⽬処がたち、配信ユニットやWi-Fiアクセスポイントのサイジングが⾏いやすくなるというメリットもあります。
配信ユーザー向けの管理コンソール
ユーザーがコンテナを扱うとなると敷居が⾼くなるように思いますが、natadeCOCOの管理コンソールは店舗スタッフや事務スタッフなど⾮エンジニアの⽅でも操作できるようにデザインされているため簡単に使い始めることができます。これは「どんな環境でも同じく動くようにアプリをパッケージングできる」というコンテナ技術におけるポータビリティ⾯での特徴を⽣かしています。
配信ユーザーのコンテンツアプリは配信ユニットのKubernetesに配置することになりますが、必要な⼿続きをプラットフォームレベルでカプセル化しているため、配信ユーザーが配信ユニットにSSHで接続したり、Kubernetesを直接操作することはありません。思い⽴った時にすぐにご利⽤いただけるように、スマホのウェブブラウザからでもスムーズに管理コンソールを操作することができます。⾃前のコンテナをパブリックレジストリから配信ユニットに展開する場合、⼊⼒が必要な情報はコンテナイメージとコンテナ側ポート番号の⼆つです。コンテンツアプリごとにCI/CDパイプラインからコンテナイメージを更新するためのウェブフックもご利⽤いただけます。
管理コンソールには他にも便利な機能が盛り沢⼭です。無料プランですべての機能がご利⽤いただけますので、是⾮ご活⽤ください。
- 選ぶだけでアプリがすぐに使えるカタログ機能
- スポットやコンテンツをスマホアプリに掲載できるアピール機能
- コンテンツごとの利⽤度合いがわかるアクセスカウンター機能
- 柔軟にデータを残せるデータストア機能
- GitOpsで配信ユニットを機能拡張できるエクステンション機能
- 配信ユニットの状態がわかるメトリクス機能
配信ユニットのデータストア
ウェブアプリをコンテナ化する際、コンテナのスケーラビリティの維持やコンテナを削除したらデータが残らないという特性を⾒越してSPA(Single Page Application)+WebAPI+DBのように役割を分けて構成することが⼀般的になってきています。natadeCOCOではWebAPI+DBの役割を持つデータストアとしてDirectusを採⽤しています。データストアは配信ユニットの追加時に配信ユニット内部に構築され、配信ユニットを破棄するまでデータを残しておくことができます。また、WebUIが備わっているのでコンテンツアプリに必要な構造化されたデータをウェブブラウザ上で構築していくことができます。
⼀般ユーザー向けのスマホアプリ
配信ユーザーが配信ユニットにコンテンツアプリを追加すると、アクセスするためのQRコードが発⾏されます。配信ユーザーがQRコードをWi-Fiエリア内に掲⽰しておくと、エリア内の⼀般ユーザーがnatadeCOCOのスマホアプリで読み取ることで、Wi-Fiに接続し、アプリ内のWebViewでコンテンツアプリが表⽰されます。
このアクセス⽤のQRコードは、スマホアプリがインストールされていない場合、インストールを促すための導線も兼ねています。そのためスマホアプリインストール⽤とコンテンツアプリアクセス⽤などQRコードを分けて⼀般ユーザーに掲⽰する必要はありません。
最も簡単なコンテンツアプリはindex.htmlとDockerfileの2ファイルで作成することができますが、リッチなアプリに仕⽴てていく際にはTypeScript、React、Gatsby、Feathers、Bulmaといったライブラリやフレームワークの利⽤をおすすめしています。また、natadeCOCOの仕組みを活⽤するための各種SDKやカタログに掲載しているアプリのソースコードをリポジトリで公開していますので、アプリを作成する際には是⾮ともご活⽤ください。
実証実験での運⽤構成
改めて実証実験の実施条件とnatadeCOCOの仕組みとを照らし合わせると図のような構成になります。ポータブルなフォトプリントサービスを実現するために付け加えたものは、フォトプリンター・フォトプリントアプリ・印刷ジョブ中継アプリ・フォトフレームの4項⽬です。今回のようなサービスを何も無い状態から構築するのと⽐べ、natadeCOCOの仕組みにより検討すべき内容が局所化されていることがわかると思います。以下はフォトプリントサービスの実現に向けてソフトウェア⾯で意識したことです。
- フォトプリンターはWi-Fiに接続可能でIPPに対応しているものを選定する
- フォトプリンターをプログラムから制御するためにエッジ版配信ユニットを利⽤する
- フォトフレームの合成や印刷を受け付けるためにコンテンツアプリとしてフォトプリントアプリを作る
- フォトプリンターに印刷ジョブを送るための常駐アプリとして印刷ジョブ中継アプリを作る
- フォトプリントアプリと印刷ジョブ中継アプリはデータストアを介して印刷の状態を管理する
- 印刷完了時はデータストアのウェブフック機能を使ってフォトプリントアプリからプッシュ通知を送る
ハードウェア構成
フォトプリントサービスの運⽤に使⽤するハードウェアとしては、ホームルーター・フォトプリンター・エッジ版配信ユニットの3点です。ホームルーターはサービスを提供する場所で既設のWi-Fiが利⽤できる場合は不要です。ただし、今回の構成では、エッジ版配信ユニットがWi-Fiと同⼀LANに有線で接続できること、および2.4GHz帯の通信規格(IEEE 802.11g)に対応しているWi-Fiであることが必要でした。これは利⽤したフォトプリンターが5GHz帯の通信規格(IEEE 802.11a)に対応していなかったためです。電波範囲などの関係でどうしても既設のWi-Fiを利⽤する必要がある場合は、フォトプリンター⽤に別途IEEE 802.11g対応のWi-Fiルーターを⽤意し、ブリッジモードで拡張することで対応することができます。
まとめ
ここまで複合商業施設でのnatadeCOCO実証事例をもとに、natadeCOCOではコンテンツの表現⽅法の⼀つとしてコンテナ技術を活⽤していることをお伝えしました。今回の内容を振り返ってみると、コンテナのポータビリティは最終的に実際のサービスのポータビリティにまで影響しているように思います。これによりコンテナ技術を活⽤することでポータブルなフォトプリントサービスを⽣み出すことができたと⾔えるのではないでしょうか。コンテナ技術にはポータビリティの⾼さ以外にもさまざまなメリットがあると⾔われています。それらを⽣かすことは新しいサービスの創出に繋がると思いますので、皆様も是⾮チャレンジしてみてください。
最後になりますが、natadeCOCOでは「特別な場所をもーっと特別に」というコンセプトのもと、デジタルサービスで場所の価値を⾼めることを⽬標としています。「ココにこんなサービスがほしい!」や「ココを⼀緒に盛り上げたい!」とお考えの皆様は是⾮⼀緒にコンテナの発展と共に盛り上げていきましょう!natadeCOCOは発展途上にありますが、ご賛同いただける企業様向けに配信ユニットの販売やOEMに関するパートナー制度もご⽤意しています。まずはお気軽にご相談ください!
導入事例|コンテンツ配信サービスにRancher構築済みのコンテナサービスを活用
「natadeCOCO」のシステム基盤には、「cloud tap コンテナサービス」を採用しています。
導入の選定理由などお話しを伺っていますので、コンテナの利用をご検討の方は是非ご参考ください。
コンテナ管理をこれから始めたいお客様に最適な、RancherでKubernetesを簡単に管理できるコンテナサービスと、サーバースペック 95パターン+ディスク容量 10パターンから選択できるクラウドサーバーを提供する国産クラウドプラットフォームです。