// // //

Jupyter Notebookのマジックコマンド(マジック関数)の使い方解説

magic_00 Programming
magic_00
この記事は約5分で読めます。

Jupyter Notebook(IPython)には、それを利用する上で、いくつかのとても便利な機能がマジックコマンド(マジック関数)として標準のコマンド群として準備されています。簡単な記述で色々なことができるので、とても重宝する機能です。
マジックコマンドを使うことにより、ターミナル(Windowsではコンソール)のコマンドをJupyter Notebookから使ったり、Python以外の言語を組み合わせて使うことが可能になります。
マジックコマンドは大きく2つのグループに分けられ、1つはラインマジックと呼ばれ、もう1つはセルマジックと呼ばれています。この2つの違いを以下にまとめます。

  • ラインマジック:コマンドの先頭に「%」が付きます。引数はその行に収まっている必要があります。
  • セルマジック:コマンドの先頭に「%%」が付きます。引数は複数行にまたがっても大丈夫です。
スポンサーリンク

「?」と「??」、「!」、キーボードショートカット:「shift」+「tab」

magic_07
magic_07

マジックコマンドの細かい話に入る前に、知っていると便利はコツについてお話しします。

「?」と「??」


一つ目は、マジックコマンドの末尾に「」を追加して実行すると、そのコマンドの「docstring」が表示され、末尾に「??」を追加すると、そのコマンドのソースコードが表示されます。

magic_01
magic_01

上のスクショはマジックコマンド「%pwd」に「?」を末尾につけて実行した結果

magic_02
magic_02

上のスクショはマジックコマンド「%pwd」に「??」を末尾につけて実行した結果

「!」

Notebook上でOSのシェルのコマンドを実行するには、シェルコマンドの前に「!」を付与して実行します。

magic_03
magic_03

上のスクショの「!ls」はJupyter Notebook上でシェルコマンドを実行した場合、「%ls」はマジックコマンドを実行した場合です。

キーボードショートカット:「shift」+「tab」

Jupyter Notbookでは、アクティブセルでマジックコマンドにカーソル(縦棒)を合わせながら、「shift」+「tab」を押すと、「docstring」がツールチップで表示されます。

magic_04
magic_04

また、「shift」を押したまま、再度「tab」を押す(「tab」を二度押しする)とマジックコマンドの詳細内容が表示されます。

magic_05
magic_05
スポンサーリンク

マジックコマンドの紹介

それでは、主なマジックコマンドをラインマジック・シェルマジックごとに紹介します。ここであげるマジックコマンドは主に初心者の方に有益なものや代表的なものに限っています。これ以外のマジックコマンドについては、該当のマジックコマンド(#magicls, #magic, #quickref)で調べるなり、以下のリンクからIPythonの公式サイトにアクセスして調べてみてください。

LINK:IPython Build-in magic commands

ラインマジック紹介

magic_06
magic_06
  • %lsmagic:現在利用可能なマジックコマンドの一覧を表示してくれます。
  • %magic:マジックコマンドの情報を表示してくれます。
  • %time:これに続くコードの実行時間を測定し、結果を表示してくれます。
  • %timeit:これに続くコードの実行時間を何度か測定し、その中で最速であった結果と平均を表示してくれます。
  • %env:環境変数を取得したり、設定したりすることができます。
  • %bash, %script:Shellコマンドを実行することができます。
  • %who:現在宣言されている変数を表示してくれます。
  • %whos:現在宣言されている変数とその型、内容を表示してくれます。
  • %pwd:現在のディレクトリを表示します。
  • %history:コードセルの実行履歴を一覧で表示してくれます。
  • %ls:カレントディレクトリーのファイルを一覧で表示してくれます。
  • %matplotlib inline:pyplotなどでグラフを描写すると結果が別ウインドーが開きそこに表示されますが、このマジックコマンドを使うとnotebook内にグラフが表示されるようになります。
  • %matplotlib tk:別ウインドーにインタラクティブなグラフを表示してくれます。
  • %matplotlib notebook:inlineを指定した場合と同様に、コードセルの下にグラフを表示してくれます。グラフはインタラクティブなグラフになります。
  • %quickref:クイックレファレンス一覧を表示してくれます。

セルマジック紹介

magic_08
magic_08
  • %%timeit:%timeitの機能をセル内のすべてのコードに適応します。
  • %%html, %%HTML:htmlのコードの記述、実行を可能にします。
  • %%!, %%sx, %%system:shellコマンドの実行を可能にします。
  • %%js:Javascriptのコードの記述、実行を可能にします。
  • %%ruby:rubyのコードの記述、実行を可能にします。
  • %%perl:perlのコードの記述、実行を可能にします。
  • %%python:pythonのコードの記述、実行を可能にしま

興味のあるマジックコマンドがあれば、実際にJupyter Notebookを立ち上げてコマンドを打ち込んで実行してみてください。「百聞は一見に如かず」です。色々と試して、少しづつ自分の知識に加えていってください。

スポンサーリンク

まとめ

magic_09
magic_09

Pythonの学習環境として、また、データの分析、解析環境として非常に便利なJupyter Notebookですが、今回ご紹介したマジックコマンドを合わせて使うことにより、他のコンピュータ言語を併用したり、複雑な作業を簡単は記述で済ませることができるようになります。Jupyter Notebookに関しては、その実装の方法に始まり、ショートカットマジックコマンドとご紹介してきました。今後は機会があれば、Jupyter NotebookのExtensionをご紹介しようと考えています。
それでは、最後までお付き合い頂き、ありがとうございました。さようなら。

コメント