Mac SiliconでのNASA HEASoftのインストール方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/b6e5d33f-0bc5-d2e5-cc6b-b229653a2689.png)

<br>

画像出典: [NASA HEASoft](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/)



## はじめに

Appleは2020年からMacにApple Siliconチップ（通称、M系チップ）を導入しました。この新しいアーキテクチャに伴い、NASAの[HEASoft](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/)のインストール手順にも変更がありました。そこで本記事では、**Mac Silicon版でのHEASoftをソースコードからインストールする方法**を詳しく紹介します。

HEASoftについて詳しく知りたい方は、こちらの記事もぜひご覧ください。

https://qiita.com/yamadasuzaku/items/3e38a716be280db66bdc

基本的に、HEASoftの公式ページに従ってインストールし、コンパイルし、パスを通せば問題なく動作します。ただし、Silicon版Mac特有のコンパイル時に発生する問題がありますので、この記事ではその部分を重点的に説明します。

## Apple Silicon版のOSのバージョンを確認

HEASoftをソースコードからインストールする際、Apple Silicon版かIntel版か、そしてOSのバージョンによっても手順が異なるため、それらを確実に確認しておくことが重要です。

[Appleの公式サイト](https://support.apple.com/ja-jp/116943)で「この Mac について」の「プロセッサ」という項目から確認します。


:::note alert 
この時点で「チップ」がIntel版の場合、この記事の方法と異なるため他の記事を参照してください。
:::

:::note info
HEASoftコンパイル時の筆者の環境は以下の通りです。
- チップ：M1
- macOS：14.5
:::

## HEASoftのダウンロード

HEASoftの公式サイトに沿ってファイルをダウンロードします。

### STEP 1 - ソフトウェアの種類を選択
[公式サイト](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/download.html)の「STEP 1 - Select the type of software」で、「Source Code」から対応するMacOSのソースコードを選択します。

### STEP 2 - 必要なパッケージをダウンロード
必要なパッケージを選択します。不明な場合は「All」を選択して問題ありません。

:::note warn
ダウンロードには数時間程度かかる場合があります。安定した回線で試すことをお勧めします。
:::

## 下準備

ダウンロードの待ち時間に、[HeASoft公式サイト](https://heasarc.gsfc.nasa.gov/docs/software/heasoft/macos.html)に従って必要なモジュールをインストールしておきましょう。

### X11のインストール
[XQuartz](https://www.xquartz.org/)をインストールします。

### Xcodeのインストール
コンパイル時に必要なツールをインストールします。以下のコマンドでインストールを実行します。

```
$ xcode-select --install
```

### Silicon版Homebrewでのコンパイルに必要なインストール
Macは[Homebrew](https://brew.sh/)でのバッケージ管理が便利ですが、Rosetta 2を介して使用可能なintell版のbrewと干渉することがあります。まずはどちらが有効になっているかコマンドのパスから確認します。

```
$ which brew
```

出力結果が`/opt/homebrew/bin/brew`（Silicon版）か`/usr/local/bin/brew`（Intel版）であることを確認します。Silicon版brewが有効であることを確認しましょう。以下の記事が参考になります。
- [Silicon版brewインストール参考記事](https://qiita.com/shira-shun/items/0f6213f4923cb5544367)
- [Zennの参考記事](https://zenn.dev/ress/articles/069baf1c305523dfca3d)

### gfortranとlibpngのインストール
Silicon版brewを使用して以下をインストールします。
```
$ brew install gcc@12
$ brew install libpng
```

### Pythonのインストール
Silicon版のAnacondaをインストールします。

:::note warn
Sillicon版のAnacondaを必ず入れてください。Intell版のPythonは、[コンパイル](#コンパイル)`./configre`時に、
```
configure: WARNING: arm64 build requires an arm64 Python
configure: error: Please choose an arm64-compatible Python
```
というエラーが出るので注意してください。
:::


<details><summary>Sillicon版かIntell版かの確認方法</summary>

Anacondaの任意の環境にactivateした状態で、以下を実行してください。
```
$ python -c "import platform; print(platform.platform())"
```
```:出力結果
macOS-14.5-arm64-arm-64bit
あるいは
macOS-14.5-x86_64-i386-64bit
```
と出ると思います。もし、macOS-14.5-x86_64-i386-64bitである場合は、Sillicon版のAnacondaをインストールする必要があります。

公式からMac Sillicon版の最新のバージョンをインストールし実行します。
```
$ wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-MacOSX-arm64.sh
$ bash Anaconda3-2024.06-1-MacOSX-arm64.sh
```
```:出力結果
(中略)
Do you accept the license terms? [yes|no]
>>> yes

Anaconda3 will now be installed into this location:
/Users/b4_1/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/Users/path/anaconda3] >>> /Users/path/anaconda3_arm64
PREFIX=/Users/path/anaconda3_arm64
```
のように、作成場所を指定してあげると既存の環境を削除することなく、Sillicon版の環境を作成することができます。

</details>

インストール後、HEASoftに必要なPythonモジュールをインストールします。
```
$ conda install astropy numpy scipy matplotlib pip
```

## ファイルの展開
HEASoftのソースコードダウンロード後、以下のコマンドで解凍します。

```
$ tar zxf heasoft-modelsrc.tar.gz
```

解凍後、`heasoft-modelsrc/BUILD_DIR`に移動します。

## コンパイル
コンパイラなどのパスを設定します。環境変数はご自身のMacの環境により異なるため、ここで書かれていることをそのまま試すのではなく、**実際にパスが存在するか確かめるようにしてください**。

筆者の環境では、次のように設定しています。
```
$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang++
$ export PERL=/usr/bin/perl
$ export FC=/opt/homebrew/bin/gfortran-12
$ export PYTHON=$HOME/anaconda3_arm64/bin/python
```

configureします。

```
$ ./configure --with-png=/opt/homebrew > config.txt 2>&1 
```

エラーがなければ、ビルドします。（20分くらいかかります。）
```
$ make > build.txt 2>&1
```

ビルドが成功したら、インストールします。

```
$ make install > install.txt 2>&1
```

この一連の作業が成功すると`heasoft-modelsrc/aarch64-apple-darwin-version`という名前のディレクトリが作成されます。

## パスを通す
`~/.zshrc`にHEASoftのパスを追加します。

```~/.zshrc内に追記
export HEADAS=/path/to/your/installed/heasoft-modelsrc/aarch64-apple-darwin-version
alias heainit="source $HEADAS/headas-init.sh"
source $HEADAS/headas-init.sh
```

~/.zshrcのファイル内容を反映するため、ターミナル上で
```
$ source ~/.zshrc
```
を実行します。



## 動作確認
お疲れ様でした。これで、HEASoftが使える環境整備ができたと思います、一応、ターミナルで以下のコマンドを実行し、
```
$ fhelp ftools
$ xspec
```
動くことを確認します。

## まとめ

本記事では、Mac Silicon版でのHEASoftのインストール手順を解説しました。以下にポイントをまとめます。

1. **環境確認**：
   - Apple SiliconかIntelか、チップとOSバージョンを確認します。

2. **必要なツールのインストール**：
   - Xcode、XQuartz、Homebrew、Pythonなど、コンパイルに必要なツールを準備します。

3. **HEASoftのダウンロードと展開**：
   - 公式サイトからソースコードをダウンロードし、適切なディレクトリに展開します。

4. **コンパイルとインストール**：
   - 環境変数を設定し、`./configure`、`make`、`make install`コマンドでビルドとインストールを行います。

5. **パスの設定**：
   - `~/.zshrc`にHEASoftのパスを追加し、環境変数を設定します。

6. **動作確認**：
   - `fhelp ftools`や`xspec`コマンドでHEASoftが正しく動作することを確認します。

以上の手順で、Mac SiliconでもHEASoftをインストールして利用できます。本記事がインストールの参考になれば幸いです。