2017の第8日目の記事として書かれました。表計算もできてしまう」です。第9日目はtm_tnさんによる記事の予定です。「何か書きます」とのこと。騙されてWindowsに戻ってきてしまった。性能も申し分ないし、タッチスクリーンの完成度は最高。うちにある外付けモニタが馬鹿みたいに見えてしまって逆に困るレベルである。言え誤算がひとつだけあって、このサーフェスブックにはマッキントッシュは入らないらしい。これでは★一つしかつけられそうにない。Bookの話であった。そのあたりで差が出たのだと思う。冗談はさておき、しかしWindowsも悪くないものだ。Windows上でEmacsユーザとしてやっていくことに関しては、もう5年以上のキャリアがある。使って快適な作業環境を構築したいと思う。WSLをセットアップするWSLが何であるか、どうやってセットアップするかについてはインターネットで検索してもらいたい。今回は初めてのインストールなのでBeta版を削除するなどの些細なことは気にしなくて良い。Storeでアプリを導入するのと同じ感覚でUbuntuが使えるようになる。16.04.3が導入された。Emacsを導入したいが、どのバージョンを導入するか考える必要がある。emacsするだけで無事Emacsが導入できる。25を導入したい場合は、いろいろ手段はあるがkelleykのPPMを追加するのが一番簡単だろう。teamの公開しているPPMでemacs-snapshotを追加することになるだろうか。開発中のバージョンであり高い頻度で更新される。26を導入するとなると、もうビルドするしかないのではないか?幸い最近のWSLはかなり安定してきておりdependencyを正しく導入すると問題なくビルドできる。dependencyの導入まで合わせて、こんな感じ。Xサーバを導入する最後にXサーバを導入すると完璧だ。ターミナルさえあれば何もいらないというハードコアな諸兄にとっては不要だろう。GUIのほうが使える操作が増えるし使いやすいので個人的にはここまでおすすめしたい。Cygwin/Xらへんが定番だったような気がする。使うのが今風のようである。名前を聞くので今回はVcxsrvを導入してみたが、今のところ全く不安定さを感じる場面は無い。GitHubを見ると更新が2年止まっているように見えるが、Sourceforgeではかなりアクティブにリリースされているようだ。VcXsrvを起動中にディスプレイの一つを切断するとVcXsrvがクラッシュすることがあるような気がします。ここまでセットアップを終えると無事GUI版のEmacsが使えるようになっているはずである。emacsここからはもう少し細かいカスタマイズをしていく。2はいわゆるhigh-DPIディスプレイである。あまりに1ピクセル(ソフトウェアから見た)の寸法(人間の目から見た)が小さすぎるので、工場出荷時にはスケーリングが200%に設定されている。側でレンダリングされたビットマップをWindows上で表示するということをしている。Vcxsrvの描画するウィンドウはWindowsのスケーリングをかけると単に画像が大きくなってしまってあまり見栄えがよろしくない、ということになる(ざっくり言うと)。いうわけでVcxsrv.exeを適切に設定してこのスケーリング設定を無効化してしまおう。Vcxsrv.exeのプロパティを表示する。Files\VcXsrvにあるだろうから直接探す。これ、やるのとやらないのでどちらが「きれい」か、あまり自明ではないですね。切るとタイトルバーが馬鹿みたいに大きくなるのが癪なので再び有効にしてみているところ。いい感じの日本語フォントを導入する何もしなくても日本語は表示されるはずである。句読点の位置が中国語のそれだったり、ちょっといまいち。導入の手軽さもこみでGoogle/Adobe謹製のNotoフォントをおすすめする。側ということになっている。いうわけでインストールはaptで簡単に。fonts-noto-cjkEmacsのほうはこんな感じで設定を。表示ときたら次は入力。emacs-mozc-binでいく。ターミナルでサーバをインストールする。emacs-mozc-binEmacs側ではまずmozc.elを手に入れ、load-pathの通っているディレクトリに置く。toggle-input-methodでIMEのオンオフが切り替えられる。好みに応じてglobal-set-keyしておこう。"<zenkaku-hankaku>")で指定できる。蛇足だが個人的に気に入っているのでgnome-terminalも導入した(めちゃくちゃdependencyが多かった)。こちらの日本語入力はいつものUbuntuと同じとはいかない。残念ながらibusはうまく動かないようである。今回は妥協してuim-fepとanthyを使うことにした。こんな感じでターミナルの一番下の行を1行占領してしまうが、しょうがない。gnome-terminalの設定で、起動するシェルをuim-fepにしておこう。.bashrcで呼び出すように設定しても良いが、二重起動しないようにいろいろ頭を使うのが面倒だった。Emacsのshellなどで起動しないで欲しいという理由もある。Windowsから直接Emacsを起動するさて、毎回Emacsを起動するためにWSLのターミナルを呼び出すのは面倒くさい。WindowsからWSL上のコマンドを実行するのは簡単だ。ダイアログなどからbashを呼び出すだけで良い。emacs"しかし、これだと「黒画面」が表示しっぱなしになってしまう。Emacsが終了するまでbash.exeのウィンドウが裏に表示されたままになってしまうのである。そこでひと工夫加えてこうすれば良い。&"良い......んじゃないかと思う。自分のショートカット見たらこれじゃなくてrun.exe使ってて、あれ、&じゃダメな理由あったんだっけ......忘れた......。&"などとしてしまっても良い。言うまでもないことだがGUIウィンドウを使いたければXサーバが立っている必要がある。Windowsの起動時に自動で起動するようにするのが簡単だろう。エクスプローラのアドレスバーでshell:startupと指定すると開くディレクトリにVcxsrvへのショートカットを置くだけである。ここで重大な問題が発生する。ところでEmacsがハングしてしまうのである。おまけに編集中のファイルは消滅してしまう。うーん............。sshfsもまだ使えないみたいだし......。うーん............。Emacsやめるか......。いうわけで他のエディタを導入してみる。実を言うと時代遅れのEmacsなんてはやく辞めたかったのである。時代はElectron製イケてるエディタやな!!が、やっぱりダメ。エディタを起動したらまずfind-fileしたい。GUIのファイルオープンダイアログなんか使いたくない。プロジェクトにファイルがありませんじゃない。IDEじゃなくてエディタが欲しいんだよ。リモートファイル編集がないって何?💢ファイルをダウンロードして編集して保存してアップロードするのか?sshしてターミナルで操作の限定された状況でファイルを編集するのか?サーバを立てるごとに環境構築して?21世紀なのに?え?というわけでやっぱりEmacsを使うしか無い(個人の感想です)という結論に。Atomのftp-remote-editはいい線いってると思いますよ。気を取り直して頑張ってtramp-modeをデバッグする。27いずれも同様の問題があるらしいことがわかった。あとtrampもファイルを開くたびになんかエラー出る)基本通りedebugをアタッチしてみると、process-send-stringでbase64エンコードした文字列を送りリモートシェルでデコードする部分で処理が止まってしまうことがわかる。この問題は比較的小さいファイルを編集するときには起きないようだ。そこで、一回に送る文字列の長さを制限してみる。1024))数字は適当である。今のところ問題は再発していない(10240はダメだった)。一応tramp-chunksizeをいじるのはWSL上だけに制限しておこう。WSLかどうか判定するのはこういう感じで。-r"))というわけでどうにか開発環境として日常的に使えるように出来た。これがEmacsの問題だったのかtramp-modeなのかWSLなのか、よくわからない。どこかに報告したほうがいいのかもしれない。いずれにせよこれでコードが書ける。大変なこともあったけど、2017年現在、Windowsでやっていけそうです。Emacsを卒業しそびれてしまったねえ。