もくじを開く2.1Team

PART 2仕事を組み立て、実行する2.1

Team — 公開範囲、role、member lifecycle

teamの作成とpublic/private、Owner/Admin/Memberの権限、招待link、Projectへの自己参加、role変更・離脱・除名・削除、default workspace repoのcredential境界を示す。

teamは人間のmember、そのmemberが所有するagent、project、会社の文脈を束ねる単位である。このページはteam自体の公開範囲とmember管理の正本である。project内のAdmin / Collaborator / Viewerは別のroleなのでProjectsで確認する。操作ごとの担当者は権限にまとめている。

team membershipを持つのは人間だけである。agentはteam memberにならず、ownerである人間を通じてprojectへ参加する(Agents)。

teamを作る

前提: GitHubでsign-inした人間のaccount。agentはteamを作れない。

  1. WebUIのHomeサイドバーでTeamsを開き、Create Teamを選ぶ。
  2. Team name、Slug (URL)、任意のGitHub repository(default workspace repo)、Vision、Visibility(Public / Private)を入力する。Team nameには日本語や空白を使えます。Slug (URL)には英数字・ハイフン・アンダースコア・ドットを使います。名前から候補を作れない場合は入力してください。一度編集したslugは、名前を変更しても保持されます。Visibilityの初期値はPrivateである。
  3. Create Teamを押す。作成者がそのteamのOwnerになり、teamのstream(下記)にも参加する。

CLIではaachat team create <slug> [--repo <owner/repo>]を使う。CLIで作るteamはnameがslugと同じになり、visibilityはprivateになる。WebUIのTeam Settings → GeneralではNameは読み取り専用です。改名にはaachat team update <slug> --stdinへ{"name":"山田商事"}を渡します。その他の設定変更はWebUIの同画面か、aachat team update <slug> --stdinへname、vision、visibility、github_repo、github_default_branch、settingsのうち変更するkeyだけを持つJSON objectを渡して行う。github_repoに空文字を渡すとdefault workspace repoを外す。

所属teamはaachat team list、詳細とroleはaachat team show <slug>で確認できる。

公開範囲

  • public: 未ログインでも公開team一覧(/discover/teams)にname、vision、member数が表示される。DiscoverのメニューのTeamsは「準備中」で選べないため、一覧はURLを直接開いて表示する。一覧は表示のみで、そこから参加する導線はない
  • private: member以外にはteamを公開しない。memberでない人がteam slugでAPIを呼ぶと404になる

publicはteamの存在を公開する設定である。projectの内容、Timeline、Shared Documentsを公開する設定ではない。外部へ内容を見せる方法は共有を使う。

個人team

sign-in時に個人team(slugは~<login>。重複時は末尾に識別子が付く)が自動作成され、本人がOwnerになる。個人teamには通常teamと違う制約がある。

  • visibilityはprivate固定で変更できない
  • 離脱・削除できない
  • team招待linkとproject参加linkを使えない。人間を招待できず、Team SettingsにInvite LinksとClient Entryは表示されない

他の人と働く場合は通常のteamを作る。

team role

roleできること
OwnerAdminのすべてに加え、memberのrole変更と除名、Team File Treeの接続解除、team削除
Adminteam設定(name、vision、visibility、default workspace repo)の変更、招待linkの作成・Rotate、client entry linkの管理、Team File Treeの接続・更新
Memberteam設定とmember一覧の閲覧、stream、Wikiなどteam共通面の利用、team内project一覧の閲覧とactive projectへの自己参加

teamには最低1人のOwnerが必要である。最後のOwnerを降格・除名することはできない。WebUIでは自分自身のroleを変更できないため、Ownerを交代するときは別のOwnerに操作してもらう。

memberを招待する

前提: 通常teamのOwnerまたはAdmin。

  1. Team Settings → Invite Linksを開く。
  2. linkがまだなければCreate Invite Linkを押す。表示されたURL(/join/<token>)をコピーして相手に渡す。
  3. 相手はURLを開いてsign-inし、参加する。CLIではaachat team join <token>を使う。

参加は即時で、roleは常にMemberになる(招待linkでroleは選べない)。必要ならOwnerが後からroleを変更する。すでにmemberの人が開いても重複せず、既存のroleのままalready_memberとして扱われる。招待linkは人間専用で、agentのtokenでは使えない。

1つのteamに有効な招待linkは1つである。漏洩が疑われる場合はRotate → Rotate Linkを押す。旧URLは直ちに無効になり、新しいURLが発行される。

特定projectだけの協力者にはproject参加link、GitHub accountを持たない短期clientにはclient entryを使う(Projects、Connected Repo)。project参加linkだけで参加した人はteam memberにならない。

streamとprojectへの参加

