小山博史のJavaを楽しむ(14)UNIX/Linuxも楽しむ
Java開発者になるための学習法
株式会社ガリレオ
小山博史
2010/8/10
教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)
| 今回の主な内容 ・ なぜUNIX系OSの知識が必要なのか? AndroidもLinux ・ 無料で簡単にUNIX/Linuxを学習できる環境を作るには ・ あなたは何派? 3パターンから選んで使ってみよう ・ JavaプログラムからLinuxプログラムを実行するには ・ ちょっと思い立ったときに使えるように |
Javaを使ったプログラミングでは、OSをそれほど意識する必要はないといわれています。学習時やサンプルプログラム作成時は確かにそうなのですが、プロフェッショナルな開発者となると、やはりOSをまったく意識しないでプログラミングをするわけにはいきません。そのため、開発者の皆さんは、きっと「UNIX系OSも使いこなせるようになりたい」と思っていることでしょう。
今回は、そんな“UNIX系OSを使える開発者”を目指す読者が一歩先へ進むためのアドバイスを筆者なりにしたいと思います。
■ なぜUNIX系OSの知識が必要なのか? AndroidもLinux
最近の若手技術者と話をしていると、意外と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の特性を考慮して解決することが必要になる場面が多くあります。
![]() |
| 図1 Android HT-03A |
また、最近話題の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プログラミングに詳しく、Linuxサーバの運用にも詳しい」という技術者は、世の中には意外と少ないようです。筆者としては、これは次のような理由からだと考えています。
プログラミング言語Javaでプログラミングを学習すると、Windowsで稼働させるのか、Linuxで稼働させるのか、あまり気にする必要がありません。そのため、Javaプログラマでも、意識が高い人でないと、Linuxサーバの運用までできるようになれません。
一方、Linuxサーバの運用で活躍するのは、ShellスクリプトやPerlといったスクリプト言語系ですから、Linuxサーバの運用をしている技術者はプログラミング言語Javaでプログラムを組む機会が少なく、Linuxサーバ管理者で意識が高い人でないと、Javaプログラミングまでできるようになれません。
いずれも意識の問題ですし、最近はLinuxを勉強するのも簡単なので、やる気があれば、それほど大変な思いをしなくても、両方身に付けることができます。ぜひ、価値の高い「Javaプログラミングに詳しく、Linuxサーバの運用にも詳しいエンジニア」を目指してもらいたいものです。本稿では、そういった人向けに、最近のLinux学習環境について紹介します。
■ 無料で簡単にUNIX/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を使っています。
![]() |
| 図2 VirtualBoxの使用例 |
ノートパソコンで作業をよくしているので、WindowsノートパソコンへVirutalPCをインストールして使ってみた時期がありましたが、仮想マシンをノートパソコンで稼働するのにはかなり無理があり、当時はきびきびと動作させることができなかったので、割り切って仮想マシンは基本的にデスクトップマシンで稼働させるようにしました。
![]() |
| 図3 筆者の仮想マシン例1(Windows 2000とVirtualPC 2007) |
とはいえ、どうしてもモバイル環境でLinuxを使いたいときもあるので、そのときは、MacBook Airの方を持ち歩いて使うようにしています。このように、現在はさまざまな選択肢がありますから、いろいろな方法でUNIX系OSについて学習できます。
慣れた環境の方が、短期的には作業効率が一番良いので、その環境を良くすることだけを考えてしまいがちですが、本稿を読んだのを良い機会として、UNIX系OSにトライしてみてはいかがでしょうか。
ということで筆者なりに、以下のようなおすすめの3つのスタイルを考えてみましたので、次のページで紹介します。
| 1-2-3 |
| INDEX | ||
| 第14回 UNIX/Linuxも楽しむJava開発者になるための学習法 | ||
| Page1 なぜUNIX系OSの知識が必要なのか? AndroidもLinux 無料で簡単にUNIX/Linuxを学習できる環境を作るには |
||
| Page2 あなたは何派? 3パターンから選んで使ってみよう JavaプログラムからLinuxプログラムを実行するには |
||
| Page3 ちょっと思い立ったときに使えるように |
||
小山博史のJavaを楽しむ バックナンバー 連載インデックスへ»
- 第1回 JavaとJavaScriptの親しい関係
- 第2回 いろいろなJavaを楽しむ
- 第3回 待望のJava SE 6 でパーシステンス
- 第4回 (Java+Derby)* Ruby on Rails プログラミング
- 第5回 【新人研修向け特別企画】JavaでPHPを使ってみた
- 第6回 JavaFXでJava RIA開発はどれくらい変わるの?
- 第7回 そろそろブログ+RSSアプリでも作ってみませんか?
- 第8回 デスクトップをJava製ウィジェットでにぎやかに
- 第9回 Google Android用携帯アプリ作成のための基礎知識
- 第10回 【新人なるプログラマーへ】ソースコードを読みましょう
- 第11回 Javaはクラウドのプラットフォームになり得るのか
- 第12回 「Javaは遅い」から「Javaは楽しい」に至る歴史
- 第13回 Subversionならできる! NetBook最強バックアップ術
- 第14回 UNIX/Linuxも楽しむJava開発者になるための学習法
- 第15回 年末でJetty(絶対)にできるAndroid携帯サーバ活用
| Java Solutionコラム一覧 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -








