2012年3月31日土曜日

PSVITAでバーコードのチェックデジット計算プログラムを作る

今回の記事も、PSVITA(プレイステーションヴィータ)でミニ・プログラミングをする話について書かせて頂きたいと思います。

最近は連続してヴィータでプログラミングする話になっていますが、一人のヴィータ好きの微熱だなぁと思ってご容赦願うばかりです・・・

しかし、ヴィータは全然売れていないけど、それは無関係にホント好き。だいいち、発売後間もないのに、ここまでスポーツやアクションなどゲームが充実している上に、本体だけあればミニプログラムも楽しめるというのは、やっぱり大きい。
ちょうどWindows8 consumer previewを本格的に使用開始した時期と重なったので、個人的に双方にとてつもない「好き」の相乗効果が生まれていますぞ。

■バーコードのチェックデジット算出プログラム■

今回は、バーコードのチェックデジット算出プログラムをヴィータで作ってみました。

モジュラス10ウェイト3方式対応です。
よくJANコードってバーコードありますよね。あの数字ってデタラメに13桁(8桁版もありますが)並べているわけではないんです。最後の一桁が「チェックデジット」という、まぁ平たく言うと暗号になっているのです。
つまり本文12桁+チェックデジット1桁というフォーマットになってます。

要するにテキトーに13桁の数字を並べてバーコードを印刷しても、バーコードスキャナは読まないのです。
チェックデジットを求めて、末尾にくっつけてあげて、その数字でもって印刷したバーコードなら読んでくれるわけです。
物流関係のプログラム開発なんかに携わると、不可避のチェックデジット。手元で簡単に計算出来る計算機としてヴィータを使いたいなぁと。
あ、入力する数列は何桁でも良いです。ただコードを短くするために入力チェックは省いていますけど。

プログラムは以下のようになります。
実際にヴィータに入力する時は、インデントも改行も一切なしで一行で入力します。改行コードの"¥r¥n"はヴィータでは¥をバックスラッシュ記号にして入力します。ソフトキーボードにはどっちも並んでいるんで迷うんですよね。

function f(v)
{
   var o=0,e=0,j=1,c,i;
   var r=prompt("PlayStation Vitaチェックデジット算出\r\n\r\nチェックデジットを求めたいバーコード数列を入力して下さい。(キャンセルで終了)",v);
   if(r==""||r==null||r==undefined)
   {
      return;
   }
   var s=new String(r);
   for(i=s.length-1;i!=-1;i--)
   {
      c=parseInt(s.charAt(i),10);
      if(j==1)
      {
         o+=c;
         j=0;
      }
      else
      {
         e+=c;
         j=1;
      }
   }
   e+=o*3;
   e=10-(e-Math.floor(e/10)*10);
   if(e==10)
   {
      e=0;
   }
   alert("ヴィータがお答えします。\r\n\r\n"+"チェックデジットは[ " + e + " ]です。\r\n全体バーコード数列="+r+e);
   f(r);
}
f("");
ちなみに、ヴィータの予測入力は大変素晴らしい仕事っぷりで、コード入力にも大活躍してくれています。
いくらヴィータのソフトキーボードが優秀と言ったって、今、この記事を書かせて頂いているWindows8 CP + 自作デスクトップPCのフルキーボードと比べると、入力速度は何倍違うかもはや分からないレベル。それはともかく、この学習結果とか、新しく買ったヴィータにも反映出来るといいんだけど。

■プログラム起動■

例によって、プログラムはブックマークから起動します。「ヴィータチェックデジット」って名前で登録しています。



■ヴィータ・パッケージのバーコードのチェックデジットを求めてみる■

実際にバーコードのチェックデジットを求めてみますが、「本当に正しいのか?」という検証も同時にやりたいので、現物のバーコードを使って計算結果を出してみますね。
使うのは、ヴィータのパッケージに印刷されているバーコードが一番良いかな。やっぱり。
あれのバーコードの数字は「4948872412858」です。
本文の494887241285をヴィータに入力して「8」が求められればOKという事になりますね。では実際にやってみます。


プログラムを起動して、「494887241285」を入力します。ここで「OK」を押して「8」が求められるはず・・・。

