🐥

2025年のColab再点検 ~気づいたらあった機能

に公開

はじめに

このドキュメントは、かつて課金して利用していた Google Colab について、2025/09/25 時点の機能を“改めて”調べ直したメモである。
初めて Google Colab を使う方は、入門向けの別ドキュメントを参照のこと。
また、現在、課金を止めているため、有料機能については未検証である。

画面の演出

画面の演出を行う設定が存在する。
全てが嫌になったときに生きる希望を与える。

画面上部のメニューにて ツール → 設定 を選択し 設定ダイアログを表示させる

その他を選択

パワーレベル

コーディング時に、火花をちらすことができる。
https://x.com/GoogleColab/status/1112708634905964545

コーギーモード/猫モード/カニモード

画面上部をコーギー、猫、カニが動く。

ランタイムのタイプの変更

ランタイムのバージョン

過去のランタイムを選択できるようになっている。

以前はバージョンアップの影響でコードが動かなくなったケースがあったが、過去のランタイムの選択を行えるようになり、過去コードの再現が容易になった。
過去のランタイムバージョンはリリース後、1年間利用可能。

Frequently Asked Questions - Past Runtime Versions

ランタイムのタイプ

Python3以外にRJuliaが使用可能となった

pythonの例

コード

import numpy as np

# サンプル行列/ベクトル(全言語で同一)
A = np.array([[3, 1, 2],
              [0, 1, 4],
              [2, 3, 1]], dtype=float)

B = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]], dtype=float)

b = np.array([1, 2, 3], dtype=float)

# 1) 行列積
C = A @ B

# 2) 転置
AT = A.T

# 3) 行列式
detA = np.linalg.det(A)

# 4) 逆行列
invA = np.linalg.inv(A)

# 5) 連立一次方程式 A x = b の解
x = np.linalg.solve(A, b)

# 6) 固有値(固有ベクトルも欲しければ eig の第2戻り値)
w, v = np.linalg.eig(A)   # w: 固有値, v: 列ベクトルが固有ベクトル

# 7) 要素ごとの積(Hadamard積)
hadamard = A * B

print("C=\n", C)
print("A^T=\n", AT)
print("det(A)=", detA)
print("inv(A)=\n", invA)
print("x=\n", x)
print("eigvals(A)=\n", w)
print("A .* B=\n", hadamard)

出力結果

C=
 [[21. 27. 33.]
 [32. 37. 42.]
 [21. 27. 33.]]
A^T=
 [[3. 0. 2.]
 [1. 1. 3.]
 [2. 4. 1.]]
det(A)= -29.000000000000018
inv(A)=
 [[ 0.37931034 -0.17241379 -0.06896552]
 [-0.27586207  0.03448276  0.4137931 ]
 [ 0.06896552  0.24137931 -0.10344828]]
x=
 [-0.17241379  1.03448276  0.24137931]
eigvals(A)=
 [-2.62721301  1.94136684  5.68584617]
A .* B=
 [[ 3.  2.  6.]
 [ 0.  5. 24.]
 [14. 24.  9.]]
Rの例

コード

# サンプル行列/ベクトル(Pythonと同じ)
A <- matrix(c(3,1,2,
              0,1,4,
              2,3,1), nrow=3, byrow=TRUE)

B <- matrix(c(1,2,3,
              4,5,6,
              7,8,9), nrow=3, byrow=TRUE)

b <- c(1,2,3)

# 1) 行列積
C <- A %*% B

# 2) 転置
AT <- t(A)

# 3) 行列式
detA <- det(A)

# 4) 逆行列
invA <- solve(A)

# 5) 連立一次方程式 A x = b の解
x <- solve(A, b)

# 6) 固有値(固有ベクトルは $vectors)
eig <- eigen(A)   # eig$values, eig$vectors

# 7) 要素ごとの積(Hadamard積)
hadamard <- A * B

print(C)
print(AT)
print(detA)
print(invA)
print(x)
print(eig$values)
print(hadamard)

出力結果
固有値の順番についてはPythonと異なる可能性がある

     [,1] [,2] [,3]
[1,]   21   27   33
[2,]   32   37   42
[3,]   21   27   33
     [,1] [,2] [,3]
[1,]    3    0    2
[2,]    1    1    3
[3,]    2    4    1
[1] -29
            [,1]        [,2]        [,3]
