住宅探し仕事探しレンタルサーバ一覧
 ☆一日中パソコンを使って、何となく体調が悪いというあなたへ!☆
 ☆サプリメント一覧(製品名、価格)

JAVA・iアプリ入門  Java・iアプリ作成時の注意点 ※2006年以降の情報 2008年4月14日更新

私は、JAVA初心者ですが、悪戦苦闘しながら、自作のJava・iアプリを公開しています。
その際に発生したトラブルを、「Java・iアプリ作成時の注意点」として公開します。
皆様からの情報も含めて公開しますので、「Java・iアプリ入門 掲示板」への情報の投稿を御願い致します。
※NTTドコモが提供する開発ツール「iαppli Development Kit for DoJa」をDoJaと記述します。
※2002年までの古い情報:「iアプリ作成時の注意点

Java・iアプリ作成時の注意点  血と汗と涙の奮闘記録 ※2006年以降の情報
件名 トラブル状況 対処方法
Java・iアプリ開発環境
Java統合開発環境 Java統合開発環境は、何が良い? Java統合開発環境は、最近、Eclipseが主流のようです。
※NTTドコモ「iαppli Development Kitユーザーズガイド」においても、「Sun ONE Studio4」と「Eclipse」の両方について説明が成されています。
Eclipseの入手 Eclipseの入手先 Eclipseの本体:eclipse-SDK-3.1.2-win32.zip
http://www.eclipse.org/downloads/
Eclipseの言語パック:NLpack1-eclipse-SDK-3.1.1a-win32.zip
http://download.eclipse.org/eclipse/downloads/

※Eclipseの動作には、Javaの実行環境(JRE)または開発環境(Java2 SDK)が必要
実行環境(JRE):http://java.com/ja/
開発環境(Java2 SDK):http://java.sun.com/j2se/1.4.2/download.html
Eclipseの
インストール
Eclipseのインストール手順 インストールというよりも、解凍するだけです。
1.Eclipseの本体:eclipse-SDK-3.1.2-win32.zipを解凍
 ※eclipseというフォルダが作成される
2.Eclipseの言語パック:NLpack1-eclipse-SDK-3.1.1a-win32.zipを解凍
 ※eclipseというフォルダが作成される
3.Eclipseの本体の"eclipse"フォルダに、Eclipseの言語パックの"eclipse"フォルダを上書きすれば完了
4."eclipse"フォルダの中の"eclipse.exe"を起動して下さい。
Eclipseの
JDKの選択
パソコンの中に複数のバージョンの
JREまたはJDKが存在する場合
例:JDK1.3→JDK1.4に変更したい場合
Eclipseが使用するJREまたはJDKは、初期起動時に、Eclipseが勝手に認識しているようです。この設定を、後で変更できます。
<バージョン変更手順>
1.Eclipseの[ウィンドウ]メニューの[設定]をクリック
※[設定]ダイアログボックスが表示されます
2.左側の一覧の[Java]→[インストール済みのJRE]をクリック
※ここで、JREの追加、編集、除去を行えます。
※追加は、検索ボタンで行うと簡単です。
※チェックされたJREが、デフォルトで、Javaプログラムのビルドおよび実行に使用されます。
3.左側の一覧の[Java]→[コンパイラー]で、コンパイラー準拠レベルを設定できます。

<補足>
Eclipseを使用するだけならば、JREがあれば、JDKはなくても良いようです。ここで設定すれば、環境変数PATHの設定も要らないようです。
但し、DoJaエミュレータと連携させる場合は、PATHの設定が必要。
Eclipseと
DoJaエミュレータ
でソースを共有
EclipseとDoJaエミュレータで
ソースを共有したい
最初に、DoJaエミュレータでプロジェクト新規作成を行う。
この後、Eclipseのプロジェクトの作成において、
「プロジェクトの内容」の「デフォルトの使用」のチェックを外し、既にDoJaエミュレータで作成したプロジェクトを「ディレクトリー」で指定する。
プログラム
作成手順
プログラム作成手順 Eclipse プログラム作成手順
Java・iアプリのコンパイル
特殊文字の使用 文字列リテラル中の文字として、
二重引用符文字"を使うには?
エスケープシーケンス\を使います。
例: System.out.println("\"");
※下記サイトにエスケープシーケンスについての説明がありました。
たけおばの門エスケープシーケンス
文字列操作 Perl言語で行える文字列操作を、
Javaで行いたい
JDK1.4から、正規表現のクラスが使えるようになりました。
パッケージ:java.util.regex
※文字シーケンスを正規表現に指定されたパターンとマッチするためのクラスです。
※下記サイトにサンプルプログラムがありました。
プログラマのお仕事メモJavaの小技メモ
※注意:iアプリでは使えないようです。2006/6/30
テキストの
編集可能・不可
テキストの編集を禁止させたい
※カーソルは移動するが、
 編集できない状態
テキストの編集可能: setEditable(true)
テキストの編集不可: setEditable(false)
※テキストフィールドに対して使用
テキストの
有効・無効
テキストへの操作を禁止させたい
※カーソルの移動も行えない状態
コンポーネントを有効(ユーザ操作可能な状態): setEnabled(true)
コンポーネントを無効(ユーザ操作不能な状態): setEnabled(false)
※パネルに対して使用
※テキストフィールドに対して使用すると、灰色になるようです。
Javaクラス名の
先頭は大文字
Eclipseで新規にJavaクラス作成時、
新規クラス設定ウィンドウにおいて、
クラス名の先頭に小文字を入力すると
「型名は推奨されません。規則により、
通常Java型名は、大文字で始まります」
と警告表示される。
Javaクラス名の先頭は大文字
Java初心者歴10年、「こんな基本的なことも知らなかったのか」と、自分の知識不足を痛感しました。
私が、今までにサンプル公開してきたJavaアプリのクラス名は、全て小文字で始まっていました。
私のサンプルを参考にされた方、たいへん申し訳ありませんでした。m(_o_)m
staticにアクセス
SOFT_KEY_1
Eclipseで既存のソースを開くと
「staticフィールドFrame.SOFT_KEY_1
には、staticにアクセスする必要が
あります」と警告表示される。
警告表示:「staticフィールドFrame.SOFT_KEY_1には、staticにアクセスする必要があります」
:w_canvas.setSoftLabel(w_canvas.SOFT_KEY_1,"終了");
:w_canvas.setSoftLabel(Frame.SOFT_KEY_1,"終了");
staticにアクセス
getColorOfName
Eclipseで既存のソースを開くと
「型Graphicからのstaticメソッド
getColorOfName(int)には、
staticにアクセスしてください」
と警告表示される。
警告表示: 「型GraphicからのstaticメソッドgetColorOfName(int)には、staticにアクセスしてください」
:g.setColor(g.getColorOfName(Graphics.AQUA));
:g.setColor(Graphics.getColorOfName(Graphics.AQUA));
円を描く DoJaにGraphicsクラスのfillOvalメソッド
(楕円を塗りつぶすメソッド)が無い。
DoJa-3.0から、GraphicsクラスのfillArcメソッドで、円を描けるようになった。
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
fillArcメソッドは、弧を塗りつぶすメソッドで、arcAngleを360にすると楕円になる。
Java・iアプリの実行
画像受信 Windowsサーバからの画像受信で
画像が壊れる。
16進でX'0a'がX'0d0a'に変換されていた
Windowsサーバに設置したCGIと通信する場合、
CGIでprint文により出力すると、\nが\r\nに自動変換されます。
自動変換したくない場合、
binmode(STDOUT);でバイナリモードにして、print出力します。
待受設定時の
通信エラー
Windowsサーバにiアプリを設置時、
待受画面設定を「する」で起動すると
CGIと通信できない。
Windowsサーバにiアプリを設置時、待受画面設定を「する」で起動すると、CGIと通信できない。
java.lang.SecurityException: Operation not permitted by a user
・UNIXサーバにiアプリを設置時は、正常に通信できる。
・Windowsサーバでも、待受画面設定を「しない」で起動すると、正常に通信できる。
<対応>
携帯側で、待受画面に設定する場合、「待受画面通信」も「通信する」に設定
携帯以外からのアクセス禁止 携帯向けサイトへのパソコンからの
アクセスを禁止したい。
UNIX系サーバでは、".htaccess"ファイルを使います。
iモードサーバ以外からのアクセスを禁止したい場合の例:
Order Deny,Allow
Deny from all
Allow from 210.153.84.0/24
Allow from 210.136.161.0/24
Allow from 210.153.86.0/24
参考:iモードセンタの各種情報
但し、FTPソフトによっては、いきなり".htaccess"というファイルを転送できないので、"htaccess.txt"というファイル名称で転送後、".htaccess"に名称変更します。
※名称変更すると見えなくなります。↓
.htaccessファイルが見えない 不正なアクセスを禁止する場合に、
".htaccess"ファイルを使うのですが、
FTPソフトでサーバに転送後、
確認すると、転送したはずですが
見当たりません。
FTPソフトが、セキュリティーのため、"."で始まるファイル名を表示しないようになっている。
<対応>
FTPソフトの設定を変更。
FFFTPの場合:
・FFFTP起動時の画面で、
 ホスト一覧 → 設定変更 → 高度 → LISTコマンドでファイル一覧を取得(L)のチェツクを外す。