「494887241285」から、ちゃんとチェックデジット「8」が求められました。
この数字でバーコードを印刷すると、スキャナでちゃんと読めるものになるわけです。
ちなみに、例によってプログラムは一回毎に終了したりせず、前回の入力内容を復元した上で繰り返されます。終了は「キャンセル」です。

それにつけても、Windows8 CPとヴィータの組み合わせは、ホント嬉しいです。
大好きなマイクロソフト、Google、ソニー、そしてWindowsとヴィータOSが協調しているのかと思うと目頭が感動で熱くなります。
なんかこう、よーしやるぞって一日の始まりに元気が出まくりですよね。

2012年3月30日金曜日

楽しい!! PSVITAでミニプログラミング。指定日サーチを作ってみました。

今回の記事も、PSVITA(プレイステーション ヴィータ)を懐かしのポケコン的に使って一行プログラミングを楽しむ話について書かせて頂きたいと思います。
ヴィータは、ブラウザのブックマークのところにJavaScriptによるプログラミングを書く事が出来る!!というのは前回までの記事で書かせて頂いた通りですが、これが本当に楽しい。

比喩表現ではなくて、本当に一行でプログラミングしなくてはいけないので、ソースの行頭から行末に大きくカーソルを移動する時に面倒とか、見通しが悪いのでデバッグが異様に大変だったりしますが、それはまぁしゃあない。

それよりもプラスの面。
ヴィータのソフトキーボードと予測入力がなかなか素晴らしく、LRキーによるカーソルの移動が可能な特長もあって、プログラムの入力をやっても、決して悪いものじゃないという大発見がありました。本気でポケコン状態です。


■指定日サーチをヴィータで作ってみました■

というわけで、指定日サーチを作ってみました。
これは、年月日と指定日をカンマで区切って入力すると、「その年月日から指定日後は、一体、何年何月の何曜日」なのか?ヴィータが教えてくれるプログラムです。

指定日をカンマで区切って入力するという仕様は、ちょっと悩みました。
プログラムを書ける長さは、いかんせんブックマークに登録出来るURLの文字数しか無い(はず)上に、入力とデバッグを全部ヴィータだけでやらないといけないため、あまり凝ったコードは書けないわけで、コードを楽にする苦肉の策です。

プログラムは以下のようになります。実際は改行やインデントなしで一行で入力します。また、改行コード「¥r¥n」はヴィータでは本当に¥r¥nと表示されてしまうので、¥記号ではなくキーボードからバックスラッシュを選んで入力します。

ちなみにこのプログラムは、「キャンセル」を押下するまで終わらないように作ってあります。

■プログラムコード■

javascript:
function f(v)
{
   var w=new Array("日","月","火","水","木","金","土");
   var d,i;
   var r=prompt("Playstation Vita指定日サーチ\r\n年,月,日,日数を入力",v);
   if(r==""||r==null||r==undefined)
   {
      return;
   }
   var a=new String(r).split(",");
   if(a.length==4)
   {
      d=new Date(a[0],(a[1]-1),a[2]);
      i=parseInt(a[3],10);
   }
   else
   {
      d=new Date();
      i=parseInt(a[0],10);
   }
   d=new Date(d.getFullYear(),d.getMonth(),(d.getDate()+i));
   alert("ヴィータがお答えします。その日は「 " + d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate()+"("+w[d.getDay()]+") 」です。");
   f(r);
}
f("2011,12,17,0");


■プログラムの起動メニュー■

プログラムは、言ったら当たり前ですが、ブラウザのブックマークから起動します。前回作った電卓も登録してありますよー。

■プログラムスタート■

年,月,日,日数を入力します。初期値として、ヴィータの発売日である2011,12,17,0(0は当日)が表示されるようになってます。
ヴィータはくどいですが、LRキーで左右にカーソル移動出来るので入力には超強い味方ですよー。
今回は、2011年12月17日から180日後はいつ?というのをヴィータに聞いてみました。
なぜ180日後かっていうと、ヴィータに無料で付いてきた内蔵3G回線の終了日を知りたいからなんです。

結果が表示されました。
なるほど、発売日に購入した私の場合、ヴィータ内蔵3G回線の終了日は6月14日なのかー。めちゃ長いなぁ。
ところで、いちいち画面にヴィータって名前を表示しなくていいじゃん?と思うでしょうけど、せっかくだから、ヴィータの名前出したいものー。つまんないバカがはしゃいでると思ってご容赦下さい・・・。