[1,]  0.37931034 -0.17241379 -0.06896552
[2,] -0.27586207  0.03448276  0.41379310
[3,]  0.06896552  0.24137931 -0.10344828
[1] -0.1724138  1.0344828  0.2413793
[1]  5.685846 -2.627213  1.941367
     [,1] [,2] [,3]
[1,]    3    2    6
[2,]    0    5   24
[3,]   14   24    9
Juliaの例

コードの例

using LinearAlgebra   # det, inv, eigen など

# サンプル行列/ベクトル(Pythonと同じ)
A = [3.0 1.0 2.0;
     0.0 1.0 4.0;
     2.0 3.0 1.0]

B = [1.0 2.0 3.0;
     4.0 5.0 6.0;
     7.0 8.0 9.0]

b = [1.0, 2.0, 3.0]

# 1) 行列積
C = A * B

# 2) 転置(非共役の転置)
AT = transpose(A)

# 3) 行列式
detA = det(A)

# 4) 逆行列
invA = inv(A)

# 5) 連立一次方程式 A x = b の解(Juliaは \ が推奨)
x = A \ b

# 6) 固有値(固有ベクトルは .vectors)
eig = eigen(A)      # eig.values, eig.vectors

# 7) 要素ごとの積(Hadamard積)
hadamard = A .* B

println("C=\n", C)
println("A^T=\n", AT)
println("det(A)=", detA)
println("inv(A)=\n", invA)
println("x=\n", x)
println("eigvals(A)=\n", eig.values)
println("A .* B=\n", hadamard)

出力結果

C=
[21.0 27.0 33.0; 32.0 37.0 42.0; 21.0 27.0 33.0]
A^T=
[3.0 0.0 2.0; 1.0 1.0 3.0; 2.0 4.0 1.0]
det(A)=-29.000000000000004
inv(A)=
[0.3793103448275862 -0.17241379310344823 -0.06896551724137932; -0.27586206896551724 0.03448275862068964 0.41379310344827586; 0.0689655172413793 0.24137931034482757 -0.10344827586206895]
x=
[-0.1724137931034482, 1.0344827586206895, 0.24137931034482757]
eigvals(A)=
[-2.6272130052966602, 1.9413668397423212, 5.685846165554339]
A .* B=
[3.0 2.0 6.0; 0.0 5.0 24.0; 14.0 24.0 9.0]

型チェック

型チェックが行えるオプションが存在する。

以下のようにデフォルトの設定では型チェックを行われない。

メニューからツール→設定で設定ダイアログを開く
設定ダイアログで エディタ→ コード診断 で Syntax and type checking を選択する

これにより型チェックが有効になる。

シークレットキー

左のナビゲーションメニューを選択することでシークレットキーを設定できる。

pythonでのシークレットキーの取得例

from google.colab import userdata
userdata.get('test_key')

RとJuliaのランタイムを使用している場合は使用できないと考えられる。
https://github.com/googlecolab/colabtools/issues/5151#issuecomment-2708334266

試してダメだった方法

RなどからPythonは動かすことはできるが、その動いているPythonがColabのPythonではないのでシークレットは取れなさそう。

library(reticulate)

out <- py_capture_output({
  py_run_string("
from google.colab import userdata
try:
    print(userdata.get('test_key'))
except Exception as e:
    print(e)
")
})
cat(out)
'NoneType' object has no attribute 'kernel'

またgoogle.colabに該当するライブラリも見当たらなかった。

GitHubとの連携

以下の手順で非公開リポジトリを含めたGitHubとの連携が可能

  1. ツール→設定を選択して設定ダイアログを開く
  2. 設定ダイアログでGitHubタブを選ぶ

ノートを開く手順は下記の通り

ファイルメニュー→ノートブックを開く

GitHubタブを選択してリポジトリとブランチを選ぶ

ファイルを保存するとGitHubへのコミットが可能

スライドショー

プレゼンテーション用のスライドショーを実行できる。

表示→スライドショーを開始


Playgroundモードで開く

ノートブックを読み取り専用で開き、編集はコピーに対して行われる。元のリポジトリやDrive への上書きは行われない。


ノートブックの差分

画面上部のメニュー ツール→ノートブックの差分を選択

まとめ

ちなみに今回見つけた機能は1年以上前からあったものがほとんどです。

惰性で使っていると意外と気づきませんね

Discussion