Termux上のEmacsで日本語の文章を書くために必要なこと。

By | 2021年8月1日 , Last update: 2021年8月11日

はじめに

スマホをZenfone4からROG Phone 5(ZS673KS)(以下、単に「ROG Phone 5」と書きます。)に替えたところ、(縦方向だけではあるものの、)画面が大きくなり、画面もきれいに表示されるようになりました。

↑は1080×2440の画像です。デフォルトの待ち受け画像はゲームな感じのものだったので、設定を変更して差し換えています。

画面が大きくなったということで、本Webサイトの管理人たるpanda的にやりたいこととしてまず最初に思いつくのは、

「思いついたことをメモ書きできるようにスマホをカスタマイズすること。」

だったりするので、Android対応のテキストエディタアプリをいくつか試してみたのですが、自分にとって使いやすいものを見つけることができていません。

また、Android対応のBluetooth接続(またはUSB接続)のキーボードを使ってPC使用時と同様の入力方法で入力することも考え、Bluetooth接続(またはUSB接続)キーボードとマウスをかなり以前から用意してはいるのですが、カフェでは何かの入力作業をするよりも写真を撮ることの方が多くなっているのが現状です。

よって、スマホとキーボードが同時に使えるという状況には(自分の経験上)なりにくいことと、キーボードとマウスは普通に荷物としてかさばるため、持ち歩くという感じにはなっていません。したがって、スマホのソフトウェアキーを使って日本語を入力する方法を考えることにします。

そこで、Zenfone4で一度トライして諦めた「スマホにEmacsをインストールして外部デバイスを使用せずに日本語の文章を書くために必要なこと」をいろいろと妥協しながらまとめてみることにしました。

スポンサーリンク

方向性


スポンサーリンク

次に方向性について考えます。

Emacs(+OpenSSH)

この記事を最初に書いた時点(2021年8月)ではAndroid上でネイティブに動かせるEmacsで活発なアップデートが行われているものはないようですので、Termuxをインストールしてから、Emacsをインストールして使うことにします。

なおTermuxをインストールするとついでにOpenSSHもインストールできますので、Emacsで編集した日本語の文章が含まれるファイルのスマホ外への転送手段を増やすこともできます。

日本語入力

PC等でのEmacs用の日本語入力と比較して、Android+Termux+Emacsの組み合わせで使える日本語入力メソッドの種類には限りがあるようで、SKKあたりが使えそうな感じです[1,2]が、それ以外の組み合わせはGoogle先生に質問してみた感じでは見当たりませんでした。

本Webサイトの管理人たるpandaはSKKを使ったことがないのと、スマホのソフトウェアキーによる日本語入力はこれはこれで使えるものであり、この使い勝手はできるだけ変えない方が良いだろうと判断したので、Emacsで使用されている日本語入力メソッドを移植等の方法で持ち込んで使うことは諦めて、スマホのソフトウェアキーで何とかする方法を考えることにします。

実はZenfone4で試みた際にもここで挫折しているので、ここを突破することがポイントになりそうな予感がします。

作業

方向性が定まったところで、サクサクと作業します。

Termux


スポンサーリンク

Zenfone4の使用時にPlayストアからダウンロードしたTermuxを使用していて、かつ「Googleバックアップ」の設定を行っていたので、ROG Phone 5にもTermuxがインストールされていましたが、作業開始の時点ではpkgコマンドが使えない(403のHTTPステータスコードが返ってくる。)問題があり、その解決策が明らかでなかったため、いったんTermuxを入れ替えました。

※[2021/08/11補足] TermuxについてはF-Droidからより新しいバージョンが入手可能なようです。

その後、pkgコマンドが使えない原因についての記事[3]を発見したため、リポジトリをGrimlerに切り替えてpkgコマンドを使用可能な状態としました。

Emacs

pkgコマンドが使用可能な状態になったところで、Termuxのシェルプロンプトから以下のコマンドを実行し、Emacsをインストールします。

$ pkg install emacs

 

OpenSSH

スポンサーリンク

インストール

次に、Termuxのシェルプロンプトから以下のコマンドを実行し、OpenSSHをインストールします。

$ pkg install openssh

 

公開鍵及び秘密鍵の作成


スポンサーリンク

Termux側からPC等の他の端末(またはPC等の他の端末からTermux)へのsshのログインを行う場合には以下の手順で公開鍵及び秘密鍵のペア(以下、単に「鍵ペア」と書きます。)が使用できるよう設定します。

  1. 以下のコマンドを実行し、鍵ペアを作成します。
    $ ssh-keygen -t ed25519
  2. 鍵ペアが作成できて、かつTermuxからsshでログインしたい先の端末がある場合には、sshでログインしたい先の端末の.sshディレクトリの下にあるauthorized_keysファイルに手順1で作成した公開鍵を追加します。
  3. 鍵ペアが作成できて、かつTermuxで起動しているsshdにログインさせたい端末がある場合には、ログインさせたい端末の.sshディレクトリの下にある公開鍵ファイルの内容を鍵ペアと同じディレクトリ(.ssh)にあるauthorized_keysファイルに追加します。

SSHサーバの起動及び接続

TermuxでSSHサーバ(sshd)を起動させるには、Termuxのシェルプロンプトで以下のコマンドを実行するとSSHサーバが起動し、8022番ポートでSSHクライアントからの接続を待ち受けます。

