作成日 2008/5/4
最終更新日 2011/9/4
[ Japanese | English ]

JavaのAPIなどを参考にしてクラス設計をする

 このページではオブジェクト指向設計が出来る人を対象に、もっと良い設計をするために必要なことを説明します。オブジェクト指向設計がいまいちという方は「オブジェクト指向についてまとめたもの」の上のほうから順に読んでいってください。

 良い設計が出来るようになるためには日々の勉強が必要なのですが、何を勉強していいのか分からないことが良くあります。なので、「GRASPパターン」や「デザインパターンやアンチパターン 」を別のページで紹介しました(※1)。
 このページでは、JavaのAPIなどを参考にするメリットを説明しようと思います(※1)。

-----
※1:エクセルVBAをマスターしたいのであれば、エクセルVBAだけやっていても駄目です。他の言語やソフトウェア工学なども勉強(※2)する必要があります。
※2:だるまはソフトウェア工学を勉強するには情報処理技術者試験 (基本情報技術者やソフトウェア開発技術者など)の勉強をするのが良いと考えています。

1.JavaのAPIについて
2.JavaのAPIなどを参考にするメリット
3.具体的にどこが参考になるの?
4.参考文献


1.JavaのAPIについて

 SunのページにJavaのAPIドキュメントがあります。

 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html
はJava 1.4のAPIドキュメントです。

 上記のページにSunが提供するjavaやjavaxから始まるパッケージに属するクラスやメソッドの仕様が書かれています。
このページのトップへ

2.JavaのAPIなどを参考にするメリット

 JavaのAPIなどを参考にするメリットは以下のとおりです。
  1. VBAはJavaと比べるとクラスライブラリが貧弱です(C言語よりはましですが)。
     そのため、自分でクラスを作る必要が出てくることになるときがあります。
     そのとき、クラス名、メソッド名、例外発生時の挙動(例外をスローするのか戻り値で返すのか?)などを参考にすると他の人が見たときに理解しやすくなると思います。
     ※これはデザインパターンやアンチパターンをいくら勉強しても身に付かない内容です。

  2. 仕様バグが減らせると思います。
     JavaのAPIは大勢の人が考えて作成したものだと思います。初めて作成されてから時間も経っていますので、自分で設計したクラスよりかははるかに安定でバグが少ないです。

  3. 自分でクラスやメソッドの仕様書を作成する際、何をどこまで書けばよいのか、どのような順番で書けばよいのかの参考になると思います。
     他の人が仕様書を見たときに分かりやすくなると思います。
     ※これはデザインパターンやアンチパターンをいくら勉強しても身に付かない内容です。

 ただし、参考にする際は以下の点に注意してください。
  1. 参考にするライブラリがバグっていたり、日本語が分かりにくいときがある。
     まあ、仕方ないということで・・・。
     そういう箇所は参考にしない方が良いかもしれません。

  2. 参考にするライブラリによって名前等、設計方針が違う場合があります。
     例えば、エクセルライブラリの場合、Workbookクラスに対してWorkbooksクラスがあるように、あるクラスに対して、コレクションクラスが必ずといって良いほどありますが、Javaはあまりそのようなことはしないようです。
     このような場合は、どちらかに統一した方がよいと思います。

  3. エクセルVBAではオブジェクト指向プログラミングがやりにくい(継承がサポートされていないなど )があるため、いつも、うまく参考に出来るとは限らないです。
このページのトップへ

3.具体的にどこが参考になるの?

 さて、では、具体的にどんなところが参考になるのでしょうかね。ここでは開発言語がVBAではない場合(例えば、C/C++)も考えます。
  1. コレクションのクラス名、メソッド名
     例えば、C言語の場合、可変表配列(java.util.Vector)や連想配列(java.util.HashMap)がないので自作しないといけない場合があります。
     そんな時、Javaにあるクラスを参考にした方が良い(ライブラリとしてのJIS X 0129-1の使用性-理解性が上がる)です。
     まあ、VBAならCollectionクラスやRedimがありますが。

  2. 国際化の考え方
     まず、
    Java 国際化 FAQ
    が参考になります。
     実際に使用するクラスだと、例えば、java.util.ResourceBandleクラスとかですね。

  3. 例外機構
     Javaだと例外は、Exception,RuntimeException,Errorの3つに分けられます。さらに例外チェーン機能というのもあります。スタックの情報も持っています。
     ということは、障害時にこれらの機能・情報はやはりあった方が良いということです(C/C++、VBAでは難しいのもあるが)。
     こういった、例外の考え方はかなり参考になります。
    ※C/C++、VBAでは難しいからといってあきらめるのではなく、例えば問題が発生したらとにかくログを出力し(C/C++なら__FILE__、__LINE__マクロを使ってソースファイル名前と行数を出力できる)、さらに呼び出し元でもログ出力すればトレースを追うことができます。

  4. 設定ファイル
     C/C++はこういうのがないのですよね・・・。VBAはどうだろう・・・(VBA.Interaction.GetStringがあるがレジストリ(Windowsの場合)を読みにいく・・・。って、設定ファイルじゃないし・・・。)。
     javaだとjava.util.Propertiesクラスやjava.util.prefs.Preferencesクラスですね。
     クラス名、メソッド名だけでなく、ファイルの仕様といったところも参考になります。


このページのトップへ

4.参考文献

 このページを作成する際に参考にしたページなどです。
 このページを見た人が参考になりそうなページも挙げました。

番号

リンク先の名称

リンク先の説明

リンクした日

1 概要 (Java 2 プラットフォーム SE v1.4.0) 古いのですが、Java 1.4のAPIドキュメントです。 2008/5/4
2 Doxygen  DoxygenはC/C++、Javaなどのソースからドキュメントを生成するためのソフトウエアです(残念ながらVB6.0、VBAには対応していません) 。
 特殊コマンド(例えば、\codeなど)がなぜ定義されているのか考えてみてください。(一般的に関数等の仕様書に書く必要がある項目に対しての特殊コマンドが定義されていると考えられる。)
2008/5/4


Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
Sun、Sun Microsystems、サンのロゴマーク、Java、及び、Sun/Solaris/Java に関連するすべての商標およびロゴマークは米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。