Pythonに慣れてきて、自作の関数やクラスを作成できるようになってきたど、「毎回コードセルに入力するのが面倒くさいな、もっと簡単にコードを再利用出来たら良いのに」とか感じてませんか?本記事を最後まで読むと自作の関数やクラスをモジュール化してGoogleドライブに格納してColabからインポート出来るようになります。
目次
全体概要
Google ドライブに自作モジュールを格納し、 Colab ノートブックから import して使用します。
Colab ならではのポイントは以下の2つです
それでは、詳しく説明していきます。
Google ドライブに自作モジュールを準備する
何はともあれ、まずは自作モジュールを作成します。
自作モジュールを作成する
本記事では、「SQLiteを使用するクラス」をコピーして「SQLite.py」という名前で保存します。このファイルを自作モジュールとして扱います。
モジュールをGoogle ドライブに格納する
下記フォルダ構成になるようにします。
作成手順
- Google ドライブにてColab Notebooks直下に MyPythonLibrary フォルダを作成
- MyPythonLibrary フォルダ直下に DBAccess フォルダを作成
- DBAccess フォルダ に先ほど作成した「SQLite.py」をアップロード
- DBAccess フォルダに「__init__.py」という名前の中身が空のファイルを作成してアップロード
これで自作モジュールの準備が完了です。
Colab のノートブックを作成して実行する
まずは、Colabで新しいノートブックを作成します。
実際に動かしてみる
本記事では下記流れで実行します。
- Google ドライブのマウント
- ワーキングディレクトリをColab Notebooksに変更
- 自作モジュールのインポート
- 自作モジュールの使用
1. Google ドライブのマウント
Colab にて下記コードを実行して Google ドライブをマウントします。
# Googleドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
2. ワーキングディレクトリをColab Notebooksに変更
Colabにてコードセルを追加して下記コードを実行します。
import os
print("カレントワーキングディレクトリは[" + os.getcwd() + "]です")
_colab_dir = "/content/drive/MyDrive/Colab Notebooks"
os.chdir(_colab_dir)
print("カレントワーキングディレクトリは[" + os.getcwd() + "]です")
※ワーキングディレクトリの概念については下記をご参考ください。
3. 自作モジュールのインポート
Colabにてコードセルを追加して下記コードを実行します。
from MyPythonLibrary.DBAccess import SQLite
4. 自作モジュールの使用
Colab にてコードセルを追加して下記コードを実行します。
自作モジュール「SQLite」が使用できます。
test = SQLite.Sqlite3Access("test2")
test.db_name
# select文を作成
_sql = """\
select *
from testtable
"""
test.printSelect(_sql)
【ご参考】その他の自作モジュールサンプル
実行中のオブジェクト情報を取得するモジュール
データ分析系サンプルコード
おわりに
本記事では、Colab で自作モジュールをインポートしてみました。
Linuxのコマンド操作について知っていると理解がより深まると思いますので
Linuxでよく使うコマンドをご参考頂ければと思います。
ご参考になりましたらtwitterをフォローしてSNSでシェアして頂ければ幸いです。
【付録】さらに理解を深めたい方たちへのおすすめ本
ゼロから学ぶPythonプログラミング Google Colaboratoryでらくらく導入 (KS情報科学専門書)
コードの再利用を進めるためにはオブジェクト指向の理解が必須です。
ちなみに、私はこの本から始めました。
さらに理解を深めるためには、デザインパターンを知る必要があります。
辞書としておすすめです。手元に置いておくといざという時に便利です。
【付録】演習
理解を深めるためには、実際に動かしてみるが一番です。
下記テーマを参考に、色々と動かしてみてはいかがでしょうか?
- データを登録したり、テーブルを作成したりしてみよう。
- 今回使用したモジュールを修正して、処理時間を小数第三位までのみを表示するよにしてみよう。
- 自分独自のクラスを作成してインポートしてみよう。