速報、NS Basic/Palm 6.00

2006/11/08


2005年の7月にリリースされたNS Basic/Palm(以下、NSB)のVer.5.0、久々にメジャーバージョンアップ版がリリースされました。
Ver.5.xにおいて進化したのはIDE周辺の操作性とタイマーイベントコントロール(Ver.5.02〜)などでしたが、このVer.6.00では何が変わったのか?

大雑把な内容で言えば、1つはTreo関連のライブラリが拡充された点。
これは、電話として使えない日本のユーザーにとっては、今のところ魅力的な機能ではないでしょう。
もう1つは、操作性の向上とプログラミングの省力化です。
一見すると「これはマイナーバージョンアップじゃね?」と思うかもしれない内容ですが、機能的にはプログラマにも使う側にもメリットのある内容です。
ひとまず、主要な部分を紹介します。

※画面のキャプチャは、開発評価版のものです。正式版とは異なる場合があります。

  • 新規購入:$129.95(シングルユーザー版)
  • アップグレード:旧バージョンユーザー限定
    • ダウンロードのみ:$49.95
    • アップグレード+ハンドブック:$69.95
    • アップグレード+ハンドブック+Michael氏の解説書(第3版):$99.95

    ※2005年10月1日以降の購入者は、無償アップグレードとなります。NS Basic社のアナウンス
    ※アップグレードの連絡は、リリース日より数日後にNS Basic社から届くと思われます。現時点では、アナウンスのみとなっています。
    ※新たに新設された「NS Basic/Palm U」というプログラムに参加すると、無償でアップグレードできるようです。
    基本的に、テクニカルノートの執筆をすることが条件となるようです。
    詳細は、ユーザーに届けられたアナウンスメールをご覧下さい。


■ナビゲーション機能に対応しました【注目!】

 4つのアプリケーションボタンに2つの上下キー、伝統的なPalmデバイスのスタイルも、PalmOS 5.0が登場した頃から若干変わりつつあります。
 それは「ナビゲーションキー」と呼ばれる4方向+1ボタンのキーの搭載です。
このキーを使うことで、今まで以上に操作性が向上し、大抵の事が片手でできるようになりました。
これは、スマートフォンであるTreoを見据えての事だと思いますが、国内の携帯電話を見ても、このような4方向+1ボタンキーの搭載は極めて自然な流れであるといえるでしょう。

一方、プログラムを作成する上で、それぞれのオブジェクトに対する「フォーカス」のコントロールは厄介でした。
いくつものボタンやテキストフィールドを持ったプログラムでは、上下キーやアプリケーションボタン、ナビゲーションキーなどに、それぞれのイベントコードを記述して、フォーカスをコントロールしなければなりませんでした。
また、新しいデバイスでは自動的にナビゲーション機能が働く場合もあり、その動作の干渉によって自分のアプリの操作が意図しない物になる場合もありました。
こういったフォーカス移動、PalmOSでは「ナビゲーション」と呼んでいますが、Ver.6.0.0から、このナビゲーション機能をコントロールできるようになりました。
    【プチ解説1】2つのナビゲーション機能
      スクロールキーやナビゲーションキーを操作して、テキストフィールド内のカーソルを移動させたり、ポップアップリストから適切な選択肢を選ぶ動作。
      これは、スクロールキーを使った極めて自然な動作ですが、この動作を「インタラクションモード」と呼びます。
      一方、異なるオブジェクト、例えば、画面上に配置されたテキストフィールドやボタンの間をナビゲーションボタンを使ってフォーカス移動させたい場合は、先ほどの動作要求と重なってしまい、正確な動作を得る事が難しくなります。
      このようなフォーカス移動の動作を「ナビゲーションモード」と呼びます。
      パソコンに置き換えれば、例えば、ナビゲーションモードをマウス、インタラクションモードをカーソルキーと考える事もできますが、Palmにはそのような複数の装置を搭載する余裕がありませんので、1つのナビゲーションキーに2つの機能が割り当てられています。
      そして、2つのモードは、センターボタンを押すことで切り替えられます。


    【プチ解説2】2つのフォーカスモード
      インタラクションモードとナビゲーションモードは、Palm社によって作られた仕様ですが、もう1つアクセス社が2つのフォーカスモードを規定しました。
      アプリケーションフォーカスモード」と呼ばれるモードは、キーボードナビゲーション機能に対応しないPalmOSの従来スタイルのモードです。
      簡単に言ってしまえば、ナビゲーションボタンを操作しても、フォーカスが移動しないモードです。
      オブジェクトフォーカスモード」は、個々のオブジェクトがフォーカスを受けることができるモードで、ナビゲーションボタンの操作によってフォーカス移動が可能になります。
      これらの2つのモードは、プログラム側から切替えが出来る場合もあるようです。