■日数だけの入力も可能です■

プログラムコードを読めば分かるのですが、日数だけの入力も可能です。その場合は、自動的に基準となる日付は「本日」となります。正確にはヴィータのシステム日付です。

システム日付から指定の日数の年月日が表示されます。



■過去へ遡る入力も可能です■

単純ですが、マイナス入力すると過去の日付も知る事が出来ます。
コードを短くするために入力チェックは一切やっていないので、文字とか入れないように注意です。

過去の日付も大丈夫です。
ちなみに、前回作ったヴィータ電卓と同じく、再帰処理によって前回の画面が再表示されるようになっています。
終了するには「キャンセル」ボタンを押下して頂く事が必要です。
キャンセルで終了したところです。
それにつけても、ヴィータ本体だけでプログラミングが楽しめるようになっているとは・・・。ソニーやるなぁという感じです。
ただし、タイプミスとかしてプログラムが起動しなかった時は、まるで仕事で追い込まれた時・・・ほどじゃないですが(そりゃあそうだ。)そこそこの緊張感が走ります。
えっ、この一行スクリーンでデバッグすんの??というジワーッと来る軽い絶望感。
ヴィータでプログラムする時は、決して一気に入力しようと思わないで、1ステップづつ入力しては動くのを確認する作業を行い、動いたら次を入力するという手順を繰り返した方が結果的に早いと思います。

2012年3月28日水曜日

PSVITAで懐かしのポケコン的なミニ・プログラミングを楽しむ!!

今回の記事では、PSVITA(プレイステーションヴィータ)でブラウザ+JavaScriptによるミニ・プログラミングを楽しめるという話について書かせて頂きたいと思います。

今までユーザーは何もいじれないのかなぁと思っていたヴィータですが、ブラウザのブックマークの編集において、JavaScriptによるプログラムを書ける事に遅まきながら気が付きまして、それならヴィータを懐かしのポケコンのように使えるのではないか!?と思い試してみました。

■ヴィータ電卓を改良してみる!!■

前回の記事で作ったヴィータ電卓ですが、一回毎に終了してしまって不便なので、以下のような仕様に改良してみました。
(1)キャンセルを押すまでは、終了せずに処理を継続する。
(2)処理を継続した時、前回まで入力した数式を再表示して入力の手間を省く。
(3)計算結果の画面に、入力した数式も表示する。

プログラムは以下のようになります。実際はヴィータからの入力でしかも改行やインデントなしで一行で入力します。
ポケコンよりは低機能ですが、しゃあない。入力チェックは仕様に盛り込んでませんぞ。
ヴィータでも、関数や再帰がちゃんと動く事が分かってオオッそうか!という感じです。

function f(v){ var r=prompt("ヴィータ計算式入力(キャンセルで終了)",v); if(r==""||r==null||r==undefined){return;} alert("計算結果"+r+"="+eval(r)); f(r); } f("");

■実際に、新・ヴィータ電卓を使ってみる■

ブックマークから起動します。もちろんネットワークなんか無くて大丈夫。単体で動いていますからっ。
計算式をヴィータからドンドン入力します。
計算結果です。結果だけポンと表示しても良いんですが、入力した計算式も合わせて表示するようにしてみました。
今まではここで終了して画面が消えてましたが、再帰によって画面を繰り返します。前に入力した数式も入力テキストボックスに再表示するようにしてあります。
前回の入力式が消えないので、少しいじって違う式にするという事も簡単です。
新しい計算結果です。
終了するには、「キャンセル」を押下します。
画面が終了しました。

ミニミニプログラミングだろうと何だろうと、ヴィータでプログラムが楽しめるのはめちゃ嬉しいなっと思います。
ホント、懐かしのポケコンみたいで良い感じですねーー。

2012年3月27日火曜日

ネットワークなしでPSVITAを電卓にする方法について

今回の記事は、PSVITA(プレイステーションヴィータ)を、ネットワークに接続しなくとも「単体で」電卓にする方法について書かせて頂きたいと思います。

