Pythonの基礎的な処理を学ぶためのリポジトリです。
以下のソフトウェアをインストールしておいてください
- Git
- Python (Miniconda)
- Pythonは3系を使います。
- Python公式もありますが、Minicondaでのインストールを推奨します。
- プログラムを開発するための、好きなエディタ。以下がおすすめです。
以下が、Exerciseの手順です。GitもPythonも初めて、という方はWarming-upを参照してください。
- 右上にある「Fork」というボタンから、本リポジトリをFork(=コピー)してください。
- forkしたリポジトリを、
git clone
によって手元の端末に取ってきます。これで準備は完了です。 - 各フォルダの中にあるREADMEには、そのエクササイズで達成すべき課題が書かれています。Pointで示されているヒントをもとに、処理を完成させてください。
- エクササイズで実装したコードは、好きな名前で保存してください(なお、
ex
始まりのファイルは.gitignore
されています)。 - 各フォルダには、解答例が配置されています。わからない場合は、そちらを参考にしてください。
- Let's Execute Python
- Pythonプログラムを実行してみよう
- Collections
- Pythonで配列のデータを処理してみよう
- Find Pattern
- 文字列の中から特定のパターンを見つけてみよう
- Class
- Pythonのクラスと単体テストについて知ろう
- Use Packages
- 便利なライブラリを使って処理を実装してみよう
- Exception & logging
- 例外を処理し、記録しよう
本項はGitもPythonも初めて、という方のためにHow to beginの内容をより詳細に解説します。解説は以下の通りとなります。
本節の目標は、Gitというソフトウェアの機能とメリットを理解することです。
Gitはファイルのバージョン管理を行うソフトウェアです。Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼び、リポジトリ配下のフォルダ/ファイルのバージョンを管理することができます。Gitリポジトリを共有するサービスは様々ありますが、その一つが「GitHub」です。
「バージョン管理」を行うメリットは多くあります。例えば、バージョン間の差分を比較したり、あるバージョンに戻したりするなどです。「バージョン」は好きなタイミングで作成することができます。Gitでは、最小のバージョン管理の単位を「コミット(commit)」と呼びます。コミットは、好きなタイミングで作成できます。以下は、本リポジトリのあるコミットの内容です。前回のコミットと、今回のコミットとの間の差分を見ることができます。
バージョン管理を行うことで、複数人での作業も行いやすくなります。AさんとBさんが一緒に開発する場合、Aさんの修正とBさんの修正を両方反映したい、というケースが当然考えられます。完全に別々のパートを修正していれば簡単ですが、AさんとBさんが同じファイルを修正していた場合、互いの修正が反映されるよう注意深く作業する必要があります。Gitを使えば、この「注意深い作業」はGitが行ってくれます。異なるバージョンの修正を取り込むことを、「マージ(merge)」と呼びます。以下は、私が送られてきた修正をマージした例です。
icoxfog417 merged 2 commits into icoxfog417:master from JeffpanUK:master
と書いてあります。これは、私のバージョン(icoxfog417:master
)に、修正を送ってきてくれたJeffpanUK
さんのバージョン(JeffpanUK:master
)を取り込んだ(=マージした)ことを意味しています。GitHubでリポジトリを公開していると、このように他の人から修正を送ってもらえることがあります。これはオープンソースのメリットです。
修正を行う際はあるバージョンから分岐してそれぞれの修正を行います。先ほどの例ではAさんの修正、Bさんの修正、上の実際のマージの例ではJeffpanUK
さんの修正、といった形です。このような、あるバージョンから分岐した修正内容をその名の通り「ブランチ(branch)」と呼びます。Gitでは、どのブランチがいつ分岐し、どうマージされてきたのかという歴史を参照することが可能です。
GitHubでは、ブランチから行われる修正を「プルリクエスト(Pull Request)」と呼びます。
Gitには他にも多くの機能がありますが、基本的な機能は以上となります。学んだことを振り返ってみましょう。
- Gitは、バージョン管理を行うためのツールである。
- Gitでバージョン管理されているフォルダを「リポジトリ(Repository)」と呼ぶ。
- GitHubは、リポジトリ共有サービスの一つである。
- バージョンの最小単位を「コミット(commit)」と呼ぶ。コミットは、好きなタイミングで作成することができる。
- コミットを作成しておくと、コミット間の差異を確認できる。
- あるバージョンから分岐した修正のまとまり(コミットのまとまり)を「ブランチ(branch)」と呼ぶ。
- ブランチを分岐元に統合することを「マージ(merge)」と呼ぶ。
- GitHub上ではブランチから行われる修正を「プルリクエスト(Pull Request)」と呼ぶ。
以上が、Gitの解説となります。本節の最後に、実際にGitHubで公開されているリポジトリを手元にダウンロードしてみましょう。
最初に、Gitの設定を行っておきます。これは、変更したのが誰なのかを明らかにするための設定です。名前とメールアドレスを登録しておきましょう。
git config --global user.name "git taro"
git config --global user.email git.taro@example.com
まず、本リポジトリをコピーしてあなた専用のリポジトリを作成します。これは、GitHub上では"Fork"というボタンを押すことで実行できます。
次に、コピーしたリポジトリをダウンロードします。これは、git clone
というコマンドで行うことが可能です。git clone
で指定するURLは、コピーしたリポジトリの以下のボタンから確認できます。
実行が完了すれば、python_exercises
というフォルダが作成されており、その中にダウンロードされたソースコードが格納されているはずです。このフォルダはGitによるバージョン管理の対象となっているため、コミットを行うことでバージョンを作成することが可能です。
次節では実際にPythonのコードを書いてみて、コミットにより書いたコードを含む「バージョン」を作成してみます。
本節の目標は、実際にPythonのコードを書くことです。
実際に書くPythonのコードの解説については、Exercise 1の解説を参照してください。実装したコードを、my_answer_ex01.py
として保存してみましょう。
Pythonの書き方についての気になる点がある場合は、以下資料を参考にしてください。
本節の目標は、実装した内容をコミットでバージョン管理することです。
Pythonのコードを書いたファイルを作成したら、以下のコマンドを実行してみてください。
git status
すると、作成したファイルが表示されると思います。git status
は、バージョン管理の対象で、変更が行われたファイルを表示してくれます。なお、バージョン管理したくないファイルは.gitignore
で指定することができます。本リポジトリでは、ex
で始まるPythonのファイルはバージョン管理をしないようにしています。
では、実際コミットをしてみましょう。コミットの前に、コミットの対象とする変更(=バージョンに含める変更)を指定できます。つまり、複数の変更を行っていても「この変更はこのバージョン(コミット)に含める」「これは含めない」といった切り分けができるということです。以下のコマンドを実行してみましょう。
git add -A
-A
のオプションは、全ての変更をコミット対象とすることを意味します。ファイルを指定したい場合は、git add
の後に対象のファイルを指定します。add
によりコミット対象とされたものは「staged (cached)」されたファイルと呼ばれます。add
したファイルでバージョンを作成する(=コミットを行う)には以下のコマンドを実行します。なお、コマンド中のcommit message
は、このバージョンで行った変更の内容を簡単に記載します。
git commit -m "commit message"
コミットメッセージの書き方については、こちらが参考になります。これでコミットが作成できました!ただ、この変更はあなたの手元でだけ行われており、GitHub上には反映されていません。これを反映するには、push
を行います。
git push origin master
origin
はGitHub上のリポジトリを表し、master
はブランチを表しています。push
は送る操作ですが、送られた変更をローカルにダウンロードしたい場合はpull
を実行します。他のPCで作業した内容をpush
し、別のPCで作業する際にpull
する、というのはよく行う処理です。
git pull origin master
変更がpush
されているか、ぜひGitHub上で確認してみてください。変更の取り消しなど、より詳細な内容は以下の資料をご参考ください。
以上でWarming-upは終了です。この後もExerciseを進めて行ってみてください!