わたしのPDA生活は、結婚直後に買ったザウポケ以来ずっと、ダンナさまのお下がりでした。と書くとしおらしいけど、そのかわりノートやSunのマシンはガンガン買ってもらっているな。それはいいとして今度ついに新しくすることになりました。それはよりによってPocketPCだった。57000円もするそれを買っていただいたからには使い倒さねば。ということで特別編を作ってしまいました。新しい記事ほど上に来る積み上げ形式。
/57000円のリモコン!/サーバのデータを吸い取れ!/SDカードのフォルダ名を変更/エラーメッセージよ止まれ!/Solarisで1.1.8環境/GUIの落とし穴/ショートカットの落とし穴(こればっかじゃん)/USBでLAN/ようやくPIMMとして始動、だが・・・/Forteもなんてことなかったんだネ/PocketGearからMySQLに接続/JBuilder5でポケギJavaの基本を作れるゾ/ファイルマネージャから寄り道してテキストエディタへ /ファイルマネージャへの挑戦(2)ワニ本でいーじゃん!/ファイルマネージャへの挑戦(1)Windowsフォルダの中を見る/ヤバいかも知れない野望/こんなに楽しいポケギなのに/PocketGearでSwingまで動いた/PocketGear転送用Java統合環境/Sambaサーバに接続!/何はなくともJavaを試すが/右京さんのドライビングフォース/ついにPDA買い換えを/
そんなわけで再びフィーバーしてきたポケギに、また新たな役割が与えられることになった。最近我が家でドトーのように進展した「テレビ専用パソコン」のリモート起動である。Wake
On LAN対応のマシンを叩き起こすプログラム、なんとJavaそれも1,1,8(以前でも)で動作するそれが公開されていたのだ。
ウェブサイト「Itaru's Solusion」で公開されていたMagic
Packet Sender for JAVAがそのプログラムだ。LHA形式のそれを解凍すると本体はMagicPacketSender.classというファイルがひとつ。
添付の指導書ではこれをJava起動すればよいとのことである。そのときに、起こす相手のEthernetアドレスっていうかMACアドレスっていうか**:**:**:**みたいについてるアレを指定しなければならない。指定方法は、ファイルに書いておいて読み込ませてもよいし、コマンドオプションとして書いてもよいとある。
複数のマシンを起こす場合(楽しそうだな。送信一発でそっちこっちでゲゴ、ガゴ、と早春の池のカエルみたく・・・)はファイルに書いておくのがよいのだろうが、うちの場合はとにかくテレパソ一台を起こせるかどうかが最大の問題だ。ゆえにあのマイティーな起動ショートカットにオプションとして書き込むことにした。
まず、PC上でMagicPacketSender.classをjar圧縮して、magicpacket.jarにする。
次に、やはりPC上でEVMショートカットを編集して、このようにする。
18#"\Windows\evm.exe" -Djeode.evm.console.local.keep=true
-bootclasspath \\\Windows\core.jar;\Windows\awt.jar;\Windows\i18n.jar
-classpath \SDM\magicpacket.jar MagicPacketSender
-a=255.255.255.255 -m=**:**:**:**:**:**
見やすくするために適当に改行したが、わたしはWindowsでのコマンドラインはどーも苦手なのでホントは一気にぶっつなげて書いてある。
CUIアプリケーションだが、Windows CE上でEVMコンソールを捕獲するオプションがわかったからには、もうAWTフォームなんてかえって重くって不便よホーホホホホ。
オプション-aはブロードキャストアドレスで、うちでは誰でもいいから届け俺の叫び!状態にしてある。
-m以下がそのEthernetアドレスで、もちろん実際の値はひみつ〜。
magicpacket.jarとこのショートカットファイルを、ポケギのSDカードに転送する。
あとは、ポケギに無線LANカードをぶっさして、このショートカットを起動するだけである。するとEVMコンソールにちゃんと指定したアドレスの確認とともに、MagicPacketは無事送信の運びとなりましたという主旨のメッセージが現れる。そしてテレパソマシンが起動!こうしてメーカー希望小売価格オープン実売価格当時で57000円のテレビリモコンが完成したのである。
起こされる方の詳しいパフォーマンスについては無論のに子にはウスラボンヤリで、のんのんが書いてくれたので関心のおありのかたはそちらを見てチョ。
2003年05月14日
サーバで書き出したHTMLファイルをPDAのブラウザでダウンロード、という生活を続けてきたが、やはりサーバ必須の環境では不便が多い。外出時や、うっかりサーバを立ち上げ忘れたときなど・・・やはり、サーバのデータを一度PDAに全部吸い上げてそれを表示する仕組みが必要と考えた。
考え出した仕組みはこんなものだ。まずサーバのデータを吸い取るプログラム。
データを表示するプログラムは、逆にmenu.datファイルを読み出してHashTableオブジェクトを生成し、各keyを選択するとそのvalueがリストアップされるというものだ。
メニューと材料のテーブルを吸い取るコードを、こちらに示す。あとJAVA Developer2003年6月号ののに子マンガ(179ページ)も参考にしてネ。
これで、ほかにアドレス帳、ソフトウェアのシリアル番号などのデータをPDAに吸い取ってしまうことができた。
2003年05月06日
こうしてポケギにいろいろプログラムを入れて勉強に励むわたしに、のんのんはSDカードを買ってくれた。メモリ量が少ないのでも嫌われているらしいポケギだが、こうして64MBもの広大なメモリ空間が与えられた!こんな青のりあられみてえなカード一枚で!のんのんの話ではそいつが横っ腹にサクっと入るのはポケギのすごいところなんだそうだ。他の多くの機種ではCFカードとCDカードは同じスロットに排他らしい!さあこれで思う存分プログラムを転送・・・
さっそく右クリックして「名前の変更」を選び、名前を「SDM」に変更してリターン。
「ファイルエラーです。フォルダ名を変更できません」
まったくMSジャパンは一体何を考えているんだろうか・・・開発者に対して悪意があるとしか思えない・・・・64MBの広大なメモリ空間にわたしが入れられるのは、evmショートカットだけだと言うのか?・・・・
このままではすまされない。ググッと探してみた。おお、どうやらPocket PCていうかWindows CEのレジストリをいじればよさそうだ。もちろんそんなものをMSが用意しているわけがないんだが、世の中のハッカー様がそういうものを用意してくださらないわけもない。老舗ハッカー様のサイトがあったあった。
http://www2r.biglobe.ne.jp/~tascal/
がトップページなので上記リンクをご紹介するのが適当だろう。「TascalRegEdit PocketPC」というありがたくもフリーウェアである。「レジストリはバックアップをとって、変更はあくまで自己責任」ハイハイ存じております、この64MBがこのままデクの空間で終わるくらいならいっそポケギもろともアレしてもくらいの気持ちでおりますからわたしは。でもインストラクションに従って一応バックアップは(このソフト上でできる)とった。
えーと。すみません。実はどこをどう直したかハッキリ覚えてません。今バックアップをとったと思って確かめてみたら、書き出すキーの指定を間違えていて関係ないとこしか取ってなかった。あっぶっねー!!きっとあまりにもクソボケフォルダ名に怒ってしまって我を忘れていたんでしょう。でも上記の覚悟だったし、第一結局全然問題なく行ったんだし。変更すべき箇所はのに子にでも見つかったんだから簡単に見つかると思います。とはいえいい加減なことは書けないので、書かないことにします。とにかく、レジストリは無事に変更され、SDカードのフォルダ名は「SDM」というスッキリした名前になり、クラスパスもズバズバ通り、マイJeodeプログラムの格納庫としてあと51.33MBもあってすごい嬉しいです。
2003年04月14日
いや、このたびよーやく見つけましたよ!ポケギでevm動かしてエラーなったとき、一瞬で消えるevmコンソールのエラーメッセージを出したまま止めとく方法!
ショートカットの起動オプションだったんですね〜。
-Djeode.evm.console.local.keep=true
マニュアルに書いてねーぞこんなのNEC!ていうか導入の際デフォルトのオプションこれにしとけヨコンソールねーんだからPocketPCわ!
もっとも、こうして止まったエラーメッセージをゆっくり読んでも、今やってる問題は解決してないがなッ!
2002年12月24日
下記の問題ですったもんだする中これを試してみた。今まで手をつけていなかった領域だ。なんかSolarisのJavaって〜。OSにガッチリ組み込まれてて〜。そのOS組み込まれJavaしか動かないような印象があって〜。だがJDK1.4などが最近好きな場所にインストールできるようになった傾向を考えるに、JDK1.1.8Solaris版もテキトーな場所に置いて使いたいときに使えるようになってはいないだろうか。
java.sun.comサイトに行ってJDK1.1.8Solaris版を落としてくる。ファイルはやはり-sparc-localなどの名前がついたパッケージ型はなく.binという名前で落ちてきた。ダブルクリックでシェルスクリプトが立ち上がり、解凍されてJDK1.1.8というフォルダがそこにできていた。よかよか。
さてこれの動かし方だ。作業フォルダとしてJava118を作った。その中にこのようなシェルスクリプトを入れてファイル名だけ変えて使うことにした。
javac用
#!/bin/sh
JAVA_HOME=/export/home/noniko/jdk1.1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$BASEPATH
export PATH
CLASSPATH=$JAVA_HOME/lib/classes.zip:$HOME/java118
export CLASSPATH
javac source.java
上で$BASEPATHとは/usr/bin:/usr/sbin:/usr/ccs/binなどの基本的なパスを$HOME/.profile上で設定してある変数である。
java用
#!/bin/sh
JAVA_HOME=/export/home/noniko/jdk1.1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$BASEPATH
export PATH
CLASSPATH=$JAVA_HOME/lib/classes.zip:$HOME/java118
export CLASSPATH
java ClassFile
これで開発したアプリをポケギで使えればキャッホーだなと思い、jarアーカイブを作るシステムも整えた。java118フォルダ内にさらにjarpotフォルダを作り、そこに
Manifest-Version: 1.0
Main-Class:MainClass
というMANIFEST.MFファイルを作る。MainClassと記した部分を書き換えて使う。同じ場所に
#!/bin/sh
JAVA_HOME=/export/home/noniko/jdk1.1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$BASEPATH
export PATH
CLASSPATH=$JAVA_HOME/lib/classes.zip:$HOME/java118
export CLASSPATH
jar cvfm jarfile.jar MANIFEST.MF .
というスクリプトをおいておく。圧縮したいファイルは全てjarpot内に入れてそこで圧縮するのだ。
これでSolarisでもJDK1.1.8で開発ができるようになった。作ったアプリはポケギでも動いた。ただし問題がひとつある。それはもちろん日本語サポート〜。
何も指定しなければ、Solaris上でEUCの日本語を動かす限りはぜーんぜんだいじょぶ。だがポケギではSJISなわけだから・・・
Jエディタ12を駆使してsjisでソースを作り、javacのオプションに -encoding sjisなどもつけてがちゃがちゃやっているがまだ、Solaris上でもポケギ上でも豆腐屋状態になっている。むしろSJIS指定とかしないほうがいいのか?まだ解決してないが解決したらすごいよね。
2002年11月05日
ある日ポケギ友達から「JDK1.1.8のSwing(JFC)で日本語が文字化けする」という情報をもらった。試行するPC上ですでに文字化けするという。同じソースをJDK1.4など新しいのでコンパイル・実行するとちゃんと日本語表示されるらしい。
なるほど。わたしはJDK1.1.8のJFCは英語のメッセージしか試していなかった。ポケギに入れて動くのを確認はしたがやたら重いのでやめていたのだ。こちらでもやってみる。すると確かにPC上でも日本語の部分が????になっている。
String(string1.getBytes("8859_1"),"SHIFT_JIS")などの細工をしてみたが全くだめ。
「やはりAWTじゃないとダメかしらね〜」とAWTで確認したら・・・あれ!?こっちも文字化け!
なっなんで?!・・・さらに、ポケギでまともに動いてる日本語混じりのアプリケーション、同じクラスファイルをPC上で動かしたら文字化けするじゃん!
ちょっとめまい。半年・・・かそれ以上前は、何事もなく日本語でGUIGUIしていたのにいったい何が起こったのか・・・思い出した。
ていうかこの前2000にアップグレードしたんだった。えーとえーと。うちには探せば98マシンの一台くらいは転がっている。引っ張り出してきてJDK入れてJFC入れて試行。日本語がびしっと表示された。ソースからのコンパイルも試してみた。
なーるほどねー。のんのんが帰ってきたのでこの話をすると、「Win2000からは内部コードにUnicodeが使われてるからその変換処理と古いJDKでの変換処理で何か不具合があったんじゃないの、俺あ知んねえけど」とあっさり言われた。
2002年11月05日
だってパソ雑誌の見出しとかにやたらにないですかこの表現。それは置いといて、先頃恐ろしいことを発見した。ポケギではevm.exeのショートカットを編集してクラスパスとか設定するというのはあまりにも有名な話になってしまったが、そのショートカットには字数制限があったのだ!
ある日あるJavaアプリケーション(具体名は出さないがある商用アプリのお試し版なんだけどサイトへのリンクとか商品名の掲載とかについてやたらに細かい規制事項を出しているちょっと神経質っていうか被害妄想すぎないこの会社?が出しているものだ。アプリは優秀なのにねー)をポケギで動かそうとしてそのショートカットを作った。
参照させなければならないjarファイルがたくさんあって、そのパスを全部ショートカットに馬鹿正直に指定した。
それをポケギに送ったらいつものように自動的にevmアイコンに切り替わらない。そしてダブルクリックしても「evmを起動できない」というのだ。
「これ字数制限じゃないか?」とこのわたしがすぐ気づいたのはかなり奇跡的だったかも知れない。
そこでjarファイルのクラスパスをテッテーテキに短くしてやった。\windows\lib\someapp\someapp.jarとかしていたのを、マイデバイス直下に\aというフォルダを新規作成してそこにjarファイルをぶち込み名前もb.jarと変えてやる。
ファイル名変更はPC側でやってからポケギに送り込まないと、ユーザフレンドリな(皮肉)PocketPCは拡張子を表示しないのでわけがわからなくなる。このようにしてクラスパスの指定を\a\b.jarなどとしてやると・・・evmショートカットのアイコンに切り替わり、ダブルクリックでアプリは動いた。
なんつーか問題を解決した達成感というよりはPocket PCというものの不毛感のほうが大きかった。
2002年11月05日
WhiteBoard作成のあとしばらくは、ポケギはツールとして毎日のように働いていたが、ポケギそのものを開発することはしばし休んでいた。しかし、最近本ページを御覧いただいた方からメールをいただくようになり、そうなると自分ひとりでは気づかなかったいろいろな観点からポケギを見直すことができるようになってきた。
うちではポケギにMelcoのCF型無線LANカードを突っ込んで以来、Active Syncを全く使わないできた。だが「ポケギとサーバをUSB接続した状態でサーバのサーブレットなどにポケギからアクセスできるのだろうか」という話になった。
おー?ネット検索してみると、できないこともないらしい。
そこで実際やってみることにした。幸いDynabookにTomcatが入っている。Active SyncはこのまえOS入れ替えたときに入れてなかったので急いで入れた。ポケギをクレードルにのっけてUSBでDynabookと接続する。
ポケギの接続設定を変更する。
「設定」「接続」で,真ん中の「必要に応じて・・・社内ネットワークへ自動的 に接続します」について設定を行った。
(その下のネットワークカードの接続先:は「社内ネットワーク」)
「変更」をつついて・・・
「全般」は適当に「USB」とか言う名前にする。
「モデム」は手つかず。
「VPN」に接続を作成し,接続名は「BSE」という名前に(マズいか)。上と同じ 「USB」でいいかどうかは詳細不明。なんか違うほうがいいような?
その「BSE」を軽くタップして,接続先のIPアドレスをDynabookのそれに。ここからの「詳細設定」では,PDAのIPアドレスを決めようとしても、強制的に「サーバの設定したIPアドレ
ス」になってしまう。でもこれでよさそう。
「プロキシの設定」は手をつけない。「このネットワークをインター ネットへ接続する」のチェックもなし。
これでひたすらオッケーオッケーと設定を終了。
そしてPocket IEからDynabookのIPアドレス:ポート8080を指定。
最初,ユーザ名とパスワードを要求されたが,PCの2000proのユーザ名とパ スワードで通った。ドメインは作ってないので空。
すると見事にTomcatのスタート画面が表示され、JSPなどのサンプルページに行くことができた。
これはかなりの驚きであった。昔Psionでこれと同じようなことをしてついに断念したことを思い出すと感動である。
2回目以降はパスワード等は要求されなかった。
不思議なことがひとつある。
Dynabookのほうをスタンドアロンにしたら(つまりPCカー ドを抜いてみた)。するとPDAのブラウザではページが見つかりませんのメッセージとともにPCサーバの猫アプリが見えなくなってしまった。
それはなぜなのか?Dynabookで指定したゲートウェイ(ルータ)が何か関係あるのか?まだよくわからない。あと最近我が家もDHCP化して、Dynabookも「住所不定」になってしまったので、今これを試すのはちょっとアレになっている。
2002年11月05日
いろいろな可能性を試したが、とにかくまずPIMMの機能を発動させなければならない。でないといつまでも特殊なオモチャのままだ。半月使わなかったと思うと3日間使いまくったりみたいな・・・
それには、まずスペックやインターフェイスやとにかく自由度のでかいデスクトップっていうかPDAでないヤツでWebアプリの形でPIMMシステムを構築し、必要なデータだけをPocketGearに切り出すことにした。詳細はこちらで、ほぼ基礎的なものはそろった。
だがPDAからサーバへの出力はどうするか。つまり外出先で書き留めることがあってそれをうちに帰ってからサーバに保存するには・・・それでMySQLへの接続試験とかやってみたのだが。
結局方針を決定してくれたのは、WorkPadでもそうだったが、PDAには宿命ともいえる入力のめんどくささであった。
よし、と思った。手書きメモアプリを作ろう。そうしてうちに戻ったらそれを見ながら予定表なりアドレス帳なり、スレッド式記事なりに打ち直せばいいじゃないか。
そうしてJavaで手書きメモアプリを作ってみた。それも手書き画像を保存したり読み出したりできるツールだ。5日くらい格闘したのちようやくそれらしいものができあがったあとに気づいた。
ちょっとクラクラしたところである。わたしはこのプロジェクトを始めた当初こそ自分に強い方向性を与える目的でWindowsCEを使わないッとか宣言してみたが、こうしてPIMMとして始動してみると実用優先、どっちみち打ち直すんだったら素直にこの「メモ」ってヤツ使うことにしてもよかったのに・・・なんか録音機能ばっか強調されてるからてっきり音声メモの機能しかないと思ったのヨ〜(読めヨヘルプ)(ていうか読む気ねえのな)
でもせっかく作ったんだからコード紹介します。
参考文献はワニ本(「Javaプログラムクリックリファレンス」Flanagan.D著、オライリー・ジャパン発行)。でもテキストエディタとちがって、今度はforte4jを使って、自分が納得するプログラムを自力で書いてみました。forte使って自力ってのもナニですが。
2002年06月10日
Forte4jでGUIアプリケーションを作ろうとすると、本体であるクラスファイルに、フォームの情報が収まっているらしいナントカ.formというファイルができる。開いてみるとxml文書だ。のわんだこりゃ〜、こんなものも作らんとForteで作ったアプリは走らんのカ〜と思っていたがとんだ間違いだった。落ち着いてソースエディタで編集したコードをよーく見ると、これだけでちゃんと自力で動く要素は揃ってるヨ。このxml文書はたぶんForte実行中に必要な何かなんだろう・・・
疑い晴れたForte4jで、新規作成で「AWTフォーム」「Frame」を選び、GUI編集ツールを駆使して(全然カッコよくねえ)作って、コンパイル・実行で結果を確かめる。そしたらこいつもソースだけをPeggyのJDK1.1.8プロジェクトで開いてコンパイルして実行。できます。そしてポケギに持っていけます。
このようにしてわたしのポケギ開発ツールにはForte4jも加わった(たりまえといえばたりまえの話だ・・・)
2002年04月28日
Pimm関係のデータをUltraサーバのMySQLに置いて、PocketGearにはMySQLに接続してデータを受けたり送ったりするプログラムを置いたらどうかと考えた。
そこで作ってみたヨ。まずSQLViewer(コードはこちら)。
これができたのでSQLSenderを作った。いずれも、id,name,memo(nameに対する説明のようなもの)を格納するだけのカンタンなテーブル、名前はlist、それ一個をプログラム中で特定したものでしかないが。もちろん両者はいずれ合体されるべきだし、テーブル名や入力方法にももっと自由度を与えるべきだが、とにかくPDAとUNIXのSQLでチョクでデータのやりとりができるということがわかったので感激。
(1)JDBCドライバの問題・・・Solaris8でも使ったmysqlのドライバのアーカイブmm.mysql-2.0.2.jarを、Windows98に入れたJDK1.1.8のjarコマンドで
jar -xf mm.mysql-2.0.2.jar
とやるとちゃんとunjarされた。そうやってできたmysql.jarをPocketGearの\windows\libに入れてやる。evmにも
18#"\Windows\evm.exe" -bootclasspath \Windows\core.jar;\Windows\awt.jar;\Windows\i18n.jar -classpath \Windows\lib\mysql.jar;\Windows\lib\sqlviewer1.jar SQLViewer1
と書いてやればよい。
(2)気になる日本語の問題・・・サーバのMySQLはujisつまりEUC-JPサポートなのに、shiftJISをサポートするWindowsやCEでうまく日本語のやりとりができるのか・・・なぜかうまくいった。すげえぜJava。すげえぜMySQL。
2002年05月20日
JeodeでサポートするのはJDK1.1.8である。これのGUI 開発ツールわというと昔のJBuilderで有償っていうかもう売ってもくれなさそうなものだ。だがCocoon1が脱皮して全く別のCocoon2になってしまったのと違い、カンタンなGUIコードなどは今のJBuilder5とかがサポートしているJDK1.3でもそれほど変わりないはずだ。
Forte4jでGUIアプリケーションを作ろうとすると、本体であるクラスファイルに、フォームの情報が収まっているらしいナントカ.formというファイルができる。ちょと得体が知れない・・・だが、JBuilderのほうはもっとカンタンそうだ。
JBuilder5でNonikoというアプリケーションを作ろうとすると、フォームを作るNonikoForm.javaとそれを実行させるメインクラスNonikoApp.javaができる。非常に乱暴に言えば
public static void main(String[] args) {
NonikoForm f= new NonikoForm();
f.show();
}
みたいな感じのものだけがNonikoApp.javaのほうに切り離された感じなのだ。
だからJBuilder5でGUIアプリをGUIGUIと作って、一度実行させてみたりして初歩的なミスのないことを確認したら、ここでできた二つの.javaファイルを今度はJDK1.1.8でコンパイルし直してみればいい。それでサポートされてないクラスなどが見つかった場合はあきらめる。
だが、わたしがやってみたところ、swingを使ってJB5で作った同じようなテキストエディタがちゃんとJDK1.1.8でコンパイルし直されてポケギで動いた。ただし、JB5ではjavax.swingと記述するのを全部com.sun.java.swingに直す必要はある。
あと、やっぱチョト重いswing。それから、
AWTのfiledialogにあたるのがfilechooserというヤツなのだが、ポケギに入れて動かすとそのままデカい画面で出てくる。
だから、ファイルの選択のからむアプリケーションではAWTのfiledialogを使ったほうがよさそうだ。
JB5ではAWTフォームのサポートも一応あるので、ムリに重いswingを使わなくてもAWTだけを使ってGUI編集することもできる。テキストエディタとにらめっこで生コードを打っていくより、補完機能もある(swingよりは冷たい感じだが)し、実行結果がすぐ予想つくし、これを利用するとポケギでのJava開発がより容易になりそうだ。
2002年04月28日
ファイルビューアで開くファイルを選ぶ画面にはjava.awtに用意されているFileDialogを使う。
読み込むときには FileDialog f=new FileDialog (this, "Open File",FileDialog.LOAD);
新規保存するときにはFileDialog f=new FileDialog (this, "Save File",FileDialog.SAVE);
で呼び出す。ファイルの選択はどちらも、String directory, String filename を用意して置いて
directory= f.getDirectory();
filename=f.getFile();
で、それぞれloadfile(directory, filename), savefile(directory, filename)、別に自分で作って置いたファイルを読み込むメソッド、書き込むメソッド(お手本はいろんなところにあるよネ)に、親ディレクトリ名とファイル名を渡してやればよい。読み込むときにはファイルはメニューから選ぶのに対し新規保存のときには自分でファイル名を入力欄に入力するという違いがあるが、それはぜんぶjava.awtが吸収してくださるようだ。非常にありがたい。
上書き保存のときは、ファイルを読み込んだときに得たdirectory, filenameの2引数をそのままsavefileメソッドに渡してやればよい。
これで、ポケギにテキストエディタができた。動かしてみたら非常に快適、とまではいかないが、ちゃんと読んだり編集したりできるようになった。野望がかなり前進した感が強い。
2002年04月28日
Windowsフォルダの中を見るコンソールアプリケーションを作成して、やれやれこれで第一関門を負えたぞ・・・と思っていたわたしだが、参考にしたワニ本(「Javaプログラムクリックリファレンス」Flanagan.D著、オライリー・ジャパン発行)に「FileViewer」というサンプルプログラムがあった。使っているグラフィックはAWT一本。これ、使えないかな・・・
PocketGear向けにサイズを調整して作ってみた。あまりにもサンプルのまんまなので転載は控える。4800円の本だが、とにかく役にたつサンプルがたくさんあるので、別にオライリーから宣伝費をもらっているわけではないが決して損はしない買い物だと思った。
わたしがポケギ用に修正したのは、フレーム(つまりビューア自体)を表示させるところでFrame fのサイズを設定
f.setSize(200,250);
それから、自動的に行折り返しをしたい。なにせ画面狭いから。実はAWTでの行折り返しは、TextAreaオブジェクトに水平スクロールバーをつけないという設定によって行われるらしい!
textarea= new TextArea("",13,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
と定義することで、読み込まれたテキストは表示ウィンドウ幅に合わせて折り返しをしてくれるのである。
あとはワニ本の62ページのサンプルコード「FileViewer.java」を見てネ。あるいはサンプルプログラムはオライリーのサイトからダウンロードできるヨ。
これで「ファイルを開く」すると・・・わたしはボーゼンとした。この前\Windowsフォルダの中身をコンソールに書き出させて日本語が表示されないとかやっていたのは何だったのか・・・ポケギの「ファイルを開く」ダイアログが上がってきて、こちらで何も指定しなくてもディレクトリの階層を降りたり上がったり、自由にファイルを選択できるではないか!
これで、いともカンタンにポケギでファイルビューアを実現させた。だったらこれにセーブ機能をつけたらテキストエディタ(昔からなぜかCEに用意されてないもの。ワードで編集する気はホントにしねえよ)もできそうじゃない?ということでわたしの野望はファイルマネージャからテキストエディタに寄り道することになった。
2002年04月28日
そんなわたしはまず、「自作ファイルマネージャ」を作ってみようと考えた。だがJavaはようやくワニ本をひーこら終えたばかりのわたし、少しずつやっていく。
まず、PocketPCのフォルダの中身を表示させてみよう。
ワニ本を参考にこういうコードを作ってみた。まだコンソールアプリだし、フォルダも初めから\windowsフォルダと指定してある。果たして実行すると、evmコンソールにズラズラズラといろんなファイル名が表示されて、表示し終わったら消えた。
非常にしろーとなアプリだが、とにかくできたらしい。つまり、このJavaでWindowsCEのファイル操作はできそうということだ。
でもやっぱり日本語に対応してないんだが・・・
2002年04月13日
「ということでね」とダンナ様に報告する。「予定表とかアドレスはOutlook使いたくないしこのままJPilot-30j体制で行って、ポケギはJavaで遊び倒すという、使い分けをして行きたいと思うのですよ」
すると言われた。「そんなの、だって予定表もアドレスもJavaで作ってサーバのSQLとでも同期できるようにすりゃいいだろ」
あ〜〜〜〜〜〜
なるほど。WindowsCEと自作Javaアプリだけの世界!
それは面白そうだ。確かにこれを使い初めて以来、PocketExcelも予定表もタスクもまだ一度も立ち上げたことすらないが・・・「添付アプリケーションを一切使わず、自作Javaアプリだけを使って、Solarisを母艦とするPocketGearの環境構築」・・・ただ漫然と遊んでいただけののに子に、目標ができた!
かなり目標は高いけど、一歩一歩進んで行こう。そこまでできたら、さすがに、「日Kモバイル」とかに投稿しちゃおうかな。「Windowsに極力頼らないPocketPCの使い方!」
・・・ダメかな・・・
2002年04月13日
PocketGearを最初買うとき、在庫がないのではないかと心配したがあっさり買えた。近頃はもうPDAブームも枯れたのかなと思っていたが、ある雑誌でPocketPC機の特集をしていて見たら、評価が意外に低かった。メモリが少ないとか、重い、ボタンが小さい・・・
確かにそうかも知れないけど、こんなに遊べるJavaが標準でついてんだぞ〜。その辺もーちょと評価してやってくれないかなあ〜。
確かに、NECのサポートに電話して「今後Jeodeがバージョンアップした場合の対応はどうなるか」ときいたら「まだそこまで考えてない」との返事をもらったあたりはちょっと心配ではあるが・・・・
2002年04月13日
だが、PocketGearでJavaの一番の問題は、JDK1.1にしか対応しないことだよな・・・と思っていた。もっとも残念なのがSwing,あれは1.2以降だから、awtで細々やるしかないのかと。
だが、ウェブを探すと、1.1ではJFCというAPIをあとから入れればswingが動く、ということがわかった。そうそう、そのときはまだクラス名もjavaxではなくて他の名前だったという話もどっかできいたことがある。
Sunのサイトに行き、JFC1.0.3というのを見つける。ドキュメントをよく読んでちゃんとJDK1.1に対応するヤツというのを確かめる。残念ながらドラッグ・ドロップなど一部の機能がJDK1.1では使えないそうだが贅沢は言わない。落としてきた。これを解凍する。
ドキュメントを読むときわめて簡単、とにかくswing.jarを適当なところに置いて、パスを通しとけ、というだけだ。
とりあえずc:\jdk1.1.8\swingというフォルダを作ってそこに入れた。
Peggyのプロジェクトの複製をつくって、そっちはSwing用の設定にする。
いわくjavac.exeのアドホックパラメタに、デフォルトクラスパス;c:\jdk1.1.18\swing\swing.jarを追加。
また、java.exeのほうにも、クラスパスにc:\jdk1.1.18\swing\swing.jarを追加する。
そうして、今解凍した中にあったデモの一番簡単なヤツのソースファイルを持ってきてお約束の場所でコンパイルする。全く問題なし。
次実行。javaのクラスパスの指定はめんどくさいので一気にjarして実行。いとも簡単にMetalウィンドウが。
こいつとevmショートカットを・・・っと待てよ。今度はevmショートカットのコマンド内のクラスパスにswing.jarも指定し、かつ、swing.jar自体ポケギの\windows\libに入れなきゃだめじゃん。
swing.jarファイルでかそうだな。ダイジョブか・・・1.5MB。30jだと軽くパンクしそうだが、さすがポケピー。容量が小さいことで非難ゴーゴーらしいポケギだがへでもない感じだった。
そしていともさっくりポケギでSwingが。これでポケギでできそうなことが100倍増えた。
2002年04月13日
これでjavaアプリケーションを作ってはポケギに放り込み・・・とちょっと待て。
この前、ヨレヨレしながらHelloアプリをポケギに放り込んだとき、Windowsの使えない感高いコマンドプロンプトでポチポチ打って苦労したよな。あのときはそもそも動くかどうかを確かめたくて必死だったからだが、動くとわかった今は落ち着いて開発しやすい環境を整えたい。ソースの作成とコンパイル、実行、jarアーカイブの作成とその動作確認・・・なにせJDK1.1.8なので、ForteもJBuilderも、少なくとも今のわたしにはこれをサポートするものはない。
とすると必殺のPeggy (シェアウェア、http://www2.noritz.co.jp/anchor/)である。
Win環境においてはXEmacs殺しと言われるかもしれないこのエディタ、ちょっと工夫するだけで、ものすごーい便利な環境ができた。 詳細を別のページにまとめることにした。
Windows98環境だ。一度、Win2000で同じことができるかどうか試してみたが、これを書いた時点での古いPeggyのバージョンによっては16ビットのサポートがどうというエラーでできないことがあった。だがその後速攻で出たPeggyの新しいバージョンでは全く問題なくWin2000でも実現できた!
とにかく、これで作っては放り込みができそうだ。
2002年04月11日
今年のゴミ出しの予定は結局WorkPad30jに無事収め終わって、うーんこれからはWorkPadはJPilotと同期の桜で決まりだなと喜び勇んで買い物に行く途中、だがわたしは突如叫んだ(叫ぶなよ公道で・・・)
「ダメだダメだダメだーッ。ポケギを全然使っていないッ」
このままでは、「なんだまだ何の予定もアドレスも入ってないのか、せっかく買ってやったのに使ってないなら俺にくれ」とダンナさまに没収されてしまう(かも知れない)!では何のためにポケギを買ったのか、それは遊び倒すためさ。遊ばなければ!
おりしも、実はきのうなーんとなくGenioのカタログ(PocketPC機を買うにあたってカタログを集めていた)を見ていたダンナさまが
「おいおいポケピ2002だと共有フォルダも見れるそうだぜ」
と教えてくれたばかりだ。
それだと、「予定やアドレスの同期」の必要のないPocketGearでは、実はActiveSyncはいらなくなるのだ。ハードのリセットもしくは電池切れによる完全忘却の後の、最初の接続以外には。共有フォルダから遊ぶためのいろいろなファイルをコピーしてくればいいんだから・・・・だが、Samba共有のフォルダは、見れるのだろうか?!
PocketGearの「ファイルエクスプローラ」を立ち上げる。パッと見た限りは共有フォルダの姿はなかった。そこで「ファイルを開く」で無理矢理
\\SERVERNAME\\foldername
と、サーバのコンピュータ名と共有フォルダを指定してやった。すると、
「ネットワーク上にすでに同じデバイスがあるのでデバイス名を変えてください」といわれる。
このメッセージはなかなか親切だ。「設定」「システム」「バージョン情報」で「デバイスID」を見ろと教えてくれる。
デバイス名はデフォルトの「Pocket_PC」になっている。これを適当に変えてみた。なにせ同期するものがないから識別名を変えてもへーちゃらである。
すると、果たしてsambaユーザのIDが示され、該当するパスワードを要求された。入れてやるとおおッとー!
出たヨBlade(今一時的にサーバにしている)の中身が。
そこで気づいたのだが、共有フォルダは共有フォルダのアイコンをつつかなければいけないのだ。
「ファイルエクスプローラ」の画面下にあるタスクトレイみたいなののアイコン、PDAの形してるのがデバイス内のファイル、そのとなりにある、どうやらWindowsと同じように下で手で支えてるみたいな形をしたアイコンが共有フォルダのファイルだ。
以後はファイルを開くパスを指定しなくてもそのアイコンで共有フォルダにアクセスできた。
だがさすがにそこから直接ファイルを開くことはできない。
共有フォルダのファイル名上に、スタイラスをある程度の時間置くとメニューが出てくるのでコピーを選ぶ(削除とか選ぶなヨ〜)。それからPDAのアイコンをつついて適当な場所に貼り付け。
そうやってデバイスに完全にコピーしてから、開いて編集して、また共有フォルダに戻すというわけだ。
よし。だがこれで直接Solarisにアクセスできたゾ。
2002年04月11日
さて買ってきたポケギだが、予定も連絡先も仕事もメモも今はまだいい。とにかくこのPersonal Javaというヤツが動くかどうかだ。が・・・
「使いこなそうポケットギア」という取り扱い説明書に、Javaアプリケーションの動かし方というのが書いてある。だが、何かのREADMEをそのまま訳したとしか思えないやる気のなさに溢れた説明である。
「ショートカットから起動します。
option,name,argumentのコマンド行の内容をショートカット(..lnk)で作成し、実行します」
・・・・まんまの引用だが、これで「無断転載は著作権侵害」とか言えるもんなら言って見やがれ日電エエッ?!これで何がわかるっちゅーんじゃコラアー!それとも「当方はこれ以上教える気はもーとーないから質問などしないように」って示威行為かヨ?!・・・・
怒り嘆くわたしにダンナ様があるページを検索し紹介してくれた。SouKou様のページだ。PersonalJava搭載!とうたっているポケギに搭載されているのは実はJeode1.9というもので実はInsigniaが有償で提供しているものだった。Soukou様のページではこのJeodeを購入してポケピーにインストールしてJavaアプレットやアプリケーションを動かすまでの方法を解説してくださっている。上のショートカットに関する禅問答のような記述の意味もおかげで具体的に何をすればいいかわかった。この前SolarisでJDK1.4とForte for Java 3.0を導入したわたしは天狗になっており、Windowsでもこのキットを導入してこれで開発しようという意気込みだった。ハタでダンナさまに「バージョン大丈夫なのか」と言われても「AWTだけ使うようにするからダイジョブよ」と・・・だがForteどころか、同じソースコードをコマンドラインからjavacする場合でも、JDKのバージョンで全く結果が違うことを思い知らされた。おかげでSunのサイトからJDK1.1.8をもらってきて入れ直さなければならなかった。
幸い、jarアーカイブを作るときのmanifest.mfは
Manifest-Version:1.0
Main-Class:NoniTest2
NoniTest2.classというクラスファイルの場合のmanifestファイルの内容だが、今のところJDKのバージョンが1.1でも1.4でもこれでいいようだ。
そして、もうひとつのキモだ。自作jarファイルは引数でパスを指定すればどこに入れてもいいようだが、
つまり、自作jarファイルを\Windows\libにnonitest2.jarという形で入れるとすると、ショートカットはこのように編集しなければならない。
18#"\Windows\evm.exe" -bootclasspath \Windows\core.jar;\Windows\awt.jar;\Windows\i18n.jar
-classpath \Windows\lib\nonitest2.jar NoniTest2
これでよーやっと、UNIX USERの1998年8月号の「Practical Java Lesson」に載っていたサンプルコードで、ウィンドウが開いてボタンを押すと閉じる、というアプリケーションが、Pocket Gear上で動いてくれた。
どーにもならんのが、evm.exeの起動エラーのとき、エラーメッセージが一瞬出てはすぐに消えてしまうことだ。
どっかにメッセージログとして出せればいいのだが、その方法は取説に書いてないしわからない。おかげで何のエラーなのかがなかなかわからず苦労させられた。
それにしても!このクソ取説何の役にも立た・・・と引きむしろうとして(はいない、ホントは。強調表現)もう一度そのページをよく読むと、
「JDk1.1.8で作成し、動作させることができます」
・・・・
書いてあるじゃんヨ・・・確かに「JDKの新しいバージョンではダメです」とは書いてないけど・・・
あと、「-bootclasspathはシステムクラスがデフォルトの場所にある場合指定不要」と書いてあるけど、
「実際の使用例」には全部指定された例が書いてあるんだな。
わたしが勝手に「そうか、指定しなくていいのか」と省略してエラー出してただけで・・・・
要するに、このやる気のないポケギ取説には、ちゃんと読むとちゃんと必要なことが書いてあるのだということを最後に思い知った。けどさ・・・
と叫んでいると ダンナ様が「それはね、あんまり親切に書くと、おまえのような初心者がHelloとか表示できたぐらいで自分にもできるじゃんとか言っておまえのようなにわかプログラマになり、それがちょっと難しくなると
”マイプログラムが動きません、助けてください”などとそこらじゅうのBBSなどに書きまくったりするようになるのをあらかじめ防止するためなんだよきっと」・・・
当たってますか?!日電さんッ!
ちなみに、appletのほうはクラスファイルとhtmlファイルを一緒にしてさえいれば、htmlファイルをつつくだけでPocketIEが立ち上がって問題なく起動した。JDK1.4でコンパイルしたクラスでも大丈夫だった・・・例によってHelloっすけどッ!
さて、これからどうしようか。ちなみにまだ他のデータは全然入ってない。
2002年03月25日
だが、買うなら、ということで実際に買うのはそう急がずとも、という気持ちではいた。なにせ去年の暮れBladeを買ってもらってしまったわたしの予算はアレである。そのうちにplptoolsやHermesによるシリアルログインなどpsion熱も再び上昇したし、地図ソフトの機能もダンナ様のiPAQをお借りして試すことができたし・・・
だがそんな気持ちである日「週刊アスキー」をいつものように買おうとコンビニのレジで並ぶ間持ってるそれをちょっと立ち読みしたところ、なんとあの片山右京さんがテスレポでポケギを使っておられるではないか。
これがホントのドライビングフォースだった。思わず仕事中のはずのダンナ様に携帯メールで「ポケギほしいゼーッ」と送信してしまった。そして次の休みに買いに行くことにした。
一時のPDAブームほどのことはなく、ポケギはいつも行くSofmapでちゃんと買えた。そしてこの際MelcoのCF型無線LANカードも買った。
2002年03月25日
ついこの前WorkPad30jでBlade100とJPilotで同期を確認したばかりのわたしだが、実は某雑誌に応募した某地図ソフトのモニタに当選してしまった。となればその地図ソフトのいかなる機能をも使い倒さねばならない。そしてその機能の中に地図をPDAに転送する機能があった。だがもちろん対応するPDAは最近のものに限られている。
「タダほど高いものはないというがこの際だからPDAを新しくしてもいいぞ。psionもあれだけ使ってくれたら払い下げたわらわとしても満足じゃ」
とダンナさまは言ってくださる。ではお言葉に甘えて、選択肢は二つだ。Palmの最新版にするか、PocketPCにするか。
双方の特徴、短所長所を考える。
Palm505のような最新版
oPalm-UNIXの連携など、フリーソフトはこれからも開発が期待される。
oPalm OSのためのJava開発キットがSunでどどーんと公開されている。
o価格が比較的安い。
xスペックがいまいち弱い。
xなにせ「その他のOS」である。
Pocket PC
xなにせアノクソOSの子分である。開発するにも使用するにも囲い込みで縛られるであろう。
x価格がクソ高い。
oだがスペックはPDAとは信じられないくらい強まっている。
o逆にアノクソOSの子分だけに、アノクソOSに頼りさえすれば開発するにも使用するにもなんとかなる。
oiPAQがすでに家にあり、リソースやノウハウをダンナ様と共有できる。
oとにかく当然のようにLANに接続できるのがたまらない。
Palm系は優れた点は多いがいくつかイマイチな点もある。これに比べてPocketPCはきわめてクソな点ときわめてすばらしい点が際だった対照をなしている。さてどーするか?!
とどめの一撃はNEC PocketGearの発売だった。これにはPersonal Javaが標準でついており、Javaアプリが動くという。それからiアプリのエミュレータがついている!Docomoはないがiアプリには非常に興味あるわたし、自分でiアプリを開発してこれに入れて楽しめないか?・・・そんなすごそうなマシンにしては、値段はゲニ夫などより安い。それはRAMがバッテリバックアップで、電池が切れると何もかも忘れるからのようだが・・・それにしても買うならPocketGearだろ、というところでわたしの心は決まった。
2002年03月25日