Javaアプレット(18) 今後の方針について

昨年の9月以降更新していない「作って遊ぼうJava」の連載ですが、囲碁のJavaアプレットを今後も作っていきたいと思います。ただ、今までのまま作り続けることに、気が進まない状況になっています。なぜ気が進まないのか、まだもやもやしている考えを紐解きながら、次のステップへ進もうと思います。
【クラスの設計(特に盤の設計)に納得がいっていない】
Small Basicにはなかった「クラス」の概念。これは囲碁のプログラミングには特に必要なものではないようです。さらに言えばオブジェクト指向が囲碁のプログラミングに恩恵を与えることができるのか、非常に疑問です。ただ、本当にそう言い切れるのかどうか、それも分からないのが現状です。
今の盤の設計では単純に2次元配列でX方向が6路、Y方向が6路というように長方形の盤しか扱えません。しかし、他のゲームでは六角形の盤や星型の盤などいろいろな形があり、もっと一般的な盤の考え方もあります。
盤の形を扱うのに「グラフ理論」という数学を使ってはどうか、と考えています。これは昨年参加したゲームプログラミングワークショップのある論文からヒントを得ています。
【Javaアプレットにこだわりがある】
私が現在Javaを使う理由は2つあります。
ひとつは、オブジェクト指向プログラミングがそれ以前の手続きとデータを組み合わせたプログラミングからどれだけ進歩したのか、実際に使い込んで実感したいと思ったことです。オブジェクト指向ではプログラムの再利用をしやすくするためにインタフェース以外を隠蔽できるようになっているのですが、これが逆にプログラミングをやりにくくしているのも否めないと思います。Small Basicでは全ての変数がグローバルにアクセスできるので、誤って壊してしまうこともある一方、簡単に参照できます。Javaでは変数はローカルであったりプライベートであったり容易に参照できないようになっていて、いざそのデータがほしいときには、新たなインタフェースを増設する必要があり、それがかえってプログラムを煩雑にしていく傾向があると思います。ということで、オブジェクト指向プログラミングには、ちょっと悩まされているのが現状なのですが、きっぱり捨て去るほどダメだという確信にも至っていないので、あきらめず、よりよい設計を模索して行きたいと思います。
もうひとつは、Javaアプレットがインターネット上で簡単に公開できることです。Javaのランタイムをインストールする必要があるものの、一度インストールしてしまえばJavaアプレットはすぐに走らせることができます。ブログで取り扱う上では非常に便利です。そういう意味ではJavaプログラムよりJavaアプレットにこだわりがあるということです。サーブレットという解もありうるのですが、これはサーバを用意してメンテナンスする必要があるので、ちょっとハードルが高いなぁと考えています。
【見た目を改善したい】
これまでは主にAWTのグラフィックス機能を使っていましたが、Javaは進化し続けてさまざまなライブラリが用意されています。最低限Swingに移行して画面のちらつきをなくそうと考えています。JavaFXやHTML5などJava以外の技術を利用することも検討していきたいと思います。
【中学生でもわかる内容にしたい】
それから、この連載の読者層をこれまであいまいにしてきたのですが、中学生でもわかる内容にしていきたいと思います。小学生にプログラミングのことを伝えるには、数学をある程度理解できる必要があり、ちょっと無理があるなと思っていました。最低限、変数や関数が分からないとプログラムの内容がさっぱり分からないだろうと思います。中学になればその辺は学校で習います。プログラムで使われる変数には代入という概念があるので、数学の内容とは若干意味合いが違ってきますが、その辺は理解できるのではないかと考えています。そもそも、なるべく分かりやすく書きたいという気持ちは持っていたので、今後、中学生を読者のメインターゲットにしようと思います。
【実用的なプログラムを目指す】
作成したプログラムがきちんと動くことを目指したいと思います。
囲碁プログラムについては、国内で開かれるコンピュータ囲碁の大会へ参加することを目指します。これまでのリサーチではJavaでの参加はほとんどないようなので、そこにあえて挑戦してみようと思います。ハードルは高いのですが年内参加を目標とします。
こんなことを踏まえた上で、この連載について次のような方針で臨もうと思います。

  • プログラムを一から見直す。グラフ理論(中学では習いませんけど)を応用する。
  • 単にJavaではなくJavaアプレットにこだわる。連載名を「作って遊ぼうJava」から「作って遊ぼうJavaアプレット」に変更。
  • グラフィックスにSwingライブラリを使う。
  • 中学生に分かるように説明する。
  • コンピュータ囲碁大会への参加を目指す。

(つづく)

コメントを残す