eljefeblog 

Any sufficiently advanced technology is indistinguishable from magic

programming

【環境設定編】Pythonプログラミング入門

Pythonプログラミング入門



初めてPythonでプログラミングを学ぶ上で
code styleやsyntax, built-in toolなどを理解する必要があり、
たくさんの時間を必要とするでしょう。  


一方で、Pythonのコーディングに一旦慣れてくると
Pythonでの開発環境に気を配ることができるようになります。
この開発環境を整えることでプロジェクトの開発を
大幅に加速させることができるようになります。


これは言わば貴方だけのecosystemであり
コードの入力に対する煩わしさを極限まで減らし
次に行うプロジェクトに割く時間を増やせるのです。


初心者Pythonプログラミングを学び
自分だけの効率的な開発環境を作りたいですか?


この記事では
以下の疑問に回答します。

どのShellを使用するべきなのか?

どのversionのPythonを使用するべきなのか?

異なるプロジェクトをどのようにして管理するのか?

Pythonを使用する上で仕事に応用できるツールは何があるのか?

こういった疑問を持つ人に対し
自分なりの回答を持てるようになればプログラマとして
一歩成長できるでしょう

1.Shellについて


コンピュータに詳しくない方が一般的に使用するものは
GUI(Graphical-User-Interface)と呼ばれ、マウスでボタンをクリックする
などしてPCを直感的に操作できるものです。
 

一方でシステムエンジニアなどPCに対し専門知識を持っている人間は
CLI(Command-Line Interface)を使用します。


コンピュータに直接Command(命令)を入力し操作します。
この時、その(テキストベースの)Interfaceを提供するのがShellです。


一般的にShellは独自のプログラミング言語を提供しており
ファイルやソフトウェアなどを直接操作することができます。
またShellにも種類があり、PCのOS(Operating System)毎に
様々な仕様・ルールがあります。


本節では
これらShellの中からエンジニアとして知っておくべき
有名なものを簡潔にリスト化しました。
基本的には同じような機能を提供していますが
それぞれ特徴があるため、要点を抑えていきましょう。

Unix Shell


Unixは計算機の歴史と結び付きが深く、
古くから親しまれてきたOSです。

人気である事実は
今日の皆さんのスマートフォンにも現れているでしょう。

アンドロイドに実装されているLinuxやAppleが提供するPC、Mac BookのmacOSなど
これらのOperating SystemはUnixの影響を強く受けており、Unixから派生したOSと言えます。

初めてのShellはこのUnixやUnixに派生したOSを
操作するために開発されたものです。

Bourne Shell(sh)


Bourne Shellは電話を初めて開発したとされるBell研究所に所属する
Stephen Bourneによって、1979年に開発されたShellです 。

このShellは環境変数・条件分岐・ループといった
現在のプログラミング言語になくてはならない
アイディアを初めて取り入れたことが有名でしょう。

今日における様々な種類のShellにおいて
ベースとなっており、未だ多くのシステムで使用されています。

Bourne-Again Shell(bash)


通称bashと呼ばれ、Bourne Shellの成功を元に改善を加えたShellです。
user-interactionの特徴改善が行われTab補完(次の入力文字の予測)や履歴保持
Command検索機能などの特徴を持っています。

加えてbashのプログラミング言語では
配列など、さらなるデータ型が提供されました。

Z Shell(zsh)


恐らくMac Book ユーザーの開発者であれば
現在このShellが最も使用されているものでしょう。

通称zshは別名”究極のShell”と呼ばれ、様々なShellの種類から
良い特徴だけを1つにまとめた様に感じます。

スペルミスで入力されたCommandに対する自動修正機能や
複数のファイルを簡潔なCommnadで操作できる特徴を兼ね備えており
更には自分でCommadを作成する事すら可能です。

またzshはdeepなカスタムにも対応しており
Oh My Zshプロジェクトでは豊富なテーマやプラグインが提供され
開発しやすい自分好みのShellを作成する事ができます。

現在macOSではzshがデフォルトのShellとして出荷されており
さらに人気が加速しています。
エンジニアとしてzshに慣れておくことは開発速度だけでなく
あなたの成長にも大きく寄与する事が言えるでしょう。

CMD


これまでUnix系列のShellを取り上げてきました。
もう一つの大きな派閥であるWindowsのShellについても
言及しておく必要があるでしょう。

CMD(“command”の略称)はWindows Userの為に用意された
デフォルトで使用できるShellです。

このShellはDOS(disk Operating System)のために開発されており、
UnixとDOSはそれぞれ全く独自に開発されていることから
commandやsyntaxはUnixのそれと大きく異なります


しかしながらファイル操作やcommandの実行方法など
最もコアな機能については類似した点が散見される事から
共通点がないとは断言できないShellです。



様々なShellを紹介しましたが
初学者が初めてShellに触れるのであれば
MacBook UserであればZ-ShellWindows UserであればCMD
を使用する事が自然な流れでしょう。

慣れてくれば様々なShellを勉強し
自分が最も好感が持てるものを選ぶと良いです。

2.Terminal入門



