JAVAページののぐらむ

ののぐらむ(お絵書きロジック)

総合サービス(JAVA版)

作業報告書(パズル日記)

プログラミング開始(1996年 9月 6日)
プログラミング停止(1997年 3月31日)
プログラミング再開(1998年 1月29日)
プログラミング放棄(2000年 9月19日)


2000年9月19日
 そろそろプログラミングを放棄しようと思う。あまりに長い間放置しておいた というか、パズルプログラムという貴重な作業ができないようなことになってし まって、自分の作ったプログラムのメンテナンスが出来なくなってしまったから である。
 しかし、安心されたい。私の作ったのは、化石時代というか、古墳時代というか、 まだ極めて初期の頃のJavaで開発していたので、なかなか問題が多い。それが、 今では、某地下室というところで、「こびとさん」たちが、何やら新しい方法で 着々とJavaパズルプログラミングをしているようなので、こちらに期待しようと 思う。
 その成果の一端として、「ののぐらむ問題集」 の問18と問19を公開してみた。これらは、こびとさんの協力でできた問題である。 こういう可愛い絵が作れるくらいだから、当然プログラムも可愛い、もっと素敵な ものになっている事と思う。
 と言うわけで、そろそろ目の毒になりそうな太古のソースは順次隠して行こうと思う。 これで、やっと目的を達成しつつあるかな。 パズル初心者&こびとさん傍観者として、みなさんと一緒に期待して待っていよう。

1998年2月15日
サーバーの分散化をはかるために、ちょっとだけ細工をすることにした。 詳しくは分散化大作戦に別にまとめてある。

1998年1月29日
昨日、利用している CGIAccess.class の不備が分かった。Proxy経由になっ ているとき、CGIが利用できないことが分かり、昨日テストを行ない、今朝一 部修理した。昔のJavaは、CGIアクセスができなかったが、今は普通に URL Connection すれば問題無く動く。
[MAKE]を選択して自由に絵を描いてチェックし、登録することがこれで Proxy経由の場合も可能になったはずである。
午後から、簡易版(データベース利用)の方も動作するようになった。もちろん、 他のパズルでも、データベースを利用しているが、それらももちろんProxy経由でも 動く筈。

1997年3月31日
なんとか、足跡データのロード・セーブも正常になったようだ。それにして も、既に延々と遊んでいる者もいる。スピードもちょっと改良した。

1997年3月22日
今日は土曜日、休みである。それで、データベースへの出し入れを一応動く ところまで作ってみた。
それから、解法教室の内容を非常に充実したものにした。これだけ図を多用 すれば、誰だって分かろう。

1997年3月19日
データベースをいじっていたら、制限事項にひっかかってしまってデータが 入らなくなってしまった。まあ、その件は別に書くことにしよう。
さて、その制限事項もなんとか無茶苦茶してクリアし、ロード・セーブまで は復帰した。まだテスト段階であるが、チョイスで[View]を選ぶと、同じ問題 で今までに足跡を残した人々の後をたどることができるようにしようとして、 ユーザー選択ダイアログが出るところまでは作った。でも、まだデータペース を調べる部分は作ってないので、テストパターンしか出ないが、感覚は分かる だろうか。

1997年3月17日
ちょっとデーターベースを変更して、どの順番でクリックしていったかを記 憶するためのhistoryという項目(列)を作り、実際に入れてみた。ちゃんと入 ったようだが、historyを取り出し、どのように遊んだかを再現する部分はまだ できていない。

1997年3月12日
昨日、夜になってから、データベースPostgresと、簡易版の方のJavaプログ ラムの間をとりもつPerlスクリプトをいくつか用意して、ちょこちょこテスト していたのだが、知らない間にサーバーマシンを暴走させてしまった。
それでも、なんとか未完成状態をセーブ/ロードできるようにはなった。確 かに便利である。まあ、しっかり利用してみてください。

