徐々にですが理解してきています。 ・波括弧。{ } ←コレです。 おなじみ、クラスやメソッドの定義、if や switch などの始めと終わりに使うものです。 他の言語では { を新しい行に置いたり置かなかったりしますが、 public class Test { }
Java では、 { はそういった部分に使うときは新しい行ではなく同じ行に置くのが主流らしいです。 Eclipse にコードを自動生成させると分かります。 せっかくエディタもそうしてくれているので、自分のスタイルで打つよりは素直に従ったほうがいいでしょう。 コレに関しては以下のページが参考になります。 字下げスタイル - Wikipediaプログラミング作法 - Wikipedia様々な派があって興味深いですね。 ・デバッグ出力。System.out.println メソッド一発です。 オーバーロードによって、String 型はもちろん各種数値型なども toString して出力してくれるようです。 便利の一言に尽きます。 デバッグのためにこのメソッドを毎回書くのは面倒ですので、どっかに適当に静的メソッドを作ってしまいましょう。 それによって、簡略化のみならず「デバッグのために出力している」ことの明示もできます。 ・色の指定。Graphics による描画では、fillRect メソッドや drawString メソッドを呼ぶ前に その色を指定するために setColor メソッドを呼ぶ必要があります。 int 型を渡すわけですが、ここでは Graphics.getColorOfRGB メソッドが便利です。 8 ビットの RGB 値の指定から int 型を返してくれますので、これをそのまま g.setColor(Graphics.getColorOfRGB(255, 0, 255));
のようにできます。またアルファ値を扱いたい場合はオーバーロードで g.setColor(Graphics.getColorOfRGB(255, 0, 255, 128));
のようにすれば、元の部分の色に半透明合成されます。 この int 型ですが、調べてみれば各バイトが AARRGGBB の順に並んでいるだけでした。 ですので、上の例であれば g.setColor(0x80FF00FF);
としても同じです。 なので、アルファ値のことを考えずに g.setColor(0xFF00FF);
としてしまうと、当然ながらアルファ値が 0 なので全く描画されません。 また色名で指定するなら Graphics.getColorOfName メソッドで、 g.setColor(Graphics.getColorOfName(Graphics.RED));
のようにできます。色名は 16 種類です。
[ No. 871 ]
[ 日時 : 2009/11/04 (Wed.) 23:49:39 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
きょう、Toshiは作業したかった。 それできょうToshiと、思考力全開にプログラミングした? *このエントリは、 ブログペットの「 Overhand」が書きました。
[ No. 870 ]
[ 日時 : 2009/11/04 (Wed.) 08:45:57 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
立て続けに本日 2 本目となりましたバージョン アップは StatusFlag。 これも不具合修正のみです。 「ウィンドウの幅が 10 の倍数でない場合にスケールが正しく描画されない不具合を修正」です。 実は前に気付いていたんですがようやくここに来て直しました。 どんだけテキトーな処理してたんだよとか思いつつコードを見てみたら、 「頑張ってるみたいだけどこれはなるわけねぇわ」みたいな感じでした。
[ No. 869 ]
[ 日時 : 2009/11/03 (Tue.) 19:34:37 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
果たして私以外にユーザーはいらっしゃるのかという CQuickMark のバージョン アップです。 といっても機能追加的なことはなく、ランタイムに静的にリンクするようにしたとか些細なことです。 そこらへんで思ったことは RSS にて書いています。
[ No. 868 ]
[ 日時 : 2009/11/03 (Tue.) 16:54:33 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
C++ を触ってからだと「Java は違うなぁ」と感じるところが出てきますので、そういうのも含めてメモしていきます。 てなわけで Java に関しての備忘録も入ってます。
・メンバ クラス。 「内部クラス」「インナー クラス」とも呼ぶそうです。 クラスの定義の中にまたクラスの定義を含めることができます。 突っ込んだ話ができるほど理解していませんので、気付いたことだけ挙げますと、
メンバ クラスでは、その親になっているクラスのメンバ・メソッドも扱えます。 例として、IApplication を継承しているクラス内に定義したメンバ クラスで terminate メソッドが呼べます。 これは今までにない感覚です。 また i アプリはこの terminate メソッドを呼ばないと終了できません。 System.exit メソッドで終了しようとすると SecurityException がぶん投げられるそうです。注意しましょう。
またこの話から派生して、
・IApplication。 IApplication 継承クラスのメンバ クラスでもなんでもないクラスから終了したい場合は、 IApplication.getCurrentApp().terminate() とします。 getCurrentApp メソッドは、おそらく ADF 設定で設定している AppClass を返してくれるのでしょう。 他にも IApplication からはアプリケーション自身に関する情報が取得できますので、 外部のクラスは参照をメンバとして持っておいても損はないでしょう。
・リスナ。 前回 Panel でキー入力を受け取るにはリスナ登録が必要だということを書きましたが、 要するにこれは SoftKeyListener インターフェイスを実装したクラスを作れという話なので、 Panel を継承したクラス自身が implements SoftKeyListener してしまえば別なクラスを作らずに済みます。 こうして考えると Panel は楽ですね。
[ No. 867 ]
[ 日時 : 2009/11/01 (Sun.) 23:17:20 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]%topentry_tb_num>
課題研究の授業で何をしようかということで、過去の先輩方がやってきたことを参考に 次の候補から選ぶことになりました。
・動画撮って編集 ・Flash で何か作る ・PowerPoint でプレゼン ・プログラミング
プログラミングで過去の先輩が何をやったかというと、 C++ でオセロしてたり、RPG を簡単に作れるツールでゲームしてたりでした。 ここで自分は、以前担当の先生と話していたときに挙がった「i アプリの開発」というほぼ未知のジャンルへ。 実は 2 年以上前に個人的に首を突っ込もうとしてそれからさっぱりやってませんでしたので、 Java という言語を知る意味でもここで興味が再び湧いたわけです。
以後、備忘録となります。まずは開発環境の構築から。 実際に「どう」操作するかの説明は省いて、「何を」するかの説明だけにしてあります。 長さが倍になっちゃいそうですので。
必要なもの(できれば欲しいものも含む)は、 ・Java Runtime Enviroment (JRE) ・Java Development Kit (JDK) ・Eclipse ・Eclipse Language Pack ・iαppli Development Kit (iDK) ・CLDC と iDK のクラスの Javadoc
・JDK のインストール。 JRE のない環境に直で JDK をインストールするときでも、ここでそれを検出してよろしく取り計らってくれます。 本当は後述する iDK が対応しているバージョンを選ぶべきですが、 私は最新のものをインストールしてしまいました。結果的に動いてますが危ういかも。 重要なのは、JDK の bin フォルダにパスを通しておくことです。
・Eclipse のインストール。 ここはちゃんと iDK が対応している 3.1.2 をダウンロードしました。 日本語の Language Pack も上書きしてから起動した方がいいようです。
・iDK のインストール。 DoJa-5.0 なら FOMA 903i シリーズ以降対応なので大丈夫でしょう。 Eclipse プラグインを入れないと意味がないのでそれも。
ここまで来て Eclipse が iDK プラグイン込みで日本語で正常起動されれば大丈夫です。
・プロジェクトの新規作成。 DoJa プロジェクトを新規作成して、パッケージ・エクスプローラーにある
DOJA_CLASS_ZIP DOJA_DOJACLASS_ZIP
に対して Javadoc を設定しておきます。 これで、エディタ上でキーワードにカーソルを置いて Shift + F2 を押してリファレンスを閲覧できます。
・コンパイラの設定。 この設定も怠るとハマります。 Java コンパイラの設定で、生成される JAR ファイルの互換性を 1.1 にしておきます。
・最低限必要なコード。 プロジェクト上で「クラスを新規作成」することで、お決まりのコードを手打ちせずに済みます。 スーパークラスは IApplication (com.nttdocomo.ui) にします。 start メソッドがオーバーライドされた状態で作成されます。 import を com.nttdocomo.* とかに書き換えておくといいかもしれません。
・実行。 最初は構成を新規作成しないといけませんが、次回以降は Ctrl + F11 で勝手にやってくれます。
・デバッグ。 ここは少々面倒ですが、「デバッグモード起動」にチェックを入れて「実行」しておき、 新たにデバッグ用の構成を新規作成して、リモートでデバッグする形を取ります。
・Web での公開。 Eclipse 上でビルドした JAR はデバッグ情報が入っていますので、 iDK の方のツールで新たにビルドして小さくする必要があります。 ここで元のプロジェクトを iDK で開いても果たしてきちんと動くのか自信がありませんでしたので、 プロジェクトごと iDK の apps フォルダにコピーしてしまって、そのプロジェクトを iDK でビルドしました。 無駄かもしれませんが一応です。 あとは JAR / JAM / HTML をアップロードしましょう。
コーディング上の備忘録もひとつだけ。
・画面の切り替え。 Display.setCurrent メソッドで表示する「画面」を切り替えられます。 画面には Panel と Canvas があり、そこから継承したクラスを引数に渡すわけです。 Panel より Canvas の方が低レベルでの処理が可能です。例えばキー入力を受け取る方法が、 Panel ならリスナの登録、Canvas なら processEvent メソッドのオーバーライドです。 Panel にはボタンとかテキスト ボックスのようなコンポーネントを配置できます。 Canvas は直接グラフィックを描画するためのもので、paint メソッドで Graphics オブジェクトを受け取ります。
ジャンルはゲームと決まってますが、何を作ろうにも学級閉鎖が解かれないと...。
[ No. 866 ]
[ 日時 : 2009/10/31 (Sat.) 12:03:05 ]
[ カテゴリ : プログラミング ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
学級閉鎖になりました。
両隣のクラスが立て続けに学級閉鎖になって、復活したと思ったら今度はうちのクラスが。 今までほとんど欠席者がいなかったのですが、新型に 2 人感染したということなので閉鎖に。 山形はクラスに「複数」感染者が出たら閉鎖らしく、 他の都道府県と比べて基準が厳しい(甘い?)みたいです。
以前就職活動がピークだった頃は 1, 2 年生の方で学級閉鎖だったり学年閉鎖だったりしたので、 そのときに 3 年生も来られたら大変だったわけですので、 この時期に来たのはある意味不幸中の幸いかもしれません。。。
ということで「文化の日まで外に出んなよ」宣言されたに等しいです。
[ No. 865 ]
[ 日時 : 2009/10/30 (Fri.) 16:31:24 ]
[ カテゴリ : 学校ライフ ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
きょうOverhandは、ToshiとToshiは基本情報は予定したかもー。 それでウィンドウとか使用ー! だけど、Toshiは事態は演算するはずだったみたい。 でも、Overhandは、利用する? *このエントリは、 ブログペットの「 Overhand」が書きました。
[ No. 864 ]
[ 日時 : 2009/10/28 (Wed.) 07:48:53 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
「調べ物が多い」と言っていた今回のソフトの開発。 大きな問題にハマることもなくなってきて、ゆっくりですが進んでいます。 ひとつ、このソフトには「完成」は絶対にないと断言します。 ソフトで扱っている概念の進化や変化が終わらないので、おのずとそれを扱っているこのソフトもそうなります。 この概念は何かというと、あまりに広くて大きくて扱いづらいときもあってすごく身近なものです。 身近すぎて「それは何か?」と問題を出そうにもヒントもなにもあったもんじゃないくらいです。 という適当な話はさておき、これ今公開しようと思えばできます。 以前の記事で基盤はほぼ完成で拡張にも対応できると書いてました。実際拡張して複雑さが増しました。 余地があるのでやっぱり完成ではないわけですが、これ以上大幅に手を加えることはないと思います。 ※どんどん抽象的な説明に入っていきます。正直分かりづらい。 そうやってできた基盤の上にバンバンオブジェクトを置いていくのがメインの作業になっていきます。 この置かれるオブジェクトがミソです。沢山乗せるほどこのソフトの利用価値が増すといえます。 その中身が先ほどの概念と密接に結びついています。 カッコいい言い方をすると、そのもはや無限ともいえる概念に立ち向かっていくわけです。 これを言いたいがためにこの記事を起こしたように見えてしまいますが、事実そうです。 この沢山のオブジェクトは同じ基底クラスから派生しているクラスが元になっています。 そして今更ですが 6 月ごろに開発していた「新しいソフト」と今開発してるものは別です。 困ったことに、開発してても「これはないか」と一旦思ってしまうと止まってしまうタチです。 このパターン今までも何度もありました。 今のソフトについては思ってないので安心しています。 問題はいつ公開するかですが、気まぐれでこの状態で公開するかもしれませんし、 乗っけてるオブジェクトをもう少し増やしてからにするかもしれません。
[ No. 863 ]
[ 日時 : 2009/10/24 (Sat.) 22:34:30 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]%topentry_tb_num>
[ No. 862 ]
[ 日時 : 2009/10/20 (Tue.) 09:02:55 ]
[ カテゴリ : BlogPet / 未分類 ]
[ コメント : 0 ]
[ トラック バック : 0 ]%topentry_tb_num>
|