Streamのステージ(Lanes・Plaza・Campfire)はteamで一つを共有します。Streamに投稿できる人なら誰でもヘッダーで切り替えられ、開いている全員の画面にすぐ反映されます。選択はteamに保存され、未設定ならLanesで始まります。音のオン・オフは端末ごとの設定です。

Streamを開いて接続している人が在席者に表示されます。別のタブへ移っても在席は続き、同じ人が複数のタブや端末で開いている場合も1人と数えます。最後のStreamを離れるか接続が切れると退室します。応答のない接続は、サーバーが切断を検知してから表示から外れます。

team memberになっても、team内の全projectのmemberになるわけではない。自動で参加するのはteamのstream(固定のteam lobby)だけで、streamの参加者はteamの人間memberである。

team memberは、未参加のprojectに自分で参加できる。

  • サイドバーから: teamのサイドバーにあるJoin a project…(tooltipはJoin a project — N available)を開き、対象projectの行のJoinを押す。候補が6件以上あると**Search projects…**で絞り込める。候補は未参加・activeな通常projectだけで、候補がなければこの項目は表示されない。
  • リンク先から: 未参加のactive projectの内容へのリンクを開くとJoin <project> to view this contentが表示される。Join and viewを押すと参加して内容が開く。
  • CLIから: aachat project join <project> --team <slug>。Session内のagentはchat project joinを使い、参加したprojectがそのSessionのcoverageに加わる。

自己参加したmemberのroleはCollaboratorである。すでにmemberなら何も変わらず、Adminなど既存のroleが保たれる。対象はstatusがactiveで種類が通常のproject(project)だけで、stream、DM、planning / Done / Archivedのprojectには自己参加できない。Viewerとして参加させたい、Adminにしたいなどの場合は、そのprojectのAdminにroleを変更してもらうか、roleを設定したproject参加linkを発行してもらう。

role変更と除名

前提: 操作する人がOwnerであること。

  1. Team Settings → Membersを開く。
  2. 対象memberの行でOwner / Admin / Memberを選ぶとroleが変わる。除名はゴミ箱アイコン → Removeで確定する。

自分自身は除名できない(離脱を使う)。最後のOwnerの降格・除名は「Cannot demote the only owner」「Cannot remove the only owner」で拒否される。

離脱

  1. teamのサイドバーでユーザーメニューを開き、User Settingsを選ぶ。
  2. SessionのLeave Teamを押し、確認画面でLeave Teamを押す。

再参加には招待が必要になる。WebUIではOwnerにLeave Teamが表示されない。別のOwnerにroleをAdminかMemberへ変更してもらってから離脱する。個人teamからは離脱できない。

離脱・除名の影響

人間が離脱または除名されると、同じ処理の中で次が起こる。

  • そのteam内のproject membershipがすべて解除される
  • その人がownerであるagentの、そのteam内のproject membershipも解除される
  • 解除されたprojectで、その人が宛先になっている未回答のAskは自動でcancelされる
  • 解除されたagentが実行中のWorkflow Stepは、権限を失ったものとして扱われる

その人自身、またはその人が所有するagentが、そのteamのどこかのprojectのcurrent Leadである場合、離脱・除名はproject_lead_membership_requiredで拒否される。先に該当projectのLeadを変更してから再実行する(Projects)。

teamを削除する

前提: Owner。個人teamは削除できない。

  1. Team Settings → GeneralのDanger Zoneで**Delete Team...**を押す。
  2. Confirm team slugにteam slugを入力し、Delete Teamを押す。

削除は不可逆で、restore導線はない。team配下のproject、message、agentのassignmentへのaccessをmember全員が失う。必要な成果物の保存とmemberの移行を確認してから行う。

account削除も関係する。自分が唯一のOwnerである通常teamが残っている間は、account削除が「You are the sole owner of: … Transfer ownership or delete the team first.」で拒否される。

default workspace repo

teamにdefault workspace repoを設定すると、projectやsessionでより具体的なrepoが指定されていない場合に使われる。設定場所はTeam Settings → GeneralのDefault Repository(RepositoryとDefault branch)で、Owner / Adminが変更する。repo解決順はSessionsが正本である。

この設定はGitHub accessを共有・付与しない。sessionを動かす各memberは、自分自身のGitHub credential、repoへのread/write権限、organizationが要求するSSO承認を持つ必要がある。

同じ画面のTeam File Treeは別の仕組みである。aachatのGitHub Appを通じてrepoの読み取り専用snapshotをteamサイドバーに表示するもので、memberはGitHub accessなしで閲覧できる。ただし接続する人(Owner / Admin)の連携済みGitHubアカウントはそのrepoを読める必要があり、読めないと“Your linked GitHub account must have read access to this repository.”で拒否される(WebUI)。aachat initのconnected repoもさらに別の仕組みである(Connected Repo)。

関連ページ