Pythonには対話的にプログラムを実行できるPythonシェルが備わっている。きっとPython学習の際に使ったことがあると思う。とはいえ学習用だけに限定するのは非常にもったいない。筆者は事あるごとに計算やカレンダー、フォルダを開いたりと、いろいろな用途に使っている。今回は、Pythonシェルを便利に使うアイデアを7つ紹介する。

Pythonシェルとは?

そもそも、Pythonシェルとは何だろうか。Pythonをインストールすると一緒についてくる対話式実行環境のことだ。WindowsでPythonシェルを起動するには、スタートメニューから「Python3.x > IDLE」を実行するか、PowerShellを起動して「python3」とタイプすれば良い。macOSではターミナル.appを起動して「python3 」とタイプしよう。

Pythonシェルが起動すると「>>>」と表示されるので、そこにPythonのプログラムか計算式などを記述すれば良い。プログラムか計算式を書いて[Enter]キーを押すと即時プログラムが実行され結果が表示されるという仕組みだ。

  • Pythonシェルの仕組み

    Pythonシェルの仕組み

Pythonシェルが良いのは、import文でモジュールを取り込んだり、変数に値を代入すると、それ以後の部分でずっと、モジュールや変数の値が有効になっているという点だ。そのため、Pythonシェルを立ち上げて、普段よく使う処理をモジュールに書いておけば、手軽に便利な機能を取り込めるようになる。

(アイデア1)電卓として使おう

Pythonの計算機能は非常に高機能だ。桁の大きいな計算もあっという間に答えを出してくれる。

例えば、2300万円の物件を購入するとき、不動屋に払う手数料はいくらか計算してみよう。仲介手数料は法的に「物件価格×3%+6万円」と決まっている。なお、Python3.6以降であれば100万円と書くときに「1_000_000」と分かりやすく3桁区切りに「_」を入れても良いので、大きな数を表現しやすい。

>>> 23_000_000 * 0.03 + 60_000
750000.0

あっという間に報酬は75万円と計算できた。もちろん、一度変数に代入しておけば計算式の意味を間違えることも少なくなりそうだ。

>>> price = 23_000_000
>>> price * 0.03 + 60_000
750000.0

なお、頻繁に計算するのであれば、そもそも関数にまとめて、モジュールに登録しておくという手もある。

>>> # 関数として計算式を定義
>>> calc_fee = lambda price: price * 0.03 + 60_000
>>> # 報酬を計算する
>>> calc_fee(23_000_000)
750000.0

(アイデア2) クリップボードを使おう

計算結果をクリップボードにコピーするには、Pythonシェルの画面から、普通にテキストをコピーすることもできるが、Pythonのモジュールの「pyperclip」を使うこともできる。WindowsならPowerShell、macOSならターミナルを起動して以下のコマンドを実行しよう。

python3 -m pip install pyperclip

インストールしたら、Pythonシェルを起動し直そう。そして、以下のように記述すると「pyperclip」のコマンドが使えるようになる。

>>> import pyperclip as clip

そして、「clip.copy(値)」のように書くとOSのクリップボードにコピーができる。先ほどの計算結果などを指定してみよう。

>>> import pyperclip as clip
>>> calc_fee = lambda price: price * 0.03 + 60_000
>>> clip.copy(calc_fee(23_000_000))

次の図のように、計算結果をメモ帳やWordなどに気軽に貼り付けできる。

  • クリップボードに計算結果をコピーしたところ

    クリップボードに計算結果をコピーしたところ

なお、pyperclipを使うとコピーだけでなく、クリップボードの内容を取得することもできる。取得する場合は「clip.paste()」と書く。

(アイデア3) カレンダーとして使おう

なお、Pythonシェルならカレンダーを表示するのも容易だ。

>>> import calendar
>>> print(calendar.month(2021, 10))
  • たった2行で指定月のカレンダーを表示できる

    たった2行で指定月のカレンダーを表示できる

これは、本連載の第20回目でも紹介しているテクニックだ。他にもオプションでいろいろな表示が可能なので参考にしよう。

(アイデア4) ネットワークの状態をチェックしよう

なお、Pythonでは手軽にOSに備わっているコマンドを実行できる。そのため、ネットワークの状態をチェックするのも簡単だ。以下のコマンドを実行してみよう。すると、Googleのサーバーと通信して通信結果を表示する。

>>> import os
>>> os.system("ping google.com")

なお、Windowsで上記のコマンドを実行すると、黒いコマンドプロンプトが起動し、そこにpingの結果が表示される。macOSの場合は、永遠とpingの結果が表示されてしまうので[Ctrl]+[C]キーを押してコマンドを中止しよう。

もし、コマンドの実行結果をプログラムで取得して、さらに何かやりたい場合には、以下のように「subprocess.check_output("コマンド")」を使う。以下は、WindowsでマシンのIPアドレスを取得するコマンドだ。

>>> import subprocess
>>> print(subprocess.check_output("ipconfig").decode("sjis"))

なお、check_outputメソッドの戻り値がバイナリデータであり、また、Windowsのコマンドの結果はShift_JISで返されるため、実行結果に対して、.decode("sjis")を指定すると人間が読めるテキストに変換できる。

  • ネットワーク情報も簡単にチェック

    ネットワーク情報も簡単にチェック

