オープンソースのバーチャルオフィスをGCPで構築してみた
1. はじめに
この記事では、オープンソースのバーチャルオフィスアプリ「SkyOffice」( https://github.com/kevinshen56714/SkyOffice )を使用して、Google Cloud Platform(GCP)上でバーチャルオフィスを構築するプロセスについて紹介します。
SkyOfficeは、多機能なバーチャルオフィスツールとは異なりますが、交流のための必要最低限の機能を提供しています。
筆者自身も、バーチャルオフィスについては以前にGatherを一度だけ弊社内メンバーと体験した経験があります。
2. きっかけ
弊社内でGatherを使用したバーチャルオフィス体験を通じて、多機能でなくても、クラウド環境で利用可能なオープンソースのバーチャルオフィスアプリを探していました。
3. 苦労したこと
バーチャルオフィスの実装にあたり、いくつかの課題がありました。
- クラウドサービスの選定: サーバレス環境でのバックエンド実装を検討しましたが、実現が難しいと判断しました。
-
クライアントとバックエンドの分離: クライアント側とバックエンド側を分離する実装方法が不明で、1週間以上にわたって悩むこととなりました。
特に公式ドキュメントに記載されたGetting Startedとの違いに苦労しました。
4. 実現までに実施したこと
-
ローカル実装: 初めに、Dockerを使用してローカル環境で実装を試みました。以下は使用した
docker-compose.yml
です。
version: "3.7"
services:
server:
image: node:18
container_name: skyoffice-server
hostname: web-server
working_dir: /usr/src/app/SkyOffice
tty: true
ports:
- "127.0.0.1:2567:2567"
volumes:
- ./SkyOffice:/usr/src/app/SkyOffice
command:
bash -c "yarn && yarn start"
client:
image: node:18
container_name: skyoffice-client
hostname: client-server
working_dir: /usr/src/app/SkyOffice/client
tty: true
ports:
- "127.0.0.1:80:5173"
volumes:
- ./SkyOffice:/usr/src/app/SkyOffice
command:
bash -c "yarn && yarn dev --host"
-
GCP上での実装: バックエンドはサーバレス環境で実装したかったです。
以下のクラウドサービスを実現したい順に候補として検討しました。- Cloud Functions for Firebase
- Cloud Functions
- Google App Engine
- Google Compute Engine
フロントエンドはFirebase Hostingを使用するため、Cloud Functions for Firebaseの活用を考えました。
しかし、Cloud Functions for FirebaseやCloud FunctionsはEntryPointの設定方法がわからないなどの理由から断念。
Google App Engineについては、なぜ断念したかすら記憶にないほど。。。
この辺で私の以下の課題を見つける事となりました。
・サーバサイドのnode.jsを構築するにあたって知識の浅さ
・サーバレス環境側としてGCPの理解不足
5. 結果
バックエンドはGoogle Compute Engineを使用し、フロントエンドはFirebase Hostingで実現しました。
6. 今後の展望
バーチャルオフィスの構築は成功しましたが、GCPの知識不足が浮き彫りになったので学習をまじめに進めていきます。
また、現状立てた環境はほぼ自分だけでの検証なので複数人での利用でどうなるか?を検証していきたいです。