最近は連続してヴィータでプログラミングする話になっていますが、一人のヴィータ好きの微熱だなぁと思ってご容赦願うばかりです・・・
しかし、ヴィータは全然売れていないけど、それは無関係にホント好き。だいいち、発売後間もないのに、ここまでスポーツやアクションなどゲームが充実している上に、本体だけあればミニプログラムも楽しめるというのは、やっぱり大きい。
ちょうど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が協調しているのかと思うと目頭が感動で熱くなります。
なんかこう、よーしやるぞって一日の始まりに元気が出まくりですよね。