ちょっと話題の記事

Rustベースのモダンなterminal 、 Warp

2022.04.07

Introduction

Warpは、生産性と使い勝手を考えて再設計されたRust製のterminalです。
先日パブリックベータが開始され、誰でも使えるようになりました。
※現在はMacのみ。他のプラットフォーム近日対応予定とのこと

完全Rustネイティブのアプリで、GPUでレンダリングするので高速です。
いまの開発に適した、モダンな機能をそなえたterminalになっています。

Why Warp?

ここに、なんでいまさらterminal?
の理由が書いてます。  

かんたんにまとめると、  

  • 開発者ならコードエディタとターミナルは絶対使う
  • コードエディタはどんどん進化してるがterminalは昔から変わってないから再開発した
  • Warpの入力は最新のテキストエディタみたいに使える。出力はnotebookみたいに使える。
  • よく使うコマンドをsuggestionしたり、ワークフロー機能でコマンド入力を楽にする

みたいな感じです。
Warpは開発者が使いやすくなるようterminalを機能させます。

Environment

以下の環境で試しました。
M1 macでも問題なく動きます。

  • MacBook Pro (13-inch, M1, 2020)
  • OS : MacOS 11.3.1

Setup

ここからWarp.dmgをダウンロードしてインストールします。
途中でGithubの認証が入りますが、
Githubアカウントのメールへアクセス可能にするための処理になります。
これはベータ版のみの処理のようで、
正式リリース時にはGithub経由のログインは不要になるとのことです。

Try Warp

Warpを起動したら普通にterminalとしてそのまま使えます。
タブでコンソール分割できるし、1つのタブ内で分割することもできます。
(⌘ + Dでsplit、⌘ + Wでclose)

⌘ + PでCommand Paletteが表示。
目的のショートカットを検索するにはここで探しましょう。  

入力時、Shift + Enterで複数行の入力も可能です。
また、このとき⌘ + clickで複数行を選択して、複数行の同時入力ができます。

Blocks

Warpでは、コマンド入力とアウトプットを1つのグループ(Blocks)として扱います。
これにより、コマンドやその出力をコピーしたり、
コマンドの入出力を共有したりも可能です。

※Blocksの実現方法についてはここで解説しています

ではコマンド実行をおこなって、結果を共有してみましょう。
現在、共有したリンクは誰でもアクセス可能なので注意してください。

適当なコマンドを入力したあと、Blocks右上のドロップダウンから
Create Permalinkを選択(もしくは⌘ + Shift + S)をします。

Create and Copy Linkボタンを押すと、Warpの管理するサーバに
コマンドと結果がアップロードされてリンクが生成されます。

このリンク先ではコマンドとその結果がコピーできます。
現状、このリンクは誰でもアクセス可能なので注意してください。
将来的には制限がかかる予定とのことです。
※詳しくはプライバシーポリシー参照

共有を取り消したい場合、アプリ右上のメニュー(⌘ + ,)からShared blocksを選択して
取り消してください。

SSH先でもWarp

terminalの役割として、リモートサーバにsshログインして作業することも多いと思います。
Warpではsshログインしたサーバでも、 入力エディタや補完機能などをそのまま使えます。

ただし、BlocksのようなWarp特有の機能は、現在bashかzshにしか対応してないので
詳しくはここを参照してください。

workflow

Warpでは、workflowという
「Warp内でコマンドを実行して共有するための機能」をもっています。  
任意のコマンドをまとめたりパラメータ化でき、検索や共有も可能です。
control + Shift + Rでworkflowメニューにアクセスでき、検索や実行ができます。

↑ではgitの新しいブランチを作成して
remoteにpushするワークフローを選択しています。
フォーマットにしたがって記述すれば、自分でワークフローを定義できます。

workflowについてはここを参照してください。  

In the future

現在はベータ版であり、 今後はさらに機能が追加されていく予定です。  

近日公開予定されている機能としては、
ターミナル共有(複数人でのリアルタイムコラボレーション)や
ターミナルでのドキュメント実行(jupyterみたいな機能?)
があります。

また、Warpで使用しているUIフレームワークやクライアントコードベースを
オープンソース化する予定もあるとのことなので楽しみですね。

Summary

本稿ではWarpについて紹介しました。
今回触れていない機能もまだまだあるので、ドキュメントを確認してみてください。

References