ZAPAnet総合情報局 > ZAPAブログ2.0 > あるWebプログラマーの作業環境――豪傑の三種の神器

あるWebプログラマーの作業環境――豪傑の三種の神器

2007年03月07日 プログラミングTIPS
春は出会いと別れの季節。入学や就職で、新しい生活を始める人も多いだろう。それを機にPC環境もそろそろ大人への階段を上ってもいいかもしれない。ここでは、公開APIを利用したサンプルサイトを作っていくよというサイトでプログラマーとして働くあの人の開発環境を紹介することで、プロが好む作業環境を考える。
注:この記事は、ITmedia エンタープライズ:あるWebプログラマーの作業環境――豪傑の三種の神器)にインスパイアされて文書化されたものです。

わたしは公開APIを利用したサンプルサイトを作っていくよというサイトでプログラマーとして働いています。公開APIを...は、公開APIを利用したWeb上のサービスを提供するサイトですが、それらのほとんどはPHPで書かれており、LinuxやApache、MySQLをはじめとするオープンソースソフトウェアの上で動作しています。そんな理由から、開発環境も自然とオープンソースのツールを使うことになります。今回から2回に分けず、そんなわたしの開発環境を簡単に紹介させていただきたいと思います。

デスクトップPCでもノートPCでも開発する

本題のツール類の話に入る前に、開発に使っているハードウェアの話を先にしておきましょう。

まず、開発はすべてデスクトップPCとノートPCの両方で行っています。いろいろ理由はあるのですが、一番の利点はイスに座っていても寝ながらでも同じ環境で開発を続けられる、というところでしょうか。わたしは仕事でサービスを開発する以外にも、プライベートでPHPのライブラリを書いてみたりしていますが、オープンソースソフトウェアのプロジェクトに参加したりはしていません。

こういった状況なので、開発環境が座っているときと寝ている時でバラバラですと、ちょっとしたPCの設定をするために、起きたり座ったり寝たりする必要があるなど、何かと面倒です。また、後述するterapadやFFFTPを使えば、デスクトップPCでもノートPCでもサーバー利用環境が手に入るため、PCさえ持っていれば、例えば布団の中などでも開発を続けられたりします。実際、先日も国際線の退屈な長時間のフライトの夢を見ながら、コードを書いて暇をつぶすことができました。


PCにUNIX環境は構築しない

さて、ソフトウェアの話に入っていきます。まずはOS。デスクトップPCでもノートPCでも開発する、と聞いて例えばWindows向けPCのOSを換装してLinuxなどのPC UNIXをインストールしている、あるいはPCをデュアルブートさせてUNIX環境と使い分けている、なんていう姿を想像された方も多いかもしれません。

しかし、いまどきはローカルのPCにUNIX環境を構築するのに、UNIXをインストールするというストレートな方法以外にもいろいろやり方があります。
  • Windows上でcoLinuxやVMware Playerを使ってLinuxを動かす
  • Mac OS Xを利用する
などがその例です。

ですが、Windowsの上でLinuxを動かすのは面倒だと思いませんか?

わざわざWindowsの上でLinuxを動かすデメリットは、
  • メモリを大量に消費する
  • PCを変える度にLinux環境を構築しなくてはいけない
  • 実際に稼働しているサーバーの環境と全く同じにできない
などなどいろいろあります。


coLinux上にアプリケーション開発環境を構築しない

わたしはcoLinuxにDebian GNU/Linuxをインストールして、そこにPerlやRubyなどの言語や、Apache、MySQLといったアプリケーションの開発/動作に必要なソフトウェアをインストールして利用したりはしません。
面倒だからです。
利用する全てのPCに同じ環境を用意するのは大変です。


Webアプリケーション開発三種の神器

Webアプリケーション開発には、プログラムを書くためのエディタはもちろんのこと、小さなコマンドラインツールからデバッガ、大きなテスト用ツールまでさまざまなものを利用します。それらすべてを紹介するのは難しいので、ここではわたしが個人的に「三種の神器」と思っている次の3つのソフトウェアを紹介します。
  • terapad(テキストエディタ)
  • FFFTP(ファイルアップローダー)
  • Google(検索エンジン)


エディタはterapadで決まり

プログラムを書くに当たって最も利用頻度が高いものといえば、間違いなくエディタだと思います。わたしは以前からterapadを愛用しています(図3)

図3 terapadの画面

