icon

「最適なサービスで一歩先行く組織へ」ビジネスに伴走する課題解決メディアCHECK!

シェルアシストに長けた新しいSSHクライアント「Poderosa」

シェルアシストに長けた新しいSSHクライアント「Poderosa」

エンジニアの皆さん、SSHクライアントは何を使ってますか? 程度の差はあれども、エンジニアであればSSHでリモートサーバに接続することは必ずありますが、今回は筆者の会社で開発・販売しているPoderosaを紹介したいと思います。

メジャーなSSHクライアント

SSHクライアントといえば、WindowsではTeraTerm、Putty、RLoginといったところが有名です。MacOSXでは、標準ターミナルももちろんありますが、iTerm2というツールもなかなかよくできています(iTerm2は、正確にはSSHクライアントではなくOSXの標準ターミナルのラッパーです)。
これらは安定性や実績という点ではよいのですが、さすがにUIが古く(たとえばTeraTermは20年前には既に存在していたと思います)、今後IoTやAIやらで高度化するコンピューティングを行うために人間が触るツールとしては物足りないだろう、というのがPoderosaの開発動機の一つです。

 

Poderosaの歴史

Poderosaは、もともとは筆者が勤務していた会社の業務でTeraTermを使っていたところ、複数の接続先を切り替えるのに不便だったので自分で作ってやろうと思ったのが始まりです。これがもう15年くらい前のことですが、既にタブ型UIのブラウザは普及していたので、これを真似て作ったのです。当初はその会社の製品として作っていたのですが、愛着があったので退職時に自腹で著作権を買い取って開発を続行しました。
その後、2005年にIPAの未踏ソフトウェア事業に採択され、税金の補助をうけて積み残していた未実装機能をいろいろ搭載してオープンソースで公開しました。ここまでは良かったのですが、積み残しがなくなったことで逆に自分の興味がなくなってしまい、完全放置状態になってしまいました。
その後2013年頃、次に書くような特徴を持たせて大幅リニューアルに取り掛かり、他案件の合間を縫って開発を続け、2016年夏にWindows版、2017年春にOSX版をそれぞれリリースしました。リニューアル後に、放置状態期間も使い続けてくれた人がかなりの数いることがわかり、驚くとともに反省しました。フィードバックがないからといってユーザがいないわけではないのですね!

 

Poderosaの特徴

もともと趣味とビジネスが半々のプロジェクトなので、多少回り道でも自分の勉強になる要素を取り入れています。
(1) モダンなGUI
ベースはWindows版ではWPF、OSX版ではCocoaで組んでいますが、その中のターミナル本体はOpenGLを使用しています。これにより高度なグラフィックや複数プラットフォームのへの移植性を確保しています。
(2) グラフィック上のエフェクト
OpenGLを使って高度なエフェクトをつけています。ターミナルにエフェクトは不要という考えの人も少なくないのはわかっていますが、映画に出てくるハッカーはたいていアニメーションつきの妙に恰好いいシェルを使っていることからいっても、一定の需要は必ずあると思います。
(3) シェルアシスト
シェルに入力した内容に対して、バックグラウンドで取った過去のコマンドヒストリから候補を補完して入力の手間を省く機能を搭載しました。画面のようにファンクションキーを使うのが基本ですが、TouchBar搭載のMacBookではそれを使うこともできます。個人的には気に入っている機能です。
(4) Xamarin
WindowsとOSXに両対応させるため、Xamarinを使っています。これで両者のソースコードの7割くらいは共通化できています。
これについては先日Qiitaに書いた記事もご覧ください。

なお、これを足掛かりに趣味でXamarinのオープンソース部分のコミュニティにも出入りしはじめたところです。

poderosa

 

将来構想

エンジニアにとってシェルの操作は基本ツールですが、時代の変化に合わせてその最適形態は徐々に変わるはずです。Poderosaはシェルのクライアントサイドで大胆な新機能をする土台としては他に類をみない存在と思いますので、アイデアのある方はご連絡ください。せっかくOpenGL化したので、今度どこかでHTC ViveのようなHMD環境にチャレンジしてみるかもしれません。

 

著者|岡嶋 大介

株式会社ラガルト・テクノロジー 代表取締役

企業URL:http://www.lagarto.co.jp/

Poderosa URL:https://ja.poderosa-terminal.com/