NYAGOS + Console 2 に関するメモ

Windows の cmd がダサいのはみんな思っていることのようで，それに代わる環境も色々あるのだが， NYAGOS + Console 2 が良いらしいと聞き試してみることにした。

## NYAGOS (Nihongo Yet Another GOing Shell)

- [NYAOS.ORG - FrontPage](http://www.nyaos.org/)
- [zetamatta/nyagos](https://github.com/zetamatta/nyagos)

元々 NYAOS (Nihongo Yet Another Open Shell) というのがあって OS/2（！）とか結構 legacy な環境でも動くらしいが， NYAGOS はそれを Go 言語で書きなおしたものらしい。現時点（2015年5月23日）で 4.0.7_5 がリリースされている。

バイナリが配布されているのでそちらを使えばいいのだが，せっかく Go 言語だし，配布されてるパッケージが Win32 版のみのようなので，自分で Win64 用にビルドしようと思ったのが大間違い。どハマりしてしまった。

### NYAGOS ビルドの要件

[readme.md](https://github.com/zetamatta/nyagos/blob/master/readme.md) には Go 言語 1.4.2 と Lua 言語 5.3 が必要とある。

- [The Go Programming Language](https://golang.org/)
- [The Programming Language Lua](http://www.lua.org/)

（Lua 言語は組込み用途に強いと言われていて（VM が軽量で組込み用途に向いているらしい），他にも LuaTeX みたいな実装もあるし，そのうちちゃんと勉強しなきゃなぁ，とは思っている）

しかし実際にはこれだけでは足りなくて，ビルドするのに windres.exe を起動しているようで，そうなると MinGW が必須ということになる。やれやれ。

- [MinGW | Minimalist GNU for Windows](http://www.mingw.org/)

（5/24 追記： windres.exe は PATH 上に存在しなければ起動しないらしい。コメントでの指摘ありがとうございます）

[make.cmd](https://github.com/zetamatta/nyagos/blob/master/make.cmd) を見ると，他にも robocopy や taskkill といったツールを起動しようとするが，これはインストール時のファイルコピーに必要なだけなので，最悪なくても（手動でコピーできるので）問題ない。やれやれ。

ビルドは [make.cmd](https://github.com/zetamatta/nyagos/blob/master/make.cmd) を起動して

```shell
C:>make.cmd get
C:>make.cmd
```

とすればよい。最終的に実行に必要なファイルは

- `nyagos.d\*.lua`
- `nyagos.exe`
- `nyagos.lua`
- `nyole.dll`
- `lua53.dll`

となる。ん？ `nyole.dll` ってなんだ？

### nyole.dll

NYAGOS 実行時に nyole.dll なるものが必要らしい。

- [NYAOS-3000 から COM 拡張部分だけを切り出して、汎用の Lua ライブラリ化した](http://nyaos.org/d/index.cgi?p=%282015.04.07%29+0859#p1)
- [NYAGOS 4.0.7_3 と NYOLE.DLL 0.0.0.4 リリースしますた](http://nyaos.org/d/index.cgi?p=%282015.04.19%29+1046)
- [zetamatta/nyole](https://github.com/zetamatta/nyole)

> といっても使ってるのは nyagos.lua の一部で、 nyagos.d/ 内のファイルをリストアップするのに Scripting.FileSystemObject を使っているくらいです。

と書かれているが，実際には `.nyagos` ファイルの読み込みにも使ってるみたいなので，実質的にこれがないとまともに動かないっぽい。やれやれ。

しょうがないので [zetamatta/nyole](https://github.com/zetamatta/nyole) を取ってきて MinGW 64bit 環境でビルドしようとしたがエラーになる。って Lua のソースファイル（厳密にはヘッダファイル）がいるんかい！

これも [Lua のサイト](http://www.lua.org/)から取ってきて再びビルド。やっぱりエラーになるけど DLL ファイルはできてるっぽいので，それをつかって `nyagos.exe` を起動しようとしたら，「おめーの作った DLL なんか使えるか，ボケ！」（←超意訳）と Windows に盛大に怒られた。あーもう，やめやめ！

Golang でビルドできるというので試してみたのだが， Golang と関係ないところで面倒臭すぎる。結局 MinGW & Lua の開発環境が分かってないとどうしようもない。NYAGOS なんて看板に偽りありだ。 NYALUS とかに改名すべき。

### 結局

ビルドは諦めて 32bit 版のバイナリを落としました orz

（5/24 追記） @nocd5 さんが 64bit 版 NYAGOS のビルド記事を上げてくださいました。自分でビルドしたい場合はこちらをどうぞ。

- [64bit版NYAGOS ビルド手順 - Qiita](http://qiita.com/nocd5/items/a612d69513cdb9a5dda7)

## Console 2

これ，最終版が2011年なんだけど，大丈夫なの？ もう sourceforge で放置されてるってだけで怪しいんだけど。

- [Console download | SourceForge.net](http://sourceforge.net/projects/console/)

最終版は 2.00b148。 Win32 版と Win64 版のバイナリが用意されている。当然 Win64 版を選択。

Console 2 は IME が使えないらしいが IME を使えるようにしたバージョンを配布しておられる人がいるらしい。ありがとうございます。

- [Console IME対応パッチ - AtsuoIshimoto's blog](http://www.gembook.org/console-ime-patch.html)

ただ，この Console 2，日本語を入力したり表示したりしようとすると（文字化けならともかく）盛大に画面がぶっ壊れるんだけど，これってうちだけの現象なのかなぁ。

Console 2 はタブごとに shell を指定できたり（もちろん NYAGOS も使える）して便利なんだけど，イマイチだなぁ。 MSYS の bash と組み合わせれば多少使えるのかもしれないが，それするくらいなら Linux の仮想マシン立ち上げて，そこで MinGW のクロス環境を作るほうがマシな気がする。

というわけで，続きはこちら：

- [やっと NYAGOS がビルドできた - Qiita](http://qiita.com/spiegel-im-spiegel/items/9c11acf72fa38ef379f8)
- [ようやく ConEmu と NYAGOS を導入した — しっぽのさきっちょ | text.Baldanders.info](http://text.baldanders.info/remark/2015/conemu-and-nyagos/)
- [NYAGOS で Lua - Qiita](http://qiita.com/spiegel-im-spiegel/items/dac2f4c1dc2ec9bb5e7d)

## ブックマーク

- [半年くらいWindowsで開発してみて、使い続けたツールと使うのをやめたツール - Qiita](http://qiita.com/kikuchy/items/c47624843e1f5431ee69)
- [windowsのコマンドプロンプトだって、おしゃれに設定したら愛せる気が…しなかったのでConsole2×Nyaosで愛されターミナルを構築する - Confront my ignorance](http://tenten0213.hatenablog.com/entry/2013/10/01/010808)