ちょっと読んだだけではピンと来ませんが、ひとまず、これらの動作を設定するためのプロパティを紹介します。
    ◆フォーム(Form)
    • Nav Button ID:(ちょっと動作が分かりません。)
    • Nav First ID:ナビゲーションモードに入ったときに最初にカーソルが移るオブジェクトのID番号を指定します。
      ID=0を指定すると、PalmOSが勝手に決めてくれます。
      ただし、デバイスに依存するようなので、意図的に1番目のフォーカスを設定したい場合は、SetFocusメソッドを使ったほうが良いかもしれません。
    • Nav Flags:ナビゲーションモードを指定します。
        0:デフォルト。2つのモードをPalmOSが適当に判断して動作します。
        1:オブジェクトフォーカスモードになります。
        2:アプリケーションフォーカスモードになります。
         (要は、ナビ機能でフォーカス移動させるのをOFFにします。)

    ◆各オブジェクト
    • Nav Abobe ID:「上」や「前」の動作をした時にフォーカスを移すオブジェクトのID番号
    • Nav Below ID:「下」や「次」の動作をした時にフォーカスを移すオブジェクトのID番号
    • Nav Flags:オブジェクトのモードを指定します。
        0:デフォルト。特殊な操作は行いません。 1:フォーカス移動時に無視されます。 2:フォーカス取得時、自動的にインタラクションモードに切り替えます。
        複数行を編集できるテキストフィールドの場合、フォーカスが移った直後はナビゲーションモードとして働いているため、一度、センターボタンなどを押してインタラクションモードに切り替えないと編集ができません。
        この値を2にしておけば、ナビゲーション機能でフォーカスが移動してきた時、直ちに編集できるモードになります。
Z22で試しただけなので、その動作がよく分からないものもありましたが、基本的に、フォーカス移動に関する操作をPalmOS側に任せる事ができて、開発の負担が軽減されます。
また、元々ナビゲーションキーによるフォーカス移動がサポートされていないPalmOS4.xなどの古い機種では、これらのプロパティは無視されます。



■モーダルフォームが、まともになりました【プチ注目!】

 紹介記事として「まともになりました」はないかと思いますが、例えば、このようなモーダルフォームをデザインします。
サンプルプログラムからの引用ですが、これをコンパイルして実行すると、次のような画面になります。
よく見ると、画面下、モーダルフォームの右上に付けた覚えのない「」マークが付いています。
このマークが自動的に付与される点が「まとも」な対応で、フォームのプロパティで「Modal Form」を「True」にすることで表示されるようになります。
単にマークが付くだけではありません。
」マークをタップすると、次のような画面が表示されます。
この動作は、何らプログラミングする必要なく、Modal FormプロパティをTrueにすれば、自動的に実装されます。

表示される文字列は、IDEの「Modal Tips」で指定します。
ここをクリックすると、ListBoxオブジェクトのListプロパティ編集に似たフォームが表示されます。
ここに、表示すべきメッセージを入力するだけで準備完了です。
大抵の場合、モーダルフォームを使って動作選択や状況報告などを表示しますが、ちょっとした説明を添えるために、このModal Form Tipsは便利な方法です。
もちろん、日本語も問題なく通りますし、改行も反映されます。
ただし、これらの文字列はプログラム側から制御する事はできません。

