1. 環境構築を始める準備

Webデザインコース

まずは環境構築を始めるにあたって、必要なツールを用意しましょう。今回は「ターミナル」というツールを使用していきます。ターミナルとはコンピュータを操作するためのツールで、Progateの「Command Line 学習コース Ⅰ」などに取り組んだことがある人などは既に知っているかと思います。Macでは初期状態でターミナルがインストールされています。「Finder」を開き、「アプリケーション」の中にある「ユーティリティ」フォルダを開いてください。その中に「ターミナル」という項目がありますので、ダブルクリックで開いてみてください。アプリケーション > ユーティリティ > ターミナル以下のような画面を開くことができましたでしょうか?(人によっては背景色などが異なるかもしれません)

ここからはこのターミナルを用いてPythonの環境構築を進めていきましょう。実はMacでは標準でPythonがインストールされています。ですが、標準でインストールされているPythonは、ややバージョンが古い、という問題があります。※ バージョンとは
多くのプログラミング言語では「バージョン」と呼ばれる番号で状態を管理・更新しています。一般的に、数字が大きいほど最新のバージョンとなります。では実際に、今あなたのMacにインストールされているPythonのバージョンを確認してみましょう。
ターミナルに以下のコマンドを入力し、「Enter」キーを押して下さい。

python --version

何か数字が表示されましたでしょうか? 「python –version」の実行結果以下の画像では「2.7.10」と表示されていますが、多少数字が異なっていても問題ありません。いずれにしても一番最初の数字が「2」から始まっているかと思います。Pythonのバージョンのうち、バージョンを表す数字が「2」から始まるものを「2系」と呼びます。現在、Pythonではバージョンが「3」から始まる「3系」と呼ばれるものも存在します。Pythonの場合、「2系」と「3系」は異なっている部分が多く、コードの書き方も違います。Progateで学習した書き方は主に「3系」に対応していますので、特に理由がない場合には「3系」を利用するようにしましょう。


それでは次の章から、「pyenv」というツールを用いて、「3系」のPythonをインストールする方法を順に学習していきます。
「pyenv」の特徴として、「複数のバージョンのPythonを管理できる」という点があります。これまでに見てきたように、Pythonにはいくつものバージョンがあります。今後Pythonでの開発を進めていく中で、異なるバージョンのPythonを使用したくなったり、複数のバージョンを用いる必要がでてくるでしょう。今後の開発を楽にするためにも、少し時間はかかりますが「pyenv」を用いた環境構築方法を学習していきましょう!確認現在インストールされているPythonのバージョンを確認することができましたか?できた!

2. Homebrewのインストール

※ ここからの作業はインターネット通信を多く使用しますので、ネット環境の良い状態で進めてください。これから「pyenv」(パイエンブ)というツールを用いてPythonをインストールする方法を紹介していきます。前の章でも解説したように、pyenvを用いることで複数のバージョンのPythonを簡単に管理することができます。
しかし、その「pyenv」をインストールするためには「Homebrew」(ホームブリュー)というツールを用意する必要があります。Homebrewについて詳しくは 公式サイト をご覧ください。つまり、これから行うことを整理すると、

  • 「Homebrew」をインストールする
  • 「Homebrew」を用いて「pyenv」をインストールする
  • 「pyenv」を用いてPythonをインストールする

となります。まずは「Homebrew」のインストールから始めてみましょう。最初に、すでにHomebrewがインストールされているかどうかを確認します。他の言語の環境構築などを行ったことがある場合には、すでにインストールされている可能性もあります。
ターミナルで以下のコマンドを実行してください。

brew -v

ターミナルに brew: command not found と表示された人はまだHomebrewがインストールされていませんので、これからインストールをしていきましょう。
一方、brew: command not found とは表示されず、Homebrew 1.6.2(数字の部分は値が異なる場合があります)のように表示された場合は既にHomebrewがインストールされています。この章はスキップして、次の「3. pyenvのインストール」に進みましょう。Homebrewをインストールするには、以下のコマンドをコピーしてターミナルで実行します。
※ 複数行で表示していますが全部で1行のコマンドですので、全てコピーして実行してください。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

