開発環境の構築

　計算機実習のための作業環境を整える。ここでは、Windows上でLinuxを利用できる環境として、WSL（Windows Subsystem for Linux）のインストール方法を説明する。WSLは、Microsoft社が開発者向けのツールとして提供している。詳細は[公式ページ](https://learn.microsoft.com/ja-jp/windows/wsl/about)を参照してください。
 
# WSLのインストール
1. PowerShellまたはコマンドプロンプトを***管理者モード***で開く
1. 以下のコマンドを実行し、WSLをインストールする
    ```bash
    wsl --install
    ```
    - Windows 10 バージョン2004以下の方は[こちら](https://learn.microsoft.com/ja-jp/windows/wsl/install-manual)
1. PCを再起動する（`wsl --install`の適用には再起動が必要）
1. Linuxディストリビューションをインストール
    - 既定ではUbuntuがインストールされる
    - 他のディストリビューションを利用したい場合は、以下のコマンドで選択できる：
    ```bash
    wsl --install -d <Distribution Name>
    ```
    - 例：wsl --install -d Debian
1. [スタート] メニューを使用してLinuxディストリビューション（既定ではUbuntu）を開く
1. 初回起動時に。Linuxユーザー情報（ユーザー名とパスワード）の作成を求められる
    - ここで設定をするユーザー名とパスワードは、Windowsのアカウントとは別もの
    - WSL内での管理者権限（`sudo`）を利用する際に必要になる
1.  Linuxディストリビューションの更新とアップグレード
    - WSL内でを以下のコマンドを実行：
    ``` bash
    sudo apt update && sudo apt upgrade
    ```
    - `update`はパッケージリストを最新にする
    - `upgrade`はインストール済みのソフトウェアを更新する

　これで、Linuxの実行環境が整ったはずである。しかし、結局[公式](https://learn.microsoft.com/ja-jp/windows/wsl/)が一番分かりやすいので、こちらを読まれる方を進める。

# ターミナルのインストール
　WSLの標準ターミナルは、[公式](https://learn.microsoft.com/ja-jp/windows/terminal/)によると、"～して、ターミナルを完全にカスタマイズできます。"と使いやすさをアピールする説明がありますが、個人的には使いにくい。
　ここでは、[Mobaxterm](https://mobaxterm.mobatek.net/)のインストール方法を説明する。Mobaxtermは、Windows上で動作する高機能なターミナルエミュレーターであり、SSHクライアントやXサーバーの機能を備えた統合型リモートアクセスツールである。特にLinux環境を使う開発者にとって、WSLやリモートサーバーとの接続を効率化できる便利なツールである。Mobaxtermのメリットは以下の通り：
- タブ管理で複数のWSL・SSHセッションを同時に開ける
- SFTP機能でファイルをドラッグ＆ドロップで転送（手動コピー不要）
- X11転送が標準対応（GUIアプリがそのまま使える）
- クリップボード統合（マウスで簡単にコピーペースト）
- 軽量＆高速（Windows標準のターミナルより快適）
- SSHセッションの保存（ワンクリックでリモートサーバーに接続）

 個人的にMobaxtermの推しているところは、X11 serverが入っていること、SSHセッションを保存できることです。以下インストール方法です
1.　[公式](https://mobaxterm.mobatek.net/)からダウンロードとインストール
2.　WSLのセッションを作成
    - Mobaxtermを開く
    - 「Session」→「WSL」を選択し、Ubuntuを指定する
　これで、MobaxtermからWSLにアクセス可能となる。リモートサーバーに接続する際、`ssh`コマンドをその都度実行するのが面倒なので、こちらも「Session」→「SSH」を選択し、port/IPを指定すると、SSHセッションにワンクリックで接続できる。

# エディタのインストール
　デフォルトでVimが入っているため、それでも良いが個人的には`Emacs`が使い慣れているため、こちらをインストールする。使い方は[こちら](https://www.gnu.org/software/emacs/)を参照してください。
``` bash
sudo apt install emacs
```
　Microsoft社が開発したVSCode（Visual Studio Code）は拡張機能が豊富で、コード補完やデバック等も行えて便利であるため、ローカルで作業する時はたまに使っている。しかし、リモートサーバーで良く作業する自分としては、軽量で特別な設定が不要な`emacs`の方がやりやすい。結論、どちらでも良いと思う。

# Fortran/C コンパイラのインストール
- Fortranコンパイラのインストール：
  ``` bash
  sudo apt install gfortran
  ```
　1957年にIBMが初めて開発したコンピュータ言語であるFortran（Formula Translation）は、実行速度が速く、膨大な量の計算を処理できるため、大規模な数値計算に適したプログラミング言語である。特に、富岳や京のようなスーパーコンピュータはFortranで動作させている。しかし、Fortranを使っている業界は非常に限定的であるため、その業界で働いていない（働くつもりがない）人は、次に説明するC言語を勉強された方が汎用性が高いと思われる。
 
- Cコンパイラのインストール：
  ``` bash
  sudo apt install gcc
  ```
　1972年にベル研究所で開発されたC言語は、汎用性が高く、幅広い分野で使用されるプログラミング言語である。特に、OS（LinuxやWindows）、組み込みシステム、ハードウェア制御、ソフトウェア開発など、多様な用途で活用されている。また、C言語は低レベルなメモリ操作が可能であり、パフォーマンスの最適化が求められるアプリケーションに適している。そのため、Fortranが数値計算に特化した言語であるのに対し、C言語はシステム開発や組み込み制御など、より多くの分野で利用されている。汎用性の高さから、プログラミングを学ぶ際の基礎言語としても広く採用されており、今後ソフトウェア開発に携わる予定がある人にとっては、C言語を学ぶことが有益である。

# Anacondaのインストール
　1991年にグイド・ヴァンロッサムによって開発されたPythonは、シンプルで可読性の高い文法を特徴とし、幅広い分野で使用される汎用プログラミング言語である。機械学習やデータ解析、Web開発、科学技術計算、システム管理、組み込み開発など、さまざまな用途に適しており、近年ではAI・データサイエンスの分野で特に人気が高い。
　Anacondaは、pythonのインストールだけでなく、数値計算や機械学習を行うために必要なライブラリも一括してインストールしてくれる便利なパッケージである。

1. Anacondaのインストーラーをダウンロード
    - [公式](https://www.anaconda.com/)からAnacondaのインストーラーを取得：
      ```bash
      wget https://repo.anaconda.com/archive/Anaconda3-2023.07-0-Linux-x86_64.sh
      ```
    - `Anaconda3-2023.07-0-Linux-x86_64.sh`の部分は 最新版に変更してください

1. インストーラーを実行
   - ダウンロードした`.sh`ファイルを実行する
     ```bash
     bash ./Anaconda3-2023.07-0-Linux-x86_64.sh
     ```
   - 途中でライセンス確認があるので、`Enter`を押して読み進め、`yes`を入力
   - インストール先（デフォルトは $HOME/UserNAME/anaconda3）を決める

1. インストール後の設定
    - インストールが完了すると、`conda`コマンドを使えるようにするために、`.bashrc`にパスを追加するかどうかを以下の様に聞かれる：
      ```bash
      Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no]
      ```
    - `yes`を選択すると、環境変数が`.bashrc`に自動で追加される
    - もし`no`を選んだ場合、手動で設定する必要がある
      ```bash
      echo 'export PATH="$HOME/anaconda3/bin:$PATH"' >> ~/.bashrc
      source ~/.bashrc
      ```
    - 自分は以下の様に`.bashrc`にエイリアスを追記している
      ```bash
      alias pystart='eval "$(/home/tsuji/anaconda3/bin/conda shell.bash hook)"'
      ```
    - パスは「2. インストーラーを実行」で決めたインストール先に変更してください
    - これで、`pystart`と実行したらpython環境が使えるようになる

1.  Anacondaの動作確認
    - インストールが成功したか確認する（バージョンが表示されればインストール成功）
      ```bash
      pystart
      conda --version
      ```
    - アップデート
      ```bash
      conda update conda
      conda update conda-build
      ```
1.  仮想環境の作成（例）
    ```bash
    conda create -n pyradar python=3.8
    ```
    - `pyradar`という仮想環境をpythonバージョン3.8系で作成

1. 仮想環境の有効化
    ```bash
    conda activate pyradar
    ```
    - `pyradar`環境に切り替える
    
1. パッケージのインストール
   ```bash
   conda install numpy matplotlib cartopy
   ```
1. リポジトリ先の追加
   pythonのパッケージをインストールする際、上記の様にcondaを使うことができる。しかし、`conda`が探すリポジトリ先に、インストールしたいパッケージが存在しない場合がある（例えば`arm_pyart`）。そんな時、`conda`が探すリポジトリ先に`conda-forge`を加えることでインストールが可能になる。`conda-forge`とはgithub上のコミュニティ主体のパッケージコレクションで、様々なパッケージが用意されている。
   
   - condaが探すリポジトリ先を以下の様に確認する
   ```bash
   conda config --get channels
   ```
   すると、`--add channels 'defaults'   # lowest priority`と出力される。これは`defaults`を探しにいっていることが分かる。
   
   - リポジトリ先に`conda-forge`を以下の様に追加する
   ```bash
   conda config --append channels conda-forge
   ```
   
   - `conda-forge`が`lowest priority`に追加されたことを確認する
   ```bash
   conda config --get channels
   ```  
   `--add channels 'conda-forge'   # lowest priority`
   `--add channels 'defaults'   # highest priority`となっていれば追加できている

   - `conda-forge`内のパッケージをインストールする
   ```bash
   conda install arm_pyart
   ```
   `arm_pyart`や`xarray`、`dask`、`opencv`、`h5py`、`netcdf4`、`pygrib`、etc...などAnacondaには含まれていない便利なモジュールが多く存在する。しかし、インストールする際にコンフリクトを起こす可能性が高いので、仮想環境内でインストールすることを勧める。

1. 仮想環境の無効化
    ```bash
    conda deactivate
    ```
    - デフォルト環境に切り替える

### Anaconda有償化に伴うMiniconda+conda-forgeへの移行
　Anacondaは商用利用（企業・組織での利用）に対して有償化されている。個人ユーザーは無料で使えるが、企業での利用にはライセンスが必要である。そのため、代替として`Miniconda`に切り替えといた方が後々楽である。
　Anacondaとの違いは、必要なパッケージを自分自身でインストールするか、しないかの違いであり、利用上の大きな制約があるわけではない。
 インストール方法は`Anaconda`の時と変わらない。ただし、`miniconda`のインストーラーは[ここ](https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh)からダウンロードする必要がある。
　
# Ghostscript/ImageMagickのインストール
　Ghostscript（GS） は、PostScript（PS）やPDFファイルを処理するためのソフトウェアである。特に、Linux環境でPDFやPSファイルを操作するためによく使われている。ImageMagick は、画像をコマンドラインで変換・編集できるツールである。多くの形式（PNG・JPEG・TIFFなど）を扱うことができ、バッチ処理やスクリプトにも適している。論文作成する際にEPS画像を扱う人やコマンドラインで画像を操作したい人はインストールしておくと便利である。
```bash
sudo apt install ghostscript
sudo apt install imagemagick
```
 
# Gnuplot/GMT/GrADSのインストール
　いずれもお絵かき用のフリーソフトである。pythonで事足りているので、いまから勉強する必要はない気がするが、参考までに紹介する。
 
- Gnuplot
  [Gnuplot](http://www.gnuplot.info/)は、データの可視化（グラフ描画）を行うためのフリーソフトウェアであり、科学技術計算やデータ分析の分野で広く使われていた。
```bash
sudo apt install gnuplot
```
  
- GMT（Generic Mapping Tools）
  [GMT](https://www.generic-mapping-tools.org/)は、地図作成や地球科学データの可視化に特化したオープンソースのツールセットである。特に気象学、地球物理学、海洋学、測地学などの分野で広く使用されていた。
```bash
sudo apt install gmt gmt-gshhg
```
  
- GrADS（Grid Analysis and Display System）
  [GrADS](http://cola.gmu.edu/grads/grads.php)は、気象・気候データの解析と可視化を行うためのソフトウェア である。主に気象学、気候学、大気科学、海洋学 の分野で使用され、格子データ（グリッドデータ）を処理するのに特化している。[こちら](http://cola.gmu.edu/grads/downloads.php)からダウンロードできる。

***これで開発環境は整いました！***
***実際に手を動かしながらプログラミングに慣れていきましょう！***
***実習は[こちら](https://qiita.com/TaiseiTsuji/items/3eb8ee4a71c5fbe0bfda)からどうぞ！***