いまから始めるスキルチェンジ ギャップを乗り越えてJavaエンジニアになる!

前編 Javaで必要なのは周辺環境の知識

テンアートニ 中越智哉 越川剛臣
2005/9/21

Javaへのスキルチェンジを目指すエンジニア。乗り越えなければならないギャップにはどのようなものがあるのか。Javaの環境に特有のものもあれば、オープンソースの文化に起因するものもあり、Java以外のエンジニアは戸惑うことも多いだろう。気を付けるべきポイントを紹介しよう。

Javaへのスキルチェンジ

 暦のうえでは9月といえば秋です。秋といえば「読書の秋」「運動の秋」「スキルチェンジの秋(?)」ということで、Javaエンジニアへのスキルチェンジを考えているVisual Basic(VB)やCOBOLエンジニアの方へ、Javaの世界に飛び込んでいくために乗り越えるべきギャップとその対処法をいくつかご紹介したいと思います。

 ひと口にJavaエンジニアへのスキルチェンジといっても、VB/COBOLエンジニアの方々が直面することになるギャップは、単にJavaという言語に起因するものだけではありません。

 Javaの世界をよく知るために欠かせないキーワードの1つとして「オープンソース」があります。オープンソースが開発のかなりの部分に入り込んでいるJavaの現場では、その文化をよく知ることも重要となってきているのです。

 本稿では「Javaとほかの言語とのギャップ」を、Java言語特有のものとオープンソースに起因するものの2つに分けて、それぞれのポイントを解説していきます。

 前編に当たる今回は、Java言語特有のものについてご紹介します。

  ポイント1 Javaはプラットフォームを限定しない

 Javaエンジニアへのスキルチェンジをお考えの方はよくご存じかと思いますが、Javaは稼働プラットフォームを限定しない言語です。あるプラットフォーム上で作成したアプリケーションを別のプラットフォーム上でそのまま実行できる。これが、Javaが普及するに至った理由の1つです。ですからJavaで構築するシステムは、稼働環境がWindowsサーバの場合もあれば、LinuxやSolarisをはじめとするUNIX系のプラットフォームの場合もあります。

 開発(コードの実装)そのものは多くのエンジニアがWindowsマシン上で行っていることと思いますので、実装フェイズに限定すれば、Windows系の知識だけあれば困らないことになります。ですがシステムインテグレーションというところまで考えた場合、Java言語が分かり、Windows上でコーディングができるというだけではJavaエンジニアとして他者と差をつけるには十分ではないことになります。

 Javaで構築したシステムを、LinuxやSolarisのようなUNIX系のOSにディプロイして運用するためには、単にJavaの知識だけではなく、UNIX系のOSの操作に関しても基礎的なスキルを有していることが求められるのです。

 幸いUNIX系のOSは、LinuxやSolarisに関しては無償で使用できるものがあります。UNIXは敷居が高いとお考えの方も、Javaエンジニアへのスキルチェンジを目指すのであれば、ぜひチャレンジしていただきたいと思います。

  ポイント2 Javaは開発環境が重厚

 弊社では日常、ほかの言語からJavaへのスキルチェンジをサポートする教育を行っています。お客さまの会社に赴いて開発環境をセッティングするお手伝いをすることもあるのですが、お客さまのマシンを触って驚くことがよくあります。

 われわれJavaエンジニアの場合、開発環境を準備するとなると、まずIDE(統合開発環境)、そしてアプリケーションサーバ、場合によってはデータベースサーバをインストールします。そのような場合、開発に使用するマシンはメモリを512MB以上積んでいるのが普通です。しかしJava以外の言語で開発されている方のマシンは、メモリが128M〜256MBくらいのことも多いようです。

 後編の「ポイント10 Javaは組み合わせが必須」でもお話しする予定ですが、Javaの開発では、いろいろなミドルウェアを組み合わせることが多いです。1つ1つのミドルウェアには、かなりのメモリを消費するものもあります。

 例えばEclipseを使う場合、CPUのスペックにもよりますが、128MBのメモリでは満足に動かないでしょう。256MBくらいあればEclipse自体はそれなりに動作しますが、ほかのミドルウェアと組み合わせるとかなりモタモタしてしまいます。多ければ多いほど良いのですが、やはり通常のJava開発では512MB以上のメモリがお勧めです。

 もし、ほかの言語からJavaにスイッチしようと考えていて、ご自宅のPCにもJavaの開発環境を構築してみようと計画しているなら、PCのメモリ容量を一度確認してみた方がいいかもしれません。3年、5年と長く使っているPCですと、もう市場にメモリが出回っておらず、結局PCごと買い替えるなどということになるかもしれません。家族会議が必要になったときには、この記事を見せて説得材料にしていただければ幸いです。

  ポイント3 Javaは大文字と小文字を区別する

 複数の言語を学んだことのある方でしたら、「プログラミング言語なんて基本はみんな一緒だ」と思われることでしょう。Javaもプログラミング言語ですから、根本からほかの言語と違うということはありません。

 ですがやはり、VB/COBOLといった言語からJavaにスキルチェンジしていく方には言語仕様の違いによるギャップは大きいと思われますので、ポイントになるところをいくつかご紹介したいと思います。