肝要なのはやはりブラウザ。ネットワークに接続していなくとも、ユーザーがいじれる部分はやっぱりココしかないわけで、何はともあれブラウザでありますね。
ヴィータは、ブラウザのブックマーク編集のところで、URLばっかりじゃなくて、直接JavaScriptによるプログラムを書く事が出来るんですね!!
冗談でやってみたら動いたんで最初はブーッてなっちゃいました。
ここで次の通りJavaScriptを記述するだけ!! ヴィータからの入力になるので、コードは極力短めにします。変数名とか一文字だい。

javascript:var r=prompt('ヴィータに計算式入力','');alert(eval(r));

これだけで、ヴィータが数式入力型の電卓になります!! ブックマーク名に「ヴィータ電卓」とでも付けておいて、後は計算したくなったらブックーマークから呼び出すだけ。
PCではいわゆる「ブックマークレット」と呼ばれる技術なんですが、ヴィータでも可能なのが分かって嬉しいぞと。
ヴィータのソフトキーボードの数字モードは、幸いにも電卓に向いたレイアウトになってるので、割と自然に入力出来てしまいます。
ちなみに、関数電卓としての利用もOKですが、JavaScriptの数学関数を呼び出す形になるので、960の二乗を求めたいなぁと思ったら

Math.pow(960,2)

という風にクラス名の分の入力が増えてしまう弱みもありますが・・・。
何はともあれ、これで、モバイルルーターや内蔵3G回線の接続を待ったりしなくとも、計算したい時にいつでも計算が出来るようになりました。
まぁ、ブラウザを起動してブックマークを開く手間はありますね。
ホントちょっとしたものだけとは言え、ヴィータ単体でJavaScriptが動作するっ、てだけでも、個人的には面白いですね。面白いというと語弊があるかも知れないけど、どんなにチョッピリでも自分でプログラム出来るのって、コンピュータ!!って感じでウキウキしますよね。

2012年3月26日月曜日

今や作業の多くをWindows8 CPでやるようにしてます

Windows8 consumer previewですが、今のところ大きな問題が出ていないどころか、デスクトップPCにインストールしているが故の快適な作業性とも相まって、今や多くの作業をやるようにしています。

このブログ記事を書かせて頂くのも、ここんところメインはWindows8 CPとChromeブラウザになっています。
押しも押されもしないメイン環境のWindows7と比較しても、Windows8 CPは、まるでプレビュー版という事を意識しないで普通に使えています。
普通にというのはもちろん賛辞です。
もっとこう、バンバン落ちたり、日本語がグチャグチャだったり、まぁ体験版くらいの覚悟してました。
ここまで普通に使えると、もうこのままずっとコレでも良いっすけど・・・それ言ったらマイクロソフトの収入にならないからダメかぁ。だよなぁ。うん。

ちなみに、言ったら当然なんでしょうけど、Windows8にもちゃんとWindows Updateがありますね。
[Windowsキー] + Xキーでメニューを呼び出して、「ファイル名を指定して実行」から「wuapp」って入力するとWindows Updateの画面が出ます。
うーーーーーーん。やっぱり[START]ボタンはあった方が良いんじゃないかなぁ。
製品版ではスンナリ復活してたりして・・・??

2012年3月25日日曜日

日曜日、今日もヴィータが情報端末として大活躍中です!!

今日は日曜日。個人的に、いよいよ昨日から情報端末としてさらにロケット点火したPSVITA(プレイステーションヴィータ)ですが、今日も大活躍してくれています。
いやー、ヴィータ・ブラウザ+iGoogleガジェットの組み合わせは、PCからも操作出来るから想像以上に好ましいですね!!


■ヴィータを備忘録にする!!■

前回の記事では、ヴィータで待望のメモが取れるようになったぞーと書かせて頂きましたが、今回はさらに一歩進みました。
「ToDoリスト」で備忘録を手軽に管理出来るようになり、嬉しさプラス・ワン。
そうっ、こういうのが欲しかったんですよーっ。


**********************************
突然ですがコラム
知ってましたか?ヴィータ入力便利ワザ
**********************************
※ヴィータで文字入力中はLRキーでカーソルを移動出来ます!
※ドロップダウンリスト等の内部スクロールは、LRキー同時押し+フリックです!
コラム終わり