1997年3月10日
今日は、CGI から postgres95 を呼び出す実験をした。一応成功である。そ れで、とりあえず、ユーザ登録ができるようにした。ユーザ登録していると、 中間状態をロード/セーブできるのである。ロード/セーブ時に、ユーザー名 とパスワードをチェックし、OKならばロード/セーブする。
という予定であったが、まだロード/セーブ部分はできてきない。でも、一 応登録でき、ロード/セーブの時には、未チェックならばDialogを出して確認 しようとする。
まあ、基本的なチェックはできたから、あとは面倒なプログラミングだけで ある。Java と Perl と SQL を同時に操っていたら、頭がこんがらがってきて しまった。単細胞の私には、3つの言語を同時処理するのは不可能だ!
なお、そのうちちゃんと動くようになったら、データベースをクリアして、 それから使ってもらうつもりである。だから、今登録しても、な〜んにもなら ない。でも、まあ、ものは試し、遊んでみるのもいいかもしれない。

1997年3月9日
今日は、日食だというのに、こんなことをしている。
[Save]と[Load]のボタンを付けた。つまり、解いている途中の状態をセーブ して、あとでロードして続きをやれるようにという親切心で、日曜だというの に家族をほったらかしにして、こんなことをしている。
でも、まだ動かないよ。今日ははボタンを付けただけ。データの取扱は、 postgres95を使いこなせるようになってからだよ。本当は、それだけでは面白 くないから、もっと楽しいことも出来るようにとは思っている。

1997年2月28日
機能をがっくりと落したバージョン、つまり簡易バージョンを作成した。高 機能ばかりが良い訳ではない。いんちきできない方が良いこともある。そうい う訳で、ただただ遊ぶだけの単純なものを作ってみた。実際には、いままでの 肥大化したプログラムから、ごりごりと余分な部分を削っただけにしか過ぎな いのであるが、このくらいが適当かもしれない。

1996年12月5日
不整形2次元配列を用いることにした。通常は、new int[10][10] とかして 配列を確保するのであるが、new int[10][0]として第2添字が0の配列を作り、 後から、必要なだけの大きさに変更するようにした。
このパズルでは、各行、各列の数字の個数は不規則なので、データ構造もそ れに会わせるのが自然である。
サイズダイアログ(実際はダイアログではない)から、各方向の深さ(depth) のフィールドを削除した。操作説明の変更はまだだ。

1996年12月3日

明日はJava Day。こんなことをやっている場合じゃないが、まあいいか。
Makeに矢印ボタンをつけて、絵を、上下左右に移動できるようにした。
Makeのマニュアルをなんとか書いた。それで、一応新しい操作説明が曲がり なりにも内容が整ってきたので、古い操作説明を廃棄する。

1996年11月30日
週に1度くらいしかプログラムを変更していない。これでは、なかなか機能 が上がらない。
Playにヒントモードを加えた。白黒だけであったが、ヒント色(とりあえず orange)と通常色の切替えができるようにした。
また、チェックしたときに、正解かどうかが分かりにくかったので、少し分 かりやすくした。もちろん、手抜きの格好良くない奴だが、はっきり分かるこ とが大切!

1996年11月23日勤労感謝の日
久しぶりに、ばさっとプログラムを変更した。
今まで、数値の並んだ表と、書き込んでいくところを表示するのに、レイア ウトマネージャの助けを殺して、全部自分で位置計算をして直接そこに移動し て計算していたのであるが、今度は、グリッドバッグレイアウトの機能をその まま利用するように直した。おかげで、以前よりかなりプログラムもすっきり したし、動きも良くなったようだ。
今日は、ちょっと、ドキュメントを書いた。 ドキュメントというより、メモだ。
今日は、操作説明をもっとちゃんとしたもの、分かりやすいものにしようと 思ったのだが、別のことをしちゃった。

1996年11月9日
もう、2ヶ月も、だらだらと、このプログラムを組んでいる。
今日は、ちょっと仲間にパズルを見せて遊んでいたのだが、ついプログラム を直してしまった。
マウスの動きに対して、上と右の数字の並びの現在位置が追随して動く。 「お遊びモード」で、動作確認できま〜す。(※現在は削除)
これには苦労したんだ。今までは、マウスの押される度またはドラッギング でマスが変更する度に、上と左の現在位置をもろに書き直していた。これは遅 いに決まっている。
それで、今度は、複数のイメージを作っておき、合成して出すようにした。 それで、非常に高速になった。