なお、上記のSSHサーバへの接続時にはユーザ名を指定する必要はありません。

$ sshd

 

日本語入力のためのキーボードのカスタマイズ

日本語入力の方法

AndroidのソフトウェアキーボードといえばGboard一択です(※個人の意見です。)が、TermuxからEmacsを起動してGboardを使おうとすると…

特殊キーの行(ESCボタンから始まる行)が1行しか表示されません。

また、ソフトウェアキーボードのキーを押しただけでは日本語入力っぽいモードにはなりません。

これが原因で、EmacsをTermuxで使うことを諦めていたのですが、検索を繰り返しているうちに[4]の記事を発見しました。

記事の内容を参考にここをスワイプすると…

日本語が入力できます。

試しにEmacsを起動してから日本語を入力してみると…

入力した単語をEmacsのバッファに入れることができました。😃

スワイプ操作で入力モードを切り替えられるというのは直感的な操作で、かつ慣れると使い勝手が良さそうだと判断したので、この方法を試してみることにしました。

特殊キーの設定(前編: 2行にしてみる。)

[4]の記事には前節の操作の他に特殊キーを2行にする方法も紹介されていました。

特殊キーのカスタマイズができて、かつその対象に上下左右の矢印キーが定義できるのならば、Emacsでのファイルの編集が相当に捗るのではないかと考え、Termuxのホームディレクトリの .termux/termux.propertiesに以下の設定を記述しました(1行目の行末をバックスラッシュで折り返していますが、実際には1行で記述しています)。

extra-keys = [ [ ‘ESC’,’TAB’,’CTRL’,’ALT’,’DEL’,’UP’,’\\\\’ ], \
[ ‘|’,’/’,’PGUP’,’PGDN’,’LEFT’,’DOWN’,’RIGHT’ ] ]

 

続けて、Termuxのシェルプロンプトから以下のコマンドを実行します。

$ termux-reload-settings

 

すると…

のように表示が切り替わり、上図の赤矢印の部分に上下左右の矢印キーが表示されていることがわかります。

これがあると、Emacsで編集中のファイルが表示されているバッファ内を自由に動き回ることができるようになるだけでなく、Termuxのシェルプロンプトで前に実行したコマンドを素早く呼び出すことができるようになります。

特殊キーの設定(後編: 3行にしてみる。)

Emacsはキーバインドの設定が柔軟にできますので、特殊キーをできるだけたくさん入力できるように設定することにより、設定可能なキーバインドの種類を増やすことができます。

そこで、.termux/termux.propertiesを以下のように変更してみます(1行目及び2行目の行末をバックスラッシュで折り返していますが、実際には1行で記述しています)。

extra-keys = [ [ ‘F1’, ‘F2’, ‘F3’, ‘F9’, ‘F10’, ‘F11’, ‘F12’ ], \
[ ‘ESC’,’TAB’,’CTRL’,’ALT’,’DEL’,’UP’,’\\\\’ ], \
[ ‘|’,’/’,’PGUP’,’PGDN’,’LEFT’,’DOWN’,’RIGHT’ ] ]

 

続けて、Termuxのシェルプロンプトから以下のコマンドを実行します。

$ termux-reload-settings

 

すると…

のように表示が切り替わり、特殊キーが3行にわたって表示されていることがわかります。

使用感など。

ここまでの作業を行った結果、Emacsは使用に耐えるレベルの使いやすさに到達した感じです。

こんな感じで使えるようになりました。😀

また、OpenSSHのサーバーを動かせるように設定したことで、リモートからTermuxで動かせるコマンドなどを実行することができるようになりました。

Emacsを使っていると、どうしてもCtrlキーを使って操作を行う頻度が高くなるので、Ctrlキーの使い勝手が悪い場合には、

  1. Ctrlキーの使い勝手を良くする方法を考える。
  2. Ctrlキーの使用を回避する方法を編み出すことで頻度を下げる。

というようなアプローチで使い勝手を改善する必要がありますが、後者のアプローチを採用しています。

まとめ

Androidで使うことのできるテキストエディタは操作性やアプリ側の日本語対応がいまいちなものしか見当たらなかったので、GboardをEmacs向きにカスタマイズして、さらに日本語入力機能への切り替えをスワイプで行うという運用を組み合わせることで、Windows 10でEmacsを使うときと同じくらいの操作性を確保できました。特に矢印キーが使用できるようになったのは操作性の向上に大きく寄与すると思います。

また、スマホと他の端末との間の(ファイルを含む)データ転送の手段で、かつAndroidが提供しているものはAndroid側のディレクトリの構成が独特なものであるせいか、かなり使いにくい印象があります(※個人の感想です)。

それに対して、Emacs関連の作業と並行してOpenSSHを使ったログインを行うための設定を行うことにより、スマホと他の端末との間の(ファイルを含む)データ転送の手段でかつ使いやすいものを追加することができたことで、今後はデータの転送作業が今まで以上に捗るかもしれません。

この記事は以上です。

スポンサーリンク

References / 参考文献

  1. ANDROID上でEMACSをまともに使うには
  2. Android Emacs で日本語を入力する
  3. [README] Bintray repositories are down now | Error 403 Forbidden | Error 404
  4. Termuxの意外と知らない日本語入力方法、特殊キータブの項目を増やす小技