ヴィータの文字入力は、実は結構良いレベルにあると思うんです。現在唯一の手段である標準のソフトウェアキーボードが中々のデキだし、突然コラムでも書かせて頂いた通り、LRキーのカーソル移動が地味どころか相当に快適。むしろ、ソフトウェアキーボードの開発で工数を使い果たし、他の標準アプリが「やっつけ」状態になっちゃったんじゃないか?とさえ思える程。実際の現場は分からないですが。



■Google電卓もバッチリ使える■

ヴィータは文字入力が結構良いレベルにある、という話をしましたが、それによってGoogle電卓もWindows7やWindows8程ではないにしろ、バッチリ使えます。
たとえば、ピタゴラスの定理を使ってヴィータ自慢の有機ELモニタの対角線ドット数を求める・・・なんて計算も簡単。
関数電卓のボタン操作に煩わされる事なく、直接計算式を書けるって行為が、ヴィータもやれば出来るわけで嬉しい。


■日曜のブランチに、強化新型??となったヴィータだけ持っていく■

(たまの)日曜日のブランチに、持っていくのはヴィータだけ。こういうパターンはもちろん今までもやってましたが、今週からは実際に「バリバリ使える情報端末」という強化新型??となったヴィータを持って行けるわけで、頼もしさが全然違う。

タイマーはちょくちょく使いますねぇ。
しかも、ブラウザを中断して「ライブエリア」に戻ったりしても、タイマーがきちんとカウントを続けてくれているんです。
電源ボタンを押してスリープにしても大丈夫でした。
サウンドは鳴らせないけど、逆に、お店とかで間違ってサウンドをジャガジャガやらかす羽目になる事もないし、自然とフェイルセーフになってたりするかなぁと、良い方向に考えればいいや。
通信速度は、メガとか全然いらないっすよー。
私の浅い経験からしか言えなくて申し訳ないですが、実測で200Kbpsくらいあれば御の字。
b-mobileの1GB定額は、少なくとも私の行動範囲内ではメチャOKです。
そこまでするなら、素直にandroid端末を使えばいいじゃないか!とは思うんです。
そう、androidなら、今のヴィータなんかどうしようもないくらい、遥か上の上の便利さと快適さに恵まれている。
私にとってPDAへの最大級賛辞である「シャープのザウルスのスーパー進化系」を贈るくらい、androidは素晴らしい。
・・・んだけど、なんかこう、こんなにガタピシなのに、妙に大好きなヴィータで色々やりたいわけです。
まだソニーのアップデート待ちの部分が多い、いや、多すぎるけど、長年待ちにまったゲーム機の最終形態であり、理想形なのがヴィータで、やっぱ、その嬉しさの牽引力がスゲェんでしょうね。

PSVITA(ヴィータ)を、情報端末として強化する話

今回の記事は、PSVITA(プレイステーションヴィータ)を情報端末としてさらに強化する話(いや、もしかするとロケット点火かも!)について書かせて頂きたいと思います。

ヴィータは、ゲーム機としてはともかく、情報端末としては基礎的なアプリが無くてイマイチなのが正直な現状です。
メモも取れない、電卓もない、月のカレンダー一覧すら無い。
でも、お出掛けした先でヴィータをどうしても情報端末として活用しなければならない局面に遭遇してしまいまして、追い込まれて思い付いたのがコレです。ヴィータのブラウザからiGoogleのガジェットを呼び出して、これをヴィータのアプリとする解決方法です。

言ったら実にシンプルな解決方法なんですが、今まで頭が回らなかったのです。本当に申し訳ありません。

■ついにヴィータでメモが取れるようになった!!■

すると、今まで個人的にめちゃくちゃ渇望していた、ヴィータによるメモ取りが実にアッサリ(!!)実現出来てしまいました。
おおお・・・そう、これ、「孤独のグルメ」という漫画風に言えば「こういうので良いんだよ!」という感じです。
ヴィータのソフトキーボードは、既にツイッターアプリで大活躍していますが、そのポテンシャルがついにメモでも生きる日が来たわけです。
まぁ、ヴィータOSのホーム画面に表示したり通知したりは出来ないから、備忘録としては弱いかも知れないですが。
とにかく、ようやく待望のヴィータ・メモ帳ですよ。素直に嬉しい。

■ヴィータがストップウォッチになる!!■