1996年11月5日
 投稿機能(Post)
自分で問題を作って、チェックして、できた問題を投稿できる機能を急遽追 加することを思い立ち、11月4日に作成を試みたら、なんと、東京インター ネットの増強などのためにインターネットが長時間に渡って使用できなかった。 おかげで、連休中に投稿機能追加はならなかった。
で、今日、いろいろ作成中である。一応投稿は可能になっているのだが。
まだ投稿された問題データを扱うデータベースを作っていない。まあ、ファ イルシステムで代用しちゃおうと思っているが、それもまだできていない。

1996年10月29日
サイズ変更がかなりちゃんと動くようになった。枠のサイズを変更しても フォントの大きさが変わらなかったのは、単なるチョンボであった。
[Check] ボタンなどは、メニューバーに入れてしまったが、操作説明はまだ 変更していない。まあ、遊んで下されば、だいだい分かるでしょう。
そうだ、きれいにプリントアウトするのもサポートしなければ。とりあえず、 ポストスクリプトでいいかな?まあ、私は日頃使っているのがポストスクリプ トプリンタなんで、最初にサポートするの、ポストスクリプトにしかならない のだ。もちろん、Adobe純正以外で動くかどうかは保証しない。

1996年10月28日
久しぶりのJAVAプログラミング。小さな枠のサイズが今まで18ドット固定 であったが、変更できるようにしようとしたが、まだちゃんとしていない。Size ウィンドウを開けてunitを変更すると、どんどん画面が壊れて楽しい!

1996年10月22日
ちょいと仕事の前に修正をと思ったら、時間がかかってしまった。
[Play]のとき、もう使用済みの数字かどうかのマークをつけられるようにし て欲しいという要望があったので、変更しておいた。

1996年10月21日
[Play]のとき、ドラッグがマウスが移動したところが変わってしまうので、 思いがけない変更がおきてしまうので不味い、と言われたので、素直に、水平 または垂直を最初の動きで認識して、その後どちらか一方にしか動かなくした。

1996年10月18日
本日、やっとフレーム(ウィンドウ)をマウスでリサイズしたとき、なんと か内部のレイアウトもサイズの変更に追随して変化するようになった。

余分なちらつきもなんとか無くなった。(まったく阿呆な余分なことをしてい たので、その部分を削ったらちらつきは無くなった。)

でも、小さなマスのサイズを変えるとかは、まだこれからの問題だ。

1996年10月16日
昨日、フレームバージョンに変更しようとして、徹夜をしてプログラムを書 き換えて、やっと動くようになった。(まあ、徹夜で6時間程寝たけど)
まだ、別ウィンドウになっただけで、機能は元のままで、フレームのリサイ ズに追随は今後の暇次第。

サイズ変更のためのウィンドウを別にした。これで、各モードのときに共通に 出ていたサイズの表示がなくなり、若干広く使えるようになった。

「ずるモード」で、問題を入力するとき、スペースだけでなく、ピリオドで 区切れば良くした。これで、テンキーで楽に入力できるようになった。

う〜ん、今日は遊び過ぎ。

1996年10月15日
そろそろ、ブラウザ内にアプレットを配置して遊ぶのでは限界があると思い、 別にフレームを作り、ブラウザとは独立のウィンドウで遊べるようにしようか と思って、ちょっとテストしているところである。まだ、プログラムの方は変 更されていないが、早ければ明日には御覧に入れられるかもしんない。

1996年10月13日
今日は、日曜であるが、子供がどちらも出かけているので、パズルプログラム に精を出して、暇潰しだ。
[Play]モードを、もう少しちゃんとした。クリーンボタン(クリアの方がい いかな)で全部消去(これは簡単!)、Checkボタンで縦、横の数字の確認を するようにした。

1996年10月10日
今日は、何とか[Play]の部分がマウスに反応するように機能アップした。 私の力では、大変に苦労したなあ。後は、ちゃんと、指定のヒント(数値) を守っているか検査しないといけない。

1996年10月9日 
変更作業の真最中で、めちゃくちゃ汚いソースになったが、とりあえず動く 状態にはしておいた。と言っても、Playモードで遊べる訳でもない。スクロー ルバーを追加しただけである。まだ、反応はしない。

1996年10月8日 
作った問題を、マウスでコツコツと解くモードも必要であろう(普通はこれ だけを作るらしい)と思って、Playを作り始めた。もちろん、まだまだの段階 である。

1996年10月5日 
問題を解くプログラムの方にバグがあり、少なくとも解が1つ存在すること が明らかな場合に、「解はありません」と答える場合があったので、直した。 気がついた人はいたかなぁ。

1996年10月4日 
マシン負荷などを考えて、2分で解けない場合は、計算を打ち切るようにし てしまった。そのために、今までCGIの孫プロセスが実際に解いていたのであ るが、今はひ孫プロセスが解くようになった。
計算が打ち切られたときなど、正常に計算が行なわれなかった場合の処置を しなくちゃいけないなあ。希望的なことだけは書いておこう。
それにしても、JAVAはプラットフォームごとに動きが違う。UNIX系では何の 問題もないんだが、Windowsでは悲惨やなぁ。

1996年10月1日 
今日は、東京都民の日で、東京地方は全面的に休みである。それで、ちょっと 手を入れてみた。
パネルは、CheatとMakeだけにしてみた。絵を作るとき、ドラッグを可能にした。

1996年9月26日 
今朝、ちょっとソースをいじってみた。それで、絵をつくってはチェックする 部分が少し形をなしてきたかも知れない。

1996年9月25日 
ちょっとだけソースをいじってみた。もう、解答を盗み見るだけではなく、 新しい問題作成も支援しようということで、クラス名を、NonoSolverから Nonogramに変更した。だから、ファイル名も変更になった。
機能は何にも追加されていない。明日から、機能追加をやろう。

1996年9月24日 
久しぶりにプログラムに手を入れた。まだまだ拡張して、めちゃくちゃ便利な ものを提供しようかと思っているのであるが、あまりに久しぶりなので、他人の プログラムを見るようだ。
セレクションに[Make]が増えた。一応、絵だけは描けるようにした。マウスで クリックすると、白黒反転するだけだが。パズルとして成立する絵かどうかもそ のうち判定してすぐにお返事するようにする予定ではある。あくまでも予定。

ハードディスククラッシュのため休止

1996年9月13日 
明日から、お休みである。それゆえ、多くの人々が暇になるので、私の下手な プログラムを公開して、酒の肴にでもして頂くことにしよう。 もちろん、まだ途中である。

1996年9月12日 
行情報をテキストフィールドで入れることにした。ボタンを多数並べるのも うっとうしく見える。
明日には、行入力の結果が、枡目の上に表示されるくらいは出来るかも知れない。 そうしたら、ソースも汚いままで、公開することにしよう。

1996年9月11日 
CGIの呼び方がだいたい分かった。Hypertext Transfer Protocol--HTTP/1.0 のマニュアルを手には入れたが、読まなくても何とかなりそうだ。
テキストエリアにデータを入れ、それをCGIに渡して解いた結果をもらって来て、 再び同じテキストエリアに書き戻すところまでは調べがついた。
データ形式はFORM版を参照のこと。(※現在は削除)
後は、ただ作るだけ。体力勝負かな。頭はもういらん。

1996年9月10日 
ちょっとだけ進歩した。スクロールバーに反応するようになったし、テキス トフィールドの内容を読み取って、サイズ変更もする。後は、また明日にしよ うかな。
もうお分かりだと思うが、これは、お絵書きロジック解答サービスをだれで も簡単に利用できるようにと作成しているのであります。今のは、テキストバー ジョンで、全然直観的でないし、利用しにくい、利用されにくいもんね。

今日、ちょっとJavaからCGIを使おうと思っ て調べ始めた。まあ何とかなりそうだ。大した使い方をする訳でもないので。

1996年9月9日 
6日に作ったプログラムは結局全部捨てて、また作り始めた。まあ、捨てる という程のものではなかったのだが、でも、ボタンは無くなってしまった。
もし明日暇なら、実際にスクロールできるようにしてみようかな。

1996年9月6日 
久しぶりにJAVAをまた始めてしまった。久しぶりなので、JAVAのこ とを思い出すのに時間がかかる。

JAVAページののぐらむ