Pythonプログラミング(ステップ1・準備・Google Colab)

このステップの目標

Google Colab入り口

1. 準備と接続

まず、東北大学が発行しているGoogleアカウント(各自の全学メールID 名.姓.記号@dc.tohoku.ac.jpと、メール用のパスワード)を確認しておきます。 個人でGoogleアカウントを持っている場合は、そちらを使っても構いません。

次に、Google Colaboratoryのウェブサイトhttps://colab.research.google.com/にアクセスします。

「お使いのブラウザではこのサイトは動作しない可能性があります。サポートされているブラウザをお使いください。」と表示されたら、違うブラウザで試してみてください。 Google Chromeの使用をお薦めします。

画面右上のログインボタンを押して、Googleアカウント(全学メールID)を使ってログインします。

以下のような画面が出たら、とりあえず「キャンセル」しておきます。

これで使い始めるための準備が整いました。以下、基本的な注意点をまず把握しておきましょう。

簡単にまとめると、Google Colabは、使うときだけクラウド上に生成される仮想的なパソコン環境、になります。

Google Colabの基本用語

ノートブック
Pythonプログラムを入力・実行したり、テキストやコメントを記入したりするための、「ワープロ」の一種。ファイルとして保存した場合の拡張子は.ipynb
セル
ノートブックの中の入力の単位。ノートブックはコードセル(Pythonコード用)とテキストセルで構成される。
Markdown(マークダウン)
テキストセルを記述する際に、見出しや文字飾りなどの書式を整えるための記法。
ランタイム
コードセルのPythonコードを解釈・実行するためにサーバー側で動作しているプログラム。中断したり、再起動したりすることができる。
Googe Drive(ドライブ)
Googleアカウントに紐付いているクラウド型ストレージサービス。仮想的な外付けハードディスクのようなもの。
GPU/TPU
Pythonコードの処理を高速化するための専用のハードウェア。ランタイムのタイプから「使わない(None)」「GPU」「TPU」を選択できる。機械学習の課題に取り組む際はGPUを選択するとよい。

2. Google Colabの画面構成

Google Colabは、Pythonプログラムを作成し、実行することができるテキストエディタ兼ワープロ、です。 画面構成とそれぞれの役割を以下に示します。

まず、以下を試しておきましょう:

3. ノートブックの作成とコードの実行

セルの中でコードや文章をコピーする場合は Ctrl-C (macOSの場合は command-C)、 ペーストは Ctrl-V (macOSは command-V)を押します。

Ctrl-C とは Ctrl(Control)キーを押したままの状態で、Cを押す操作です。

「編集」メニューやマウスの右クリックはセルの内容(テキストやコード)ではなく、セルそのものに対する操作に用います。

メニューからファイルを開いて、ノートブックを新規作成を選びます。

すると、以下のような新しいタブが開きます:

Shift+Enterキーを押すと、選択中のセルのコードを直ちに実行することができます。

編集用の小区画をセルと呼び、Pythonコードを記入する区画のことをコードセルと言います。コードセルの左側には「再生ボタン」のようなアイコンがあり、そこをクリックすると、セル内のコードが実行されます。

実行中に停止したい場合は、「停止ボタン」に変化しているアイコンをクリックします。

機械学習などの課題で、計算にGPUを用いる場合は、メニューからランタイムを開き、ランタイムのタイプを変更を選択します。 そして、ハードウェアアクセラレータの欄をGPU に変更します。この変更を加えると、ランタイムが再起動され、作業途中のファイルが削除されますの注意してください。

その他の設定

「ツール」メニューの「設定」(または、画面右上の歯車マーク)で全体的な設定を変更することができます。

icon-pc 練習:曜日計算のコードの実行

コードセルに以下のコードを打ち込んで(ペーストして)、実行してみなさい。 実行すると、西暦年、月、日を尋ねられるので、入力欄に数値(半角)を入れて、Enterキーを押すこと。

dows = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]

year = int( input("Year ?: ") )
month = int ( input("Month ?: ") )
day = int( input("Day ?: ") )

if month==1 or month==2:
    year2 = year -1
    month2 = month + 12
else:
    year2 = year
    month2 = month

