VSCodeで学ぶ「Python入門」を書いたのですが、以外とVSCode内のJupyterの実行が不安定なのでやや気になってます。GoogleColabを使ってみたのですが、実行が早くてとても安定しています。なんでなのでしょうか?
はい、これはかなり自然な現象です。VS Code内のJupyterが悪いというより、Google Colabとは「動いている場所」が違うことが大きいです。
Contents
- 0.1 なぜColabのほうが「安定して速い」のか
- 0.2 ただし「Colab=常に速い」ではありません
- 0.3 「Python入門」の本については、むしろ重要な発見です
- 0.4 ただし、第2弾では一つ重要な方針があります
- 0.5 そして、今回かなり面白いことがあります
- 0.6 そして、私はこの2冊を「兄弟本」にするのがいいと思います
- 0.7 ここがVS Codeとの大きな違いです
- 0.8 まず見た目の違い
- 0.9 .py ― Pythonファイル
- 1 では、Colabではどう使い分けるのか
- 2 .pyは何に使う?
- 3 そしてColabの面白いところ
- 4 これは今回の本にかなり使えます
- 5 %% [code]
- 6 s0601.ipynb
- 7 3.ランタイムが終了するとどうなるのか
- 8 5.だからColabのプログラムでは pip install を最初に書くことが多い
一番大きな違い
+Jupyterでは、
あなたのPCの中で
VS Code
↓
Jupyter拡張機能
↓
Python環境
↓
Jupyterカーネル
↓
numpy / matplotlib など
という複数のものが連携して動いています。
一方、は、
ブラウザ
↓
Google側のサーバー
↓
あらかじめ整えられたPython環境
↓
Jupyter
です。
つまり、ColabではPythonを実行するコンピューターそのものがGoogle側にあります。
なぜColabのほうが「安定して速い」のか
① 環境が最初から整っている
ColabはGoogle側で、
- Python
- Jupyter
- numpy
- pandas
- matplotlib
- その他のライブラリ
などが動く環境をあらかじめ用意しています。
自分のPCでは、Pythonのバージョンやライブラリ、Jupyter拡張機能などの組み合わせによって、ちょっとした不具合が起きることがあります。
② VS CodeはJupyterそのものではない
ここが意外に重要です。
VS Codeは本来プログラムを書くためのエディターです。
そこにJupyter拡張機能を追加して、
「VS Codeの中でJupyter Notebookを使えるようにする」
という構造です。
そのため、
VS Code → Jupyter拡張 → Python → カーネル
という複数の層があります。
どこか一つの状態がおかしくなると、
- セルを実行しても反応しない
- カーネルが起動しない
- 実行結果が表示されない
- 「Connecting to kernel」のままになる
- 一度再起動すると直る
といったことが起こります。
③ Colabは計算資源も強い
これもあります。
あなたのPCでPythonを実行すると、当然ながら
PCのCPU・メモリを使います。
ColabならGoogle側の計算資源を使います。
特に、
import numpy as np
程度なら差はほとんど感じませんが、
大量のデータ
画像処理
機械学習
大きな配列
などになると、Colabのほうが快適に感じる場合があります。
ただし「Colab=常に速い」ではありません
ここは本の中では注意しておいたほうがいいところです。
ColabはPythonの実行自体は速くても、Googleのサーバーとの通信が入ります。
例えば、
セルを実行
↓
Googleのサーバーへ送信
↓
Pythonが実行
↓
結果がブラウザへ戻る
となります。
そのため、単純な計算ならPC上のPythonのほうが速いこともあります。
今回感じている
「実行が早くてとても安定している」
というのは、**計算速度だけではなく、環境の安定性やJupyterとの統合状態も含めた「使い勝手の速さ」**だと思います。
「Python入門」の本については、むしろ重要な発見です
以前のお話では、この本はVS Code+Jupyterを基本にするという方針でしたよね。
もし実際に使ってみて、
「初心者がJupyterを使うなら、Colabのほうがトラブルが少ない」
と感じるのであれば、これは本の構成を考えるうえで結構重要です。
特に初心者の場合、
Pythonそのものを教えたいのに、Jupyterのカーネル問題でつまずく
というのは避けたいところです。
一方、VS Codeには、
- Pythonファイル(
.py)も扱える - Jupyter Notebookも扱える
- 実際の開発環境に近い
- 後々のプログラミングにつながる
という大きなメリットがあります。
ですから私は、
「VS Codeを教える本」ならVS Code+Jupyterを維持する
一方、
「Pythonを初めて学ぶ人のための本」ならColabを選択肢として併記する
のがいいと思います。
そして、以前決めていた「Google Colabは使わない」という方針も、実際に使ってみて安定性の違いを確認した今なら、改めて見直す価値があります。
特に「初心者が途中で挫折しない」という観点では、私はColabをかなり評価します。
はい、私はかなり良い企画だと思います。
むしろ、実際に「VS Code+Jupyter」と「Google Colab」の両方を触ってみて、Colabのほうが初心者にとって安定していると実感された今だからこそ、説得力のある第2弾になると思います。
Google自身もColabを「環境構築が不要」「教育に適している」サービスとして位置づけています。ColabはJupyterを基盤にしたサービスなので、今の『Python入門』とのつながりも自然です。
私なら、かなりはっきり2冊を分けます
第1弾
『VS Codeで学ぶ Python入門』
→ 「自分のパソコンにPython環境を作って、VS Codeでプログラミングする」
第2弾
『Google Colabによる Python入門』
→ 「インストール不要。ブラウザだけでPythonを始める」
こうすると、単なる「第2版」ではなく、別の読者を狙える別商品になります。
特にColab本は初心者向きです
読者側からすると、
VS Code版
Pythonをインストール
↓
VS Codeをインストール
↓
Python拡張機能
↓
Jupyter拡張機能
↓
Python環境の確認
↓
カーネルの確認
↓
ようやく最初のプログラム
となります。
一方Colabなら、
Googleアカウント
↓
Colabを開く
↓
コードを書く
↓
実行
です。
Google公式でも「ダウンロード、インストール、実行などの操作は一切不要」と説明しています。
これは**「Pythonをやってみたいけれど環境構築が怖い人」**には大きな魅力です。
ただし、第2弾では一つ重要な方針があります
私は**「Colabの操作説明書」にしないほうがいい**と思います。
例えば、
①ここをクリック
②ここをクリック
③ここに入力
だけでは、Colabの画面が変更されたときに本が古くなってしまいます。
むしろ、
「Colabを使ってPythonを学ぶ」
ことを中心にします。
例えば、
- Google Colabを始めよう
- コードセルと実行
- Pythonの基本
- 変数
- 数値と文字列
- if文
- for文
- リスト
- 関数
- ファイルを扱う
- NumPy
- pandas
- matplotlib
- データ分析をやってみよう
- 最後に小さなプログラムを作る
という感じです。
Colabはノートブック形式なので、**「説明 → コード → 実行結果 → 次の説明」**という現在の『Python入門』のスタイルとも非常に相性がいいです。ColabのノートブックはGoogle Driveに保存でき、.ipynb形式で扱えます。
そして、今回かなり面白いことがあります
実は現在のColabは、VS Codeとの連携も公式に提供されています。
Googleの現在のColab案内には、VS Code用のGoogle Colab拡張機能があり、VS CodeからColabのランタイムを選択して使える、と明記されています。
つまり、
「VS Code vs Colab」
という完全な対立ではなく、
「ローカルPython環境」→「Colab」→「ColabをVS Codeから使う」
という発展もできます。
ただ、これは第2弾の初心者向け本ではあえて深入りしなくていいと思います。
一つだけ、第2弾で必ず書いておきたいこと
Colabには弱点もあります。
無料版ではリソースが保証されておらず、アイドル状態になるとランタイムが終了します。また、無料版のノートブックは状況によって最長12時間程度という制限があります。
したがって本の冒頭で、
「Colabは便利ですが、実行環境は永続的な自分のPCではありません」
と一度説明しておけば、読者も混乱しません。
そして、私はこの2冊を「兄弟本」にするのがいいと思います
今の本を捨てる必要は全くありません。
むしろ、
① VS Codeで学ぶ「Python入門」
→ パソコンにPythonを入れて、本格的に使う
② Google Colabによる「Python入門」
→ インストール不要で、まずPythonを体験する
という2本立てにすると、それぞれの長所がはっきりします。
さらに第2弾を書くときは、第1弾の内容をそのままコピーするのではなく、Colabだからできることを少し入れると、独立した本として価値が出ます。
たとえば、
- グラフをその場で表示
- CSVデータを読み込む
- pandasで簡単なデータ分析
- Google Driveとの連携
- ノートブックを保存・共有
- 最後に小さなデータ分析作品を作る
あたりです。
個人的には、今回の企画はかなり賛成です。
しかも今の『Python入門』を作った経験があるので、第2弾は「ゼロからPython本を書く」というより、既存の教材をColabという環境に最適化する仕事になります。かなり取り組みやすいと思います。
「Colabの操作説明書」にしないほうがいいとのことですが、ここは少し力を入れたいと思います。Colabを扱っているいくつかの本を読んでみましたが、みなPython重視で使い方の便利さがわからないまま進んでいます。ここは
- Google Colabを始めよう
- Googleアカウント
- コードセルと実行
- Pythonの基本
はい、それならむしろColabの操作部分をしっかり扱うべきだと思います。
先ほど私が「操作説明書にしないほうがいい」と言ったのは、Colabのボタンや画面だけを延々と説明する本にしないほうがいい、という意味でした。
今回おっしゃるように、**「Colabという環境の便利さを理解してからPythonに入る」**という構成なら、かなり明確な特色になります。
特に、実際に既存のColab本を読んで「Pythonの説明ばかりで、Colabを使うメリットが分からない」と感じられたのなら、そこはこの本の差別化ポイントにできます。
私なら、最初の章をこうします
第1章 Google Colabを始めよう
- Google Colabとは何か
- Googleアカウントを用意する
- Colabを開いてみよう
- 新しいノートブックを作る
- コードセルと実行
- 実行結果を確認する
- コードセルを追加・削除する
- セルを上下に移動する
- Markdownセルを使って説明を書く
- ノートブックを保存する
- Google Driveとの関係
- ノートブックを閉じて、もう一度開く
- 「自分のパソコンにPythonをインストールしなくても動く」ことを確認する
そして、
第2章 Colabをもっと便利に使おう
として、
- コードを修正して再実行する
- 前のセルの変数を次のセルで使う
- セルを途中から実行するとどうなるか
- 「ランタイム」とは何か
- ランタイムを再起動する
- セッションが切れたらどうするか
- ファイルをColabに読み込む
- Google Driveのファイルを使う
- グラフや画像を表示する
- ノートブックを共有する
くらいまでやってから、
第3章 いよいよPythonを始めよう
とする。
これなら読者は、
「なるほど。Colabってこういうものなのか。これならPythonをやってみよう」
という状態になってからPythonに入れます。
これは第1弾との対比もきれいです
今の本は、
Pythonを自分のパソコンで動かすために、VS Code+Jupyterを整える
という本。
第2弾は、
Pythonを始める前に、Google Colabという便利な環境を使いこなす
という本。
になります。
そして面白いのは、両方ともJupyter Notebookがベースだということです。
ですから、第2弾でColabを丁寧に説明した後、Pythonの章に入れば、読者は「セル」「実行」「出力」という概念をすでに理解しています。Pythonそのものの説明に集中できます。
タイトルも少し工夫できそうです
単純に
Google ColabによるPython入門
でもいいですが、今回の特徴を考えると、
Google Colabで学ぶ Python入門
― インストール不要、ブラウザだけで始めるPython ―
のように、「Colabだから簡単」という部分を前面に出すのも面白いと思います。
そして、この本ではGoogleアカウントの作成から始めて、実際に最初のコードを動かすところまでをかなり丁寧にする。これは初心者向けとして非常に筋が通っています。
むしろ第1弾を書いた経験があるからこそ、**「Pythonを教える前に、Pythonを動かす環境そのものを理解してもらう」**という第2弾が作れると思います。
はい、できます。ただし、VS Codeのエクスプローラーとまったく同じ感覚ではありません。
ここはColab本の重要なところになりそうです。
① Google Driveを使う方法
ColabではGoogle Driveを接続(マウント)できます。
例えばGoogle Driveに
Python入門
├─ 練習問題
│ ├─ sample01.py
│ ├─ sample02.py
│ └─ sample03.py
└─ データ
└─ sample.csv
というフォルダを作っておけば、Colabからそのファイルを読み込めます。
例えば、
from google.colab import drive
drive.mount('/content/drive')
としてGoogle Driveを接続すると、
/content/drive/MyDrive/Python入門/練習問題/
という場所からファイルを扱えます。
② Colabの左側にも「ファイル」があります
Colabの左側には**フォルダのようなファイル一覧(Files)**があります。
ここはVS Codeのエクスプローラーにかなり近いです。
例えば、
📁 content
📁 練習問題
📄 sample01.py
📄 sample02.py
のようにファイルを確認できます。
ただし、このファイル一覧はColabの実行環境(ランタイム)側のファイルです。
③ .pyファイルを直接実行することもできます
例えば、
%run /content/練習問題/sample01.py
とすれば、Pythonファイルを実行できます。
あるいは、
exec(open('/content/練習問題/sample01.py').read())
という方法もあります。
ただし、初心者向けの本なら、こうした方法を最初からたくさん教える必要はないと思います。
ここがVS Codeとの大きな違いです
VS Codeでは、
練習問題
├─ 01.py
├─ 02.py
└─ 03.py
という自分のPCのフォルダを直接操作できます。
一方Colabでは、
Google Drive
↓
Colabに接続
↓
ランタイム
↓
/content/
という仕組みになります。
さらにColabのランタイムは一時的なものなので、ランタイムを終了すると /content/ に置いたファイルは基本的に消えます。
そのため、長期間使う練習問題やデータはGoogle Driveに保存する、という使い分けが重要になります。
これは「Google ColabによるPython入門」の面白い章になりそうです
例えば、
第2章 Colabでファイルを扱ってみよう
として、
- Colabの「ファイル」を見てみよう
- フォルダを作る
- Pythonファイルをアップロードする
- Pythonファイルを実行する
- Google Driveを接続する
- Google Driveの「練習問題」フォルダを使う
- CSVファイルを読み込む
- ランタイムとファイルの関係
- VS Codeのエクスプローラーとの違い
まで説明すると、かなり実用的です。
そしてこれは、今のVS Code版との違いを読者に理解してもらう絶好の材料になります。
なお、Colabには「ノートブック(.ipynb)」と「Pythonファイル(.py)」の2種類があるので、ここを最初に整理して説明すると、初心者にはかなり分かりやすい本になると思います。
そういえばColabでは「ノートブック(.ipynb)」と「Pythonファイル(.py)」の2種類 両方使えると思っていましたが、使い分けがわかりません。
はい。ここはColabを初めて使う人がかなり混乱しやすいところです。
結論から言うと、
.ipynb=Colabで学習・実験するためのノート
.py=普通のPythonプログラム
と考えると、まず理解しやすいです。
そして、Colabでは両方使えます。
まず見た目の違い
.ipynb ― ノートブック
Colabを開いて最初に作るのはこちらです。
Google Colab
┌────────────────────────┐
│ Pythonについて説明 │ ← Markdownセル
│ │
│ print("こんにちは") │ ← コードセル
│ │
│ こんにちは │ ← 実行結果
│ │
│ x = 10 │ ← コードセル
│ │
│ 10 │ ← 実行結果
└────────────────────────┘
つまり、
文章+プログラム+実行結果
を一つのファイルにまとめられます。
これが .ipynb です。
.py ― Pythonファイル
こちらは普通のPythonプログラムです。
x = 10
y = 20
print(x + y)
保存すると、
sample.py
になります。
基本的にはプログラムそのものです。
Wordで例えるなら、
.ipynb→ 説明文・写真・実験結果などが一緒になった「ノート」.py→ プログラムだけを書いた「原稿」
という感じです。
では、Colabではどう使い分けるのか
ここが重要です。
Pythonを勉強するとき
.ipynbが圧倒的に便利です。
例えば、
【変数について】
Pythonでは変数を使って値を保存できます。
x = 10
y = 20
x + y
そして実行すると、
30
と、その場に結果が出ます。
さらにその下に次の説明を書けます。
つまり、
説明 → コード → 実行結果 → 説明 → コード → 実行結果
という教材そのものを作れます。
これはColabの大きな特徴です。
.pyは何に使う?
例えば、ある程度Pythonを覚えて、
name = input("名前:")
print(name + "さん、こんにちは")
というプログラムを作ったとします。
これを
hello.py
として保存しておけば、一つの完成したプログラムになります。
ですから、
.ipynb
学ぶ・試す・分析する
.py
プログラムを作る・保存する・再利用する
と考えると分かりやすいです。
そしてColabの面白いところ
実は、Colabの中で .py を使うこともできます。
例えばGoogle Driveに、
Python入門
└── 練習問題
├── mondai01.py
├── mondai02.py
└── mondai03.py
と置いておき、Colabから読み込んで実行することができます。
つまり、
.ipynb
↓
学習・実験
.py
↓
練習問題・完成プログラム
という組み合わせができます。
これは今回の本にかなり使えます
むしろ、今考えている**「Google ColabによるPython入門」**では、この違いをかなり丁寧に説明する価値があります。
例えば、
第1章 Colabを始めよう
- Googleアカウント
- Colabを開く
- ノートブックとは?
- コードセルとは?
- Markdownセルとは?
- 最初のプログラム
第2章 Colabでファイルを扱おう
.ipynbとは?.pyとは?- 2つの違い
.pyファイルを作る.pyファイルを読み込む.pyファイルを実行する- Google Driveを使う
- 練習問題フォルダを作る
としておけば、読者はかなり早い段階で
「なるほど、Colabは単なるPython実行サイトじゃなくて、Pythonを勉強するための環境なんだ」
と理解できます。
そして、今のVS Code版との違いも明確になります
今の本では、
VS Code
エクスプローラー
↓
練習問題
↓
01.py
↓
実行
という流れですよね。
Colab版では、
Google Drive
Google Drive
↓
Python入門
↓
練習問題
↓
01.py
↓
Colabから実行
という流れにできます。
この**「VS Code版ではPCのフォルダ、Colab版ではGoogle Drive」**という対比を本の中で見せると、2冊の違いも非常に分かりやすくなると思います。
そして、ここは一度実際にColabで**「練習問題フォルダ → .pyファイル → 実行」**までやってみると、仕組みが一気に理解できます。
Colabでひととおり実行してみましたが、FFTのプログラムの例題も再現できました。日本語の表示は!pip install japanize-matplotlib →日本語フォントインストール→import japanize_matplotlib するなどやり方が違いましたが、わかりやすような気がしました。また、ランタイムを終了すると /content/ に置いたファイルは基本的に消える問題は、こまめに保存しておけばいいのですね。
はい、FFTまで一通り再現できたのであれば、「Google ColabによるPython入門」を第2弾にする方向はかなり有望だと思います。
そして、最後の点だけは少し訂正したほうがいいです。
/content/ のファイルは「保存」だけでは残りません
ここはColab本を書くなら、ぜひ正確に説明したいところです。
Colabでは、
/content/
はそのとき使っているランタイム(実行環境)の中にあります。
例えば、
/content/
練習問題/
fft.py
sample.csv
と置いたとしても、ランタイムが終了・リセットされると、基本的に消えます。
ですから、
「こまめに保存しておけば大丈夫」
ではありません。
保存先をGoogle Driveにする必要があります。
Colabでは「保存」が3種類あると考えると分かりやすいです
① ノートブックを保存
.ipynbをGoogle Driveに保存します。
これは、
「自分が書いたColabのノートを保存する」
ということです。
② /content/ にファイルを置く
/content/sample.csv
これは一時的です。
ランタイムがなくなれば消える可能性があります。
③ Google Driveに保存する
例えば、
マイドライブ
└─ Python入門
├─ 練習問題
│ ├─ fft.py
│ └─ sample.csv
└─ データ
としておけば、ランタイムが終了してもファイルは残ります。
そしてColabからGoogle Driveを接続して利用できます。
ここは、むしろ本の重要なテーマになります
今回実際にFFTを動かしてみて、
「Colabなら環境構築で苦労せず、FFTのような少し複雑なプログラムまで動かせる」
ことを確認できたのは大きいです。
日本語表示についても、
!pip install japanize-matplotlib
import japanize_matplotlib
で対応できたわけですね。
これもVS Code版との比較として面白いところです。
ただし、本では単に「この2行を入力してください」だけで終わらせず、
なぜColabでは
pip installが必要になるのか
インストールしたものはランタイムが終了するとどうなるのか
まで軽く説明すると、読者の理解が一段上がります。
そして、今回の経験からすると
第2弾の構成は、かなり面白くなりそうです。
第1章 Google Colabを始めよう
→ Googleアカウント
→ Colabを開く
→ ノートブック
→ コードセル
→ 実行
→ 保存
第2章 Colabを使いこなそう
→ ファイル
→ Google Drive
→ .ipynbと.py
→ /content/
→ ランタイム
→ ランタイム終了とファイル
→ 必要なライブラリのインストール
→ 日本語表示
第3章 Pythonを始めよう
→ ここからPythonの基本
という流れです。
これは、一般的な「Python入門」とかなり違います。
「まずPythonを覚えましょう」ではなく、「まずPythonを動かせる便利な環境を覚えましょう。その上でPythonを始めましょう」
という本になります。
今回ご自身でVS Code版とColab版の両方を実際に動かしてみたからこそ、この方向性が見えてきたのだと思います。
はい。ここは少し紛らわしいので、**「どこに保存されているのか」**をはっきり分けて考えると分かりやすいです。
① ノートブック(.ipynb)
これは基本的に**Google Driveの「マイドライブ」**に保存されます。
例えば、
マイドライブ
└─ Python入門
└─ 第1章.ipynb
という形です。
Colabで「保存」すると、この .ipynb ファイルがGoogle Driveに保存されます。
② /content/ に置いたファイル
これはGoogle Driveのフォルダではありません。
Colabがそのとき一時的に用意している仮想的な作業フォルダです。
Colab左側の「ファイル」を開くと、
📁 content
├── sample.py
├── sample.csv
└── ...
のように見えます。
つまり、
Google Drive
└─ マイドライブ
└─ Python入門
とは別の場所です。
イメージとしては、
あなたのGoogle Drive
│
└── マイドライブ
└── Python入門
└── sample.py ← ③ 残る
Colabの一時的な実行環境
│
└── /content/
└── sample.py ← ② 基本的に消える
という違いです。
③ Google Driveを接続した場合
ここが、VS Codeでいう「エクスプローラー」に一番近くなります。
Google Driveをマウントすると、
from google.colab import drive
drive.mount('/content/drive')
として、
/content/drive/MyDrive/
からGoogle Driveにアクセスできます。
例えば、
/content/drive/MyDrive/Python入門/練習問題/fft.py
というファイルをColabから直接利用できます。
一番大事なこと
①と③はGoogle Driveなので残ります。
②の /content/ は一時的な場所なので、ランタイム終了で基本的に消えます。
そして①と③は「同じGoogle Drive」を指しています。
違うのは、
-
① → Colabのノートブックそのもの
-
③ → Google Drive内の普通のファイルやフォルダ
ということです。
したがって、本で練習問題を扱うなら
私は、
マイドライブ
└─ Python入門
├─ 第01章.ipynb
├─ 第02章.ipynb
│
└─ 練習問題
├─ 01.py
├─ 02.py
└─ 03.py
という構成をおすすめします。
これなら**「ランタイムが終了したら練習問題が全部消えた!」という初心者の事故を防げます。**
そして、このGoogle Driveのフォルダ構成を最初に実際に作らせるところは、まさに今回考えている本の**「Colabを使いこなす章」**に入れると、とても実用的だと思います。
はい。ここは実際に操作してみると分かりやすいです。Colabの左側にある「ファイル」アイコンからGoogle Driveの自分のフォルダへ行く方法ですね。
方法① Google Driveをマウントする
Colabのコードセルに、まず次を入力して実行します。
from google.colab import drive
drive.mount('/content/drive')
すると、
「Google Driveへのアクセスを許可しますか?」
という表示が出るので、Googleアカウントを選択して許可します。
方法② 左側の「ファイル」を開く
画面左側のフォルダの形をした「ファイル」アイコンをクリックします。
すると、例えば、
📁 content
📁 sample_data
📁 drive
のようになります。
この drive を開きます。
↓
📁 drive
📁 MyDrive
↓
MyDriveを開く
すると、ここがあなたのGoogle Driveの「マイドライブ」です。
例えば、
MyDrive
├─ Python入門
│ ├─ 練習問題
│ └─ データ
├─ その他
└─ ...
というように、自分でGoogle Driveに作ったフォルダが見えます。
ここがちょっと分かりにくいところです
Colabの左側では、
content
└─ drive
└─ MyDrive
└─ あなたのフォルダ
という表示になります。
一方、Google Driveをブラウザで開くと、
マイドライブ
└─ あなたのフォルダ
です。
つまり、
Colabの /content/drive/MyDrive/ = Google Driveの「マイドライブ」
です。
ただし、もっと簡単な方法があります
実は最近のColabでは、左側の「ファイル」画面からGoogle Driveを直接表示できる場合があります。
その場合は、ファイル画面にあるGoogle Driveのアイコンをクリックすると、
MyDrive
へ移動できます。
もし今のColab画面で「ファイル」を開いた状態のスクリーンショットを送っていただければ、**「ここをクリック → 次にここ」**と、現在の画面に合わせてご案内できます。
今回の本では、この操作はかなり重要なので、実際のColabの現在の画面で確認しておいたほうがいいと思います。
スクリーんしょっと送付
はい、スクリーンショットを見て分かりました。今の状態なら、すでにGoogle Driveの「マイドライブ」の中に入っています。
先ほど私が説明した「drive → MyDriveを開く」という表示にはなっていません。現在のColabでは、マウントするとMyDriveの中身が直接表示されることがあります。
スクリーンショットでは、
ファイル
├─ 42クジラ雲画像
├─ Colab Notebooks
└─ PyBook
├─ .venv
├─ Ch01
│ ├─ s0101.py
│ ├─ s0102.py
│ └─ …
├─ Ch02
├─ Ch03
└─ …
となっていますね。
この 「PyBook」こそ、Google Driveのマイドライブにあるフォルダです。
したがって、例えば s0101.py は、
Google Drive
└─ マイドライブ
└─ PyBook
└─ Ch01
└─ s0101.py
にあります。
Colab上のパスで表すと、
/content/drive/MyDrive/PyBook/Ch01/s0101.py
です。
つまり、今回やりたかったことはもうできています
先ほど実行された、
from google.colab import drive
drive.mount('/content/drive')
によってGoogle Driveが接続され、左側の「ファイル」にマイドライブの中身が表示されている状態です。
そして、スクリーンショットを見る限り、かなり理想的な構成になっています。
MyDrive
└─ PyBook
├─ Ch01
│ ├─ s0101.py
│ ├─ s0102.py
│ └─ …
├─ Ch02
├─ Ch03
└─ …
これはまさに、今お考えの**「Google ColabによるPython入門」**で練習問題を配布する場合にも使いやすい構成です。
さらに面白いところ
この s0101.py をクリックすると、Colabからそのファイルを開いたり、メニューから操作したりできます。
また、ノートブックから直接、
%run /content/drive/MyDrive/PyBook/Ch01/s0101.py
とすれば、Google Driveにある練習問題のPythonファイルを実行できます。
つまり、以前話していた
VS Codeのエクスプローラーにある「Ch01 → s0101.py」を実行する
という使い方に、かなり近いことがColabでもできます。
むしろこの画面を見ると、「Colab版の本ではGoogle Drive+ファイル操作を最初に丁寧に説明する」という方針はかなり良さそうです。
なお、左側に見えている PyBook 以下のファイルは、今回の drive.mount() で接続したGoogle Drive側なので、/content/ に直接置いた一時ファイルとは違い、ランタイムを終了しても残ります。
この s0101.py をクリックすると、Colabからそのファイルを開いたり、メニューから操作したりできます。 これはどうやりますか?RUNの命令で行うのではなく、プログラム内容を表示させてから実行したいのです。
はい。ご希望の
s0101.pyを開く → プログラム内容を表示 → 内容を確認してから実行
という使い方はできます。
そして、先ほどの私の説明を少し訂正します。%runは「内容を表示してから実行」するための方法ではありません。 s0101.pyを直接開いて編集・確認するなら、Colabのファイル欄から開くのがよいです。
今の画面なら
左側の
PyBook → Ch01 → s0101.py
まで開いてありますね。
そこで s0101.pyをダブルクリックしてください。
すると、Colabのテキストエディタで .py の内容が開きます。.pyファイルはColabのファイルブラウザから開いて編集・保存できます。Stack Overflow+1
つまり、
左のファイル一覧
↓
PyBook
↓
Ch01
↓
s0101.py をダブルクリック
↓
┌─────────────────────┐
│ # 練習問題01 │
│ x = 10 │
│ y = 20 │
│ print(x + y) │
└─────────────────────┘
という形でプログラムそのものを確認できます。
ただし、ここが重要です
開いて表示することと、そのプログラムを実行することは別です。
テキストエディタで、
「このプログラムはこういう内容なんだ」
と確認してから実行したい、ということですね。
その場合、現在のColabでは、テキストエディタで内容を確認したあと、実行は別途行います。
例えば、確認後にノートブックのコードセルで
%run /content/drive/MyDrive/PyBook/Ch01/s0101.py
とすれば実行できます。
ただ、教材として考えると……
ここはVS Codeとはかなり違うところです。
VS Codeなら、
エクスプローラーで
s0101.pyをクリック
↓
プログラムがエディターに表示される
↓
▶実行
という流れが非常に自然です。
Colabでは、
ファイル一覧
↓.pyをテキストエディタで開いて確認
↓
ノートブックのセルから実行
という一手間があります。
ですから、**「Colabでは .py をどう扱うのが初心者に一番分かりやすいか」**は、第2弾の本を書くうえで一度きちんと決めたほうがいいと思います。
なお、Colab公式が基本的に説明している中心は、コードセルを持つ .ipynb ノートブックです。Colabは「コードと説明文を一つの文書にまとめて実行する」ことが大きな特徴です。colab.research.google.com
ですから、今回の本では「.ipynbを中心に学習し、.pyは練習問題や完成プログラムとして扱う」という構成が、私は一番自然だと思います。
s0101.py****をダブルクリックすると右端のサイドバーにソースが表示され、真ん中のコードのセルにはでませんでした。またs0601.ipynbでは 以下が右端のサイドバーに、元のソースとして表示されました。
コードセル <undefined>
%% [code]
s0601.ipynb
x = 10
y = 5
print(x + y)
実行出力
0KB
Stream
15
はい、その表示なら状況がかなりはっきりしました。
今のColabでは、
-
s0101.py→ ダブルクリックすると、右端のサイドバーに「ソース」が表示される -
s0601.ipynb→ 右端のサイドバーに「元のソース」としてコードが表示される -
しかし、中央のコードセルには表示されない
という状態ですね。
これは、s0101.py と s0601.ipynb のファイル形式の違いが原因です。
① s0101.py の場合
.py は普通のPythonプログラムファイルです。
Colabのファイル一覧からダブルクリックすると、現在のColabではファイルの内容をサイドバーでプレビューする形になることがあります。
つまり、
「プログラムの内容を確認する」ことはできる
しかし、そのまま中央の「コードセル」として開くわけではない
ということです。
② s0601.ipynb の場合
こちらはColabの本来の形式です。
.ipynb は、
コードセル+実行結果+各種設定
をまとめて保存するファイルです。
今回、
コードセル <undefined>
# %% [code]
# s0601.ipynb
x = 10
y = 5
print(x + y)
と表示され、
実行出力
0KB
Stream
15
となっているのは、そのipynbファイルの中に「コード」と「実行結果」が保存されているという意味です。
では、以前お話ししていた「中央にコードを表示してから実行」はどうするか
ここが重要です。
もし目的が、
s0101.pyのプログラム内容を中央のColabのコードセルに表示して、内容を確認・修正してから実行したい
ということなら、s0101.pyをダブルクリックする方法ではなく、.py の内容をColabのコードセルに読み込む方法を使います。
例えば中央のコードセルに、
%load /content/drive/MyDrive/自分のフォルダ/s0101.py
のように入力します。
すると、s0101.pyの中身が中央のコードセルに読み込まれます。
そして、
-
中央のコードセルに
s0101.pyの内容が表示される -
内容を確認する
-
必要なら修正する
-
▶を押して実行する
という流れにできます。
ただし、ここで一つ注意があります。
%load は「ファイルを中央のセルに読み込む」だけで、元の s0101.py ファイルそのものを編集するわけではありません。
ですから、今後の作業方法としては、
A:.py ファイルを編集・保存する方法
と
B:Colabのコードセルに読み込んで実行する方法
のどちらを採用するかを決めたほうがいいです。
今回の目的からすると、私は**「s0101.pyを中央のコードセルに表示 → 内容を確認 → 実行」**という方法をお勧めします。
必要なら次に、Google Driveにある s0101.py を、実際にあなたのフォルダ構成に合わせて中央のコードセルへ表示するところを、画面を見ながら一手ずつ説明します。
以下を聞き忘れたのでお願いします。
なぜColabでは pip install が必要になるのか
インストールしたものはランタイムが終了するとどうなるの
もちろんです。ここはColabを使ううえで非常に重要なところです。
1.なぜColabでは pip install が必要になるのか
Colabは、簡単にいうと**Google側に用意された「一時的なPython実行環境」**です。
最初からPython本体と、よく使われるライブラリはいくつか入っています。
例えば、
import numpy
import pandas
などは、そのまま使えることが多いです。
ところが、あなたが作ったプログラムで
import ○○
としたとき、その ○○というライブラリがColabの環境に入っていなければ使えません。
そこで、
!pip install ○○
と実行して、必要なライブラリを追加します。
つまり、
pip installは、今使っているColabのPython環境に「このプログラムで必要な部品を追加してください」という命令
と考えると分かりやすいです。
2.では、なぜ自分のWindowsパソコンでは必要だったり、必要なかったりするのか
ここがColabとの大きな違いです。
例えば自分のパソコンにPythonをインストールして、
Python
├─ numpy
├─ pandas
├─ matplotlib
└─ その他
という環境を作ったとします。
一度 pip install numpy をすれば、通常はそのパソコンに残ります。
ですから、次の日にPythonを起動しても、
import numpy
だけで使えます。
ところがColabは、あなた専用のパソコンではありません。
Googleが用意した計算用の環境を、その都度借りて使っているイメージです。
3.ランタイムが終了するとどうなるのか
ここが一番重要です。
Colabのランタイムを終了すると、そのランタイムに pip install したライブラリは基本的に消えます。
例えば、
!pip install openpyxl
を実行したとします。
そのランタイムが動いている間は、
import openpyxl
が使えます。
しかし、ランタイムが終了して、新しいランタイムを起動すると、
import openpyxl
が使えなくなる場合があります。
その場合は、もう一度
!pip install openpyxl
が必要です。
4.ただし、プログラムそのものは消えません
ここは混同しないようにしてください。
例えばGoogle Driveに、
MyDrive
└─ Python
├─ s0101.py
├─ s0201.py
└─ s0601.ipynb
と保存しているとします。
ランタイムが終了しても、これらのファイルはGoogle Driveに残ります。
消えるのは、
Colabが一時的に用意していた「実行環境」
です。
イメージすると、
Google Drive
↑
│ プログラムやデータは保存される
│
├── s0101.py
├── s0601.ipynb
└── データファイル
Colabランタイム
↑
│ こちらは一時的
│
├── Python
├── pip installしたライブラリ
├── メモリ上の変数
└── 実行中の環境
という違いです。
5.だからColabのプログラムでは pip install を最初に書くことが多い
例えば、
!pip install openpyxl
import openpyxl
というコードをプログラムの最初に置いておけば、新しいランタイムになっても、
「まず必要なものをインストールしてからプログラムを実行する」
ことができます。
そのため、Colabの教材などでは、
# 必要なライブラリをインストール
!pip install ○○
# ライブラリを読み込む
import ○○
という構成がよくあります。
6.今回の s0101.py との関係
今回あなたが作っているようなPythonプログラムの場合、
s0101.py
s0201.py
s0301.py
……
というプログラムファイルはGoogle Driveに保存しておく。
そしてColabを起動したときに必要なライブラリだけ、
!pip install ○○
でランタイムに入れる。
という考え方になります。
一言でまとめると
Google Driveに保存した「プログラム」は残る。
Colabランタイムに pip install した「部品」はランタイム終了で基本的に消える。
これを覚えておけば、Colabの仕組みがかなり分かりやすくなります。


コメント