2025年のColab再点検 ~気づいたらあった機能
はじめに
このドキュメントは、かつて課金して利用していた Google Colab について、2025/09/25 時点の機能を“改めて”調べ直したメモである。
初めて Google Colab を使う方は、入門向けの別ドキュメントを参照のこと。
また、現在、課金を止めているため、有料機能については未検証である。
画面の演出
画面の演出を行う設定が存在する。
全てが嫌になったときに生きる希望を与える。
画面上部のメニューにて ツール → 設定 を選択し 設定ダイアログを表示させる

その他を選択

パワーレベル
コーディング時に、火花をちらすことができる。
コーギーモード/猫モード/カニモード
画面上部をコーギー、猫、カニが動く。

ランタイムのタイプの変更
ランタイムのバージョン
過去のランタイムを選択できるようになっている。

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

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のランタイムを使用している場合は使用できないと考えられる。
試してダメだった方法
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との連携が可能
- ツール→設定を選択して設定ダイアログを開く
- 設定ダイアログでGitHubタブを選ぶ
ノートを開く手順は下記の通り
ファイルメニュー→ノートブックを開く

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

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


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



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


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


まとめ
ちなみに今回見つけた機能は1年以上前からあったものがほとんどです。
- 画面の演出 2019年には存在していた
- 過去ランタイムの選択 2025年9月
- R ランタイム 2018年ころには存在した
- Julia ランタイム 2025年 3月ころ
- 型チェック 2024年には存在していた
- シークレットキー 2023年11月
- GitHub連携 2021年には存在してた
- スライドショー 2025年 7月ころ
- Playground モード 2018年にはあった
- ノートブックの差分 2019年にはあった
惰性で使っていると意外と気づきませんね
Discussion