やること
Pythonの勉強会をやっているとコードをGoogle Colabで参加者に共有する機会が多いです。その際の「共有権限はどうすればいい?」「Playgroundモードってなに?」をまとめました。
「Playground状態」と「コピー所有状態」
まず、「Playground状態」を次のように定義しました。これは勉強会でちょっとだけコードを触ってもらうとき便利な状態です。暴れても原本に影響がなく、リロードすればリセットされます。
▼Playground状態
- 閲覧できる
- 一時的に編集できるが保存されない
- 実行できる(警告あり)
- リロードでリセットされる
- 暴れても原本に影響なし
次に、「コピー所有状態」を次のように定義しました。参加者各自のファイルとしてコピーを作成し、コピーファイル上では何でもできる状態です。こちらも暴れても原本には影響ありません。
▼コピー所有状態
- 閲覧できる
- 編集は保存される
- 実行できる(警告なし)
- リロードしてもリセットされない
- 暴れても原本に影響なし
まとめ
こちらがまとめです。
結論として、勉強会でちょっとだけコードを触ってもらう場合は権限を「リンクを知っている全員:閲覧者」にして、参加者にはPlayground状態(非明示的)で触ってもらうのが良さそうです。
ただし、Playground状態では実行前に警告が出てしまうので、それを嫌う場合は「ドライブにコピーを保存」してコピー所有状態で触ってもらう方法になります。(後述)
Playground状態(非明示的)と(明示的)の違い
「リンクを知っている全員:編集者」の場合のみ、「Playgroundモードで開く」から明示的なPlaygroundモードに移行できます。明示的というのは、画面上部に「このノートブックはPlaygroundモードです。変更は保存されません。」と表示されることを意味します。
この機能は、編集権限を持った主催者が実演して見せる際、うっかり原本を編集してしまわないように自主的にPlayground状態にできるという安全設計機能です。参加者がこの明示的なPlaygroundモードに触れることはありません(それは編集権限を与えてしまっていることになるので)。
警告を出さないためには?
Playground状態で実行しようとすると次のような警告が表示されます。
慣れた参加者が相手であれば「このまま実行を押してくださいねー」で良いのですが、慣れない参加者は怖がってしまうかもしれません。どうしてもこれを嫌う場合は「ドライブにコピーを保存」してコピー所有状態で触ってもらうしかありません。これだと一手間増えますし、参加者のドライブに残骸が残るのであまりすっきりしません。一長一短です。
Playground状態で触ってほしいけどコードは盗まれたくない
これはおそらく不可能です。Playground状態では「ドライブにコピーを保存」ができてしまいます。コードを盗まれたくない場合はColabノートブックを共有せず、主催者が画面共有で見せていくしかないと思います。
おわりに
多少ややこしいですが、AWSとかいう(自主規制)よりは遥かに分かりやすいです。