メモばかりではありません。ヴィータがストップウォッチにもなります!!
機能はシンプルですが、ヴィータはフルタッチでしか使えないから、むしろその方が良いかも知れません。最先端のゲームをドライブするための強力なCPUが幸いしてか、正直言って処理能力が低いヴィータ・ブラウザを間に挟んでいても、カウントがガタついたりせずにキッチリ使えます。

■ヴィータがカウントダウンタイマーになる!!■

このストップウォッチですが、設定で「カウントダウンタイマー」にもなります。iGoogleに2個貼り付けて、片方をカウントダウンタイマーとして使います。
今回、どうしても必要だった機能というのは実はコレなんです。
もうバッチリでしたよ。カウントダウン時間を3つまでプリセットしておけて、プリセット番号をタッチすればその時間をカウントダウンしてくれます。
時間が来たら、自分で設定したメッセージを表示出来ます。メロディーを流す事は出来ないので画面を確認する必要がありますが、それはまぁしょうがない。実際に大助かりでしたもの、ありがてぇーっ。

■ヴィータが電卓になる!!■

情報端末どころか昔からの携帯電話にも普通にあるのに、ヴィータには全然無かった「電卓」もようやっとOKですよー。
ソニーの開発者は「電卓なんかどっかにあるだろ?」と考えているんでしょうけど、それを言い出したらアウトって言うか、情報端末も何も話をするステージにさえ立てないわけで・・・。電卓が使えてこんなにホッとする端末なんてこの世でヴィータだけなんじゃあるまいか????
21世紀の最新鋭端末で、こんなに電卓がありがたいとはっ!!

■ヴィータでもようやく「月単位」カレンダーが見られる!!■

今日の日付はスタート画面(ロック画面)で確認出来るんですけど、普通の月のカレンダー形式とか表示出来ないんですよね。そのせいで、家族がヴィータをボロクソ言い出した事があって、焦りました。ホーム画面の壁紙にカレンダーの壁紙を貼ることで気持ちを鎮めてもらいましたが、ようやっとこれでOKかぁ。


■ヴィータで翻訳しよう■

翻訳とかになると、androidなんかは、もうとっくに音声で入力した言葉を翻訳するとか・・・ヴィータが石器時代なくらい遥か遠い未来に行ってしまっているけれど・・・それ言ってもしゃあない。とにかく翻訳も出来るのです。


■ヴィータの文字入力の注意点■

ヴィータのブラウザは、まだまだ未成熟。それゆえのバグか仕様か分からないですが、ブラウザの途中のテキストボックスに文字入力しようとすると、フォーカスはそこに当たっているものの、表示がページのトップに勝手にぶっ飛んでしまいます。
画面をフリックして入力位置に戻す手間が発生するのが残念な点。
ヴィータのブラウザは、開発者自身が「色々やべぇのヨ」と知っているはずなので、待てば改良版を出してくれるはず。その時を楽しみに待ちましょう。


■iGoogleの全体画面■

今回の話の基幹となるiGoogle。その全体をヴィータ・ブラウザで表示したところです。
私はPCでもandroidでも何でも、ブラウザのホームページはiGoogleにしています。
iGoogleは、複数のページ(タブ)を作れるので、「アプリ」というタブを作ってそこにヴィータでの利用を想定したガジェットを並べておいて、ここをヴィータ・ブラウザのブックマークに登録しているわけです。

まぁ、ネットに接続出来ないと何も出来ないという欠点は残存するものの、それはもうしゃあない。ソニーの開発現場は、もう目が回る忙しさなんだろうし、自分で出来る事はやっとかないと不幸になるべくして不幸になるだけだもんさ。これに限らず何事もそうだし。
さてさて、iGoogleの設定やアプリ(ガジェット)の追加はもちろんヴィータからもOKですが、クリエイト系の作業となれば、Windowsにかなうものはありません。
というわけで、外での更新はLOOX U/G90の出番です。「アプリ」タブをLOOX U/G90のChromeブラウザで表示した画面が上記です。
もちろん、Windows8 consumer preview (Windows8 CP) + Chromeブラウザからでも、iGoogleはキッチリ編集出来ます。
Windows8での作業風景も掲載させて頂きますね。

それにしても、なんかこう、情報端末だけを考えてしまうと・・・行き着く先はWindows7かWindows8搭載のPDAマシンになっちゃうんで・・・複雑な心境でもありますね。