教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)
Javaを使ったプログラミングでは、OSをそれほど意識する必要はないといわれています。学習時やサンプルプログラム作成時は確かにそうなのですが、プロフェッショナルな開発者となると、やはりOSをまったく意識しないでプログラミングをするわけにはいきません。そのため、開発者の皆さんは、きっと「UNIX系OSも使いこなせるようになりたい」と思っていることでしょう。
今回は、そんな“UNIX系OSを使える開発者”を目指す読者が一歩先へ進むためのアドバイスを筆者なりにしたいと思います。
最近の若手技術者と話をしていると、意外とUNIX系OSの知識がないことに驚かされます。いまの時代、パソコンといえばWindowsマシンであることが多く、Windows系OSを使い慣れている人が多いことは理解できるのですが、技術者ならUNIX系OSについても知っておいた方が良いと思いませんか?
特にサーバサイドの案件が多いJavaプログラミングをする技術者にとっては、Windowsだけでなく、UNIX系OSのことも知っていた方が明らかに有利です。
サーバサイドでは、主にLinuxなどのUNIX系OS上でTomcatやJBossといったWebコンテナ/アプリケーションサーバを稼働させ、そこにJavaプログラムのWebアプリをデプロイして運用していることが多いはずです。Webアプリが問題なく動いている分には、OSについての知識はそれほど重要ではありませんが、障害が発生した場合などに、幅広い対応策が提案できるかどうかは、OSの知識が影響してきます。いかにJavaが「Write once, run anywhere」をうたっていても、何か問題が起きたときは、稼働しているOSの特性を考慮して解決することが必要になる場面が多くあります。
また、最近話題のAndroidもベースはLinuxです。Javaの知識だけでもAndroidアプリは開発可能ですが、端末について詳細調査をしたい場合に、Linuxの知識があるのとないのとでは、作業効率に大きな影響が出てきます。
こういったことを考えると、いまや「JavaプログラマもUNIX系OSについての知識が必須」という時代になっています。
ところで、できるだけ自分がやりたい作業に集中したい場合は、環境構築に時間を取られたり、設定作業にはまって時間をつぶしてしまったりするのは無駄だと思いますよね。最近は、Apache HTTP ServerやMySQLなどもWindowsで動作しますし、XAMPPのようなオールインワン・パッケージを使って簡単にインストールできるようになっているので、そちらを選択する人も多くいると思います。
ところが、それらに関していくら知識を増やしても、実際の運用ではあまり役に立ちません。Linuxサーバで稼働させるということになると、結局Linuxの知識が必要となります。ということで、トータル的な学習効率も考慮すると、Linuxで動かせるようになってから、Windowsでの動かし方を知った方が、無駄が少なくて済むと思いませんか?
本来Linuxで稼働させて動作確認をした方が楽なものまで、「普段使い慣れている」という理由でWindowsマシンへ導入して、Linuxは分からないままになっている開発者も多いようです。そういった開発者は、実際のWebアプリ導入時に問題が起きたときにお手上げになってしまい、Linuxについて詳しいエンジニアが問題を解決するまで何もできずにいることになります。
こんなとき、Linuxに詳しいエンジニアからすると、「きちんと動くものをデプロイしてくれないかなぁ」とか、「自分で作ったものなのだから、自分で調べてくれないかなぁ」と思うはずです。プロフェッショナルなら、そんな状況にはしたくないものですよね。
ちなみに、「Javaプログラミングに詳しく、Linuxサーバの運用にも詳しい」という技術者は、世の中には意外と少ないようです。筆者としては、これは次のような理由からだと考えています。
プログラミング言語Javaでプログラミングを学習すると、Windowsで稼働させるのか、Linuxで稼働させるのか、あまり気にする必要がありません。そのため、Javaプログラマでも、意識が高い人でないと、Linuxサーバの運用までできるようになれません。
一方、Linuxサーバの運用で活躍するのは、ShellスクリプトやPerlといったスクリプト言語系ですから、Linuxサーバの運用をしている技術者はプログラミング言語Javaでプログラムを組む機会が少なく、Linuxサーバ管理者で意識が高い人でないと、Javaプログラミングまでできるようになれません。
いずれも意識の問題ですし、最近はLinuxを勉強するのも簡単なので、やる気があれば、それほど大変な思いをしなくても、両方身に付けることができます。ぜひ、価値の高い「Javaプログラミングに詳しく、Linuxサーバの運用にも詳しいエンジニア」を目指してもらいたいものです。本稿では、そういった人向けに、最近のLinux学習環境について紹介します。
一昔前はUNIX系OSというと、ワークステーションのような高性能なハードウェア上でないと、まともに動作しないものでした。そのため、ハードウェアとセットで購入する必要があり、個人で手に入れて利用するのはちょっと難しい状況でした。しかし、いまはご存じのとおり、パソコンで動作するオープンソースのUNIX系OSがあるので、気軽に勉強できます。
具体的には、「OpenSolaris」「FreeBSD」といったものもありますが、ここでは「Linux Kernel」を採用し、広く普及していて、かつ、参考図書や資料が充実しているLinuxをお勧めします。ご存じの通り、オープンソースのUNIX系OSとしてLinuxは実際のサービスでもよく使われています。
パソコンで稼働するOSとしては、「Mac OS X」という選択肢もありますが、世の中のデータセンタでよく提供されているサーバといえば、「Red Hat Enterprise Linux」であったり、それと互換のある「CentOS」が多いので、実際の運用環境に強くなりたいのなら、Linuxを選択するのが良いでしょう。
もちろん、メジャーなOSを一通り理解するということで、Mac OS Xへ「VirtualBox」などをインストールして、そこへ必要なOSをインストールした仮想マシンを用意するのも楽しいですから、欲張りな方は、ぜひチャレンジしてもらいたいところです。
VirtualBoxに似たようなソフトウェアとしては、「VMware Player」「VirtualPC」といった仮想マシン環境を提供するソフトウェアもあります。これらのソフトウェアが、個人利用であれば無償で使えるというのも、Linuxを学習する際のハードルを低くしています。
おかげで、わざわざLinux用の専用マシンを用意しなくても、手軽にLinuxをインストールして触ることができるようになりました。Linuxをインストールするために、ハードウェアを選定して組み立てたり、Linux readyなマシンを購入していたのが、うそのようです。
これだけ手軽にLinuxを学習できる時代となっているのですから、慣れるまでちょっと苦労してでも、ぜひ触ってみるべきです。Windowsの世界とは違った文化に触れると、それだけでも刺激になるはずです。
筆者は、Mac OS Xのノートパソコン(MacBook Air)上へVirtualBoxをインストールしています。Windowsデスクトップマシン上では、VMware PlayerやVirtualPC、VirtualBoxを使っています。
ノートパソコンで作業をよくしているので、WindowsノートパソコンへVirutalPCをインストールして使ってみた時期がありましたが、仮想マシンをノートパソコンで稼働するのにはかなり無理があり、当時はきびきびと動作させることができなかったので、割り切って仮想マシンは基本的にデスクトップマシンで稼働させるようにしました。
とはいえ、どうしてもモバイル環境でLinuxを使いたいときもあるので、そのときは、MacBook Airの方を持ち歩いて使うようにしています。このように、現在はさまざまな選択肢がありますから、いろいろな方法でUNIX系OSについて学習できます。
慣れた環境の方が、短期的には作業効率が一番良いので、その環境を良くすることだけを考えてしまいがちですが、本稿を読んだのを良い機会として、UNIX系OSにトライしてみてはいかがでしょうか。
ということで筆者なりに、以下のようなおすすめの3つのスタイルを考えてみましたので、次のページで紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.