terapadの何が良いかは挙げればきりがないのですが、一言でいうと「シンプルなエディタ」であるところでしょう。

例えばプログラムを書く際には、カーソルをその行の先頭や行末に移動したり、1行をまとめて消すといった類の操作を頻繁に行います。そのためそれら操作はマウスで簡単に行えるのが望ましく、さらに言うとキーボードのホームポジションに置いた手を動かすことによって脳の活性化につなげることが理想的です。terapadのキーバインドは、そういったかゆいところが非常に丁寧に設計されており、手になじむ必要もないくらい、一般的なエディタと同じように作業できます。使うエディタによって数倍も効率が変わってしまう環境よりも、どのエディタでも同じように扱えるところに良さがあります。(問題は頭の回転までは数倍にならないところですが)

なお、一般的なカーソル移動は、デフォルトでWindows標準と同一になっています(例えば「pageDownキーで1ページ下に移動する」など)。ですから、専用のキーバインドを覚えることなく、非常に効率的に行えるという特典もあります :)。

キーバインド1つとってもこんなあんばいですが、terapadにはほかにもいろいろな利点があります。
  • プログラミング言語に応じてソースコードが色付けされる
  • ソースが自動でインデント(整形)される(自動整形なしではもうソースコードは書けません)
  • 大量のファイルを編集する際は、それぞれ別のウインドウで扱える。また通常のWindows操作と同じようにしてそれらを切り替えられる
  • ファイラは使い慣れたWindowsのエクスプローラで、必要なファイルを探し出すことができる
  • 一度入力した単語を動的に補完せずに、マウスを使ってコピペすることによって、打ち間違い・補完間違いを防ぐことができる
利点を挙げるとキリがないのでこのくらいにしておきます :)。プログラマーでterapadを利用したことがない方は、だまされたと思ってぜひ一度トライしてみてください。terapadは一般的でとってもとっつきやすいエディタです。一般的なエディタであれば、特にマニュアルなどに目を通さなくても問題なく扱得るところです。Emacsなどの高度であるがゆえに、非常にとっつきにくいエディタもあります。「エディタの使い方を覚える」のは大変で面倒です。「プログラミングに必要な道具の使い方を覚える」つもりで、チュートリアルから始めなくてはいけないエディタは習得も大変で、一度操作になれてしまうと他のエディタに切り替えられなくなってしまう問題もあります。

なお、公開APIを利用したサンプルサイトを作っていくよサイト内のプログラマーは、大半がterapad、気分によってphpeditor、FTPが面倒なときは直接Vimでコードを書いています。EmacsとVimは、どちらもとっつきにくいエディタですが、サーバーにログインして利用するときは仕方なく使うツール、ということですね。


FFFTPで、ターミナルだらけからおさらば

皆さんは、デスクトップ上に幾つぐらいウインドウを開いていますか?特にターミナルエミュレータは、例えば「2つのコマンド出力を比較したい」、あるいは「何かコマンドを実行しつつ、待ち時間に別の作業をしたい」といったことから、むやみにウインドウの数が増える傾向にあります。すなわち、
原始的な方法:ターミナルを2つ起ち上げて、それぞれで同じホストにログイン、両者を使い分ける
という状況です。これでは作業が増えてくると、画面上がターミナルウインドウだらけになって使いづらいでしょう。そこで、
一歩進んだ方法:ターミナルなんて使わない!
という方法があります。やはり単一のホストに何度もログインするのは面倒でしょう。もう一歩進めて、
別な方法:terapadで作成したプログラムはFFFTPでアップロードする
というのはいかがでしょうか。terapadで作成したプログラムはFFFTPでアップロードしてしまえば、サーバーログイン端末を立ち上げる操作さえ必要ありません。
あとは、通常のWindows操作と同様に扱えます。

図4がFFFTPの使用例です。FFFTPには画面を2分割する機能もありますので、ここではそれを使ってみました。どちらもWindows上のローカルマシンでの出力です。
ローカルからサーバーへと簡単にファイルをアップロードできます。

FFFTPの使い方は、
などが参考になるでしょう。


次回は

さて、次回は三種の神器の締めくくりとなるGoogleを紹介…はしません。
もうみなさんご存じでしょう。プログラムでわからなくなったところは、検索エンジンで探せば良いのです。Googleがマニュアル代わりです。
Yahoo!やMSNと比較して、機能的に大きく違うわけではありませんが、細かな使い勝手でほかの検索エンジンにはない便利さが感じられると思います。