ここまで簡単にLinuxでEclipseを使ったWebアプリケーションの開発環境を見てきたわけだが、操作やビルド、そして実行に関して言えば、Windowsの場合と大きな違いはない。とくにEclipseの場合には、Eclipse自身がJavaで動作しているということもあり、LinuxだろうがWindowsだろうが同じように動作する。
それではまったく違いがないのかというと、そういうわけでもない。LinuxとWindowsとでは、次の部分が異なっている。
1. Javaの環境設定や各種アプリケーションのインストール
当然だが、Java自身の環境設定や統合環境、そしてTomcatをはじめとするサーバーアプリケーションのインストールや設定は、OS依存になる。
特にLinuxの場合には、環境変数を設定する場合などにシェルを使って設定することになるため、シェルの操作経験がないユーザーの場合には、やや難しいかもしれない。Windowsの場合には、インストール操作自体が容易だが、Linuxではコマンドラインでの操作が主体となる。
2. パス指定の違い
ディレクトリを設定する場合、パスの設定方法がLinuxとWindowsとで異なる。Linuxの場合には、「/」を頂点とする階層構造だが、Windowsの場合には「C:\」や「D:\」などのドライブ名を起点とする階層構造となる。
そのためWindows用の設定ファイルをそのままLinux上にコピーしても動作しないことがある。
3. 漢字コードの違い
「2.」とも絡むが、Linuxは標準漢字コードがEUCだ。それに対しWindowsではシフトJISとなる。そのため、漢字を含むソースコードの場合、LinuxとWindowsとで相互の互換性がない。
ただしJava自身はUnicodeであり、問題が生じるのはソースコード(JSPファイルも含む)だけであり、コンパイル後のバイナリに関しては、漢字コードの問題は発生しない。今回例に挙げたFedora Core 2も、標準設定ではUnicodeとなっている。
上記の3点を考えると、Linux単体やWindows単体で開発するということであれば問題はないだろう。ただし、LinuxとWindowsで混在された開発プロジェクトとなると、問題が起きる可能性がある。
例えばチーム開発をしている場合に、ある開発者はLinuxで、別の開発者はWindowsでというようにOSを混在させると、漢字コードの問題が起きるので、どちらかの漢字コードに統一しなければならず、そのためのコード変換を考慮しなければならない。
それでは、LinuxでもWindowsでも同じように動くということを考えた場合、開発時点でLinuxを使う優位性はあるのだろうか。もし、環境設定がやや複雑というだけであり、Linuxのほうが開発面で優れている点があるならば、多少の設定の難しさは目をつむり、WindowsではなくLinuxで開発するという選択肢もあるはずだ。
結論から言えば、開発時にLinuxを使うメリットは、それほど大きくはない。しかし、次に挙げる3つの利点は開発プロジェクトによっては大きなものとなるだろう。
1. サーバ実行環境とのOS違いによるトラブル防止
アプリケーションの開発を完了し、開発したアプリケーションをLinux上で実稼働させるのであれば、開発時にもLinuxを利用することで環境違いによる問題がなくなる。この点は、最も大きなメリットとなるかもしれない。
2. 開発支援のオープンソースのツールが利用できる
例えば、ファイルをサーバにアップロードするときにscpコマンドやsftpコマンド、場合によってはrsyncコマンドなどを利用できる。バッチ処理をコマンドベース(シェルスクリプトなど)で行うことに価値を見いだせるかで判断が異なる。また開発時にバージョン管理実現に、cvsやsubversionなどを利用するのも現実的だ。
3. OSライセンスコストが不要
新規開発プロジェクトによっては、コスト削減のために開発クライアントのライセンスコストにも気をつかうだろう。Windowsであれば各開発者ごとにライセンスコストが発生するが、Linuxではハードウェアを用意するだけですむ。また、新人教育のために環境構築する際にも、良い選択肢となるかもしれない。
上記「1.」に関しては、冒頭でも触れたようにそもそもJavaアプリケーションがどのOS上でも動作するため、開発環境がWindowsでサーバ環境がLinuxであっても問題がない。むしろ、開発環境と実動作(サーバ)環境とで、J2SEのバージョンを同一にしなければならないとか、TomcatなどのWebアプリケーションサーバでバージョンを同一にしておく、などという配慮の方が重要だ。つまり、「1.」のメリットが見いだせるのは、Javaアプリケーション開発そのもの以外で絡む要素――例えばJava以外でのアプリケーションと組み合わせる時や、cronなどで自動実行させたい場合など――に限られる。
「2.」はLinuxを使った開発のメリットであるものの、Eclipseなどではプラグインでも実現でき、また、Windowsに「Cygwin」などをインストールすれば解決可能だ。よってLinuxならではの優位性というわけでもなく、Windowsでも工夫次第で解決できるものだ。
「3.」については、手間が掛かってもコスト削減を実現する必要性がある場合には、重要視されるはずだ。昨今、Linuxの選択肢にはコスト削減がつきまとっている。この点からも、開発環境のコストパフォーマンスには、環境によってLinux前提となる可能性もある。
以上を総合的に考えると、開発時にLinuxを使うメリットはそれほど大きいとは言えず、設定の難しさのほうが前面に出てきてしまうのが実際のところだ。
実稼働させるサーバにX Window Systemを設定し、その上で開発ツールを使うのは避けたほうがよい。実環境させるサーバは最低限の構成にしなければ、各ソフトウェアのセキュリティホールが生じる可能性が高くなるためだ。
Copyright © ITmedia, Inc. All Rights Reserved.