・インデントを付けよう

 文法上の制約ではないのですが、Javaではかなりインデントを意識したコーディングを行うのがセオリーとなっています。

 Javaのコードはパッケージ、クラス、変数、メソッドなど、1つのソースコードにさまざまな要素を含めるため、インデントによってそれらの包含関係を明確にする必要があるのです。余分な空白はメモリの無駄と思われるかもしれませんが、見やすいコードのためにもインデントを付けることを心掛けてください。

・コーディング量が多い

 VBでの開発対象はGUIベースのものが多く、コーディングも必要最小限だけでできるようになっているケースが多いかと思います。JavaではGUIを開発することは少なく、現在の主流はWebをベースとしたサーバサイドの開発です。VBと比べるとコーディング量が多いと感じるかもしれません。

・大文字と小文字の区別が厳密

 Javaのコードは改行やインデントを割合自由に入れることができるので、COBOLからJavaにスキルチェンジしようとされる方には、かなり記述の汎用性が高いと感じられるかもしれません。ですがJavaでは、大文字と小文字の区別に関してはかなり厳格にチェックされます。文法として定められてはいませんが、標準で推奨されるネーミングルールでも大文字と小文字を使い分ける必要があります。注意してください。

・インスタンスを理解しよう

 COBOLエンジニアの方がギャップとして何より強く感じるのは、おそらくオブジェクト指向的なコードの書き方に関するものではないでしょうか。COBOLエンジニアの方に限らず、非オブジェクト指向言語からスキルチェンジされる方は皆さん苦労されるところです。

 オブジェクト指向を理解する1つの基準としては、「インスタンス」という概念を理解できるかどうかがかなり大きいと思います。

 あるレベルまでは、大まかな文法体系さえ分かっていればインスタンスが分からなくてもそれなりにコードが書けます。ですが、Javaでインスタンスを使わずにアプリケーションを作ることにはいずれ限界がきます。逆にインスタンスの概念さえ理解できれば、ほかの概念を学ぶことはそんなに難しくはないのです。

  ポイント4 Javaでは周辺環境の知識も必要

 「Javaを覚えればJavaアプリケーションを作ることができる!」。当たり前のことのようですが、実は半分正解で半分誤りです。

 現在、Javaで作る業務アプリケーションの多くはWebアプリケーションです。Webアプリケーションとは、クライアントサイドにWebブラウザを使用し、サーバサイドとの通信を行うアプリケーションです。

 クライアントソフトにWebブラウザを用いることから、JavaエンジニアはJavaのみならず、Webブラウザが解釈・実行するHTMLやCSS、JavaScriptについても勉強していかなければなりません。

 VBでクライアントソフトを作る場合は、ボタンやテキストボックスなどを貼り付けて、簡単にユーザーインターフェイスを作ることができました。そこが大きく異なる点です(ただし、WebアプリケーションはクライアントソフトにWebブラウザを使用するため、ソフト自体は作る必要がありませんが)。

 Webブラウザとサーバ間の通信には主にHTTPプロトコルを使用します。HTTPはWebでのやりとりに使用される最も一般的なプロトコルです。通常、開発者はHTTPについてあまり深くまで意識することはないのですが、概要レベル(リクエスト/レスポンス)の知識は必須ともいえます。HTTPについて詳細な知識を持っていれば、不具合が発生した場合に柔軟に対応できる可能性もあります。

 これからJavaへスキルチェンジされる皆さん、Javaのみならず、周辺知識について意識することも重要です。覚えておいてください。

  ポイント5 Javaでは最新動向のウオッチングも必須

 「Javaで作るシステムの特徴は」と聞かれたら、皆さんは何を想像されますか。いくつかの答えがあると思いますが、そのうちの1つとして「フレームワークや部品にオープンソースをはじめとしたさまざまな製品をふんだんに使っている」ということが挙げられます。

 これは、アプリケーションの部品をゼロから作らなくてもよい半面、それらの部品の使い方を知らなくてはならないということを意味します。

 特にオープンソースの世界では、毎日新しい技術や製品が世の中に登場するといっても過言ではないくらい、新製品の登場・既存製品のバージョンアップが行われています。

 そんな中で、皆さんが優れたJavaエンジニアとなるためには、コーディングスキルを磨くこと以外にも、以下のようなことに目を向ける必要があります。