インストールの途中で「Enterキー」を押すことを求められますので、その際はEnterを押しましょう。この画面ではEnterキーを押すまた、途中でPCにログインする時に使用しているパスワードの入力も求められます。この画面ではキーボードを押しても何も表示されませんが、正常に入力されていますので落ち着いてパスワードを入力し、Enterキーを押してください。パスワードの入力画面しばらく時間がかかりますが、以下のような画面が表示されればインストール終了です。Homebrewのインストール完了!これでHomebrewがインストールできました。以下のコマンドを実行してください。

brew -v

Homebrew 1.6.2 のような文字が表示されれば、Homebrewは正常にインストールできています!

3. pyenvのインストール

次に、前の章で用意したHomebrewを用いて「pyenv」をインストールしていきましょう。こちらもまずはpyenvがインストールされていないことを確認してみます。以下のコマンドを実行してみてください。

pyenv -v

pyenv: command not found と表示された人はまだpyenvがインストールされていません。
一方、pyenv: command not found とは表示されず、pyenv 1.1.0(数字の部分は値が異なる場合があります)のように表示された場合は既にpyenvがインストールされていますので、次の「4. Pythonのインストール」に進みましょう。以下のコマンドをターミナルで実行して、pyenvをインストールしましょう。

brew install pyenv

以下のような画面が表示されればインストール完了です。pyenvのインストール完了!以下のコマンドを実行して、pyenvがインストールできたことを確認してみましょう。

pyenv -v

pyenv 1.1.0 のような文字が表示されればOKです!


次の章でpyenvを使用してPythonをインストールするのですが、その前にインストールしたpyenvの設定をしておきましょう。
以下コマンドを順にターミナルで実行してください。それぞれ実行しても何も表示されませんが、問題ありません。

echo $SHELL
  • 実行結果が /bin/bash の場合、以下4つのコマンドを実行してください。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
  • 実行結果が /bin/zsh の場合、以下4つのコマンドを実行してください。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

何をしたのかと言いますと、「.bash_profile」もしくは「.zshrc」というファイルに設定用のコードを追加しました。何が起きているかよくわからないかと思いますが、ここは気にしなくて大丈夫です。これでpyenvの設定は完了です!

4. Pythonのインストール

では、インストールしたpyenvを用いてPythonをインストールしてみましょう。最初にも紹介した通り、pyenvでは複数のバージョンのPythonを使用することができます。ではどのようなバージョンのPythonがインストールできるか確認してみましょう。以下のコマンドをターミナルで実行してみてください。

pyenv install --list

ものすごい量の文字が表示されたかと思います。ターミナルを上にスクロールすると、以下の画像のような、「3.6.5」のような数字から始まる箇所があります。「pyenv install –list」の表示結果ここに表示されているのは、現在インストールが可能なPythonのバージョンです。今回は比較的新しい「3.6.5」をインストールしてみましょう。
(もし「3.6.5」が表示されていない場合はインストールすることができません。その際は代わりに「3.5.0」などの表示されているバージョンをインストールしてみましょう。)まず、以下のコマンドを実行して「3.6.5」のPythonをインストールしましょう。

pyenv install 3.6.5

しばらく時間がかかりますが、以下のような画面が表示されればインストール完了です。インストール完了!次に以下のコマンドを実行してみてください。

pyenv versions

このコマンドでは、現在インストールされているPythonを一覧で確認することができます。以下の画像のように、3.6.5 が表示されていれば、ちゃんとインストールできたことが確認できます。「pyenv versions」の実行結果ただ、まだこの状態では 3.6.5 ではなく、Macに標準でインストールされているバージョンのPythonを使用してしまいます。
以下のコマンドを実行することで、今回インストールしたバージョンのPythonを使用するように設定を変更しましょう。

pyenv global 3.6.5

これで 3.6.5 のPythonが使えるようになりました!以下のコマンドを実行して確認してみましょう。

python --version

正しく設定ができていれば、3.6.5 と表示されたはずです。


これで最初の目的通り、「3系」のPythonを使えるようになりました!次の章では、自分のPCでPythonのコードを実行する方法を学習してみましょう。

