# Python環境の準備

## どの環境を選ぶか

pythonを使うにあたり、色々と決めなければならないことがあります。pythonのバージョンはどれを選ぶか？ コードエディターはどれを使うか？　パッケージの管理はどうするか？ ここでは怠惰な人向けに、uvというパッケージ管理ソフトを使います。~~最新版のAnacondaとconda、それに付随してインストールされるJupyterLabを使います。（仮想環境など、発展的なことは必要になったときに理解して使えば良いという立場でいきます。）~~（**Anacondaのライセンス変更にともない、変更しました）**

物理の実験用解析ツールとして考えたときに、他に使えそうなのはspyderやpycharmのscientific mode(academic licenseあり)といったところがあると思います。興味のある人は使ってみてください。

## ~~Anacondaのインストール~~

~~**（追記：Anacondaのライセンス変更にともない、別の環境を選んだほうが良いです）。**&#x96E3;しいことはありません。~~[~~公式サイト~~](https://www.anaconda.com/)~~から、Products→Distributionを選んで自分の環境にあったものをダウンロードし、インストールしてください。~~

## uvのインストール

{% embed url="<https://docs.astral.sh/uv/getting-started/installation/>" %}

に従い、インストールします。つまりmacの場合、ターミナルを開いて

```
curl -LsSf https://astral.sh/uv/install.sh | sh
```

を実行。

windowsの場合についてもコマンドプロンプトを開いて