MaicroSoftの創業者ビル・ゲイツが家庭用小型コンピュータを普及させる以前
初期の開発者たちは大型コンピュータを操作する為、terminalを使用してきました。


当時terminalはcommandを入力するキーボードと
その入力を映し出すスクリーンやプリンターの機材のことであり、
その名残は今のPCにも残っています。


今日、コンピュータは持ち運びが出来るほど軽量化され
いくつもの電子機器を使用せずともPCを操作できる様になりました。


Shellは私たちが使用するpromptやinterpreterのinterfaceとなる
テキストベースのCLIツールを提供しており
これはterminal emulator(省略してterminal)と呼ばれる
Shellにアクセスする為のグラフィカルアプリケーション
です。


あなたが出会うであろうどんなterminalであっても
おおよそ以下の特徴を捉えているでしょう。

・コマンドの出力やコードの意味を区別する為テキストをcoloringするsyntaxハイライト機能
・これまでのコマンドの履歴を確認する事ができるスクロール機能
・他のプログラムで使用したコードを移植する事ができるCopy/Paste機能
・プログラムの段落を区別する為のワンクリック操作可能なtab機能

以下macOSとWindowsで使用されるterminalの一部をそれぞれ紹介します。

macOS terminal– Terminal


もし貴方がMacBookユーザーであれば、
一度は備え付けられたTerminal appを使ってみた事があるかもしれません。

このTerminalは役に立つ全ての機能をサポートしており
color schemeやいくつかのhotkeyをカスタムする事が許されています。

とても基本的なツールであり
エンジニアは操作方法を熟知しておく必要があるでしょう。

Windows terminal– Command Prompt


Shellを実行する選択肢としてWindowsは幅広いoptionを用意しています。
特定のShellでの使用のみを目的としたsoftwareもあり本当に多彩です。

中でもCommand Promptが基本的な物でしょう。
このSoftwareはグラフィカルアプリケーションでありCMDの使用を想定し
些細なタスクをこなしたい場合(ファイルを日付順に並び替える)など
とても簡単な操作を実現しています。


ターミナルに関して実践編に近いさらに詳しい情報はこちら↓↓




3.Pythonにおけるversion管理



前回の記事
でも述べた様に
Pythonには様々なversionが用意されています。


プロジェクトによってはPythonのupdateに伴い、
使用したいversionが1つで統一する時、複数のversionに対応している時など
多様に異なっていく事でしょう。


結局のところそういった複数のプロジェクト毎に
versionを切り替える必要性が出てくる為
管理していかなければなりません。


macOSとほとんどのUnixOSではPythonがデフォルトでインストールされており
これはsystem Pythonと呼ばれています。これはこれで良いのですが
Pythonにはversionを切り替える質の高いライブラリがすでに提供されています。


本節ではそれらを紹介していきます。

Pyenv

PyenvはmacOS上で様々なversionのPythonをインストールしたり
管理するのに使用される成熟したツールです。
使用するにはHomebrewでのインストールを推奨しています。


貴方がWindowsユーザーであるなら
pyenv-winが用意されています。


Pyenvをインストールする事ができたら
すでに貴方は少しのコマンドでversion管理を行う準備が完了しています。

$ pyenv versions
* system
$ python --version
Python 2.7.10
$ pyenv install 3.7.3 
* system 
  3.7.3


上記の様に現在のセッションで使用したいversionを
globalであれ、部分的なプロジェクトであれ切り替える事が可能です。

注意が必要なのは今の開発環境のみでのversionの切り替えが行われているのであり、
全体の切り替えは行われていない事です。

$ pyenv global 3.7.3
$ pyenv versions
* 3.7.3 (/Users/貴方のユーザー名/.pyenv/versionにセットされます)

$ pyenv local 3.7.3
$ pyenv versions
* 3.7.3 (/Users/貴方のユーザー名/プロジェクト名/.python-versionにセットされます)

$ pyenv shell 3.7.3
$ pyenv versions
system
*3.7.3 (PYENV_VERSION環境変数にセットされます)

$ python --version
Python 3.7.3

特定のPythonのversionを仕事で、
最新のversionをプライベートのプロジェクトで
使用する必要があった為いろいろ試しており
私の環境では円滑にversion管理ができることを確認しています。

ぜひ活用できるように勉強してみてください。

まとめ


いかがだったでしょうか?

本記事ではPythonを使用したプログラミングにおける
環境設定について、様々な基礎知識を提供しました。

自分好みの開発環境を整え、
円滑にプロジェクトを進める事ができる様
勉強してみましょう!


続編はこちら↓↓




人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します







このエントリーをはてなブックマークに追加




data-ad-format="rectangle" data-ad-format="rectangle"

返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

某国立大学大学院(理系)に所属しています。 最近の趣味は人工知能関連の論文を読む事で 研究ではComputer Vision周りを中心に活動しており、 サイドワークとしてデータ分析の業務に関わっています。 本ブログはこれまで筆者が学んできた様々な知識の中から 有益だと思えた情報のみをまとめたものです。 内容は個人の見解であり、所属する機関と関係するものではありません。 Research: is related to Computer Vision Hobby: is to study Artificial Intelligence / Machine Learning.