あるWebプログラマーの作業環境――豪傑の三種の神器【前編】:新入学生/新社会人応援企画(2/2 ページ)
春は出会いと別れの季節。入学や就職で、新しい生活を始める人も多いだろう。それを機にPC環境もそろそろ大人への階段を上ってもいいかもしれない。ここでは、はてなという企業でプログラマーとして働くあの人の開発環境を紹介することで、プロが好む作業環境を考える。
Webアプリケーション開発三種の神器
Webアプリケーション開発には、プログラムを書くためのエディタはもちろんのこと、小さなコマンドラインツールからデバッガ、大きなテスト用ツールまでさまざまなものを利用します。それらすべてを紹介するのは難しいので、ここではわたしが個人的に「三種の神器」と思っている次の3つのソフトウェアを紹介します。
- GNU Emacs(テキストエディタ)
- GNU screen(端末マルチプレクサ)
- Zsh(シェル)
エディタはGNU Emacsで決まり
プログラムを書くに当たって最も利用頻度が高いものといえば、間違いなくエディタだと思います。わたしは以前からEmacsを愛用しています(図3)。
Emacsの何が良いかは挙げればきりがないのですが、一言でいうと「プログラマーがプログラムを書くために作られたエディタ」であるところでしょう。
例えばプログラムを書く際には、カーソルをその行の先頭や行末に移動したり、1行をまとめて消すといった類の操作を頻繁に行います。そのためそれら操作はショートカットで簡単に行えるのが望ましく、さらに言うとキーボードのホームポジションに置いた手をあまり動かさずに押下できるキーバインドが理想的です。Emacsのキーバインドは、そういったかゆいところが非常に丁寧に設計されており、一度手になじむと、一般的なエディタでプログラムを記述する場合の数倍の効率で作業できるようになります(問題は頭の回転までは数倍にならないところですが)。
なお、一般的なシェルのカーソル移動キーバインドは、デフォルトでEmacsキーバインドと同一になっています(例えば「Ctrl+Aキーで行頭に戻る」など)。ですから、Emacsキーバインドを覚えると、シェル操作が非常に効率的に行えるという特典もあります :)。
キーバインド1つとってもこんなあんばいですが、Emacsにはほかにもいろいろな利点があります。
- プログラミング言語に応じてソースコードが色付けされる
- ソースが自動でインデント(整形)される(自動整形なしではもうソースコードは書けません)
- 大量のファイルを編集する際も、ウインドウ1つで扱える。またショートカットキー1つでそれらを切り替えられる
- ファイラがエディタに統合されているので、必要なファイルを瞬時に探し出すことができる
- 任意の個所のマーキング、アンドゥや置換、コピーした内容をさかのぼって取り出せるなど、プログラミングに必要な機能はすべて持っている
- 一度入力した単語を動的に補完できる(動的略語展開と呼ばれます)。例えば「p」と打ってショートカット1つで「printf」と補完するなど
- Emacs上からCVSやSubversionなど、ソースコードのバージョン管理システムにアクセスする手段が提供されている
利点を挙げるとキリがないのでこのくらいにしておきます :)。プログラマーでEmacsを利用したことがない方は、だまされたと思ってぜひ一度トライしてみてください。ただし、Emacsは高度な半面、非常にとっつきにくいエディタでもあります。一般的なエディタであれば、特にマニュアルなどに目を通さなくても問題なく扱得るところですが、Emacsの場合そうはいきません。「エディタの使い方を覚える」のではなく「プログラミングに必要な道具の使い方を覚える」つもりで、チュートリアルから始めることをオススメします。
なお、はてな社内のプログラマーは、大半がEmacs、残る数人がVimでコードを書いています。EmacsとVimは、どちらもとっつきにくいエディタですが、一度手になじめば手放せないツール、ということですね。
WindowsではMeadow、Mac OS XではCarbon Emacs
ところでEmacsは、各種プラットフォーム向けに移植されているという点も特徴的です。わたしがWindowsからMac OS Xにスムーズに移行できたのは、WindowsでもMac OS XでもEmacsが使えたからこそです。
WindowsではMeadow、Mac OS XではCarbon EmacsがEmacsの移植版*になります。インストールや操作方法については、それぞれ以下のサイトが参考になるでしょう。
Emacsの拡張
Emacsのもう1つ大きな特徴として拡張性の高さがあります。Emacsは標準の状態でもたくさんの機能を持っていますが、任意の拡張スクリプト(Emacs Lisp)を導入することで、さまざまな機能を追加できます。
わたしが利用している拡張の幾つかを表1、表2、表3に紹介します。これ以外にも、標準でC、C++、Java/Perlなどメジャーな言語用のモードがサポートされていますし、欲しいものはたいていWeb上で手に入ると思います。
拡張の名前 | 概要 |
---|---|
ElScreen | EmacsにGNU Screenライクなウィンドウ切り替え機能を追加する |
kill-summary | キルリング(過去にコピーした内容)の一覧を表示し選択ヤンク(ペースト)できるようにする |
session.el | 過去に開いたファイルなどの履歴を保存する。地味なようで非常に便利。解説 |
minibuf-isearch.el | ミニバッファをインクリメンタルサーチ可能にする |
拡張の名前 | 概要 |
---|---|
emacs-w3m | Emacs上でテキストブラウザを動作させる |
riece | Emacs上でIRCチャットを行うための拡張 |
navi2ch | Emacs上で2ちゃんねるを閲覧するための拡張 |
拡張の名前 | 概要 |
---|---|
ruby-mode | Rubyスクリプトを記述する際のモードを追加する(Rubyのソースコードに付属) |
ecmascript-mode | ECMAScript(JavaScript)を記述する際のモードを追加 |
xkeymacsでWindowsもEmacsキーバインドに
Emacsに慣れ親しむと「何でもかんでもEmacsのキーバインドで操作したい!」という欲求にかられます。例えばWebブラウザのURL入力欄。Ctrl+Eキーでカーソルを行末に持っていき、Ctrl+Hキーで1文字削ったり。あるいはタブブラウザのタブを、まるでEmacsのバッファ切り替えのようなキーバインドで切り替えてみたり。
これを実現する、Emacs使いには夢のようなソフトウェアがあります。それがxkeymacsです。Windows向けのソフトウェアですが、これを導入すると、すべてのWindowsアプリケーションでEmacsキーバインドが利用できるようになります*。
- Webのフォームに何かを入力するとき
- Excelに文章を書き込むとき
- エクスプローラで画面をスクロールさせるとき
- ブラウザで1つ前の画面に戻るとき
などなど、そのすべてがEmacsキーバインドになります。Emacsキーバインドを適用させたくないアプリケーションはそのむね設定できたりと、かゆいところにも手が行き届いたツールです。Emacsユーザーの方はぜひ一度お試しください。
GNU Screenで、ターミナルだらけからおさらば
皆さんは、デスクトップ上に幾つぐらいウインドウを開いていますか? 特にターミナルエミュレータは、例えば「2つのコマンド出力を比較したい」、あるいは「何かコマンドを実行しつつ、待ち時間に別の作業をしたい」といったことから、むやみにウインドウの数が増える傾向にあります。すなわち、
原始的な方法:ターミナルを2つ起ち上げて、それぞれで同じホストにログイン、両者を使い分ける
という状況です。これでは作業が増えてくると、画面上がターミナルウインドウだらけになって使いづらいでしょう。そこで、
一歩進んだ方法:タブ型エミュレータのPoderosaなどを使って同じホストにログイン、両者を使い分ける
という方法があります。Poderosaは便利でオススメです。とは言っても、やはり単一のホストに何度もログインするのは面倒でしょう。もう一歩進めて、
別な方法:GNU screenを利用して1つのログインセッションに対して複数ウインドウを起ち上げる
というのはいかがでしょうか。GNU Screenは端末マルチプレクサに分類されるソフトウェアで、これを利用することで1つの端末で同時に複数の仮想端末を起ち上げ操作できます。つまり、1つのターミナルウインドウの中で必要に応じて画面を複数に切り替えられる、というわけです。
図4がScreenの使用例です。Screenには画面を2分割する機能もありますので、ここではそれを使ってみました。どちらもMac OS X上のローカルマシンでの出力です。上部はMySQLクライアントを操作しているところ、下部はシェルでコマンドを実行しているところになります。
見づらいかとは思いますが、最下段には「0 mysql 1 ls 2 zsh」と出力されています。現在3つのウインドウを開いていて、それぞれで別の出力が吐き出されていることを示しています。各画面はキー操作で簡単に切り替えられます。
Screenには複数仮想端末の機能以外にも、
- リモートマシンにログインして何かジョブを実行中に回線を切っても後で復帰できる
- 画面出力をさかのぼってスクロールさせることができる
- 画面上の文字をコピーして、別の端末にコピーできる
などの機能があり、コマンドラインシェルをヘビーに利用するUNIXハッカーにとっては、間違いなく必須ツールといえるでしょう(といいつつ、わたしもScreenを本格的に使い始めたのはつい1年ほど前だったりしますが……)。
Screenの使い方は、
などが参考になるでしょう*。
次回は
さて、次回は三種の神器の締めくくりとなるZshを紹介します。Bashやtcshと比較して、機能的に大きく違うわけではありませんが、細かな使い勝手でほかのシェルにはない便利さが感じられると思います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
Emacsの移植版
正確には、Carbon EmacsはGNU EmacsをMac OS X GUIサポートでビルドしたものです。
すべてのWindowsアプリケーションでEmacsキーバインドが利用できるようになります
Mac OS Xは標準で各種アプリケーションがEmacsキーバインドに対応している。とはいっても、Windowsでxkeymacsを使うときほど徹底されていない。Mac OS X環境でも使えるxkeymacsのようなソフトウェアがリリースされるのを待つばかりだ。
参考になるでしょう
また、筆者の主観によって、Screen関連の話題を、
にまとめてある。こちらもぜひ参考にしてほしい。
本記事は、オープンソースマガジン2006年5月号「オープンソースで作る新生活環境」を再構成したものです。
関連記事
- developersLife〜開発者という生き方
- 連載第1回:ディストリビューションの選び方、試し方
春は出会いと別れの季節。入学や就職で、新しい生活を始める人も多いだろう。そこで本連載では、新入学生/新社会人応援企画として、オープンソースで作る環境構築を解説していく。また、デスクトップ環境のほか、新しくプログラミングを始める人のために、Web/Java開発の第一線でいまどのように環境が使われているかを紹介する。 - 連載第2回:Windows上でLinuxを走らせてみよう――coLinux
Linuxを使ってみたいとは思っても、Windowsから完全に移行するのはまだ早いかなとお考えのあなた。Windows上でLinuxを動作させることができるcoLinuxを使ってまずはLinuxに触れてみてはいかがでしょうか。 - 当然知ってるよね? オープンソースが意味するもの
本特集は、特にコンピュータを生業とするエンジニアやビジネスマンにとって、オープンソースとどう関係していくべきかを知る手引とするべく、オープンソースの歴史と現状を短時間で理解できるよう紹介していく。今回は、オープンソースが何を意味するかを理解しよう。 - オープンソースライセンス事情を俯瞰する
フリーソフトやプロプライエタリなソフトウェアから「オープンソース」を区別しているのがライセンスである。GPL、LGPL、Apache License……数多く存在するライセンスだが、それぞれの違いについてまとめる。 - デキる男のオープンソース理解【ビジネス編】
オープンソースソフトウェア(以下、OSS)を業務で利用する場合、またOSSを使ってビジネスを展開する場合、どのような点がポイントになるだろうか。具体的な利点と問題点をピックアップし、事例を合わせて整理していこう。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.