Positron 最速入門
はじめに
まず強調しておきたいのは、現時点で、カタギの人間が Positron に入門する必要はないです。詳しくはあとで見ていきますが、重要なポイントとして、
- Positron はまだ絶賛開発中という段階で、安定して使えるようになるのはだいぶ先
- たとえ Positron が正式リリースされても RStudio は残る
というのが今の状況です。なので、RStudio をメインで使っている人は、数年は迷わずRStudioを使い続けて大丈夫です。いま慌てて入門する必要はありません。
Positronとは
Posit 社が開発している、Code OSS(≒VS Code)をベースにした IDE です。README では「次世代のデータサイエンス IDE(A next-generation data science IDE)」と称されています。
まだ Posit 社からの公式なアナウンスはありませんが、6月28日に GitHub レポジトリが公開されてコミュニティで話題になっていました。インストーラーがそのレポジトリから入手でき、ドキュメントも wiki に多少ですが書かれています。この記事では、とりあえずそこに書かれていることを拾っていきたいと思います。
画面はこんな感じで、VS Code の上に RStudio 風の画面が乗っかってる、といった見た目です。
Positron の使いどころ
wikiの「Is Positron For Me?」というセクションを読んでみると、次のようなことが書かれています。
Positron はこういう人に向いてるかも
- VS Code をデータサイエンス作業に使っていて不満を感じている人
- JupyterLab を使ってるけどもっと高機能な IDE を使いたい人
- RStudio を使ってるけどもっとカスタマイズ性の高い IDE を使いたい人
- Python や R に加えてそれ以外のプログラミング言語(Rust、C++、JavaScript、Lua など)をよく使う人
その他、個人的に思ったメリット
- 日本語入力
今のところ Positron には欠けているもの
- 安定性
- RStudio 特有の機能のいくつか
- Quarto/R Markdown のチャンクの実行結果のインライン表示
- R コードのプロファイリング
- RStudio アドインのサポート
- dev container・Remote SSH のサポート(開発の見通しについては複雑なので後述)
ちなみに、2点目に関しては、FAQ の wiki には
While Positron and RStudio have some features in common, some R-focused features will remain exclusive to RStudio.
と書かれているので、RStudio にある機能だからといって Positron に実装されるとは限らないという点には注意が必要です。
インストール方法
GitHub レポジトリの Releases にインストーラーがあるので、それをダウンロードして実行すればインストールできます。今のところ、以下のインストーラーが用意されています。
- Mac
- Windows
- Debian ベースの Linux (VS Code の
.deb
ファイルは Debian も Ubuntu もどっちでも使えるので、たぶん Positron も同じ)
それ以外の準備としては、Python は IPykernel を使っているので、ipykernel
をインストールしておく必要があるらしいです。R は、とりあえず R がインストールされていれば問題ないようです。
追加で入れておいた方がいい拡張機能
Positron はデフォルトでは Quarto をサポートしていません。 Quarto の拡張機能はバンドルされるようになったので何もしなくても使えます(コミット)
また、Shiny も同じく、必要があれば拡張機能を入れましょう。
使い方
画面の説明
後述のようにレイアウトはいろいろありますが、ひとまず、以下は「Side-By-Side Layout」の画面です。
- 左サイドバー
- エクスプローラー(ファイル一覧の画面)
- Gitの操作
- ファイルエディタ領域(ここをさらに上下左右に分割したりもできる)
- コードのリント結果などの表示?(あまり使わないので畳んでおいてもいいかも)
- 右サイドバー
- コンソール
- セッションに存在する変数一覧
- プロット
- ヘルプ
初心者がまず覚えるべきたったひとつのキーボードショートカット
RStudioについても同じことを書きましたが、まず覚えるべきはコマンドパレットを呼び出すキーボードショートカットです。以下で呼び出せます[1]。
-
Ctrl
+Shift
+P
(Windows・Linux) -
⌘
+Shift
+P
(macOS)
これを実行すると、画面上部中央に以下のようなダイアログが出現します。 コマンドパレットというのは、ここから Positron のすべてのコマンドにアクセスできるという機能です。文字を入力していくとそれにマッチするコマンドがインタラクティブに絞り込まれ、選択するとそのコマンドが実行されます。
Positron にはコマンドが膨大にあるので、キーボードショートカットを覚えるのも大変です。また、そもそもキーボードショートカットが割り当てられていないコマンドもたくさんあります。よく使うキーボードショートカットを覚えていくのも大事ですが、まずは、ここで検索すればだいたいなんとかなる、ということを覚えておきましょう。
Project 作成
コマンドパレットから「Workspaces: New Project...」を選びます。すると、以下のようなダイアログが出てくるので、指示に従って project の名前やオプションなどを設定しましょう。
ちなみに、これは Quarto の拡張を入れた状態ですが、「Quarto project」というのはここの選択肢には出てこず、コマンドパレットに「Quarto: Create Project」という別のメニューとして存在しています。RStudio のように project のテンプレートを追加していく仕組みはまだないようです。
さて、project が作成されると、初期状態で置かれているファイルはREADME.md
と.gitignore
(Git を有効にしていれば)だけです。project ごとの設定ファイルは、もし何か設定を変更するとその時に .vscode/settings.json
が作成されます。
R コードの実行
R や Python のコードは、コンソールから実行できます。コンソールは特に特殊なところはないので悩まず使えるでしょう。
ひとつ違う点は、Positron では複数バージョンの R を簡単に切り替えられます。RStudio では、設定から使う R を選んだあと IDE 全体を再起動する必要がありましたが、Positron ではこの右上のドロップダウンから選ぶと、そのまま指定したバージョンの R がすぐに使えるようになります。
Variables ペイン
RStudio と同じく、環境中に存在するオブジェクト一覧を表示する場所です。
「DATA」は、データフレームの一覧です。各データの右についている表のアイコンをクリックすると Data Explorer が開きます。一番左の「○○%」と書かれているのは欠損率らしいです。便利そう。それ以外はまあ RStudio とできることはだいたい同じだと思います。付け加えるなら、polars のデータフレームもサポートされているとのことです。
Plot ペイン
Plot も、RStudio と同じく、プロットが出力される場所です。プロットの履歴が横に表示されている、縦横比の設定がお手軽、とか RStudio からの改善点もいくつかありますが、だいたい同じものだと思っておけばよさそうです。
ちなみに、plotly や leaflet などのインタラクティブな可視化も Viewer ペインではなくてここに表示されます。Viewer ペインの方は Quarto の HTML 出力などに使われるみたいです。
R ファイルの編集
R ファイルは、まずはコマンドパレットから「R: New R File」を選びましょう。やり方が分かるなら、Ctrl
+N
/⌘
+N
でテキストファイルを新規作成してからlanguage modeを変更、という手順でもいけます(私はこっちです)。
コード実行
R ファイルに書かれている R コードは、RStudio と同じく、Ctrl
+Enter
/⌘
+Enter
でコンソールに送って実行することができます。
コード補完
ここは、何も考えなくてもいい感じに補完してくれます。以下のスクショのように、RStudio と同じく、データの列名までちゃんと補完候補に出してくれています。
GitHub Copilot?
GitHub Copilotは現在は使えませんが、他のコード補完 AI は使えるようです。以下の discussion にまとまっています。GitHub Copilot についても「We do plan to get some support for GitHub Copilot in the future.」とのことなので、使えるようにする計画はあるみたいです[2]。
関数のヘルプの表示
RStudio と同じく、調べたい関数の上にカーソルがある状態で F1 を押すとヘルプに飛べます。
まあ、そんなことしなくても、マウスオーバーするだけでもヘルプをポップアップで表示してくれるので、これだけで事足りるかもしれません。
関数の定義の確認
関数の定義の確認は、RStudio だと F2 でしたが、Positron では F12 です。VS Code に慣れている人はとっつきやすいでしょう。Ctrl
+K
→ F12
/ ⌘
+K
→ F12
でエディタを分割しつつ定義のファイルを横に開いてくれたりとか、Alt
+F12
で定義をポップアップで表示してくれたりします。
Quarto ファイルの編集
Quarto ファイルを使いたい場合は、デフォルトではサポートされていないので、拡張機能を入れましょう。 (デフォルトで拡張機能がバンドルされるようになりました)
制限
これは(今のところ) VS Code の拡張機能と変わらないので、そっちを使っている人は把握しているかもしれませんが、RStudio のように実行結果を chunk のすぐ下に表示することはできません。あくまで、コンソールに R のコードが送られて実行されるだけです。
このあたりは、以下の issue で議論されているようです。1つ目の issue で Claus が指摘しているように、現在は「Console mode」と「Notebook mode」というメンタルモデルが異なる2つのモードが混在していて、そのあたりの概念を整理するのがまずは課題のようです。
カスタマイズ
テーマ・フォントの変更
テーマの変更は、通常の VS Code と同じで、テーマの拡張機能を入れればそれで OK です。私は Dracula が好きなのでとりあえず入れてみましたが、特に問題なく動いているような気がします。
フォントの設定は、「Preferences: Open User Settings」で Positron 全体の設定を開いて「Font Family」という項目で設定できます。
リガチャの設定もしたい場合は、「Font Ligatures」という項目で「Edit in settings.json」を選び、設定をtrue
にすれば大丈夫です。
レイアウトの変更
RStudio の場合は「Pane Layout」という設定から Layout を変更できました。
Positron の場合は、現時点ではそういうものはなさそうで、あらかじめ用意されているいくつかのプリセットから選ぶ、ということになるようです。コンソールを右に置きたい人は、コマンドパレットを検索して「View: Side-By-Side Layout」というのを選ぶといいでしょう。
ちなみに、カスタマイズ性に関しては、issue を眺めていると以下のようなコメントがありました。どうやら、Positron の画面のレイアウトは JSON で表現できるもので、理論上、その JSON が書ければユーザーがカスタマイズ可能な雰囲気です。ただ、現時点でそれを公開してしまうと変更が入れづらくなるので、いったんユーザーからは隠して、フォーマットが定まってから公開しよう、ということになってるみたいです。
Also during the development, there was a dump layout action that dumped the JSON for the current layout to the console. As the layout structure became more complex it became burdensome to keep this up-to-date so I commented out the logic there. Once we're happy with the format/ feature scope I will re-enable it, so I left the commented-out code in.
(https://github.com/posit-dev/positron/pull/3179)
日本語化
流れてきたツイートを見て知りましたが、VS Code はローカライズも拡張機能として提供されていて、日本語は「japanese language pack」で検索すると出てきます。Open VSX では「MS-CEINTL」という名前になっていますが、Microsoft が公式に提供しているもののようなので安心です。
その他
dev container、remote SSH のサポートの見通し
dev container
まず、dev container については、discussions での質問に対して次のように回答されています。
the remote development features of Visual Studio Code are closed source Microsoft software not licensed for use outside the commercially licensed distribution. This includes the vscode-server component that gets installed inside the container to supply the remote end of the connection.
(https://github.com/posit-dev/positron/discussions/3747#discussioncomment-9930702)
VS Code の機能の中でもすべてがオープンソースになっているわけではなく、リモート開発の機能もこれに該当し、マイクロソフトからライセンスを受けたソフトウェア以外では使えないもののようです。考えられる可能性は2つです。
- Positron が独自の仕組みを実装する
- Post 社が Microsoft 社と契約してライセンスを受ける
独自の実装は、VS Code の OSS 版としてそこそこ実績がある VSCoduim でさえ手が付けられていないので(issue)、Posit 社のエンジニアリング力を持ってしてもしばらく時間がかかりそうです。
2の方向性もありえそうな気はしています。その場合はおそらく、エンタープライズ版でしか使えない、というかたちになるのではないでしょうか。RStudio の場合もリモート機能は Pro 版のみですよね。ただ、そうなると VS Code を使ってる人たち的にはかなりのマイナス点なので、乗り換える人は減りそうです。悩ましいところですね。
remote SSH
remote SSH も Microsoft から公式に提供されている拡張機能ですが、こっちは代替となる拡張機能が存在していて VSCodium ですでに実績があるので、dev container ほど難しくはなさそうです。
ただ、いまあるのは VSCodium 前提の実装になっているらしく、Positron 用に少し改造しないと使えないという状態ではあるようです。そもそも、今のコードはリモートを想定したつくりになっていないので、いろいろ調整する必要があるかも、みたいなことも言っています。
↑の issue には、とりあえず接続するだけならうまくいった、という報告も投稿されていて、意外とサポートされるのはそう遠くないのかもしれませんが、まだ先が見えない状況です。
デバッグ
デバッグしたい関数にbrowser()
を埋め込めばデバッガが起動します。RStudio と同じく、その環境中にある変数が見れたり、関数呼び出しのスタックを遡ったりできます。
ただ、breakpoint を設置することはできなかったり、今のところはまだ使い勝手はそれほど快適ではないかもです。
Julia
当面は Python と R のサポートが念頭に置かれていて、Julia のサポートはまだ先のようです。具体的には、Positron とその言語のカーネル間の通信の仕様がまだまだ変わるかもしれないので、現時点で新しい言語のサポートを増やすのはコストが大きそう、という感じみたいです。
その下で wesm 氏がコメントしてくれていますが、この通信の仕様はここに書かれているので、その気になれば自分でカーネルを実装することも不可能ではないようです。
個人的によく使うキーボードショートカット
(Windows 環境です。Linux はたぶん同じで、macOS の場合は Ctrl
を ⌘
と読み替えてもらえれば動く気がします)
ショートカット | 機能 |
---|---|
Ctrl +1
|
エディタパネルに移動 |
Ctrl +K → F
|
コンソールに移動 |
Ctrl +Shift +E
|
エクスプローラーパネルに移動 |
Ctrl +Shift +G
|
source controlパネル(Git)に移動 |
Ctrl +B
|
左サイドバーの表示/非表示を切り替える |
Ctrl +Alt +B
|
右サイドバーの表示/非表示を切り替える |
Ctrl +P
|
ファイル名のあいまい検索 |
Ctrl +T
|
シンボルのあいまい検索 |
Ctrl +R
|
プロジェクト切り替え |
Ctrl +N
|
ファイル新規作成 |
Ctrl +K → M
|
ファイルの language mode の切り替え(後述のように、「New R File」のショートカットが効いてないので、Ctrl +n で新規作成後、これで言語を R に切り替えている) |
Ctrl +N
|
ファイル新規作成 |
発見した問題点
キーボードショートカットの衝突
RStudio と似たような操作感を実現するために、Positron には RStudio 互換のキーボードショートカットが用意されているのですが、それが VS Code のショートカットとかぶっていて使えないことがあります。例えば、Windows と Linux だと、「R: New R File」に割り当てられているショートカット Ctrl
+Shift
+N
が、「New Window」とかぶっています。
この問題は他にもあるようで、そもそもかぶらないようにするのは難しいので、絶対かぶらなそうな別のコマンド体系にしよう、という提案がされたりしています。具体的には、「Ctrl
+'
→ Ctrl
+(なんかのキー)」という感じで、共通の prefix をつけよう、という流れになっています。
まあ、VS Code 自体も Ctrl
+K
という prefix は多用してるので自然な気もしつつ、Lionel は Emacs のヘビーユーザーなので慣れていますが、VS Code や Emacs に慣れていない一般的なユーザーの感覚とはどうなんだろう...?、というのは少し気になるところです。
Pandoc
当然だけど、RStudio と違って Pandoc は同梱されていないので、R Markdown を knit しようとするとエラーが出ます。例えば、vignette がある R パッケージで「Check R Package」を実行しようとすると、以下のようなエラーで止まってしまいました。
Pandoc is required to build R Markdown vignettes but not available. Please make sure it is installed.
Viewer で開かれてほしいものが外部ブラウザで開かれてしまう
もしかすると Windows だけかもですが、私の手元では reprex::reprex()
の結果が viewer ペインではなく外部ブラウザで開かれてしまいます。この問題は昔 RStudio にも長らく存在したもので 「R が使っている tmpdir と同じ場所に置かれたドキュメントかどうか?」という判定が誤っているために起こっています。
...と思っていたんですけど、以下の issue の冒頭のコメントを見ると、reprex の結果は外部ブラウザで開かれるのが期待動作っぽい雰囲気もあります。どっちなんだ。。
気になる点
なぜ VS Code ではだめなの?
FAQの「Why build a new IDE rather than VS Code extensions?」によると、端的には VS Code の Extension API だと機能が足りない、というのが理由のようです。これは Positron 本体の実装のためだけでなく、拡張機能のために Positron 独自の API も用意していく予定だと書かれています。
あと、特に根拠はない憶測ですが、マネタイズのためには RStudio のようにエンタープライズ版を作る必要があり、そのためにはただの VS Code のプラグインだと都合が悪いとかもあるのかなあ、と思ったりしています。
拡張機能
基本的には VS Code の拡張機能と同じです。wikiに書かれていることによると、VS Code 本家の拡張機能マーケットプレイスは純正 VS Code からしかアクセスが許されていないらしく、代わりに Open VSX という別のマーケットプレイス(Posit 社もスポンサーのひとつ)を使っているとのことです。
本家にあるやつがなかったり、バージョンが違ったりもするみたいですが、メジャーな拡張機能であればだいたい使えると思っておいてよさそうです。
Positron 独自の拡張機能
Positron の拡張機能タブ?で @builtin positron
で検索すると以下のものが引っかかります。
名前 | 機能 |
---|---|
Positron Python | Python のサポート |
Positron R | R のサポート |
Positron Connections | DB への接続。RStudio の Connections ペインにあたるものらしい |
Positron Jupyter Adapter | Positron のカーネル?を Jupyter のカーネルとして使えるようにするものらしい |
Positron Notebook Controllers | これも Jupyter Notebook をコントロールする何からしい |
Positron Notebook Helpers | これも Jupyter Notebook のなにからしい |
Positron Code Cells | Cell の実行や Cell 間の移動のキーボードショートカット? |
Positron Proxy | これは何...? |
Positron Viewer | Viewer ペイン |
RStudio Keymap | RStudio 風のキーボードショートカットらしい |
-
VS Code の場合は F1 もコマンドパレットを呼び出すショートカットですが、Positron の場合はこれが関数のヘルプを開くショートカットとかぶっているので使えません。 ↩︎
-
よくわからないんですが、昔は使えていた時代もあったようです。Posit Connect を通してできてたみたいなんですが、これもライセンスの問題とかなのかもしれません。 https://github.com/posit-dev/positron/issues/476#issuecomment-2207639965 ↩︎
Discussion