Jupyter NotebookのTIPS3選|枠を広げる、シェルコマンド、マジックコマンド
Jupyter Notebookで全画面表示を行った時に、コードセルは狭いままだったりします。この記事では、コードセルを広げる方法と、よく利用するマジックコマンド(%, %%)を紹介します
枠を広げる
全画面表示すると無駄な領域ができてしまう
Jupyter Notebookはデータサイエンスやプログラミングのための非常に便利なツールですが、全画面モードで使用する際にコードセルの表示が画面中央に制限されることがあり、効率的な作業が妨げられることがあります。
せっかく解像度の高いもモニターを購入しても、有効に使えかなったらもったいないです。
ということで、ここでは、コードブロックの枠を左右に広げて画面を有効活用する方法について説明します。
やり方はいくつかあるみたいですが、ここで紹介するのは”コードブロックにHTMLを書いて実行”する方法です。
対処方法
無駄な領域とは
まず、Jupyter Notebookを通常通り起動します。プロジェクトやノートブックを開いてください。ここで、ノートブックを全画面表示するとこんな感じで左右に超無駄な空間があるかと思います。
この左右の無駄な空白は以下の手順でなくすことができます。
対処方法
空白をなくすには、以下のコードをコピーして、コードセルに貼り付け、実行してください。
%%HTML
<style>
div#notebook-container { width: 95%; }
div#menubar-container { width: 95%; }
div#maintoolbar-container { width: 99%; }
</style>
すると、左右が広くなります。notebook-container
、menubar-container
、maintoolbar-container
の値は好みで変更できますので変更してください。変更すると、それぞれに対応した部分のサイズが変化します。
個人的には、90%~95%くらいが使いやすいです。
シェルコマンドの実行
先頭に!
をつけることで、シェルコマンドを実行することができます。
最も利用するのは、pip
によるパッケージのインストールではないでしょうか。例えば、pytorchをインストールする場合は、以下のように記述します。
!pip install pytorch
また、Githubからコードをクローンする場合などにも利用します
!git clone https://(クローンするGitHubリポジトリ)
また、Pythonを実行することもできます。Google Colabでは、次に説明するマジックコマンド%%writefileで書き出したプログラムを実行する場合などに利用したりします。
!python test.py
マジックコマンド
マジックコマンドとは
Jupyter Notebookには、マジックコマンド(Magic Commands)と呼ばれる特殊な機能を備えています。これは%
または%%
に続けてコマンドを入力することで、特定の機能を実現するものです。
%と%%の違い
%
は1ラインに対するマジックコマンドで、%%
はセルに対するマジックコマンドになります。
たとえば、%time
は時間計測を行うマジックコマンドですが、以下のように書くとfunc(x)
の実行時間を計測します。
%time func(x)
一方、以下のように%%time
で記述するとセル全体の時間を計測します。例の場合は、func(x)
とfunc(y)
を実行する時間を計測します。
%%time
func(x)
func(y)
マジックコマンド一覧
以下は、私が頻繁に利用しているマジックコマンドの一覧です。なお、コマンドはIPythonのこのページで確認できます。
%time, %%time | 時間を計測する |
%timeit, %%timeit | 複数回しこうした結果を返す。n, rオプションで繰り返し数を指定。どちらも繰り返し数だが、rで指定した回数で平均と分散が計算される |
%ls | UNIXコマンドのls。!lsと似た動作 |
%cd | カレントディレクトリを変更。!cdではノートブックのカレントディレクトリは変化しないのでこちらを利用する必要がある。 |
%%html | セルがHTMLとして実行される |
%%writefile | %%writefile [-a] filename の形式で利用する。セルの内容がファイルに書き出される。-a をつけるとファイルに追加される |
%lsmagic | マジックコマンドを一覧表示する |
%%capture | セルの出力をキャプチャする。結果はセルに出力されなくなる。オプションとしして以下を指定可能。output は、CapturedIOオブジェクトの名前を指定する。output.show()で内容を出力可能%%capture [--no-stderr] [--no-stdout] [--no-display] [output] |
%%capture
はpipコマンドでインストールや、zipで解凍する場合に出力を表示させないために使われているのをよく見かけます。
まとめ
Jupyter notebookのTIPSとして、枠を広げる方法と、マジックコマンドについて説明しました。
これらを使いこなすと作業が楽になります。ノートブックを活用しましょう。