【2019/10/15追記】ColaboratoryでGoogleチームドライブをマウントする方法

### 2019/10/15 追記
またマウントできなくなっていたので直しました。
諸事情で変数名も変わっていますが、気にしないでください。

それにしてもconfigファイルで`team_drive_id`がチームドライブの一番上の階層のIDで
`root_folder`がマウントしたいフォルダのIDという仕様が気になる…
root って言われるとそれが一番上に思えてしまう。

```python
#共有ドライブ（旧チームドライブ）
team_drive_name = "team_drive"
team_drive_root_id = "共有ドライブの最上位のディレクトリのIDを設定"
team_drive_id = "マウントしたいディレクトリのIDを設定"

# おまじない
!add-apt-repository -y ppa:alessandro-strada/ppa > /dev/null　2>&1
!apt-get update -qq > /dev/null　2>&1
!apt-get -y install -qq google-drive-ocamlfuse > /dev/null　2>&1

from google import colab as co
import json

# 認証①
co.auth.authenticate_user()

# 認証②
with open('./adc.json', 'r') as f:
    json_dict = json.load(f)
client_id = json_dict['client_id']
client_secret = json_dict['client_secret']
!google-drive-ocamlfuse -headless -id={client_id} -secret={client_secret}

# チームドライブをマウント
!cp -f ~/.gdfuse/default/config tconfig
!sed -i -e "s/^team_drive_id=$/team_drive_id={team_drive_root_id}/" tconfig
!sed -i -e "s/^root_folder=$/root_folder={team_drive_id}/" tconfig
!mkdir -p {team_drive_name}
!google-drive-ocamlfuse -config ./tconfig -cc {team_drive_name}
```

### 2018/9/26 追記
この手順で確かにマウントはできますが、変更内容の反映にだいぶ時間がかかるとか、
再マウントして初めて変更が反映したというような声を聞きました。
変更反映に時間がかかるんでしょうかね？

うーむ、そんな問題があったとは…

# はじめに
Colaboratory で Google チームドライブをマウントする方法が意外と見つからなかったので、
じゃあ自分で書いてしまおうと重い腰を上げた次第です。
少しでも同じことをやりたいなぁと思っている方々の助けになれば幸いです。

# 【復習】Google マイドライブ等をマウントする
マイドライブやその他特定ディレクトリのマウント方法は [こちら](https://qiita.com/kikuchi_kentaro/items/65be0cf40ac61849d841#%E7%89%B9%E5%AE%9A%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%81%BF%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88) を参考にさせて頂きました。
(メチャ分かりやすくて助かりました。この場を借りてお礼申し上げます)

…しかし、トラブル発生。最初はこれで動いてたんですが、ある日急に `google-drive-ocamlfuse` のインストールで怒られるようになりました。

```
E: Unable to locate package google-drive-ocamlfuse
```

なんだこれ？と思って調べたら製作者様の [git issue](https://github.com/astrada/google-drive-ocamlfuse/issues/492#issuecomment-422309650) にこんな記述が。

<img width="597" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/78126/8eae5a4d-e844-3e26-437c-b31dbd74bbcb.png">

「パッケージ消しちゃったYO！ DL して dpkg でインストールしてくれ、HAHAHA！！」的な？？

それならば仕方あるまい。最初のパッケージ群インストール部をこのように変更したところ
無事マイドライブをマウントできました。
（もちろん任意フォルダもマウントできましたよ～）

```
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools libfuse2
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!wget https://launchpad.net/~alessandro-strada/+archive/ubuntu/ppa/+files/google-drive-ocamlfuse_0.7.0-0ubuntu1~ubuntu18.04.1_amd64.deb
!dpkg --install google-drive-ocamlfuse_0.7.0-0ubuntu1~ubuntu18.04.1_amd64.deb
!apt-get -y install -qq fuse
```

変更点を一応書いておきます。

- 最初に libfuse2 も apt-get install する
- google-drive-ocamlfuse は wget で落として dpkg でインストールする

# Google チームドライブをマウントする
さて、ようやく本題へ。チームドライブのマウント方法は、 [公式のwiki](https://github.com/astrada/google-drive-ocamlfuse/wiki/Team-Drives) にありました。
早速結論。こんな感じにすればOKです。

```
!cp -f ~/.gdfuse/default/config tconfig
!sed -i -e "s/^team_drive_id=$/team_drive_id=[TEAM_DRIVE_ROOT_FOLDER_ID]/" tconfig
!sed -i -e "s/^root_folder=$/root_folder=[TEAM_DRIVE_FOLDER_ID]/" tconfig
!mkdir -p teamdrive
!google-drive-ocamlfuse -config ./tconfig -cc teamdrive
!ls teamdrive
```

ポイントはこの2点。

- `[TEAM_DRIVE_ROOT_FOLDER_ID]` はチームドライブの ROOT (一番上の階層)フォルダの ID を指定する
- `[TEAM_DRIVE_FOLDER_ID]` はチームドライブ内の実際にマウントしたいフォルダの ID を指定する

う～ん簡単♪

# 最後に
この記事を書いている内に知ったんですが、 [こちら](https://qiita.com/k_uekado/items/45b76f9a6f920bf0f786) のように今はたった2行でマイドライブをマウントできるようです。

```python
from google.colab import drive
drive.mount('/content/drive')
```

チームドライブも実はもっと簡単にマウントできる方法があるのかもしれませんね。

# 参考にさせて頂いた記事
- [Google Colaboratory で Google Drive の特定のフォルダをマウントする方法](https://qiita.com/kikuchi_kentaro/items/65be0cf40ac61849d841)
- [ColaboratoryでのGoogle Driveへのマウントが簡単になっていたお話](https://qiita.com/k_uekado/items/45b76f9a6f920bf0f786)