5. Pythonのコードを実行する

それではPythonのコードを書いて、実行してみましょう。
まずは開発に必要なツールを用意しましょう。Pythonのコードを書くには「テキストエディタ」を用意する必要があります。「テキストエディタ」は、コードを入力する部分のことです。Progateの演習ページテキストエディタ(以下: エディタ)には様々な種類のものがあります。今回は無料で使用でき、初心者から現場のエンジニアまで幅広く使用されている「Atom」というエディタを使用しましょう。まだAtomをインストールしたことがない人は、HTML & CSS 環境構築 という記事の「1. テキストエディタの用意」の項目でインストール方法を紹介していますので、こちらを参考にしてみてください。次に作業用フォルダを用意しましょう。デスクトップ上で右クリックをし、「新規フォルダ」を選択して「python_lesson」という名前のフォルダを作成してください。デスクトップで右クリック「python_lesson」というフォルダを作成このフォルダをAtomで開いてみます。Atomを開いた状態で、画面左上の「File」から「Open」を選択し、先ほど作成した「python_lesson」フォルダ選択してください。「File」の「Open」を選択「python_lesson」を選択して「開く」をクリック次はPythonのコードを書くためのファイルを新たに作成していきます。先ほど表示したAtomのサイドバーにて、「python_lesson」という文字の上で右クリックをし、「New File」を選択します。フォルダ名の上で右クリック画面中央に入力欄が表示されますので、そこに「script.py」と入力し、Enterキーを押してファイルを作成します。ファイル名を入力※ ファイル名を間違えて作成してしまった場合
ファイル名を間違えて入力して作成してしまった場合にはファイル名を変更しましょう。サイドバーで変更したいファイル名の上で右クリックをし、「Rename」を選択することでファイル名を更新することが可能です。作成した「script.py」にPythonのコードを記述してみましょう。今回は以下に用意したコードをコピーして貼り付けてください。

print('Hello, World!')
print(1 + 2)

コードを書いただけでは変更は保存されていません。その画面で「command(⌘)」キーを押しながら「s」キーを押すことでコードを保存しましょう。ではこのコードの実行結果を確認してみましょう。Pythonのファイルを実行するにはターミナルを使用します。まず、以下のコマンドを実行してください。

cd ~/Desktop/python_lesson

python ファイル名

とすることで実行できます。今回は以下のようにファイル名を「script.py」として実行してみましょう。

python script.py

以下の画像のように、ターミナル上に「Hello, world!」と「3」が表示されましたか?script.py の実行結果これで自分のPCでPythonのコードを書き、実行する環境を整えることができました!

6. うまくいかない時のチェックリスト

うまくいかない場合は、以下のような間違いがないかチェックしてみましょう。

  • 記事で指定したコードが貼り付けられていない
  • 入力したファイル名やソースコードなどに誤字脱字がある
  • ファイルが保存されていない
  • 記事で指定している箇所にフォルダが配置されていない
  • コマンドの内容や実行している場所が違う

Pythonはシンプルで英語に近く、理解しやすいプログラミング言語です。
Pythonを使うとWebアプリケーション開発や機械学習、統計処理などといった様々なことが可能になります。
GoogleやFacebookなどのトップIT企業でも開発言語として採用されています。

文字列を出力してみよう

文字列print

それでは早速、Pythonのプログラムを動かしてみましょう。
「print」を用いると文字を出力(表示)することができます。
printの後ろの()の中に書いた文字が「コンソール」という画面に出力されます。

先ほどの例で用いた「Hello Python」という文字は、プログラミングの世界では「文字列」と呼ばれます。
文字列はシングルクォーテーション「’」またはダブルクォーテーション「”」で囲む必要があります。どちらで囲んでも出力結果は同じとなります。
どちらかで囲んでいない場合、コードは動かなくなります。

プログラミングでは、「数値」も扱うことができます。数値は文字列と違って、クォーテーションで囲む必要がありません。
数値は左図のように、数学と同じ記号「+」「-」を用いて、足し算と引き算が可能です。数値や記号はすべて半角で記述します。また記号の前後の半角スペースはなくても構いませんが、入れた方がコードが見やすくなります。

