こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。
プログラミングをやっていく中で、どうしても欠かせないツールに、いわゆる黒い画面があります。この黒い画面とは、Windowsならコマンドプロンプト、macOS・Linuxならターミナルと呼ばれているものです。
このコマンドプロンプトやターミナルを使うと、Pythonで書いたスクリプトを一番簡単な実行することができるのですが、今回はPythonとコマンドについてお話したいと思います。
■コマンドを入力してコンピュータを操作するCUI
マウスなどで視覚的に操作するWindowsやMacの画面のようなものを、GUI(グラフィカルユーザーインターフェイス)と言います。一方、コマンドプロンプトやターミナルは、コマンドを打つことで、コンピュータに命令を与えるものになりますが、こういったツールのことをCUI(キャラクターユーザーインターフェース)と言い、プログラマの中でもよく利用されます。
CUIはスクリプトを実行するだけでなく、ライブラリなどのインストールや動作でも使われます。
昨今はJupyter Labのようなブラウザ上でPythonのコマンドを入力・実行して結果が返ってくるツールがありますが、GUI的にアイコンを用意してメニューからJupyter Labを起動できるようにしている人や、Jupyter Labの起動にCUIを利用している人もいます。
ちなみにGoogle ColaboratoryはコマンドラインでCUI操作せずとも利用できます。
このように、プログラミングをしていれば、CUIを使う場面は必ずありますので、どこかのタイミングで学習しなければならない分野であることは間違いありません。
ただ、30年ほど前まではCUIでコマンドを入力してコンピュータを操作することが一般的でしたが、この長いコンピュータの歴史を経て、昨今は多くの操作がマウスクリックで完結できるGUIで操作するのが一般的になっており、CUIが使われることが減ってきているのは確かです。
それにもかかわらず、なぜCUIをプログラミングで使う必要があるのでしょうか。
■プログラミングにおけるCUIの必要性
CUIはコンピュータに文字を使って直接メッセージを送るため、コンピュータの中を直接的に操作しに行くのがやり易いツールです。そして、やり易さや簡単さは差し置いて、基本的に、GUIでやっていることは、CUIで行うことができます。
Linuxを中心に使っている人にとっては、CUIを使って直接コンピュータの設定をすることは当たり前のことですが、プログラミングをする人にとっても、コンピュータに直接何かしらの命令を送り、計算などの処理をさせたいとなれば、CUIの方がやり易いという場面は多々あります。
例えば、FinderやエクスプローラーのようなGUIの場合、ファイルを移動するにはドラッグ&ドロップする必要がありますが、CUIはコマンドで直接的に操作するので、ドラッグ&ドロップより操作が速くなります。同様に、ファイルを削除するときには、GUIの場合は右クリックして、捨てた後に、ゴミ箱を空にするという動作をします。CUIの場合は、直接操作することになるため、安全性は失われますが、コマンドを一つ打つだけで完全に削除することができます。
このように、CUIを使うとコンピュータに対して直接的な操作ができるため、プログラミングで何らかの結果を出したいのであればCUI操作ができるようになっておいたほうが、Pythonプログラムを直接的に制御しながら実行できるため、慣れてきたら便利になりますし、必須の技術です。
■覚えておきたいよく使うコマンド
とはいえ、CUIはGUIに比べ、直感的ではないのは事実で、いくつかのコマンドを覚え、コマンドプロンプトに入力して実行する必要があります。すべてのコマンドを覚えるのは難しいので、ファイル操作などのよく使われるコマンドを優先して覚えておくといいでしょう。
ただCUIでコマンド操作するときの注意点として、直接的な作業をするために大事なものをうっかり消してしまっても復旧できませんので、変にコマンドを入力しないように注意しましょう。
作業内容 | Windows | macOS・Linux |
カレントディレクトリの変更 | cd | cd |
ファイル一覧表示 | dir | ls |
ファイルコピー | copy | cp |
ファイル移動 | move | mv |
ディレクトリ削除 | rmdir | rm |
ディレクトリ作成 | mkdir | mkdir |
※カレントディレクトリ=今作業しているフォルダ(以降、ディレクトリ)
※各コマンドはその後にディレクトリやファイル、オプションなどを指定しますが、上表では割愛します。
※Windowsの場合、PowerShellを使うのであれば、macOS・Linuxのコマンドが利用できます。
■コマンドプロンプトを使う時に注意したいことと、ディレクトリ構造
コマンドラインで操作する上で重要なのは、今、自分がどのディレクトリで作業をしているかを意識して作業することです。
ディレクトリはツリー構造になっていますので、階層があり、rootが必ず存在します。例えば、Windowsは「C:\」、macOS・Linuxは「/」がrootです。ここから、Windowsなら「¥」、macOS・Linuxなら「/」で区切られる形で下に階層ができていきます。これはGUIでもCUIでも同じ仕組みです。
GUIで想像するとわかりやすいと思いますが、ファイルのコピーや削除、移動などをしたいとき、ツリー構造になっているディレクトリの中から、作業したいディレクトリに移動してから作業しますよね。
これはCUIでも同じで、該当するディレクトリに移動する必要がありますが、その移動時に利用するのが[cd]コマンドです。
[cd]コマンドでも、[copy]や[move]などのその他のコマンドでも、ディレクトリやファイルを指定します。この時、カレントディレクトリに該当のファイルがあるのであれば、そのままファイル名を書くことができますが、ディレクトリを含めたパスを相対パスか絶対パスで指定する必要があります。
例えば、C:\Users\(ユーザー名)\test¥hallo.txtというファイルがあり、カレントディレクトリがtestだったときに、hallo.txtをtestディレクトリのある階層(カレントディレクトリの1つ上)にある別のディレクトリ(test2)にコピーしたいというケースでは次のように書きます。
絶対パス:[copy hallo.txt C:\Users\(ユーザー名)\test2]
相対パス:[copy hallo.txt ../test2]
※同じディレクトリ内にコピーするのであれば、ディレクトリ名を記述するのではなく、新たにつける名前を記述します。(例:copy hallo.txt hallo_back.txt)
よく利用されるのは相対パスですが、わかりにくいのであれば絶対パスで記述するので問題ありません。
ただ、ディレクトリ名などを正確にタイピングするのは面倒なこともあります。特に絶対パスでの指定は大変です。そういったときにはTabキーを使うと、候補を出して補完してくれます。また、矢印キー(↑↓)を何度か押すと、使用したコマンドの履歴が表示されます。同じコマンドを何度も使用したい場合や、ちょっと変えて使いたいときなどに便利な機能です。ぜひ使ってみてください。
コマンドは何度も使ううちに、今どこで何の作業をしているかがわかるようになります。
上記で書いたコマンドはあくまで一例ですし、オプションを使うこともありますので、必要に応じて調べてくださいね。
余談ですが、Windowsの¥マークは、実際はバックスラッシュです。これは古くからWindowsで使われている日本語用のエンコーディング(CP932)においてバックスラッシュを¥マークと表記されることになっているからです。そのため、海外ではバックスラッシュで表記されています。最新のWindowsではバックスラッシュで統一されているようですね。
■Pythonファイルはコマンドプロンプトで起動できる
紹介したコマンドは最初からOSに備わっているコマンドですが、コマンドを追加することもできます。
例えば、Pythonがインストールされていれば、コマンドにWindowsなら[python]、macOSやLinuxの場合は、[python3]と入力すると、対話モードを立ち上げることができます。これはOSに対してPythonのコマンドが追加されており、コマンドプロンプトからPythonのファイルを直接的に実行することができるということになります。
ただ、注意しなくてはならないのは、OSには様々なコマンドがインストールされていますので、どの順番で何が呼び出されるかはOS側が決めるという点です。この呼び出しには、環境変数のPATHが影響してきます。
この環境変数のPATHは、Windowsの場合にはPythonをインストールする際にチェックしないと反映されません。画像で言う①の部分ですね。私はここにチェックを入れることをおすすめしています。なお、Windows以外は自動でPATHに入ります。
これによって、OSがコマンドを呼び出す際の名前解決がスムーズになり、Pythonというコマンドをコマンドプロンプトから直接呼び出すことができるようになります。環境変数のPATHが通っていない場合は、フルパスでコマンドを呼び出す必要があります。
ちなみにmacOSの場合は自動でPATHが通るようになっています。
とはいえ、WindowsにはLauncherというPythonファイルを実行するものがありますので、そちらで起動するでもかまいません。
■さいごに
プログラミングをする上で、CUIというコンピュータを操作する手段は、必要な知識のひとつです。
繰り返しになりますが、CUIは慣れるまでは不便に思うかもしれませんが、慣れれば便利なことがたくさんあります。CUIを使う際は、自分が今どこのディレクトリで何の作業をしているのかをしっかり意識しましょう。そのためにもディレクトリの構造をきちんと理解しましょう。
どのディレクトリで作業するべきか、迷子になることもあるかもしれません。その時は、作業専用のディレクトリを作って対応していくという工夫をするのもいいと思います。このあたりについては別のコラムで説明していますので、ぜひそちらもご一読ください。
Pythonをローカル環境で開発するなら気を付けたいこととpathlibのすすめ