Windows の cmd がダサいのはみんな思っていることのようで,それに代わる環境も色々あるのだが, NYAGOS + Console 2 が良いらしいと聞き試してみることにした。
NYAGOS (Nihongo Yet Another GOing Shell)
元々 NYAOS (Nihongo Yet Another Open Shell) というのがあって OS/2(!)とか結構 legacy な環境でも動くらしいが, NYAGOS はそれを Go 言語で書きなおしたものらしい。現時点(2015年5月23日)で 4.0.7_5 がリリースされている。
バイナリが配布されているのでそちらを使えばいいのだが,せっかく Go 言語だし,配布されてるパッケージが Win32 版のみのようなので,自分で Win64 用にビルドしようと思ったのが大間違い。どハマりしてしまった。
NYAGOS ビルドの要件
readme.md には Go 言語 1.4.2 と Lua 言語 5.3 が必要とある。
(Lua 言語は組込み用途に強いと言われていて(VM が軽量で組込み用途に向いているらしい),他にも LuaTeX みたいな実装もあるし,そのうちちゃんと勉強しなきゃなぁ,とは思っている)
しかし実際にはこれだけでは足りなくて,ビルドするのに windres.exe を起動しているようで,そうなると MinGW が必須ということになる。やれやれ。
(5/24 追記: windres.exe は PATH 上に存在しなければ起動しないらしい。コメントでの指摘ありがとうございます)
make.cmd を見ると,他にも robocopy や taskkill といったツールを起動しようとするが,これはインストール時のファイルコピーに必要なだけなので,最悪なくても(手動でコピーできるので)問題ない。やれやれ。
ビルドは make.cmd を起動して
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 ライブラリ化した
- NYAGOS 4.0.7_3 と NYOLE.DLL 0.0.0.4 リリースしますた
- zetamatta/nyole
といっても使ってるのは nyagos.lua の一部で、 nyagos.d/ 内のファイルをリストアップするのに Scripting.FileSystemObject を使っているくらいです。
と書かれているが,実際には .nyagos
ファイルの読み込みにも使ってるみたいなので,実質的にこれがないとまともに動かないっぽい。やれやれ。
しょうがないので zetamatta/nyole を取ってきて MinGW 64bit 環境でビルドしようとしたがエラーになる。って Lua のソースファイル(厳密にはヘッダファイル)がいるんかい!
これも Lua のサイトから取ってきて再びビルド。やっぱりエラーになるけど DLL ファイルはできてるっぽいので,それをつかって nyagos.exe
を起動しようとしたら,「おめーの作った DLL なんか使えるか,ボケ!」(←超意訳)と Windows に盛大に怒られた。あーもう,やめやめ!
Golang でビルドできるというので試してみたのだが, Golang と関係ないところで面倒臭すぎる。結局 MinGW & Lua の開発環境が分かってないとどうしようもない。NYAGOS なんて看板に偽りありだ。 NYALUS とかに改名すべき。
結局
ビルドは諦めて 32bit 版のバイナリを落としました orz
(5/24 追記) @nocd5 さんが 64bit 版 NYAGOS のビルド記事を上げてくださいました。自分でビルドしたい場合はこちらをどうぞ。
Console 2
これ,最終版が2011年なんだけど,大丈夫なの? もう sourceforge で放置されてるってだけで怪しいんだけど。
最終版は 2.00b148。 Win32 版と Win64 版のバイナリが用意されている。当然 Win64 版を選択。
Console 2 は IME が使えないらしいが IME を使えるようにしたバージョンを配布しておられる人がいるらしい。ありがとうございます。
ただ,この Console 2,日本語を入力したり表示したりしようとすると(文字化けならともかく)盛大に画面がぶっ壊れるんだけど,これってうちだけの現象なのかなぁ。
Console 2 はタブごとに shell を指定できたり(もちろん NYAGOS も使える)して便利なんだけど,イマイチだなぁ。 MSYS の bash と組み合わせれば多少使えるのかもしれないが,それするくらいなら Linux の仮想マシン立ち上げて,そこで MinGW のクロス環境を作るほうがマシな気がする。
というわけで,続きはこちら:
- やっと NYAGOS がビルドできた - Qiita
- ようやく ConEmu と NYAGOS を導入した — しっぽのさきっちょ | text.Baldanders.info
- NYAGOS で Lua - Qiita