モーダルフォームに関する技術的な詳細は、開発者サイト(http://www.palmos.com/dev/support/docs/ui/UI_Forms.html)を参照して下さい。



■コンパイル速度が約40%程向上しました

 コンパイルが高速化され、約40%の速度向上が図られたとのことです。
また、コンパイル後に、次のようなレポートが表示されるようになりました。
だからどうした、というようなレポートですが、何かの参考になるでしょうか。
ひとまず、サンプルプログラム程度の小さなものでは、コンパイル時間が1秒以下で終わってしまうため、本当にコンパイルしたのか疑いたくなります。
確かに、高速化されたようです。



■その他色々

 その他、原文からの抜粋です。
Treo関係の追加機能については、検証できませんでしたが、サンプルプログラムなどを見れば比較的判りやすいかと思います。
  • Treoなどに搭載されているナビゲーション機能に対応しました。(詳細は別載)
  • コンパイル速度が約40%速くなりました。
  • Windows Vistaに対応しました。
  • ヘルプファイル(英語版)のフォーマットを.chmに変更しました。
  • モーダルフォームTipsをサポートしました。(詳細は別載)
  • リソース、ビットマップのパス指定を相対パスにしました。
    他のフォルダにプロジェクトファイルを移動させ易くなりました。
  • 9999番を超えるリソース番号は割り振られなくなりました。
  • 再読み込み時に、そのリソース番号は加算されなくなりました。
  • フォーム名に含まれる前後の空白を調整します。
  • Scrrun.dllを使用しなくなりました。
  • 最初には、.prj以外のファイルを開けなくしました。
    (訳者注:全ての形式(*.*)を指定して特殊なファイルを開いた場合の動作は保証しません)
  • Treo用ライブラリ(TreoLib)に新しい関数を追加しました。
    GetLibRefNum, GetRingProfile, GetRoamMode, GetRoamWarnings, PhonePower, SetRingProfile, SetRoamMode 及び,SetRoamWarningsです。
    詳細は、Tech Note 30をご覧下さい。
  • PDB Creator Proをサポートに加えました。パソコン上でPalmのデータベースファイルを編集できるプログラムです。
  • Scrollbar.Currentプロパティは適切にコンパイルされます。ちなみに .Valueプロパティは古い形式です。
  • コンパイラーは、コンパイル時に要した時間を表示します。
  • PopupTimeの欧州時間の「終日」の戻り値を修正しました。
  • 赤外線通信のバグを修正しました。
  • サンプルプログラム「NavDemo」を追加
    ナビゲーション機能に関するサンプルプログラムです。
  • サンプルプログラム「ModalForms」を追加
    モーダルフォームに関するサンプルプログラムです。
  • サンプルプログラム「TreoTest」を更新
    新しい関数を含めたサンプルプログラムに変更しました。
  • ヘルプファイルを新しいバージョン向けに更新しました。
  • Tech Noteを新しいバージョン向けに更新しました。
  • ハンドブックを新しいバージョン向けに更新しました。


 劇的とは言わないまでも、PalmOS 5.0に対応した、今風の開発環境に移行しつつある今回のバージョンアップ。日本でのPalm事情を考えると、やや魅力に欠けますが、ナビゲーション機能をデバイス側に丸投げできるので、楽になったなと思います。
 一方で、古いデバイスには、あまり恩恵のない機能ばかりなのでちょっと淋しい気がします。
どちらにしろ、箱庭感覚でプログラムを作って楽しめるNS Basicは貴重な存在でしょう。
脳トレーニングパズルゲームよりは生産的に頭を使えますので、ゲームに飽きたら作るほうに回ってみては如何でしょうか?