(アイデア5) OSの特殊フォルダを手軽に開こう

上記で紹介したOSコマンドの実行とも関係あるが、任意のフォルダを手軽に開くことが可能だ。以下はデスクトップのフォルダをエクスプローラーで開くコマンドだ。

>>> # Windowsでデスクトップを開く場合
>>> import os
>>> os.system("explorer %USERPROFILE%\\Desktop")
  • デスクトップのフォルダをエクスプローラーで開いたところ

    デスクトップのフォルダをエクスプローラーで開いたところ

他にも、「送るフォルダ」や「マイドキュメント」を開くには以下のように「explorer shell:sendto」や「explorer shell:Personal」など「shell:」の後ろをちょっと変更することで、任意のフォルダを開くことができる。

>>> import os
>>> #ドキュメント
>>> os.system("explorer shell:Personal")
>>> #送るフォルダ(SendTo)
>>> os.system("explorer shell:sendto")
>>> #スタートアップフォルダ
>>> os.system("explorer shell:startup")
>>> #フォントフォルダ
>>> os.system("explorer shell:Fonts")

なお、macOSでデスクトップフォルダを開く場合には以下のように記述しよう。

>>> # macOSでデスクトップを開く場合
>>> import os
>>> os.system("open ~/Desktop")

(アイデア6) よく使うプログラムをモジュールにまとめよう

上記のように、日々のPCライフを快適にするのに、Pythonシェルを利用すると非常に便利だ。Pythonには便利なモジュールが豊富に用意されているので、機能が必要になるたびに、モジュールを追加していけば、どんどん自分好みのCUI(コマンドラインで使えるインターフェイス)に育てていける。

なお、自分のよく使うプログラムをモジュールにまとめておけば、シェルを起動した直後にimport一発で呼び出せるようになる。なお、WindowsのIDLEを使ってPythonシェルを使う場合には、モジュール名をタイプすると、モジュールに用意されている関数を自動補完してくれる機能もあるので、非常に便利だ。

IDLEから使えるよう自分用のモジュールを作るのは簡単だ。例えばここで作るモジュールを「kujira.py」という名前で保存しよう。例えば、今回紹介したいくつかの機能を詰め込んだ以下のような内容のファイルを用意しよう。

#
# ファイルを「kujira.py」という名前で保存
#
# 不動産の報酬を計算する
def calc_fee(price): return price * 0.03 + 60_000

# クリップボードを簡単に使う
import pyperclip as clip
def copy(text): clip.copy(text)
def paste(): return clip.paste()

# カレンダーを簡単に使う
import calendar
def ym(y, m): print(calendar.month(y, m))

# OSのコマンドを実行する
import os, subprocess
def ping(addr="ping google.com"): os.system(addr)
def ipconfig(): print(subprocess.check_output("ipconfig").decode("sjis"))

そして、このファイルをPythonのデフォルトパッケージディレクトリに配置しよう。デフォルトパッケージディレクトリを調べるには、Pythonシェルで以下のように記述する。

>>> import sys
>>> for f in sys.path: print(f)
← ここでもう一度Enter

すると、複数のパスが表示される。それらしい場所(例えば、site-packages以下など)にコピーすれば良いだろう。

コピーしたらPythonシェルを再起動して以下のコマンドを実行してみよう。

>>> import kujira
>>> kujira.ipconfig()

するとWindowsであればシェルにIPアドレスが表示されるだろう。なお、WindowsのIDLEで補完機能を使うには、[Tab]キーを押すだけだ。便利なので活用しよう。

  • 今回紹介した機能をモジュールにまとめたみた

    今回紹介した機能をモジュールにまとめたみた

(アイデア7) ショートカットキーで呼び出せるようにしよう

今回、最後のアイデアだが、ショートカットキー(ホットキー)を登録しておいてPythonシェルをキー一発で呼び出せるようにしてみよう。ショートカットキーを登録するには、専用のアプリを利用しても良いが、Windowsの場合には簡単に実現する方法がある。

まず、スタートメニューから「Python 3.X > IDLE」を右クリックして「その他 > ファイルの場所を開く」をクリックし、IDLEのショートカットを表示しよう。そして、ショートカットを右クリックして「プロパティ」を表示しよう。そして、「ショートカット」という欄に起動したいキーを設定する。右クリックに設定が無い場合は、デスクトップなどにドラッグ&ドロップでショートカットアイコンを作成し、右クリックしよう。

  • ショートカットキーを登録すれば気軽にPythonシェルを起動できる

    ショートカットキーを登録すれば気軽にPythonシェルを起動できる

すると、指定のキー一発で、Pythonシェル(IDLE)が起動するようになる。

まとめ

以上、今回は、簡単なコマンドを実行することで、いろいろな操作を実現する「Pythonのシェル(IDLE)」を活用する方法を紹介した。普通に計算機として使うだけでも便利だが、Pythonならではの機能を手軽に利用することで、PCがより便利なものになるだろう。

今回紹介したように、よく使うコマンドをモジュールにまとめたり、ショートカットキーを割り当てたりするなどして、積極的にカスタマイズして、うまく活用しよう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。