macOSでSciLabを動かすまで

(更新情報)
***2019/02/24:macOS Mojave(10.14.3):scilab 6.0.2で対応***
「macOS High SierraでSciLabを動かすまで」からタイトル変更しました。
***~~2018/11/28:macOS Mojave(10.14.1):ライブラリの追加も必要~~***

（はじめに）
　この記事はScilab 6.0.1をmacOS High Sierraにインストールする方のためのメモです。
~~かつてはすんなりインストールできたscilaboですが、最近では一手間かかるようになってしまいました*。きっと困っている人も多いと思います。~~
*mojaveに対応したscilab 6.0.2がリリースされました。今はすんなりインストールできます(2019/2/24)

　私は、scilabを、フィルタ設計や制御系のシミュレーション、時系列データ処理などに使っています。かつては、perlやエクセルを使っていましたが、scilabを使うようになって、大変効率が上がりました。こんなに便利なツールを使わないのはもったいない。もっとたくさんの人がscilabに触れてもっと普及して欲しいと思っております。

　この記事は、以前SciLab 6.0.0をインストールしたときに書いた「[High SierraでSciLabを再び動かすまで](https://qiita.com/0x20FE/items/51c5cedfa8a120960259)」 に説明を追加したものです。

##Scilabのインストール
なにはともあれ、ダウンロードしましょう。

1.ダウンロードはこちらから　http://www.scilab.org
2.scilab-6.0.1-x86_64.dmg をクリック
3.鳥のアイコン(Scilab-6.0.1)をApplocationsのアイコンにドラッグ
4.Finderの左側（デバイス）にscilab-6.0.1の三角をクリックして「アンマウント」
##アプリケーションを開けるようにする
鳥のアイコンをクリックしても「“scilab”は、App Store からダウンロードされたものでないため開けません。」とつれないダイアログがでるだけです。

1.control キーを押しながら鳥のアイコン(Scilab-6.0.1)をクリック

## Java 6が必要と言われたら
「このJavaアプリケーションを開くには、以前のJava SE 6ランタイムをインストール必要があります」というダイアログが表示されます。このダイアログの「詳しい情報」のボタンをクリックするとAppleのページに飛びます。

ここには、難しいことがたくさん書いてあり、最後に「常に最新バージョンのソフトウェアをお使いください」とのこと。そこで、仕方なくオラクルのページのリンクにとぶと、（一見簡単そうに見えるけれども、Javaの専門家以外の人はきっとたじろぐ）ページが現れます。ここで途方にくれる人も少なくないのでは。

参考 こちらがOliverさんの解説記事で、Scilab用にJREをインストール方法が書いてあります。
https://oliverdowling.com.au/2015/10/09/oracles-jre-8-on-mac-os-x-el-capitan/


###(1) Oracleから最新のJREをダウンロード
http://www.oracle.com/technetwork/java/javase/downloads/index.html

いろいろありますがどれをえらべば良いでしょうか？
Java SE/EE/MEとかいろいろあり、バージョンがあり、そこにはJDKとかJREとかあります。

ダウンロードページにちゃんと選び方が書いてありますが、そういわれてもね。
・最初のポイントは、MacなどPC向けはスタンダードエディション(SE)を選ぶこと。
・次のポイントはJDKかJRE,Server JREの選択です。開発者向けがJDK,使うだけならJREということになります。なので、基本的には、SEのJREで、新しめの安定バージョンを選べばOK。2018/10/13の時点では,Java SE 10.0.2 JRE。

macOS版には拡張子がdmgのものとtar.gzがありますが、
ダウンロード後にplistを編集するためtar.gzを選びます。

補足：Java SE (Java Standard Edition)の中の
　　　　　JRE (Java Runtaime Environment)の
　　　　　tar.gz を選べばよいかと。

##(2) 解凍してplistを書き換える
Rich Troutonさんのblogの記事[Modifying Oracle’s Java SDK to run Java applications on OS X](https://derflounder.wordpress.com/2015/08/08/modifying-oracles-java-sdk-to-run-java-applications-on-os-x/)によれば、ダウンロードしたJREそのままでは、Webページに埋め込んだjava plug-inでしか使えない。このため、アプリケーションやコマンドラインからJavaを使うためには、plistを変更する必要があるとのこと。

```bash:plistを修正する手順_by_Oliverさん
cd ~/Downloads/
tar xzf jre-10.0.1_osx-x64_bin.tar
cd jre-10.0.1.jre/

# 変更前の内容を確認する（追加しました）
less Contents/Info.plist


defaults write "`pwd`/Contents/Info.plist" JavaVM -dict-add 'JVMCapabilities' '<array><string>JNI</string><string>BundledApp</string><string>CommandLine</string></array>'

# テキストエディタで書き換えた内容を確認するため次の操作が必要
chmod 0664 Contents/Info.plist
plutil -convert xml1 Contents/Info.plist
# 変更後の内容を確認する（追加しました）
less Contents/Info.plist
```
##(3)JREをインストール

```bash:by_Oliverさん
sudo mv "`pwd`" /Library/Java/JavaVirtualMachines/
#ここでパスワード入力を求められます
```

##(4)バックワードコンパチビリティのためのリンク

```bash:by_Oliverさん
mkdir -p Contents/Home/bundle/Libraries
cd Contents/Home/bundle/Libraries
ln -s ../../lib/server/libjvm.dylib libserver.dylib
```
私の場合、ここまででオッケーでした。

##(5) Mojaveの場合（ライブラリの追加）
***自己責任でお願いします。***
参考 http://bugzilla.scilab.org/show_bug.cgi?id=15307

###作業
(1-1) libBLAS.dylib を入れ替え
(1-2) libPng.dylib" をコピー

```bash:コンソールから
cd /Applications/scilab-6.0.0.app/Contents/MacOS/
cp /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib lib/thirdparty/
cp /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib  lib/thirdparty/
```

##SciLab関連ドキュメントリンク
*install*
[macOSでSciLabを動かすまで](https://qiita.com/0x20FE/items/2ba5e60685816485ea4c)
[SciNoteのオートコンプリートをとめたい](https://qiita.com/0x20FE/items/cb17fda3f7456a807d41)

*実践*
[SciLabでCSV読み込み](https://qiita.com/0x20FE/items/dd6cbf94be0f2c20d002)
[SciLabでGUIを使ってみる](https://qiita.com/0x20FE/items/cf9cdad0e4be88714118)
[Mac/Windows共用scilabスクリプト]()未公開
[SciLabでフィルタを適用する]()未公開
[プロットメモ]()未公開
[プロットあれこれ]()未公開

*他の言語と比較・書き換え*
[Scilab (NumPy) - plotの書き方](https://qiita.com/0x20FE/items/311ac0e61a129e6a01fa)
 [配列と文字列処理の比較](https://qiita.com/0x20FE/items/ b6ea768692297b721951)
   [関数とオブジェクトの書き方メモ](https://qiita.com/0x20FE/items/02e2a6d8380851272a2c)
  [Scilab,NumPy,R行列処理の比較](https://qiita.com/0x20FE/items/75622186ba8a0c6086ce)