Help us understand the problem. What is going on with this article?

ひっそり NYSOL:Mコマンドがバージョンアップしてた件について

More than 1 year has passed since last update.

一部の界隈ではとても人気のあるNYSOL:Mコマンドですが、実はVersion3が最近ひっそり公開されています。

注意
※10月6日の段階ではMacでかつXcode9では、ビルドが通りません。Xcode8ではビルドが通ります。
どうしても更新したい場合は、Xcode8にダウングレードしてみてください。

開発者に対応いただき、少し手を加えることで、Buildが通るようになりました。
対応方法は「Xcode9でうまくビルドできない場合」を確認ください。

NYSOLって何

NYSOLはCSVデータの高速加工と大学の先生方が考えた最先端のアルゴリズムを無償提供するコマンド群です。
幾つかのパッケージに分かれています。
- 松(Mコマンド) : 前処理に関わるコマンド群です。
データサイエンティスト必見!M-1グランプリに速度比較が上がっていますので参考にしていただければと思います。
- 竹 : バスケット分析などに使われるパターン抽出プログラムなどをまとめたパッケージ
- 零 : 高速に経路列挙するアルゴリズムであるZDDを使用するためのライブラリ
(ZDDについてはこちらを見てください『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう! - YouTube
などがあります。その他にもパッケージが有りますので詳しくはNYSOL HPを見てください。

最新版はどこにあるのか

GitHubにあります。↓
https://github.com/nysol/mcmd

何が変わったのか?

リファレンスマニュアルによるとv3はGitHub登録とのこと。
その他の改訂としては以下が在るようです。(詳しくはリファレンスマニュアルを見てください。)
- 幾つかのコマンドのパラーメーター仕様の変更
- -paramsパラメータ(各コマンドのパラメータリストの出力)の追加
- mdformatでミリ秒対応
- 幾つかのコマンドの追加
- bugfix

インストール方法

GitHubのREADMEを見ていただくか(英語)、READMEの日本語版であるHome · nysol/mcmd Wiki
見ていただければ、インストールできるようになっていますので、そちらを参照いただきたい。
ざっくり、前提となるライブラリ(c++boost, lib2xml)などが導入されていれば

git clone https://github.com/nysol/mcmd.git
cd mcmd

aclocal
autoreconf -i
automake --add-missing
./configure
make
sudo make install

で、導入できます。

Xcode9でうまくビルドできない場合

10月6日の段階ではMacでかつXcode9では、ビルドが通らず

kgwindow.lo kgxml2csv.lo ../../src/kgmod/libkgmod3.la -lboost_filesystem -lboost_system -lboost_regex -lpthread
libtool: link: g++ -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libmcmd3.1.dylib  .libs/kgaccum.o .libs/kgarff2csv.o .libs/kgavg.o .libs/kgbest.o .libs/kgbucket.o .libs/kgcal.o .libs/kgcat.o .libs/kgchgnum.o .libs/kgchgstr.o .libs/kgchkcsv.o .libs/kgcombi.o .libs/kgcommon.o .libs/kgcount.o .libs/kgcross.o .libs/kg2cross.o .libs/kgcsv2arff.o .libs/kgcsv2json.o .libs/kgcsvconv.o .libs/kgcut.o .libs/kgdata.o .libs/kgdformat.o .libs/kgdelnull.o .libs/kgdsp.o .libs/kgduprec.o .libs/kgfldname.o .libs/kgfsort.o .libs/kghashavg.o .libs/kghashsum.o .libs/kginput.o .libs/kgjoin.o .libs/kgkeybreak.o .libs/kgmbucket.o .libs/kgmseldsp.o .libs/kgmvavg.o .libs/kgmvsim.o .libs/kgmvstats.o .libs/kgnewnumber.o .libs/kgnewrand.o .libs/kgnewstr.o .libs/kgnjoin.o .libs/kgnormalize.o .libs/kgnrcommon.o .libs/kgnrjoin.o .libs/kgnullto.o .libs/kgnumber.o .libs/kgpadding.o .libs/kgpaste.o .libs/kgproduct.o .libs/kgrand.o .libs/kgrjoin.o .libs/kgminput.o .libs/kgsed.o .libs/kgsel.o .libs/kgseldsp.o .libs/kgselrand.o .libs/kgselstr.o .libs/kgselnum.o .libs/kgsep.o .libs/kgsep2.o .libs/kgsetstr.o .libs/kgshare.o .libs/kgshuffle.o .libs/kgsim.o .libs/kgslide.o .libs/kgsplit.o .libs/kgstats.o .libs/kgsum.o .libs/kgsummary.o .libs/kgtab2csv.o .libs/kgtee.o .libs/kgtonull.o .libs/kgtra.o .libs/kgtrafld.o .libs/kgtraflg.o .libs/kguniq.o .libs/kgvcat.o .libs/kgvcommon.o .libs/kgvcount.o .libs/kgvdelim.o .libs/kgvjoin.o .libs/kgvnullto.o .libs/kgvdelnull.o .libs/kgvreplace.o .libs/kgvsort.o .libs/kgvuniq.o .libs/kgwindow.o .libs/kgxml2csv.o   -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib -lxml2 -lz -licucore -lm ../../src/kgmod/.libs/libkgmod3.dylib -lboost_filesystem -lboost_system -lboost_regex -lpthread  -g -O2   -install_name  /usr/local/lib/libmcmd3.1.dylib -compatibility_version 2 -current_version 2.0 -Wl,-single_module
ld: file not found: /usr/lib/system/libsystem_darwin.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libmcmd3.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

というエラーが出ることがわかっています。
情報お持ちの方いれば連絡ください。

なお、Ubuntu,Xcode8ではビルドが通ることは確認できています。

開発者に対応いただき、ビルドが通るようになりました。
開発者いわくlibxml関係でうまくリンクできなかったとのこと、

MAC, Xcode9の方は最新のものをクローンし直して、以下のようにconfigureのオプションを変更してみてください。

git clone https://github.com/nysol/mcmd.git
cd mcmd

aclocal
autoreconf -i
automake --add-missing
./configure --with-libxml2header=/usr/include/libxml2 --with-libxml2=/usr/lib
make
sudo make install

当方の環境で場ビルドができました。

boostの最新版を導入する場合

Boost C++ Librariesより最新パッケージをダウンロードし、

wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz # 2017-10-5時点最新
tar zxvf boost_1_65_1.tar.gz
cd boost_1_65_1
./bootstrap.sh
mkdir $HOME/local
./b2 install --prefix=$HOME/local   #prefixは適宜変更してください

詳細なビルドオプションなどはBoostライブラリのビルド方法 - boostjpを参考にすればいいと思います。

その他

Mコマンド以外の対応はまだ終わってないようにも聞いていますし、一部のコマンドの仕様が変わっていますので、v2を使っている方が乗り換えるのがいいのかどうかは、それぞれの状況次第かなとは思います。
面白い取り組みとしては、Pythonとバインディングするライブラリが登録されていることでしょうか、Ruby同様にPythonを通して実行できる日がやってきました。
今後が楽しみですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした