Windows 10 で Seismic Un*x (SU) を使う

# Seismic Un*x
内部向け公開メモ（書きかけ）

コロラド鉱山大学 (Colorado School of Mine) で開発された反射法地震探査データの処理ソフトウェア群で、世界中で使われている。

[Seismic Unix 公式サイト](https://wiki.seismic-unix.org/doku.php)

ソースコードは現在はGitHubに場所を移して公開されている。
https://github.com/JohnWStockwellJr/SeisUnix

基本的にはUNIX系OS[^1]上でキャラクターベースのコマンドを実行する。LinuxやMacOS(OSX)ではそのままソースからコンパイルすることで構築が可能。

WindowsでもUnix環境を整えることで利用できる。

# Windows に Linux 環境を作る
Seismic Un*x の実行に必要なので準備する必要がある。
今のところメジャーなのは下記３種類の方法であろう。

- Cygwin
- WSL/WSL2
- Virtual Machine(VirtualBox, VMWare)

それぞれメリット/デメリットがあるものの、今後はWSLの利用が便利になってくると期待できる。

Cygwin以外は使いたいLinuxのディストリビューションも決める必要がある。何も分からない場合は [Ubuntu](https://ubuntu.com/) で良いと思う。

#### Cygwinを使う方法
下記にCygwin上でのSUのインストール例が公開されている。
[Installing the Seismic Unix Library on Windows [Walkthrough] | INT Blog (By Joshua Roy)](https://www.int.com/blog/installing-seismic-unix-library-windows-10/)

1. Cygwinのインストール
2. Cygwin上にSeismic Unix をインストール

#### VirtualBox を使う方法
VirtualBoxに限らずとも、Linuxの動作する仮想マシンならVMWareなど他のものでも全く問題無い。

下記にSUをインストールする方法が公開されている。ただし執筆時点で10年前(2010)の記事である事に注意。流れは参考になるはず。
[Windows PCでSeismic Un*xを使う方法 | 渡辺俊樹先生＠名古屋大学](http://www.seis.nagoya-u.ac.jp/~watanabe/works/vbox_ubuntu_su.html)
(最新版は [WSL / WSL2 を使う方法](#wsl--wsl2-を使う方法) にリンクあり)

1. VirtualBoxのインストール
2. VirtualBox上に仮想マシンを作成
3. 仮想マシンにLinuxをインストール
4. 仮想マシン上のLinuxにSeismic Unix をインストール

#### WSL / WSL2 を使う方法
渡辺俊樹先生＠名古屋大学 は2021年に新しい記事を公開されている。こちらではWSL系が推奨になっている。
- [Windows PCでSeismic Un*xを使う方法（新） | 渡辺俊樹先生＠名古屋大学](https://www.seis.nagoya-u.ac.jp/~watanabe/works/wsl_debian_su.html) *(2021/05/21 追記)

WSLのインストールからSUのインストールまでの方法は下記でも公開されている。
- [Seismic Unix on windows- Linux subsystem, | YouTube (JOSE GABRIEL Cordova)](https://www.youtube.com/watch?v=AH-STR4pUtI)
- [Seismic Unix in Windows 10 | Mindundi](https://suwindows10.blogspot.com/2016/08/how-to-install-seismic-unix-su-on.html)

1. WSLの有効化 / パッケージ類ダウンロード
2. WSLにディストリビューション(Ubuntu)をインストール
3. WSLにSeismic Unix をインストール

WSLのインストールについては、Microsoft公式サイト [Windows 10 用 Windows Subsystem for Linux のインストール ガイド](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10) という記事が公開されているのでこちらに従う方が良いかもしれない。通常は Insider Program の項は飛ばして「手順１」から読むと良い。

参考：[Manually download Windows Subsystem for Linux distro packages](https://docs.microsoft.com/ja-jp/windows/wsl/install-manual)
WSLに入れることができるディストリビューションには下記の選択肢があるらしい[2020/12/24]。WSLをインストールした後に Microsoft Store から Ubuntu 20.04 等で検索してインストールするのが分かりやすい。

```
Ubuntu 20.04
Ubuntu 20.04 ARM
Ubuntu 18.04
Ubuntu 18.04 ARM
Ubuntu 16.04
Debian GNU/Linux
Kali Linux
OpenSUSE Leap 42
SUSE Linux Enterprise Server 12
Fedora Remix for WSL
```


### Cygwin / WSL（２） は X11 Server を用意する
複数選択肢があるが、最近では VcXsrv が主流の模様。
[WSL上にXサーバをインストールしてGUIを実現する（VcXsrv編）](https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html)
環境によっては公開情報でうまくいかない時がある: [WSL2でGUIを使うために](https://qiita.com/pirotan628/items/5cad4d3bffc56e62e3b7)

# Linuxに開発環境を整える
ここから先は純粋なLinuxとして作業を進めて行くことが出来る（始めからLinuxを使っている場合はここからスタート）。

Seismic Un*x はソースファイルで公開されているので、実行形式にcompile/makeしなければならない。
そのための環境を整える。Cygwinの場合はやり方が異なるため、上記の[リンク](https://www.int.com/blog/installing-seismic-unix-library-windows-10/)を参考にされたい。
必要なものの多くは build-essential を入れると手っ取り早い。加えてソースファイルを取ってくるのに wget や git も入れておきたい。

Ubuntuの場合

```bash
sudo apt update
sudo apt install build-essential wget git
```

開発系以外に、Seismic Unix の動作に必要なパッケージ類も事前に用意する

```
sudo apt install libx11-dev libxt-dev libgd-dev libqt4-opengl libqt4-opengl-dev libtiff-dev
```

すでに他にも別のソフトウェアを使う予定があるなら、先に入れてしまうのもあり。

```
sudo apt install gfortran gpsbabel ghostview
```

# ソースをコンパイルする

[公式のインストール手順](https://wiki.seismic-unix.org/sudoc:su_installation)

ソースファイルは例えば下記のようにダウンロードすることもできる。

```
sudo mkdir ~/seisunix
cd ~/seisunix
git clone https://github.com/JohnWStockwellJr/SeisUnix.git
```
@degarashi-konbu さん提供のインストール方法

```bash
aaa

```
#### 補足事項 
[Seismic Unix でサンプル数の大きなファイルを扱う](https://qiita.com/pirotan628/items/e309345380222038c6d7)

# 補助ツール
SUをグラフィカルに操作できる
- [BotoSeis](https://github.com/botoseis/BotoSeis)
このBotoSeisのGitHubページに行くと、SUのインストールを実行してくれるという[便利そうなスクリプト](https://gist.github.com/botoseis/4ca681cb9ef706c1b8410153c6199cf2)も公開されている[^2]。

# 情報一覧
[Seismic Unix | Wikipedia](https://en.wikipedia.org/wiki/Seismic_Unix)
[日本語マニュアル | 渡辺俊樹先生＠名古屋大学](http://www.seis.nagoya-u.ac.jp/~watanabe/works/su/sumanual-4.0J1.1.pdf)
[地球構造探査学 | 渡辺俊樹先生＠名古屋大学](https://www.seis.nagoya-u.ac.jp/~watanabe/lecture/Exploration/index.html)


[^1]: この記事ではそれぞれのOSがPOSIX準拠なのかUNIXライクなのか、細かい事は気にせず、Linuxみたいなやつと呼ばせて頂きたい。動けば良い。
[^2]: 当方は使用していないので、どんな環境でもうまくいくのかは分からない。ソースコードは本家。