vim+gradle+git+tree+・・・ シェル上の開発環境

シェルがIDE

シェルは究極の拡張性を備えたIDEです。CUIの操作は並べるだけでシェルスクリプトとしてマクロを構成出来ますし、gradleやgitなども基本はCUIなので、そういったツールとの相性も良いです。

それぞれのツールをそれぞれの役割に特化させる

この考え方はUnixの根本的な設計思想の一つで、Unix互換のLinuxも特にコマンドにはこの考え方が受け継がれています。主なIDEは開発に必要なことは全て出来るオールランダーを目指して設計されていることを考えると、IDEはUnix的な思想から最も遠いところにあるアプリケーションであると言えます。

例えばVimなら利用するプラグインはオートコンプリートなどテキスト編集に関係のあるものだけにして、ファイルブラウザなどはシェルに戻って使うのがUnix流と言えるでしょう。シェル内ではパイプもリダイレクトもシェルスクリプト使えます。この作業自動化したいなと言う時にもさっと実装できるのです。作ったシェルスクリプトは/home/yourname/sh 辺りに保存しパスを通して使うと良いでしょう。

vim

言わずと知れたテキストエディタです。元々こまめにシェルに戻るように設計されていて、実際こまめにシェルに戻る使い方が一番使いやすいです。vim内ではテキスト編集だけをする、他のことはシェルに戻って行う、というのがvimの使い方の本流で、決してIDEに負けない拡張性などが主なメリットではありません。

ハウツーなどは書かず感じているメリットだけを書きます。ソース編集中のvimを:wqで保存して終了、gradleでビルドコマンドを叩き、vimで再び開いてエラー箇所を修正、というような一連の動作を、マウスはおろかファンクションキーなどの遠いキーすら使わずに出来てしまいます。vimのモードのニュートラル化をEscではなくCtrl+[で行い、カーソルキーを使わないで操作すれば、ほとんど手を動かさずに全ての操作が出来ると言うことです。

gradle

Android Studioにも採用されているビルドツールです。様々なJavaやC/C++のビルドを自動化出来ます。ビルドに関わる様々な操作を自動化出来る他、mavenのリポジトリなどからjavaのプラグインを引っ張って来ることも出来ます。IDEからビルドに関わる機能だけを抽出したものという印象が強いです。

git

底が知れないツールで、バージョン管理に関わる機能が全部入っています。githubが無料でコードホスティングをしてくれるのこともgitの便利さの一つと言えると思います。私はgithubへのpush用のディレクトリを用意して、git add .で全てまとめて追加する方法で管理しています。多端末間での同期や、大人数での開発などにも使え、活用するととにかく便利です。githubは無料利用ではソースをオープンにする必要があるので、クローズドで開発したい場合は別のコードホスティング方法を考える必要があります。

tree

ファイルブラウザはlsがtreeを使っています。ファイル構造が複雑であれば、lessやmoreにパイプしたり、-Lオプションで表示階層を制限したりします。

チートシートを書こう

2つのことに同時に集中することは簡単では無く、殆ど無理と言っていいです。ですので画面に表示されている必要があるのは一つの作業に関わることだけでしょう。むしろ気が散るものは全て排除した方が良いです。

シェル上で開発をする場合はこの考え方が大切です。しかしこの考え方は致命的な点が一つあります。GUIで表示される余計なものというのは別の機能へのアクセス方法を示すものなので、それらを全て排除すると、操作方法が分からなくなると言うことです。

この解決のために、操作方法を頭に入れるというのを一つの作業だと考えます。操作方法は動的なものでは無いので、ディスプレイに表示する必要すらありません。よく使う操作やコマンドはバインダーに挟んだ紙などにメモを取り、チートシートとして利用しましょう。

Add a Comment

メールアドレスの入力は任意です。(公開されることはありません)