dayofweek = (year2 + year2//4 - year2//100 + year2//400 + (13*month2+8)//5 + day) % 7 

print("{0}/{1}/{2} is {3}.".format(year,month,day,dows[dayofweek]))

4. ファイルの管理

開いているノートブックはひとつのファイルとして管理・保存されます。画面上の Untitled0.ipynbのところをマウスでクリックして、新しい名前に変更することができます。 データは自動的に保存されるようになっていますが、ファイルメニューの保存も使えます。

作業用のファイル領域は、ランタイムが停止すると、全て消えてしまいます。

使用中のノートブック毎に仮想的な実行環境(ランタイム)が生成され、作業用のファイルスペースが設けられます。それを操作するには、左側の区画のファイルタブを開いてください(フォルダーのアイコンをクリック)。 そこには、あらかじめ、機械学習のサンプル用のデータが保存されています。

このファイルスペースにファイルをアップロードすると、Colab上のPythonコードで読み込んで処理することができます。 また、Pythonコードが生成したデータは、ここから自分のPCにダウンロードすることもできます。

この区画の上でマウスを右クリックすると、ファイルのアップロード、ダウンロード、フォルダの作成等の選択肢が現れます。

「Google Driveをマウント」をクリックすると、Google Driveの内容を作業ファイルスペースからアクセスできるようになります。その際、安全のため、確認が求められます。

一方、ノートブックの内容は、拡張子 ipynb のついたファイルとして、Google Driveの My Drive/Google Notebooksの中に保存されるようになっています。 Google Drive内のファイルは、ランタイムが停止しても、消えることはありません。

過去に使ったノートブックは、ファイルメニューからノートブックを開く...を選んで、開くことができます。

icon-pc 練習:ファイルのアップロード・ダウンロード

画像ファイルswan.pngをGoogle Colabにアップロードし、下記のPythonコードで処理すると、foggy_swan.pngという画像ファイルが作成される。 それをダウンロードして、処理前(swan.png)と処理後(foggy_swan.png)の画像を比較してみなさい。

from skimage import io, filters

image = io.imread('swan.png')
foggy_swan = filters.gaussian(image,sigma=5)
io.imshow(foggy_swan)
io.show()
io.imsave('foggy_swan.png', foggy_swan)

画像ファイル:swan.png

icon-hint ヒント

作業の流れ:

  1. 画像ファイルswan.pngをパソコンにダウンロードする。
  2. Google Colabの画面左側の「ファイル」の区画の「アップロード」をクリック(あるいは右クリックで「アップロード」を選び)、swan.pngをアップロードする。
  3. コードセルに上記のプログラムを入力(コピー&ペースト)し、実行する
  4. 左の「ファイル」の区画にコードセルにfoggy_swan.pngというファイルで新たにできるので、それを右クリックして「ダウンロード」する

5. パッケージの管理

コードセルの先頭に !マークを書くと、その行はLinuxのコマンドと見なされます。例えば、

!ls

を実行すると、作業ディレクトリのファイル一覧が表示されます。

Google Colabには、一般的なPython用のライブラリがすでにインストールされていますが、もし追加インストールが必要な場合は、コードセルで

!pip3 install パッケージ名

のようにpip3コマンドを実行してください。

演習等でこうした操作が必要になった場合は、その都度、具体的にコマンド名を指示します。

6. Pythonコードのファイル保存

レポート課題等の際、ノートブック上で作成したPythonコードをファイルとして提出するよう求められることがあります。 そのような場合は、以下のような手順で作業します:

Windowsの場合
  1. 「メモ帳」(Notepad)というアプリを開きます。
  2. 「無題」というウィンドウが開くので、Google ColabからそこにPythonのコードをコピー&ペーストします。
  3. メモ帳のファイルメニューから「名前を付けて保存」を選択します。
  4. 「ファイルの種類」は「すべてのファイル」、「文字コード」は「UTF-8」を選択します。
  5. ファイル名として、指定の名前(例えば report-1234.pyのような)を入力し、保存します。 ファイル名の末尾(拡張子)が.txtになっていたら、そこを削除して、.py で終わるようにします。
  6. Google ClassroomやISTUで、保存したファイル( report-1234.py)を提出(アップロードや添付)します。

Safariを使ってテキストエディットに日本語の混じったコードをペーストすると文字化けするようです。 テキストエディットにペーストする際、「編集」メニューで「ペーストしてスタイルを合わせる」を選ぶか、 Chrome等の他のブラウザを使用するようにしてください。

テキストエディットを使う場合は、「環境設定」の中のオプションの「スマート引用符」「スマートダッシュ記号」のチェックを外しておくようにしましょう。 さもないと、自動的に 'こんな風に’ ペアになった引用符に変換されてしまいます。

macOSの場合
  1. 「テキストエディット」(TextEdit)というアプリを開きます
  2. 「名称未設定」というウィンドウが開くので、Google ColabからそこにPythonのコードをコピー&ペーストします
  3. 「フォーマット」メニューから「標準テキストにする」を選択します
  4. ファイルメニューから「名前...」を選択します
  5. ファイル名として、指定の名前(例えば report-1234.pyのような)を入力し、保存します。 その際、「標準テキストのエンコーディング」の欄が「Unicode(UTF-8)」になっていることを確認しておきます。
  6. Google ClassroomやISTUで、保存したファイル( report-1234.py)を提出(アップロードや添付)します。

メモ帳(Notepad)やテキストエディット(TextEdit)はOSに標準で含まれています。追加でインストールする必要はありません。

メモ帳やテキストエディットは、「テキストエディタ」と呼ばれる種類のアプリケーションです。 テキストエディタは、文字の編集に特化されたワープロのようなもので、プログラミングでは良く用いられます。

ファイル名の末尾の.py拡張子と呼ばれ、そのファイルの内容がPythonのコードであることを表す「印」です。 拡張子は必ず半角英数字でなければなりません。 また、ファイル名に日本語の文字(全角文字)を使うと色々とトラブルの原因になるので、この授業では、「ファイル名は半角英数字」で統一しましょう。