2018年6月19日 (火)

やねうら王MyShogiをLinuxでビルドしてみた

Build_w_images

2018年にマイナビ出版から発売予定という「商用版のやねうら王」のオープンソース版であるMyShogiをMonoDevelopでビルドしてみました。まだまだ未完成のようで遊べる状態ではありませんが、のちのちハックしてみたい方の参考になる部分もあればと覚書を記事にしてみました。

一応Linux Mint 18(Ubuntu16.04ベース)でも最新のwineで将棋所とかShogiGUIとか動かせるのですが、メニューのところが微妙に表示がおかしい(下図)のがきになるといえばきになる・・・。

Shogidokoro_on_wine

あと級位者なのでめっちゃ深い検討とかより「ぴよ将棋程度の棋力と精度でいいので高速に検討できたらいいなぁ」という感じなのでK-Shogiで検討したらいいのではと思ったらK-Shogiは私の環境ではWINEでうまく動かない。

Win7はできれば起動したくないので「やっぱりLinuxネイティブなアプリってほしいなあ」とかおもい、ElementaryOSにはまっていたちょっと前は開発言語のValaぜんぜんしらんけどElementaryOS専用アプリなんかつくってみたいので、必要最小限の簡単な将棋ソフトでもつくってみようかなと思っていたところ、

というツイートを目にし、Linuxもありですか?と凸ったところ

というお返事をいただき、これは期待大!であり、正直私ではちょっと苦労しそうなプロジェクトなので無駄な努力せんで良かったと胸をなでおろしたのであった。

というわけで、期待なMyShogiなわけだが、おそらくまず製品版がでて、それからちゃんと動きそうなオープンソース版が公開になる感じとおもわれるのでまだまだ待たねばならぬ。C#とあるし、MyShogiのGithubを覗くとやっぱり.NET環境っぽいのでもしかしたらMonoDevelopでビルドできちゃうのでは?と思い実行してみた。

ダウンロードしたソースをMonoDevelopで開いて、F7でMyShogiのビルドをしてみると


Done building project "MyShogi.csproj" -- FAILED.

Build FAILED.

CSC : error CS1617: Invalid option '7.3' for /langversion. Use '/langversion:?' to list supported values.
    0 Warning(s)
    1 Error(s)

とか怒られる。これはMonoDevelopについてくるコンパイラーがちょいと古いのか、ライセンスの関係かしらんけど Nugetでもって最新版をおとせばよい。

メニューのProject => Manage nuget packages...からMicrosoft.NET.Compilersをダウンロードする。これはプロジェクト毎にやらんといかんらしいので、MyShogiを新たにダンロードしたりした場合これをやり直す。

Nuget_2

ぬあんとこれだけで、じつはMyShogiのビルド自体は成功してしまい、MyShogi/bin/debugにはたぶんウィンドウズ用のEXEができている。まあ本当はビルドのターゲットをLinuxにしてやらないとネイティブアプリとは呼べないのでおそらくWINEと大差ないのだけど、とりあえず変更無しでクロスビルドできてしまったのには驚いた。

とはいえ、現在Githubにあるソースには駒や盤、畳の素材がないようで、画面は真っ暗で日本語も文字化け。

Myshogi_on_monodevelop

でもメニューから対局ウィンドウ出せたりはする。

Taikyoku

なんて経緯をツイートしていたらやねさん本人から素材の提供をしてもらったのでMyShogi-master/MyShogiフォルダにimageとimage_sourceフォルダをコピーして、TheApp.cssのコメントアウトしてある箇所をアンコメントしてやってビルドすると駒の画像がでるようになった。


            // 駒素材画像の変換
            ImageConverter.ConvertPieceImage();
            ImageConverter.ConvertBoardNumberImage();

盤と畳は重ねあわせとかの部分プログラム上で合成しているらしいので、そのへんは失敗してて、駒だけになっている模様。

ちなみに実行はコンソール上で


mono MyShogi.exe

とやって実行すると起動するが、EXEをダブルクリックしたりWINE経由で実行するとうまく行かない。

というところまでは二,三週間くらい前の話で、今日最新のコードを落として再現してみたらイメージの合成に失敗してウィンドウもでてこなくなったのでなんか変更あったのでしょう。

ちなみに、ぴよ将棋の絶妙な接待ぶりは級位者の私にはとても魅力であり、検討も速いわりに、技巧10秒で検討したときとあんまり評価値変わらない。ぴよ将棋すばらしい。そしてMyShogiも期待。

