もうすぐ6月、あの季節がやってきます。新製品の発表はあるやなしや? Mountain Lionの発売時期は? 単なる噂なのかリークなのか真偽が定かでない情報が飛び交っていますが、そろそろ情報を整理すべきですね。当コラムでもWWDC情報をキャッチアップしていきますので、よろしくお願いします。
さて、今回は「Mosh」について。OS Xと直接の関係はないが、標準装備のリモートシェル「SSH」に代わりうる実装であり、モバイルでの利用に適したフィーチャーを持つ。我々日本人には草を食む草食動物のような響きだが、なかなかどうして、鋭敏さが際立つ次世代のリモートシェルなのだ。
What's Mosh?
Moshこと「Mobile Shell」は、マサチューセッツ工科大(MIT)で開発された新しいリモートシェル。アクセスポイントの変更などによりIPアドレスが変更されても接続は維持され、スリープしても接続が途切れることはない。認証機構はSSHに依存するため、SSHを完全に置き換えるわけではないが、ログインの手順など使い方は従来どおりだ。
そんなMoshを支える存在が「SSP(State Synchronization Protocol) over UDP」。かんたんにいえば、状態の同期が可能なトランスポート層の独自プロトコルで、その名のとおり下層にUDPを置いて送信される。クライアント/サーバがUDPのパケット単位に収まる範囲で状態を送信しあうことで、接続を維持できるのだ。たとえば、ノート機のパネルを閉じて(スリープして)場所を移動しても、パネルを開けば直前の状態から作業を再開できる。
iPhone/iPadをSSHクライアントとして使いたいと考えていたユーザにとって、Moshはまさに最適なツールとなりうる。ネットワークへの接続が断続的でも影響がなく、セッション途中でIPアドレスが変わっても問題なし、クライアント/サーバ間の経路が変わっても接続を維持できるという、まさにモバイル向きのシェルなのだ。
もうひとつ、Moshには「ローカル・エコー」といううれしいフィーチャーがある。従来のリモートシェルでは、キー入力の情報はサーバに送信され、サーバからの反応(エコーバック)があって初めて文字が端末に表示されるが、そのために遅延が発生する。しかしMoshではローカル側でとりあえずエコーを表示しておき、支障なければ確定させそのまま表示する、という流れで一連の処理を行う。早い話が、ローカルで作業しているときと同様の軽快なキーレスポンスを得られるのだ。
OS XでMoshを使う
OS XにMoshを導入する方法だが、結論からいえばクライアント/サーバの両方にMoshのパッケージをインストールする必要がある。接続を開始する際には、SSHと同じ要領で「mosh ユーザ名@ホスト名」と実行するが、サーバ側のsshがMoshサーバ(/usr/bin/mosh-server)をコマンドサーチパスから検索して起動するため、サーバ側にもMoshが必要になるのだ。
インストールそのものはかんたん。MoshのWebサイトで配布されているOS X用パッケージ(最新版はmosh-1.2-2.pkg)をダウンロード、セオリーどおりシステム標準のインストーラで導入すればいい。この作業をクライアント/サーバの両方で行えば、Moshを使う準備は完了だ。
Moshを利用した感想だが……とにかく、レスポンスが小気味いい。ローカル・エコーの効果は絶大で、SSHで接続したときに感じるもたつき/引ひっかかりが大幅に軽減されている。キー入力から表示までのタイムラグはないに等しく、ふだんローカルで作業しているときとほとんど変わらず作業できた。その軽快さは、シェルでコマンドを入力するときはもちろん、Emacsやviといったエディタを使うときもレスポンスのよさは変わらないので、この点だけでもMoshを導入する価値はある。
惜しまれるのは、いまだiOSアプリ(クライアント)が公開されていないこと。Moshの特徴が活きるのは、モバイル前提のiOS端末のはずで、その環境でなければ真価は発揮されないように思う。iOSアプリの公開を待ちたい。