・FFFTP起動後の画面で、
 表示→ .で始まるファイルを表示(D)にチェックを入れる。
動画(iモーション)
PCで再生
撮影した動画(iモーション)を、
パソコンに送信して、再生したい
サーバ側に送信した動画(iモーション)は、
拡張子.3gpを指定しておくと、「Quick Time」で再生できます。
カメラ画像保存後
再表示でエラー
カメラ画像保存後、再表示の再に、
「ソフトに継続動作できない障害が
発生しました」とエラー表示される。
N900iでは、正常に動作していたのですが、P901iTVで使用すると、エラー表示されます。
N900iでは、画像サイズ:176×144ドットで、10Kbyte以内に納まっていたので、ScratchPadを10Kbyte単位で区切って使っていたのですが、P901iTVでは、同じ画像サイズで、14Kbyteでした。プログラムを修正して、ScratchPadを大きく取る必要があるようです。
でも、新しい機種が出る度に、カメラ画像サイズも大きくなるので、カメラ画像をScratchPadに保存するアプリは、機種依存の高いアプリになりそうです。
movaで
画像送信エラー
movaで画像送受信時にエラーになる
ことが多い。
iアプリでHTTP通信を行う際の通信容量
505iシリーズ:送信10Kbyte、受信20Kbyte
900iシリーズ:送信80Kbyte、受信150Kbyte

最近のカメラは、高解像度なので、同じサイズでも、容量が大きく、
176×144のサイズでも、10Kbyteを超えることが多いようです。
505iシリーズで、「送信10Kbyte」ということは、
画像の送信は、無理のようです。

700iのiアプリの仕様は、506iと同等レベルと言われています。
700iシリーズでも、画像の送信は、無理かもしれません。
携帯の動画をPC
で見たい
※iアプリとは
 無関係
携帯で撮った動画を、PCにコピーして
Media Playerで再生しようとすると
エラー表示される
携帯で撮った動画を、PCにコピーすると、拡張子.ASFが付いていました。
iアプリで、サーバに送信する場合は、拡張子.3gpなのですが不思議です。
とりあえず、インターネットで調べてみると、下記の説明がありました。
ASF形式の動画が再生できない場合
2回目の動画表示の際にエラー VisualPresenterで
2回目の動画表示の際にエラー
エラーメッセージ:com.nttdocomo.ui.VisualPresenter: Media image can't be set while playing
VisualPresenterの"stop();"だけでは、ダメで、
MediaImageの"unuse();"を行うと正常になりました。