サーバサイドではじめるJavaグラフィック講座 1
掌田 津耶乃 [著] 2007/02/20 00:00

1 2 3 →

はじめに

 その昔、プログラミングの入門と言えば、スタンドアロンなアプリケーションの作成から入るのが常道でした。が、時代は変わります。インターネット、特にWebの発達により、「初めてのプログラミングがWeb関係だった」という人はずいぶんと多くなりました。

 Javaの世界でも、これは顕著です。「初めてJavaに触れる人間が、最初に学ぶのがJSP/サーブレットだった」なんてケースも、今では半ば当たり前になりつつあるようです。が、サーバサイドの開発中心だと、どうしてもなおざりになってしまう分野というのがあります。それは「グラフィック」です。

 最近は、Webといえども「テキスト中心の世界」とは言えなくなってきています。グラフィック関連の処理をサーバサイドで行なわなければならない事態は、この先、必ず増えてくることでしょう。そこで、サーバサイドのJavaビギナーに向け、グラフィックの基本利用についてまとめていきましょう。

対象読者

  • Javaの基本およびJavaによるWeb開発の基礎(JSP/サーブレット程度)をマスターしている人。
  • グラフィック関連のプログラミング経験があまりない人。
  • Javaのグラフィック処理を学び直したい人。

グラフィック関連のパッケージとクラス

 まず、Javaに用意されているグラフィック関連のクラスについて説明しておきましょう。なお、ここではJ2EE 1.4で使われているJava 5をベースに説明を行います。

  • ビットマップイメージに関するクラス
  • java.awt.Image
    java.awt.image.BufferedImage
  • グラフィックコンテキスト・クラス
  • java.awt.Graphics
    java.awt.Graphics2D
  • イメージの読み書きに関連するクラス
  • javax.imageio.ImageIO
  • イメージ関連のパッケージ
  • java.awt.imageパッケージおよびその下のもの
    javax.imageioパッケージおよびその下のもの

 意外とたくさんのクラスやパッケージが用意されているのに驚いたかもしれません。多少はGUIを使った処理を書いたことがあるなら、ImageBufferedImageGraphicsあたりのクラスは知っているかもしれませんね。

 この他、イメージファイルに関するものとして、ImageIOクラスが多用されます。また、java.awt.imageパッケージはBufferedImageやイメージの処理に関連する各種のクラスを、javax.imageioパッケージはImageIOやイメージファイルに関連する各種クラスをそれぞれパッケージに持っています。この他、java.awtパッケージ内のColorFontなど、イメージ関連の処理で用いられるクラスはたくさんあります。

AWTとSwing

 このjava.awtというパッケージは「AWT」と呼ばれるJava標準のGUIフレームワークに関するものです。AWTは「Abstract Winddowing Toolkit」の略で、ウインドウやメニューなどのGUIを使ったプログラムを作成する際に必要となるものがまとめられています。

 Javaには、このAWTの他に「Swing」というGUIフレームワークもjavax.swingパッケージとして用意されていますが、グラフィック関係に絞っていえば、基本はAWTと同じでjava.awt内のクラスを利用します。

 一度にこれらすべてを理解するのは到底無理でしょうから、まずは最も基本となる「Image」「BufferedImage」「Graphics」の3つのクラスを使った、グラフィックとイメージの基本利用から理解していくのが良いでしょう。また、ここで取り上げるグラフィック関連のクラス類はAWTやSwingといったGUIのパッケージに用意されているものですが、これらのGUIと併用しなければならないというわけではありません。サーバサイドのように、GUIを一切使わないプログラムでも、グラフィック関連の機能だけを利用することは可能です。

一般的なAWTにおけるグラフィックの利用

 既にGraphicsクラスの基本ぐらいは分かっている、という人も多いでしょうが、一応、一般的なグラフィックの利用例として、AWTによるGUIを使った、ごく単純なアプレットのソースを上げておきます。赤から青へグラディエーションされたイメージを作成し表示するものです。

package jp.tuyano.codezine;

import java.applet.Applet;
import java.awt.*;

public class SampleApplet extends Applet {
    private static final long serialVersionUID = 1L;
    
    public void paint(Graphics g){
        for(int i = 0;i < 16;i++)
            for(int j = 0;j < 16;j++){
                Color c = new Color(i * 16,0,255 - j * 16);
                g.setColor(c);
                g.fillRect(i * 16, j * 16, 16, 16);
            }
    }
}
アプレットビューワでアプレットを表示したところ。青から赤へグラディエーション表示する簡単なサンプルだ。
アプレットビューワでアプレットを表示したところ。青から赤へグラディエーション表示する簡単なサンプルだ。

 ここで行なっているのは、「paint」というメソッドのオーバーライドです。GUI利用のプログラム(AWT、Swingを利用したもの全般)では、利用するコンポーネントやコンテナには必ずこのpaintメソッドまたはそれに相当するメソッドが用意されています。これは、コンポーネントの表示を更新するとき、必要に応じて呼び出されます。従って、ここに描画に関する処理を用意しておけば、必要があると自動的に実行され画面に表示されるわけです。

 この種のメソッドは、一般にjava.awt.Graphicsインスタンスを引数に持ちます(正確には、実はGraphicsではないのですが……これについては改めて)。Graphicsクラスは、グラフィックコンテキストの描画処理をカプセル化したものです。ここに用意されている描画用のメソッドを呼び出すことで、そのコンポーネントに図形やイメージを描画することができます。従って、AWTなどのGUIプログラムの場合、グラフィックの利用というのは「Graphicsクラスの使い方を覚える」ということであり、それ以外はあまり重要ではありません。

 また、基本は「画面への表示」ですから、イメージファイルへのアクセスや、データの送受といった操作はとりあえず不要です。いずれそうしたことを行う必要が生じることでしょうが、単にグラフィックを利用するだけなら、それらの知識はなくとも問題ないのです。


1 2 3
→
INDEX
JSP/サーブレットでイメージを生成する
Page1
はじめに
対象読者
グラフィック関連のパッケージとクラス
一般的なAWTにおけるグラフィックの利用
サーバサイドにおけるグラフィック利用の基本
BufferedImageを使ったイメージの作成
GraphicsとGraphics2D
Graphicsによる描画の基本
イメージの送信
まとめ
プロフィール
掌田 津耶乃 ショウダ ツヤノ

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆活動をする傍ら、ログハウスの普及活動にいそしんでいる。(掌田津耶乃のWebサイトはこちら

※現在、新しいQ&A?サイト「FinQ」を開発、ベータ公開中。また新しい入門記事の投稿サイト「libro」を開発、ベータ公開中。皆さん、ぜひご参加ください!


注目の求人情報
技術営業・マーケティング/外資系ITサービス企業
■営業、プリセールス、デリバリーコンサルタント ERPシステムやITシステムの営業~プリセールス~デ...
システムエンジニア/商社系SIベンダー
・Windows、UNIXでの情報系システムの開発・・保守 ・お客様との打ち合わせを通じて要件定義、設計、実...
システムエンジニア/社名非公開
・キヤノン電子と協業でCRM領域(コールセンターシステム、営業支援システム、ECサイト構築等)の増強を...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: