RStudioがなぜかもっさりしてきて、やる気が出なくなったので、環境を変えてみることにした。Jekyllサイトを作るために使っていたAtomなら拡張性があって、代替になりそうだったのでパッケージを入れて環境を整えてみた。
Atom
AtomはGithubが開発したテキストエディタで”A hackable text editor for the 21st Century”と宣伝している通り、ユーザーが開発したパッケージを入れることで機能の拡張が可能。
進化するテキストエディタといったところ。
macOS、Windows、Linuxといった主要なプラットフォームで同じように動作する。
デフォルトでもすでに入力している文字などを補完してくれたりして、エディタとして優秀だと思う。
もちろんGithubとの連携によるバージョン管理も優秀とのこと。
IDE(Integrated Development Envieronment、統合開発環境)
Wikipediaによると
従来、ソフトウェアプログラムのコーディング・コンパイル・ビルド・デバッグといった作業を行なう際に、テキストエディタ、コンパイラ、リンカ、デバッガなどの各ツールをばらばらで利用していたものを、ひとつの対話型操作環境(多くはGUI)から利用できるように統合したもの。最近のIDEには、GUIアプリケーション開発のための迅速なプロトタイピング (Rapid Application Development: RAD) が可能なものが多い。統合開発環境を使うことによって、巨大かつ複雑なソフトウェアでも、作成者に負担をかけることなく開発することが可能になる。
RStudioで言えば、Rスクリプトのコーディングをして、デバッグして、実行し、結果を表示して、ファイルやパッケージを管理し、変数をまとめてくれるなどなど、1つでほとんどの開発プロセスが完結するような環境。
AppleのXCodeやMicrosoftのVisual Studio、ゲーム開発を行うUnityなどなど。
環境
いろいろ検索したり試したりした結果以下の環境で試してみることにした。
Atom + R.app (+ Finder) + Preview (+ Quartz)
Atomでスクリプトを書いて、Atomから実行コマンドを入力してR.appに送信する。
Atomはファイル管理もできるのだが、一応Finderも使う。
計算結果のグラフなどを出力したPDFファイルやPNGファイルはPreviewでみる。
グラフの試しの出力はQuartzで表示される。
できるだけAtom内で完結させたかった。
導入したAtomのパッケージ
- atom-language-r
- r-exec (macOS限定)
- atom-ide-r
- atom-ide-ui
atom-ide-ui
はよくわからなくて邪魔だったので、停止している。
インストールしたパッケージを反映させるためにはAtomの再起動が必要かも。
atom-language-r
Rのスクリプトをハイライトしてくれる。2018年6月で更新が止まっている。
同様のパッケージにlanguage-r
という人気のパッケージがあるが、こちらは2017年9月に更新が止まっていて少し古い。
r-exec
command + enter
はRStudioと少し挙動が違って、改行してつながっているコードは実行できず、1行ずつコンソールに送信される。
1行で書いていれば一回のショートカットで実行できるし、複数行にわたって書いている場合にはその行数分ショートカットを入力して初めて実行される。
押す回数が違うだけ。
代わりにcommand + shift + M
で空白の行なしでまとまっている段落をいっぺんに実行できる。
いっぺんに実行したいコードは空白の行を入れずに書いて、別々に実行したいコードは1行以上の空白の行を入れると良い。
最終更新は2017年6月。。
Atom上でRを実行できるパッケージとしてRbox
がある。
R markdownのようにインラインで実行結果が表示できるらしい。
実行結果は別で表示してほしいので不採用。
atom-ide-r
挙動が使いにくいけど、関数のパラメータを教えてくれたり、途中まで入力した文字や関数名を補完してくれる。RStudioでの入力で慣れている人には必須かも。
atom-language-r
を作ったREditorSupportなる人たちが作っているが、同様に2018年6月で更新が止まっている。
atom-ide-ui
GithubとFacebookが共同で開発したIDEパッケージ。
公式にはTypeScript & JavaScript、Flow、C#、Java、PHPがサポートされている模様。
atom-ide-r
のインストール手順に
You should also install the atom-ide-ui package to expose the functionality within Atom.
と書いてあったので何も考えずにインストールしてみたが、何か機能を公開するために必要なのかも?
入れていると変なアラートが表示されるので、機能を停止することにした。
r-execパッケージのショートカットの有効化と設定
パッケージを入れたはいいもののショートカットが動作しなくてつまづいた。
r-exec
の機能はAtomの”Packages” → “R-exec”から実行できるし、その横に書いてあるショートカット(Keybindings)でも実行できる。
cmd+enter
が1行をR.appにおくるショートカットなのだが、これは他の機能と競合していて、設定を変更しないとr-exec
のショートカットとして機能しないとのこと。
While cmd-enter is bound to sending code in the package, it is also annoyingly bound to entering a new line by default in atom. In order to make it work, you must add the following binding in ~/.atom/keymap.cson:
~/.atom/keymap.cson
は作成していない限り存在しない。
“Atom” → “Preference”を押すとSettingsが表示されるのでその中の”Keybindings”でショートカット一覧を確認できる。
このページの一番上にショートカットを上書きする方法が書かれていた。
You can override these keybindings by copying “copy icon” and pasting them into your keymap file
“copy icon”はコピー用のアイコンとして読み替えてもらいたい。
検索画面でcmd-enter
と入力すれば、このショートカットを使う機能の一覧が表示される。
r-exec
がcmd+enter
のショートカットを使うようにしたいので、コピー用のアイコンをクリックして、ページ上部の”your keymap file”を押すと生成された~/.atom/keymap.cson
が表示されるので、コピーした文字を貼り付けたらいい。
貼り付けられる文字は
'atom-text-editor':
'cmd-enter': 'r-exec:send-command'
多分、テキストエディタ中でcmd-enter
のショートカットをr-exec
パッケージのsend-command
という機能に割り当ててください。という意味。
これでAtomを再起動すれば~/.atom/keymap.cson
の内容が反映されてcmd-enter
のショートカットでRスクリプトが実行できるようになる。
また、編集しているファイルが存在するディレクトリをR.appのワーキングディレクトリに変更するショートカットshift-cmd-E
もデフォルトでは機能しないので、同様に~/.atom/keymap.cson
に追加する。
その際には'atom-text-editor':
の部分は1つで良いので、以下のようになる。
'atom-text-editor':
'cmd-enter': 'r-exec:send-command'
'shift-cmd-E': 'r-exec:setwd'
r-exec
のBehaviorは~/.atom/init.coffee
に追加することになっているが、これは”Settings” → “Packages” → “r-exec” → “Settings”でチェックを入れたり外したりすることで変更できる。
以下のように設定した。
- Advance Position: true
- Focus Window: false
- Notification: true
- Skip Comments: true
- Smart Insert Operator: true
- Which App: R.app
各機能の説明はr-exec
やりやすいように設定したらいいと思う。
AtomをIDEとして使うデメリットなど
Atomのパッケージのほとんどが個人により公開されているので、メンテナンスされ続ける保証がない。
インストールしたパッケージのほとんどが2年以上前に更新が止まっている。
これに比べるとRStudioを作っている団体は突然消えて無くなる可能性は低いと思われる。
また、コードが+
や,
などで続くときに、RStudioだと改行した際に自動でインデントを補完してくれるが、今のところ手動でインデントを入れている。
インデントが入っている行で改行を行うとインデントは引き継がれる。
コードの見た目が悪くなるので、インデントは揃えたいところ。
アップデートなど何かの拍子にRStudioの動作が直れば安定性を求めてRStudioに戻ると思う。
まとめ
無事、RStudioのなかで必要な機能を維持する環境を作ることができた。
まだ見つけることができていないだけで、小さなところでデメリットに感じている部分も補えるようなパッケージがあるのだと思う。
Atomは多様な言語をサポートしているので、使い方によってはこれひとつでなんでもできる最強のエディタになるはず。
パッケージをいろいろ見て気づいたが、もともとハイライトがサポートされているmarkdownひとつとってもlanguage-markdown
というパッケージを入れることで、markdown中のHTMLも含めてほぼ安定して表示される。
いろんな業界の人がAtomに参入して日本語の解説が増えるのを期待したい。