記事を投稿後、あるごんさん(@ar90n)とかまろさん(@mlaass1)からアドバイスを頂いたので、対応してアップグレードしました。
結論
- Kaggle Notebook のAdd-ons機能でシークレットな変数(秘密鍵、リポジトリ名など)を入力
- 以下のセルでクローンを実行
gist75523f5de4a571cecf35b124aa319474
変数取得後のコードの流れは以下のとおり
- 重複防止の
rm -rf
(2回目以降をgit pull
にしてもOKのはず) - 秘密鍵をシークレットな変数から作成
- 権限の変更
git clone
。引数のcore.sshCommand
が~/.ssh/config
の役割をしている- 秘密鍵の削除
セルに必要なシークレットな変数は、Notebook上部にあるAdd-onsからセットできます。
補足:
- 秘密鍵の改行部分は
\n
に置き換えています。 - 4変数について
- gitrepo: GitHub上でのリポジトリ名
- ssh_keyname: id_rsa_xxなどの秘密鍵の名前
- ssh_keyval: 秘密鍵の鍵の中身(
-----BEGIN RSA PRIVATE KEY-----
から-----END RSA PRIVATE KEY-----
まで) - uname_git: GitHubのID
(別解) HTTPリクエスト+アクセストークンを使用した方法
セキュリティ意識のかけらもないが、これでいけるのでは?
— かまろ/Camaro (@mlaass1) 2021年1月23日
git clone https://[USER_ID]:[PERSONAL_ACCESS_TOKEN]@github.com/[USER_ID]/[REPOSITORY_NAME].git https://t.co/8i7QhExEWP
前者よりセキュアではないですが、シンプルな手段の一つとして利用価値があるのでこちらも残しておきます。
!git clone https://[USER_ID]:[PERSONAL_ACCESS_TOKEN]@github.com/[USER_ID]/[REPOSITORY_NAME].git
モチベーション
- Kaggleのコンペ中のコードは気軽に公開・共有できない
- KaggleのNotebookは(私の環境では)動作が重く、コード検索に数十秒かかってとても辛い
- (私は)Notebookのグローバル変数をベタ書きできるほど脳のメモリが無い人間なので改善したかった
- 外部でコード実行しやすくして、Notebookの無駄時間消費を抑えたい
- Gitの草を生やして、やってます感を出したい
- コードが(多分)リサイクルしやすくなる
だいたいこの6つです。
おわりに
- にわかKaggleやりはじめ人間なので、もっといい方法がKaggler内で共有されているのかもしれません
- 改善案があれば、コメント等いただけると嬉しいです
(追記)↑教えていただいた方々、本当にありがとうございます!