図のように、「3 + 5」は計算結果である「8」を出力してくれます。
一方、「’3 + 5’」のようにクォーテーションで囲むと、文字列として解釈されて、そのまま「3 + 5」が出力されます。
このようにプログラミングの世界では、文字列と数値は全く異なるものとして扱われます。

プログラミングでは、足し算・引き算以外の計算をすることもできます。
掛け算は「*」、割り算は「/」で表します。また、「%」で割り算の余りを計算することができます。
この3つの記号は数学で用いる記号と少し違いますので、しっかり覚えましょう。

ここからは「変数」について学習します。
変数とは、データ(値)を入れておく箱のようなものです。
この箱(変数)に名前(変数名)をつけることで、その名前を用いて変数に値を入れることや、変数から値を取り出すことができます。

変数を活用するために、まず変数を用意(定義)するためのルールを見ていきましょう。
変数は下図のように「変数名 = 値」で定義します。変数名はクォーテーションで囲む必要はありません。
また、プログラミングの「=」は「等しい」という意味ではなく、「右辺を左辺に代入する」という意味になるので覚えておきましょう。

次は変数の値の取り出し方について学習しましょう。
図のようにprint(name)とすると、変数nameの値を出力することができます。
しかし、print(‘name’)のようにクォーテーションで囲ってしまうと、nameが変数ではなく文字列として認識され、「name」とそのまま出力されてしまうので注意しましょう。

変数の値を更新する(1)

計算変数代入

今度は、一度定義した変数の値を更新してみましょう。
「変数名 = 新しい値」とすることで変数の値を上書きすることができます。
下図では、変数を途中で上書きしたことによって、出力結果が変わっています。

変数の値を更新する(2)

計算変数代入

すでに定義された変数に数値を足す場合は、左図のように書きます。変数自身に数値を足したものを再び同じ変数に代入することで、値を上書きすることができます。この書き方には違和感を感じるかもしれませんが、「=」は「代入」の意味であり、「等しい」の意味ではないことを思い出しましょう。
引き算などのその他の計算でも同様です。

変数の値を更新する(3)

計算変数代入

数値の入った変数の値を更新する場合は、図のように省略して書くことができます。これは引き算などその他の計算でも同様です。
この書き方はよく使うのでぜひ覚えておきましょう。

文字列の連結

文字列変数連結

数値の計算で用いた「+」記号は、計算だけでなく文字列の連結も行うことができます。
文字列の連結は図のようにします。
他にも、変数と文字列の連結、変数同士の連結をすることができます。

ここではデータ型というものについて学習していきましょう。
これまで「文字列」や「数値」という言葉で値の種類を説明してきましたが、これらは「データ型」と呼ばれ、さまざまなデータの種類が存在します。
まずは「文字列型」と、数値のデータ型である「数値型」を覚えましょう。

データ型の違い

データ型が異なるとコードは異なる動作をします。
例えば、図のprint(5 + 7)は数値の計算、print(‘5’ + ‘7’)は文字列の連結となります。

型変換 str

型str

データ型の異なる文字列型と数値型を連結すると、左図のようにエラーが起きてしまいます。しかし、数値型を文字列型に変換すると、文字列同士の連結として扱われるようになるため、連結ができるようになります。
このようにデータ型を変えることを「型変換」といいます。
数値型を文字列型に変換するには「str」を用います。

先ほどの例とは反対に、文字列型を数値型に変換したい場合には「int」を用います。
intは下図のように使います。

if文を用いると「もし○○ならば☓☓を行う」という条件分岐が可能になります。
if文は図のように書きます。ifの後に条件式を指定し、その条件が成り立つときに実行する処理を次の行に書きます。
詳しい書き方については次のスライドから見ていきましょう。

まずは、if文の条件の作り方を詳しく見ていきましょう。
条件式の中では、2つの値を比較するための記号「比較演算子」がよく使われます。まずは左図の2つを覚えましょう。
if文の条件部分は右図のように「if 条件式 :」のように書きます。