2018年5月 2日 (水)

JupyterLabでも好きな外部エディターを使いたい!

JupyterLab内蔵のEditorはいまのところオートコンプリートが効かないので、つかえねーよという方も多いかと思うんだけど、JupyterLabのエディターにどうやってオートコンプリートつけるかはいろいろ議論中らしいですなぁ。正式版ではどうなるのだろうか。

Notebook内のCellの編集でオートコンプリートできるのは、Notebook起動した時点で専用のプロセスがもう起動しているが、エディターにはまだPythonのプロセスが走ってない状態がありえるから同じ方法ではできないし("Create Console for Editor"するまではまだない)、どのバージョンのPythonなのかとかいろいろ不確定な要素もあるし、良い仕様を模索している感じかなぁ。個人的には#!/usr/bin/envとかがあれば、そこにあるインタプリターつかって、それ以外はJupyterが走っているPythonをデフォルトにするとかでいいじゃないかとかおもっちゃうが。その辺、Sublime Textはどう処理しているのだろう。。。

しかし、ちょっと試したところ下に書いたようにただ単にファイルを好きな外部エディターで開いて編集してしまって、JupyterLabのエディターで保存しようとするとRevertするかOverwriteするかきかれるのでRevertすればいいと判明。あとはIPythonコンソールをJupyterLabから開いて%runマジック使って実行する場合、最新のファイルの内容で実行されるので、JupyterLabのエディターを最新のバッファーに保つ意味はないようなので、こまめにRevertするような必要はなさそうだし、これでいっか。

Revert

さらに、SSH接続した場合でもOKだった。試したのはウィンドウズでX11 forwardingに定評があるらしいMobaXterm経由で同一ネットワーク上のLinuxマシンへとSSHして、そこからsublコマンドでLinuxサーバー上でSublime Text起動し、GUIをウィンドウズ7へX11 forwardingし、JupyterLabで制作したファイルを開いて編集したら、Sublimeでした編集がJupyterLabへと反映されたし、その逆もできることを確認した。JupyterLabのエディターでした変更はただ単にCtrl+Sでセーブすれば一瞬でSublime側にも反映されるが、Sublimeでした変更はJupyterLabのエディターへいって保存しようとするとファイルに変更があったから[Revert]するか[Overwrite]するか聞かれるのでRevertを選択してリロードすることになるので2つほど操作が余計なのが残念。これってJupyter側でエディターの設定でリロード設定を変えられないだろうか?あとでチェックしておこう。

MobaXterm + SublimeText + JupyterLab はワタシ的にはかなり素晴らしかった。MobaXtermがX11 forwardingをだいぶ高速化しているっぽい。

Linux Mint 18マシンからssh -X 192.168.1.100で同様にX11 forwardingしてみるとSublimeの描画が非常に遅いので、-CオプションをつけるとXセッションのコンプレッションがされて高速化されて、MobaXtermとあまり変わらない速度になった。快適。

MintのsshでもMoboXtermと同じでJupyterLabのエディターで保存しようとしてRevertしないといけないが、一応使えた。もっといい方法がないかとは思うがしばらくはこれで行くか。

追記) Get xpra to work on Ubuntu 14.04を参照して、xpra v2.2.6でもできたので覚書。

サーバーにSSHして、

xpra start :1234 --start-child=subl --no-notification --no-pulseaudio

してサブライム起動。

クライアントサイド(Linux Mint18)のxpra launcherを起動して、SSHを選択。IPのあと、ポート番号:ディスプレイ番号を入力して接続。上の場合は、22:1234となる。

xpraの方が速いと言われているが速さ的にはsshでコンプレッションしたのと変わらない気がする。。。しかし、xpraなら切断してからセッションに再接続できるのがやはり便利だ。

Sublimeどうしても使いたいのでなければ、普通にsshしてからtmuxが簡単か。nanoかvimでも覚えようかな。

«ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。

広告欄


広告欄

Amazon

  • ブログ記事にした商品のアフィ

    デジピはヤマハが音質・キータッチとも一番良いです。

    レビュー記事かいた程おすすめのワイヤレススピーカー。

    安いタブレットとして買い替えに最適

    業務用あれな人向け。家でもキムワイプ

    速くKindle化して欲しい

    シネッセンス細胞関連の緑茶由来のサプリメント。

やっつけタイムライン

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram

    当ブログはElementaryOSに浮気しつつも超安定なLinuxMintを応援しています。






    Jenny Mayhem
2018年6月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

IT技術注目記事