リモートチームで開発をするときに便利なサービスと運用方法まとめ
はじめに
こんにちは。Suzuhikiです。
ここ1年近く、学生中心のチームで「Trace of Gladius」というゲームを開発してきました。メンバー全員がフルリモートで開発に参加しており、チーム開発環境の構築に苦労しましたが、なんとか回るようになってきたので、一年の総括としてまとめたいと思います。
ゲーム開発にとどまらず、簡易なチーム開発にも応用できると思いますので、適宜読み替えて活用いただけると嬉しいです。
なおここでの開発環境とは、チームのコミュニケーションや開発管理、スケジュール管理などを支援するサービス群を指します。
紹介するサービスは以下の方針に沿って選ばれているということをご了承ください。
先に紹介するサービスを列挙しておきます。
- Discord
- 並列コミュニケーション(テキストチャット・ボイスチャット)
- Scrapbox
- ドキュメント管理(お手軽メモ・同時編集・ページリンク)
- Notion
- ドキュメント管理(情報共有)
- Github
- コードとファイル管理(エンジニア)
- GoogleDrive/GoogleCalendar
- ファイルとスケジュール管理(全体)
- ゲームクリエイターズCAMP
- 広報(メンバー募集・ポートフォリオ)
個人的に、複数のサービスを利用してチーム運営をするときは、できるだけメインのチャットサービスに更新通知を集中させたいと考えています。
全てのアプリの通知を個人で設定すると、所属する他のチームの通知と重なって見逃すことが多かったからです。
メインチャットサービスを開くだけで全ての更新通知を確認できるのはとても便利です。
メインチャットサービスとして紹介するDiscordに対して他のサービスから通知を送信する方法も合わせてご紹介します。
Discord
Discordは、テキストチャットが可能なテキストチャンネルや、ボイスチャットと画面共有が可能なボイスチャンネルを、それぞれ複数作成できるコミュニケーションサービスです。
以下のような特徴を持ちます。
Discord
+ ボイスチャンネルが明示的にあり、参加しやすい
+ 無料のプランでもチャット履歴が無制限に残る
+ ゲーム用途で開発されているので緩く使える
+ 細かい権限設定が可能
+ 絵文字で反応できる
+ Botを手軽に作れる
チャンネルを複数作成できるという特徴はSlackに似ています。どちらも便利なサービスですが、無料でチャット履歴を残し続けられる点と、ボイスチャットチャンネルが使いやすく気軽に同期コミュニケーションを取れる点からDiscordをメインに使っています。
運用するに当たって、大きく7つのカテゴリ分けでチャンネルを整備しています。
テキストチャンネルは📝、ボイスチャンネルは📢で表します。
メイン
チーム全体に関わる連絡を行うチャンネルを配置するカテゴリです。
- readme 📝
// 新しく参加したメンバーなどに最初に読んでもらうチャンネル
- general 📝
// チーム全体への通知
- event 📝
// 展示会などチーム全体で取り組むイベント用
- 自己紹介 📝
// 簡単に自己紹介を書くチャンネル 後述するNotionやScrapboxを利用した方がいいかも
開発分野別
開発分野ごとに話すためのチャンネルを配置するカテゴリです。ゲーム開発を例として記載しますので、開発内容によって読み替えてください。
- ゲームデザイン 📝
- モデリング 📝
- イラスト 📝
- エフェクト 📝
- サウンド 📝
- 広報 📝
会議室
定例会議やまじめな話をするチャンネルを配置するカテゴリです。
- 会議室用 📝
// 会議中のメモとして利用 定期的な会議ならここに会議開始の通知を飛ばすとよいかも
- 会議室 📢
作業雑談
作業しながら話したりする時に使うチャンネルを配置するカテゴリです。ゲーム用のチャンネルをおくと交流のきっかけになるかもしれません。
- 作業部屋用 📝
- 作業部屋 📢
- ゲーム部屋用 📝
- ゲーム部屋 📢
Times
Timesのチャンネルを配置するカテゴリです。Timesとはチーム内向けのTwitterのようなもので、作業進捗や困っていること、趣味の話などを適当に垂れ流してOKなチャンネルです。
- Suzuhiki-memo 📝
以下チームメンバー全員分のチャンネルを用意
つぶやき雑談
Timesよりはみんなに聞いてほしい内容を雑に投稿するチャンネルを配置するカテゴリです。
複数チャンネル用意しておくと、会話をさえぎる心配がなくなります。
- つぶやき雑談1 📝
- つぶやき雑談2 📝
Notice
他サービスからの通知などを行うチャンネルを配置するカテゴリです。
- event-notice 📝
- notion-notice 📝
- twitter-notice 📝
...
Webhook
Discordのチャンネルに他サービスからの通知を投稿する際にはWebhookを利用します。
具体的な利用方法はサービス別の項目で紹介しますが、共通事項としてWebhookURLの発行方法だけまとめておきます。
- Discordのチャンネル一覧から、通知したいDiscordチャンネルの⚙マーク(チャンネルの編集)をクリックします。
- 連携サービス > ウェブフックの順に選択し、「新しいウェブフック」ボタンを押します。
- お好みで作成されたウェブフックにアイコンや名前を付けます。
- 「ウェブフックURLのコピー」を押してURLをメモ帳に張り付けておきます。
Scrapbox
Scrapboxは手軽にドキュメントを作成できるサービスです。
以下のような特徴を持ちます
Scrapbox
+ 基本的に箇条書きで記入するのでまとめるのが簡単
+ サークルなどでは無料で利用できる
+ 簡単にDiscordへの通知が作成できる
+ ページ同士の階層構造がなく、並列構造なのでページを作る場所を悩む必要がない
+ [ページ名.icon]と記入するとそのページの画像を配置できる
- ある内容がどのページに書かれているかチームメンバーが探すのが困難
Scrapboxは時間をかけずにメモできるハードルの低さが特徴です。
ドキュメント化のめんどくささを抑え、考えながらメモする感覚で資料を残せるのでとても便利です。
今回の記事もScrapboxにメモしてから記事にしています。
画像で青くなっている文字は他のScrapboxページへのリンクです。
このリンクをうまく活用することでほかのページとの関連を持たせることができます。
ハッシュタグを使うことでもページをリンクさせることができます。
Scrapboxの欠点として、階層化されて保存されているドキュメントと比べて、目的のドキュメントを探すのが困難である点があります。
特にチームメンバーがそれぞれの考えでリンクを貼っていくと、本人に聞かないと目的のページにたどり着くのは難しいです。
この辺りはリンクの貼り方を統一するか、メンバーがScrapboxに慣れてくると改善するのかもしれません。
重要な内容は階層構造でドキュメントを管理できるNotionにまとめるという方法でも解決できそうです。
Discordに通知を飛ばす
ScrapboxからDiscordに通知を飛ばしましょう。
DiscordWebhookURLを取得しておく必要があります。
- 対象のScrapboxプロジェクトを開く
- 左上のScrapboxロゴをクリックする
- Project settingを開く
- Notificationsを開く
- 「Add slack notification」ボタンを押す
- DiscordWebhookURLを貼り付け、末尾に
/slack
を追加する - 「Add」ボタンを押す
これで90秒ごとに編集内容が通知されます。
iconを利用する
Scrapboxでは、[リンク先のページ名]
と記入することで、Scrapboxのページへのリンクを貼ることができます。
このとき、末尾に.icon
を追加するとそのページにはられている画像の小さいアイコンを表示可能です。
また、[自分のユーザー名.icon]
はctrl + i
のショートカットで配置可能です。
上の画像のTodoアイコンのような運用も可能です。
Notion
Notionは階層構造でしっかりドキュメントをまとめられるサービスです。
文字の装飾からデータベースまでさまざまなブロックを作ってまとめていくことができます。
以下のような特徴を持ちます
Notion
+ 階層構造で管理するため目的のドキュメントへのアクセスが容易
+ リッチな表現を利用できるため綺麗にまとめられる
+ データベースを利用してTodoリストなどを作成できる
+ ページリンク機能がある
- Discordへの通知が困難
Notionは使い始めたばかりなので手探りの状態ですが、階層構造に綺麗にまとめられる点は魅力です。
他の人に読んでもらう企画書などはNotionにまとめた方が読みやすく、アクセスしやすいかもしれません。
便利な機能としてページリンク機能があります。
リンクについては公式の解説が分かりやすいです。
Discordに通知を飛ばす
Notionの更新通知をDiscordに飛ばすには少々まわりくどい方法を取る必要があると思います。
私の場合は以下のページにまとめたような方法で解決しました。
Github
GitHubはバージョン管理やタスク管理を行うことができるサービスです。
リモート開発をするなら必須級のサービスだと思います。
プロジェクトのバージョン管理ができる他、うまく使えば複数人で並行して開発をすることも可能です。
IssueとProjectの機能を使えばタスク管理もできます。
ただ、エンジニア以外でGithubの扱いに慣れている人は少ないので、利用するかチームメンバーで判断する必要があります。
私たちはエンジニアのタスク管理だけGithubで行い、全体ではScrapboxを使ったタスク管理を選択しました。
GitやGithubの詳しい使い方は長くなるのでここでは割愛します。
Discordに通知を飛ばす
GithubからDiscordに通知を飛ばしましょう。
DiscordWebhookURLを取得しておく必要があります。
- 対象のリポジトリを開く
- タブの一番右にある「Settings」を開く
- Webhooksを開く
- 「Add webhook」を押す
- 「Payload URL」にDiscordWebhookURLを貼り付け、末尾に
/github
を追加する - 「Content type」に「application/json」を選択する
- 「Which events would you like to trigger this webhook?」から通知したいイベントを選択する
- 「Active」にチェックを入れて「Add webhook」ボタンを押す
これで対応したイベントのタイミングで通知されます。
Git LFS
Gitで3Dモデルデータなど大きなファイルを扱う際にはGitLFS(Git Large File Strage)というサービスを使うことになります。
特にゲーム開発では大きなファイルを扱うことが多いのでお世話になると思います。
Githubでは無料で1GB分のLFSストレージを利用することができますが、UnityでAssetを使いながら3Dゲームを開発すると1GBの容量を使い切ってしまいます。
私はおとなしく1月5$を支払って容量を確保しています。
GoogleDrive/GoogleCalendar
先ほど紹介したGitLFSは課金対象のためあまり積極的に使いたくありません。
そこで、ゲームに組み込むまでは、モデルの編集データやイラストなどはGoogleDriveで管理しておきます。
また日程などはGoogleCalendarで管理すると便利です。
まだうまく活用できていませんが、IFTTTを使って定例会議の日程を通知するようにしています。
これもGASに置き換えると応用が効きそうですね。
Discordに通知を飛ばす
GoogleCalendarの通知はIFTTTでも十分ですが、GoogleDriveの更新通知は少しめんどくさいです。
指定のルートディレクトリの下に新しくファイルが作られたときに通知する方法を記事にしたので貼っておきます。
ゲームクリエイターズCAMP
最後に広報枠としてゲームクリエイターズCAMPを紹介しておきます。
リモートでチームメンバーを集めるにあたりお世話になりました。
ゲームクリエイターズCAMPでは作品のポートフォリオページを作れるほか、メンバー募集も可能です。
ポートフォリオページにはTwitterやYoutubeの動画も埋め込めるのでとても便利です。
例として私たちが開発しているゲームのポートフォリオページを貼っておきます。
独自のページを整備する労力を肩代わりしてくれるのでとてもありがたいです。
Twitterの通知をDiscordに飛ばす
広報に関連してTwitterの通知についても書いておきます。
公式Twitterの投稿はみんなが観れるようにDiscordに通知しています。
これもIFTTTを使っています。
おわりに
いくつかサービスを紹介しましたが、他にも便利なサービスはたくさんあると思います。
それぞれのチームで使いやすい組み合わせを見つけて行きたいですね。
おすすめのサービスがあれば教えていただけると喜びます。
それではよいお年を!
Discussion