```
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

を実行すればインストールできます。

## 仮想環境の準備

必須ではないのですが、今後のために仮想環境を作っておきます。つまりpythonで実験データの解析をするフォルダ/ディレクトリまでterminalで移動しておいてから

```
uv venv
```

を実行しておきます。

## パッケージの準備

どんなプログラミング言語でも、プログラミングをする際には、「世界中の誰かが提供してくれた有用な既存のプログラムのまとまり」を利用することが普通です。pythonではこの「世界中の誰かが提供してくれた有用な既存のプログラムのまとまり」をモジュールと呼びます。そして、似たような目的を持った複数のモジュールをひとまとめにして提供しているものをパッケージと呼びます。自分が、今後何度も使う可能性のあるパッケージは予めインストールしておく必要があります。この作業を行うのがパッケージマネージャです。

pythonのパッケージを管理してくれるパッケージマネージャとして有名なものの中から、ここではuvというパッケージマネージャーを使うことにしましょう。~~基本的に、どちらでも好きな方**だけ**を使えばよいのですが、anacondaを使ってpythonの環境を用意した場合には、可能な限りcondaを使ってパッケージをインストールするようにしましょう（~~[~~その理由について、例えばこのページを参照~~](http://onoz000.hatenablog.com/entry/2018/02/11/142347)~~）。~~

~~anacondaをインストールする際に、物理実験の解析に必要なパッケージは概ね自動的に一緒にインストールされますが、足りないものもあります。必要に応じて追加していきましょう。~~

この入門では、実験データ解析に必要な以下のパッケージをインストールします。

* numpy
* scipy
* matplotlib
* ipympl

インストールは基本

```
uv pip install numpy
```

のようにuv pip installのあとにパッケージ名をつけることで実行できます。すべてのパッケージについてインストールを行ってください。うまくいかない場合は、公式サイトなどを検索してみてください。

今回に限らず、「わからないな」とか「知りたいな」と思ったらchatgptに聞いたり、web検索を積極的に利用しましょう。情報が多いのがpythonのいいところです。ただし、古い情報や間違った情報も一緒に引っかかる可能性があります。複数の情報源をしらべる。公式情報をしらべる。英語の情報をしらべる。といった、web検索する際の基本的なコツを念頭におくとよいでしょう。

## JupyterLabを使う

uvがインストールできていればjupyterlabを使うことができます。

```
.venv/bin/jupyter-lab
```

として、jupyter labを実行してください

## JupyterLabの概要

JupyterLabを最初に立ち上げると、勝手にuntitled.ipynbというタブが開いていると思います。開いていない場合はメニューのfileからNew → Notebookで新しいnotebookを作りましょう（kernelはpython 3を選択しましょう）。

![図；JupyterLabの外観](https://1559620454-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEGDe0jc4Gum8QxA8RN%2F-MFhz7hwVOBao_s4BiWb%2F-MFiAOXZ-WAi54fbaPsx%2Fjupyterlab.png?alt=media\&token=3564362a-c8ab-4d80-9819-879ae72aac6b)

JupyterLabでは、notebookという形式でpythonを実行します。画面右側にはnotebookが表示されており、画面左側にはファイルを操作したり、拡張機能を操作したりするウィンドウが表示されています。

通常、プログラムを組むときには複数行のコードをまとめて一度に実行するのが普通です。そこで、JupyterLab ではこの複数行のまとまりを一度に実行するために、複数行の python のコードを書くことができる領域として「セル(cell)」という概念があります。このセルをさらに複数ひとまとめにしたものを一つのファイルとして管理します。このファイル一つのことをnotebookと呼びます。1つのセルの中のコードはまとめて全部実行されてしまいますが、どのセルをどのタイミングで実行するかは自分で決めることができます。セルの実行結果は、同じノートブック内で、***以後に実行するコードのすべてに影響します***。また、セルは、いつでも追加したり削除したりできます。セルの内部では、キーボードやマウスを使って、コードを入力していきます。

セルを追加したり修正したり実行したりといったことを自由にできるのが、このノートブックの良いところです。特に、実験データをトライ・アンド・エラーしながら解析してく際には、非常に便利です。あーでもない、こーでもないと考えながらデータを解析するのに向いています。しかし逆に、***どのセル・どのコードをどの順番で実行したかが、あとからわかりにくい***&#x3068;いう問題点があります。この欠点を意識してノートブックを適宜整理するようにしましょう。例えば、解析のやり方がだんだん固まってきたら、コードを整形して、いらないセルを削除したり、セルの順番を変えたりといった工夫が有効でしょう。また、ルーチンワークで、似たようなデータに全く同じ解析を行うことがわかっている場合には、***ノートブックを使い回すのではなく、ノートブックファイルを複製して、各データごとにノートブックを分けると良いでしょう***。そうすることで、ノートブックファイル自体が一種の実験ノートのようになります。どのようなパラメーターでどのような解析を行ったのかが残るためです。

例えば私の場合、まずひとつのフォルダに必要なデータを全部入れておき、そのフォルダ内にnotebookファイルを作ります。実験の解析方法がある程度固まるまでは、試行錯誤を繰り返して適当にnotebook内にコードを書いたり実行したり修正したりします。ある程度、解析方法が固まってきたら、その時点でnotebookファイル全体を複製します。元のnotebookファイルはバックアップとして残しておき、新しいnotebookファイル内のコードをやセルを整形、不要な部分は削除してしまいます。基本的に上から順番にセルを実行すれば解析が完了するようにnotebookを整えたら、コメントなど簡単な説明を追加してnotebookを完成させます。実際にnotebookを上から順番に実行してみて、うまくいくことを確認したら終了です。次に、別の日に似たようなデータを取得した場合、新しくフォルダを作り、そこに必要なデータ全てを入れ、先程作ったnotebookファイルをコピーして置きます。***ここでもとのnotebookファイル自身を使うのではなく、もとのnotebookファイルには触らず、コピーすることが大事です。コピーした方のnotebookファイルを使いましょう***。仮にデータに応じて微妙にnotebookを書き換えたとしても、その記録がnotebook内に残るので、あとから見直したときにも、その過程を理解することができます。notebookファイル自身の容量は大したこと無いので、数が増えても困ることはありません。

ノートブックの外観は図のようになっています。実際のノートブックの使い方は次から見ていきますが、ここで一点だけ。セルには、コードを書く用のセル（Code cell）と、説明文を書くだけのためのセル（Markdown cell）の2種類があります。この解説では基本的にコードセルしか使いませんが、何かの拍子に間違ってMarkdown cellを作ってしまった場合は、セルの種類をコードセルに変更（図参照）してください。

![図：ノートブックの外観](https://1559620454-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEGDe0jc4Gum8QxA8RN%2F-MFhz7hwVOBao_s4BiWb%2F-MFiL11kMg8zjMTovDsX%2FScreenshot_2020-08-27%20JupyterLab.png?alt=media\&token=6b7c85c8-cfb3-47ac-ba2b-eddc23ad39c3)

![図：JupyterLab各部の説明](https://1559620454-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEGDe0jc4Gum8QxA8RN%2F-MFhz7hwVOBao_s4BiWb%2F-MFiLKGEx8lu0zNfa7PQ%2Fjupyterlabmenu.png?alt=media\&token=2e0d2739-34b8-4d33-be50-6322af82a061)
