2001年12月19日(水) |
はじめてのぢゃばあぷれっと |
Javaの勉強を始めてから九日目、正確に言えば土日にそんなかったるいことをやるはずがあるわけないので七日目のえあです。こんにちは。
何らかのプログラムの経験者はJavaなど一週間ほどでマスターできるもんだという話も微妙に小耳に挟んでいるようないないような雰囲気もなくはないという話もあるような気もしなくもないですが、結論を言います。全然駄目です。全くさっぱりちっともです。私にはワカリマセーン。
てゆうか経験ある(という事になっている)CとかC++すら実は殆ど知りマセーん。
とまあ、思い切ってさじを投げたい現状ではありますがおしごとゆえそうも行かず。 とりあえずネットとご本でおべんきょおべんきょ。
でもさ話違うけど、ネット繋ぎ放題というこの会社の環境ってどうかと思うのよ。サボり屋の私には。 魅惑の世界がすぐ手に届くところに広がってるのに手を出せないこのもどかしさったら。 あたかも女子高生満載の満員電車に乗り込んだ痴漢常習者@次やったら起訴確定の気分。 ま、結局私が採った選択肢がどういうものなのかは掲示板のカキコ時間みりゃ分かるけど。
それは置いといて。 基本的に独学で全部こなさなきゃいけないわけですが、私独学ってすげー苦手なんですよね。ってか勉強自体好きじゃないんですけど……まぁ、勉強嫌いが独学なんてできるわけもなく。
だから魅惑のネット世界に就業中も逃げ込む逃げ込む。 いっそのことベネッセの基本情報処理の講座とか取ってみようかなとか思ってるんですけど、あれどうなんですかね。税込49350円。でも私進研ゼミ挫折したんだっけ。
だからそれは置いとけって。 ベネッセは後程考えるとしていまはとにかくJavaです。 先輩の話ではサーブレット(注*ネットのJava。CGIみたいなことができる)を勉強した方がいいよってことなんですが私の買った本、サーブレットの記述がなんか薄いので、これはこれで後ほど別に資料を購入することとします。給料日過ぎたら。
しかしアプリケーション組むのもなんかやだし、結局まずはそうだな、HPでネタになるアプレットで遊ぼうを勉強しようじゃないか。という一念発起して、私ははじめてのアプレットに挑戦しはじめたのでした。
一週間前に勉強はじめてから今まで何やってたのとか言わないで。
で、アプレットで何をするかです。 文字をスクロールさせたりうねうねさせたりするのはよくあるものですのでこの際パス。 JavaScriptでも出来そうなことをたまにやってるけど、わざわざそんなのを知らない言語でやろうという気が知れないのでパス。 画像系はそっち用意する方がめんどいのでパス。
うーん。わがままです。
とりあえず、JavaScriptで出来なそうなことを中心に考え、そこから線を引くのは出来ないだろうという結論に至った私は単純に線を引いてみることにしました。
おい。 ここまで引っ張っておいてそれかい。
ごもっともです。
という訳で線を引くだけってのはやめにして、「線を引きまくってます目を作って、テキストボックスに入れた数値から直線とか放物線のグラフを書いてみよう」という事に変えます。 これもたいしたことやってない上つまんねぇという感じ大盛りなんですが、まあ、初めてなんで、さくっとアルゴリズムだけは思いつき、なおかつ実行結果が正しいかどうか目で見てわかるようなネタを選択したんです。ほっといてください。私だって面白くないとは思ってますよハイハイ。
とりあえず作成開始!−以下興味のない方は読み飛ばしOK−
まずはぁ、ます目を作ります。縦線引いてー。最大値までループ。横線引いてー。最大値までループ。 はいできました。さすがにこのくらいは迷わずできます。x軸y軸は色を変えて、原点に0って書きます。 どんな状況になってるか分かりますよね。軸だけ書いた方眼紙です。
つぎは、入力用のボックスを作りますか。 ……とりあえず構想では一つテキストボックスを作ってそれに式を書き込んで……と思ってたんですが、式から記号とか取り出すのが面倒くさいということが2秒で判明。 つうことで書き込むのは数値だけにしてもらって、一次関数か二次関数かってのはプルダウンメニューで選んでもらうことにしました。Javaだとchoiceというらしい。プルダウンメニュー。 GO!のボタンもつけて、インターフェースは完成。わーい。
……と思ったら、画面の端っこきっかりからます目を書き始めていたので、今作ったコントロールが方眼紙の中に書き込まれる形になってしまいました。困りました。HTMLみたいに位置を勝手にかぶらないようにはしてくれないのですね。けちです。仕方がありません。コントロールの位置をずらしましょう。
(調べ物中)
……座標で指定できないんですか、位置。なんかめんどくさそうだな。 いいや、ます目をずらしましょう。こっちは座標を計算して書いているので、座標入力で簡単にずらせます。
完了。
お次はグラフの描画関数です。ボタンを押したらデータを渡す、ってのはとりあえず置いといて、ソース内に式を書いてそのとおりに線を引くというふうに作ります。
xにまず0をいれて、 yを計算して x座標y座標の完成。 これは私の作ったます目の座標で、実際の画面の座標ではないので画面の座標に変換。 線を引く。 線を引くには始点と終点それぞれのxyという計4つの引数がいるので次の描画のためにこの数値を別の変数に取っておいてループ一回目終了。 xに+1して二回目に続く。
疑いもなくこんな感じです。 やってみます。あれ?動かない?あ、xって変数使えないのかな?変えてもう一回チャレンジ。
はいできました。
さて最後にメインディッシュ、テキストボックスに入力された数値をプルダウンメニューの指示に従って計算、グラフを描画、という部分に取り掛かります。 どうやらテキストボックスのデータは「文字列」として扱われるらしいのでそのままでは計算できません。「数値」に直します。直さないと2+3が23になってしまうのです。大変です。 文字列を数値に変換するという関数、parseDouble()を使います。便利ですね、こんなのも用意してくれてるんですね。
ここいらへん、例によってあんまり考えてなかったもので、あれ?あれ?おかしいなぁ〜って感じで作ってました。結構時間かかってます。
ふう、何とかできました。 製作時間一日弱。こんなたいした意味も面白みもないプログラムに一日弱。ああ。何やってるんだろ私。 ……ちなみに現在研修中のえあさんは一日中遊び勉強に時間を費やせるのです。
とりあえずサーバーにアップして……ジオでいいかな?てかジオで動くかな? アップ……そしてブラウザオープン!
おお〜。ます目が出ました! 素晴らしい! ではボタンを押してみます。いそいそと……ぷち。
…… ………… ………………あれ?
うんともすんとも言いません。
何で?どうして?さっきまで見れたのに!? や、やっぱジオだから?で、でもます目は出るってことはアプレット走らないって訳じゃないよね!? え?オ、オンラインだから!?(そんな馬鹿な)
慌ててローカルに残っているファイルを走らせます。ブラウザで開きます。 ……やっぱり動きません。 嘘ッ!? 壊れたの?
しかしそうではないらしいことがやがて判明しました。 症状: ・アプレットビューアというコンパイラについてるビューアでなら動くがブラウザ(IE5.5)では動かない。 ・ブラウザがアプレット効いていないわけではなく、他のアプレットなら普通に動く。
こんな状況なのです。 なんで。どうして。
とりあえず悩んで悩んで悩みまくり、その日は遅くなったのでおうちに帰りました。
そう、この腐れしょぼアプレット。 二日がかりの作業なんです。
次の日。 PCを起動してご機嫌は直ったかしらとアプレットを開いてみましたが、やっぱりダメでした。 原因を究明します。しかし私にはどこで引っかかってるのかすらさっぱりわかりません。ビューアでは動くんです。 とりあえず怪しげな部分を考えます。ボタンを押したときのアクションを受ける部分が、資料をそのまま使ったのではバージョンが古くて、今のコンパイラでは「推奨されないメソッド」と言われるので書き換えたので、そこだと思いました。
……しばらくいろいろいじったのですが変化なし。ってか一回ます目も出なくなり超焦る。
手におえません。 助けて先輩プリーズ。 という事で先輩に教えを請うたところ、怪しげな部分を洗い出す方法を教えてもらいました。 というかふつー「コンソール」で見るんだそうです。あ、そうなんですか。
ということでそのコンソールとやらを見ます。英語のエラーメッセージとエラー個所を吐いてくれます。おお♪便利。 コンソールが吐き出したのは……
(文字列を数値に変換する関数)parseDouble()がないよぅ。
というようなメッセージ。 ……ええ? そんなこと私に言われても。それ私が作ったんじゃないんですけど。 何かこれを使うために特別な操作をしなければいけないのかと思い、先輩に聞いてみたところ特にいらないという答え。まあビューアでは動くんだしそうでしょう。 ビューアとブラウザの違い……なんだよそれ。 バージョンか?ブラウザのバージョンが古いのか?という事でマイクロソフトのサイトでIE6を落としてくる。 とりあえずPCはほったらかしながら先輩にすがりつきにいきます。 先輩声低くてイケてるんですよ。ちなみに26歳。
先輩も仕事の片手間に私のアプレットを見てくれてるご様子。とりあえずparseDouble()で引っかかるならこれと同じのをを自作してこれを使わなきゃいいんでないのという事なのですがこんな面倒くさいこと私にはできません。 それにこれはあちらさんで作ってくれた関数……これが問題になるはずはない。何か私が使い方などを間違っているに違いないと考えるのがまず当然でしょう?
とりあえずネットで調べてみることに。グーグルでれっつ検索。
キーワード:Java NoSuchMethodError これはまだいい。でてきたエラーメッセージです。
でも我ながら キーワード:Java ブラウザで動かない このキーワードはどうかと思います。
しかし19件もHITあり。
とにかくいろいろ探してみた結果、同じような症状に苦しむ人は案外多いことが分かってきました。 ならば、どこかに解決法があるはず! 椅子に座ったままどんな図書館よりも膨大な資料を検索できるのがネットの素晴らしさですね。
そして関数は違えど同じ質問をしてる人発見! おお!これの回答は!?
「コンソールを見てから聞いてね」
見てるぁぁぁぁ!!(涙)
だからお願い教えて。
ページをめくります。 そしてようやく私は……秘宝の元にたどり着いたのです。
「IE5.5のJDKのバージョンは1.1xです」
そしてparseDouble()は1.2でできた関数です。
つまり。
やっぱりブラウザが対応してなかっただけ。
……。はうっ。
追伸: parseDouble()とおんなじ関数を先輩にめぐんでもらったので、今はちゃんとうごきます。わーい(作れよ)。
最後になりましたがその問題児はこの子
問題児はこの子じゃなくてお前だとか言うな絶対言うな。
|
|