・これから自分が使おうとしている機能について、市場にどのような製品があり、どの製品が人気があってよく利用されているのか(多くの利用があればそれだけ安定した製品であるといえますし、ノウハウも蓄積されていると判断できます)

・自分が使っている製品はバージョンアップされていないか。されている場合はどのような機能が追加されているのか、自分のアプリケーションに影響はないか

 業界動向に日ごろからアンテナを張り、ウオッチングしておくことが非常に重要になります。

 この点、基幹系システムのような大規模システムに長く携わってこられた方などは、最新動向をウオッチングすることに初めのうちは戸惑いを覚えるかもしれません。しかしJavaの世界でそれを怠ると、せっかく身に付けた技術が数年後には役に立たなくなるということにもなりかねません。

 筆者はさまざまなニュースに目を通すたびに「また新しいものが出てきたのか!」とうんざりすることがよくあります(この記事を読んでくださっている皆さんはそのようなことはないと思いますが……)。

 しかし、裏を返せば新しい知識を習得できる機会が多いということにもなるのです。ぜひ、日々勉強する姿勢を持って頑張ってください。

 今回は、Javaとほかの言語とのギャップのうち、コーディングや周辺環境などJava言語特有のものについてお話ししました。後編に当たる次回は、非標準の技術の扱いなど、オープンソースに起因するものをご紹介します。


筆者プロフィール
テンアートニ
アプリケーションビジネスユニット
テクニカルソリューション トレーニンググループ コンサルタント

中越智哉●1974年北海道生まれ。1999年北海道大学大学院 電子情報工学専攻修士課程修了後、同年4月テンアートニ入社。開発案件・トレーニング講師を担当。2000年12月より、@IT Java Solutionフォーラムにて「Java Solution FAQ」を執筆(2001年11月、同連載をもとに書籍「Javaプログラミング FAQ」出版)。その後、基幹系業務システム開発SEなどを経て、現在は教育事業(コース開発および講師)・コンサルティングに従事。
テンアートニ
アプリケーションビジネスユニット
テクニカルソリューション トレーニンググループ コンサルタント

越川剛臣●1972年東京都生まれ。1996年青山学院大学 法学部卒業後、ソフトウェア会社勤務を経て、2003年5月テンアートニ入社。トレーニング講師・技術コンサルティング案件などを担当。現在は教育事業(コース開発および講師・教育コンサルティング業務)に従事。『DBマガジン』(翔泳社刊)、『日経ソフトウエア』(日経BP社刊)への記事寄稿がある。
自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。