先ほどのスライドで紹介した真偽値に関する内容を踏まえて、もう一度if文を見てみましょう。
if文では条件式がTrueのときには処理が実行され、Falseのときには処理は実行されません。

比較演算子には、==と!=といった値の等しさを比較する記号以外に、値の大小を比較する記号が存在します。
数学でも用いられる<, >という大小比較の記号です。「x > y」はxがyより大きければTrue, 小さければFalseを返します。「x < y」はその逆になります。また数学で同様に用いる≧, ≦という記号(以上や以下を表します)は、>=, <=と記述します。

これまでに説明した代表的な比較演算子をまとめると下図のようになります。

ここではデータ型というものについて学習していきましょう。
これまで「文字列」や「数値」という言葉で値の種類を説明してきましたが、これらは「データ型」と呼ばれ、さまざまなデータの種類が存在します。
まずは「文字列型」と、数値のデータ型である「数値型」を覚えましょう。

データ型が異なるとコードは異なる動作をします。
例えば、図のprint(5 + 7)は数値の計算、print(‘5’ + ‘7’)は文字列の連結となります。

データ型の異なる文字列型と数値型を連結すると、左図のようにエラーが起きてしまいます。しかし、数値型を文字列型に変換すると、文字列同士の連結として扱われるようになるため、連結ができるようになります。
このようにデータ型を変えることを「型変換」といいます。
数値型を文字列型に変換するには「str」を用います。

文字列型を数値型に変換したい場合には「int」を用います。
intは下図のように使います。

if文を用いると「もし○○ならば☓☓を行う」という条件分岐が可能になります。
if文は図のように書きます。ifの後に条件式を指定し、その条件が成り立つときに実行する処理を次の行に書きます。
詳しい書き方については次のスライドから見ていきましょう。

if文の条件式が成立した時の処理を書くときには、インデント(字下げ)をします。
図のように、処理がif文の中にあるかどうかはインデントによって判別されます。条件が成立したときにif文の中の処理が実行されます。
Pythonではコードの見た目(インデント)がそのままプログラムの動作に影響するので、インデントに気をつけましょう。

if文の条件式が成立した時の処理を書くときには、インデント(字下げ)をします。
図のように、処理がif文の中にあるかどうかはインデントによって判別されます。条件が成立したときにif文の中の処理が実行されます。
Pythonではコードの見た目(インデント)がそのままプログラムの動作に影響するので、インデントに気をつけましょう。

リストも1つの値なので変数に代入することができます。
このとき、リストを代入する変数名は慣習上複数形にすることが多いので、覚えておきましょう。

リストの要素には、前から順に「0, 1, 2,・・・」と数字が割り振られています。これをインデックス番号といいます。インデックス番号は0から始まる点に注意してください。
リストの各要素は、リスト[インデックス番号]とすることで取得することができます。

リストの要素を更新してみましょう。
「リスト[インデックス番号] = 値」とすることで、リストの指定したインデックス番号の要素を更新することができます。

リストには、新しく要素を追加することもできます。
「リスト.append(値)」とすることで、すでに定義されているリストの末尾に新たな要素を追加することができます。

for文を使うと、リストの要素を順に取り出して処理を行うことができます。
下図のように「for 変数名 in リスト:」と書くことで、リストの要素の数だけ、処理を繰り返すことができます。
詳しい処理の流れは次のスライドで確認しましょう。

「for 変数名 in リスト:」とすると変数には、リストの要素が先頭から順に1つずつ入っていき、その上でfor文の中の処理が実行されます。処理はリストの要素の数だけ繰り返し行われます(繰り返し処理)。
また、変数名は自由ですが、リスト名の単数形にすることが慣習上多いです。

繰り返し処理にはfor文以外にもwhile文というものがあります。
while文を用いると、「ある条件に当てはまる間、処理を繰り返す」といったことが可能になります。
次のスライドでwhile文の書き方を見ていきましょう。

図のように、変数の値を更新する処理を記述する際にインデントを忘れるとwhile文の外と見なされてしまいます。よって、while文の条件式が永遠にTrueになるので無限ループとなります。
無限ループを起こさないためにもインデントには気をつけましょう。

ここでは繰り返し処理を繰り返しの途中で強制的に終了するための方法を学びましょう。
breakを用いると繰り返し処理を終了することができます。下図のようにif文などの条件分岐と組み合わせて使います。
while文でも同じように使うことができます。

繰り返し処理を終了するbreakと違い、continueはその周の処理だけをスキップすることができます。
continueもif文などと組み合わせて利用します。
while文でも同じように使うことができます。

関数を作ってみよう

まずは関数の作り方について学習していきましょう。
関数は「def 関数名():」のように定義します。
関数の処理の内容は、下図のようにインデントして書いていきます。

関数の使い方

関数は定義しただけでは実行されないので、呼び出して実行してみましょう。
関数名()のように() をつけて呼び出します。
ただし、関数は定義した後でしか呼び出せないので気をつけましょう。

引数とは

関数を呼び出す際に、関数に値を渡すことができます。
この値のことを引数といい、引数を渡すと関数の中でその値を利用することができるようになります。
関数に引数を渡せると、その値によって関数の処理結果を変えることができるので便利です。

関数に引数を渡すには、関数名(引数)として関数を呼び出します。渡された引数は、関数の仮引数に代入され、その値を関数の処理の中で用いることができます。

変数には、その変数が使える範囲が存在します。その範囲のことをスコープと呼びます。
仮引数や関数の中で定義した変数のスコープは関数の中だけとなります。よって、その変数を関数の外で使うことはできません。

複数の引数を渡すには下図のようにします。
引数の順番は、対応する仮引数の順番と同じにする必要があります。

引数の初期値

引数の初期値

引数には初期値を設定することもできます。
下図のように引数が省略されたとき、初期値が与えられていれば代わりの値として初期値が使われます。

名前を受け取ろう

じゃんけんをしよう

ここまでで関数の基礎的な知識を一通り学びました。
ここでは今までに作った関数を使って、下図のように入力に応じた処理ができるようにしていきます。

グー、チョキ、パーを要素とするリストを用意し、それぞれ要素のインデックス番号に対応する数字を入力することで、どの手を出すか選べるようにします。インデックス番号は、関数に渡す仮引数(hand)で受け取ります。

関数の処理結果を関数の呼び出し元で使いたい場合には、関数が戻り値を返すようにします。ここでは2つの引数を受け取って足し算を行い、結果を返す関数addを例に考えてみましょう。
関数addは「3」と「7」を受け取ると、処理結果の「10」を呼び出し元に返します。この「10」にあたるのが戻り値です。

戻り値を呼び出し元に返すには、関数の中でreturnを使います。
「return 戻り値」と書くことで戻り値を呼び出し元に返し、活用することができます。

戻り値がある場合、関数の呼び出し部分がそのまま値に置きかわります。
よって、下図のように関数の呼び出し部分を変数に代入することができます。

モジュールとは、Pythonのコードが書かれたファイルのことです。
別ファイルをモジュールとして読み込むことでそこに書かれたコードを利用することができます。
今までコードを記述していたscript.pyもモジュールです。ここでは関数の定義部分をscript.pyからutils.pyに移します。

importを使うことでモジュールを読み込むことができます。
モジュールを読み込んで使いたいファイルに、「import モジュール名」と書くことで読み込むことができます。
モジュール名はファイル名から拡張子(.py)を取り除いたものとなります。

読み込んだモジュールを使ってみましょう。
「モジュール名.関数名()」と書くことで、モジュール内の関数を実行することができます。
引数がある場合、関数を使用するときと同様に()のなかに書きます。

Pythonには便利なモジュールがいくつか用意されています。これらのあらかじめ用意されているモジュールは標準ライブラリと呼ばれ、importを用いて読み込むことで便利な関数を利用できるようになります。

ここではrandomモジュールに用意されている関数randintを用いて、コンピュータの出す手がランダムになるようにしましょう。
randomモジュールは下図のように読み込みます。
random.randint(x, y)と書くことで、xからyまでの整数をランダムに取得することができます。