holmesのメモ帳

始めなければ始まらない。頭の中で考えているだけなのは終わりにして手を動かして色々と作っていこう。

デスクトップアプリをストアで販売できるようになれば良いのに

Windows 8の次期アップデートではMetroアプリがデスクトップでも作動するようになる | TechCrunch Japan

記事のタイトルを見て一瞬期待したけど自分が欲しい機能では無かった。

デスクトップからMetroアプリを起動できるのではなく

デスクトップアプリをストアで販売できるようになるのが一番望んでいる事。


ちなみにデスクトップアプリをストアに掲載する事は今でもできる。
ストアにデスクトップ アプリを掲載する

通常、デスクトップ アプリをストアに掲載する手順は次のとおりです。

ハードウェアおよびデスクトップ ダッシュボード企業アカウントにサインアップします。
このアカウントを使って、Windows アプリ認定キットの結果を提出します。
結果が承認されたら、アプリを Windows ストアに提出します。
手順 1 と同じアカウントを使って、Windows ストア開発者アカウントの企業アカウントとしてサインアップします。
Windows アプリ認定キットで合格した承認済みアプリがデスクトップ ダッシュボードに表示され、Windows ストアへの提出準備が整います。
Windows ストア向けの内容情報を作成し、Windows ストア認定を行うために提出します。
アプリが Windows ストア認定に合格すると、Windows ストアに掲載されます。

Windows アプリ認定キットというのがどんな物かは知らないけど
セキュリティ関連のチェックとかストアアプリの基準を満たしているのをチェックしているのかな。

問題は課金を自分で用意しないといけない点
こんな事も書いてあるのでまだ個人開発者向けという感じでは無さそう。

ほとんどの場合、既に Windows ストア以外の場所でアプリを購入できるようになっていて、具体的な製品情報やマーケティング情報が掲載されていることと思います。


この課金の部分までストアでできるようになったら個人開発者は増えると思うし
ちょっとした便利なデスクトップアプリが増えればWindows8ユーザーも増えると思うんだけどなぁ。

Surfaceのキラーコンテンツになるかもしれないやつ

艦これの影響でSurfaceが売れているという半分冗談みたいな話をMSの人もしていたけど
もう1つキラーコンテンツになるかもしれないやつがある。

それが小学生にも使える教育用のプログラミング環境のScrach

公式サイト
http://scratch.mit.edu/

MITメディアラボで開発されたこの教育用のプログラミング環境
世界中で人気のコンテンツだし、日本の小学校でも導入が始まっているところもある。

TED:ミッチェル・レズニック 「子供達にプログラミングを教えよう」


前のバージョン(1.4)まではWindowsやMacにインストールして使うやつだったけど
最新バージョンの2.0ではFlashで動作するようになっている。


こんな事もできたりする。
「ScratchゲームにKinectをつなげました」



個人的にSurface2には興味あったけど
子供用に併用できるかも?と思ったら欲しくなってきた。


マイクロソフト Surface 2 64GB 単体モデル [Windowsタブレット・Office付き] P4W-00012 (シルバー)
マイクロソフト Surface 2 64GB 単体モデル


小学生からはじめるわくわくプログラミング
小学生からはじめるわくわくプログラミング

.NETでテキストファイルの文字コードの判定

特定の業務のデータの場合は文字コードがある程度一定になるけれど
汎用的なツールを作ろうとするとどんな文字コードのファイルが来るか解らないので
文字コードの判定が必要になってくる。

しかし.NET Frameworkでは文字コードを判別する方法が用意されていない..

最初に参考にさせて頂いたのはDOBON.NETさんの「文字コードを判別する」というページ
http://dobon.net/vb/dotnet/string/detectcode.html

Jcode.pmを参考にした方法という事でロジックを追いかけてみると
全ての文字をバイナリ配列に変換しEUCSJIS、UTF8の可能性の高いところにカウントして
最終的にカウントの一番大きかったのをこれじゃない?って感じで返してくる

で、最初はこのライブラリをそのまま使っていて問題なかったのだけど
ある日別の仕事で扱ったデータを試しに流してみたら問題が起きた。
SJISであるはずのテキストファイルがEUCに判定されてしまったのだ。
同形式のファイルが複数あったが全てEUCと判定される。

1つ気になるのはこのファイルには半角カナが多いという点。
これが判定を狂わせている可能性はあるかと思った。
(細かくは調べてない)

時間も無いしどうしようかと思っていたらこれの改良版を書いている人がいた。

HNXgrepのC#による文字コード判定Add Star
http://d.hatena.ne.jp/hnx8/20120225/1330157903

基本的には、DOBON.NET様のサイトで公開されているJcode.pmのC#移植版 http://dobon.net/vb/dotnet/string/detectcode.html の考え方をベースに、

UTF16(BOMなし半角英数のみ)ファイルの検出機能を追加
EUC/SJISの判別を強化するため、半角カナ文字の連続/全角文字の連続についてはポイント評価を高めに補正(※)
といった独自対応を行っています。

やはりポイント評価の数値を変えて微調整するしかないのか。


で、このロジックに置き換えて試してみたら問題のファイルは正しく判定された。


あくまでも可能性を追求するロジックではあるので誤判定される可能性は残されているが
とりあえずはこれで様子を見てみよう。


文字コードの判定ロジックなんて今まで気にした事なかったけど
時間のある時にまた追いかけてみようと思う。

ダウンロード販売対応だけど住所入力は必須なのね

現在ダウンロード販売対応のショッピングカートについて調べている。

ダウンロード販売という用途だけではなくシェアウェアのライセンスだけをショッピングカートで売る事はできないかなと。

例えばシェアウェアは別にホームページを用意してそちらからダウンロードしてもらう。
試用して気に入ってもらえたらライセンスを購入してもらう。

そのライセンスを購入する仕組みに最近安くなってきたショッピングカートは使えないかなという感じ。

Vectorも検討していて
クレジットカード決済やメールのやり取りを自動化できるなどのメリットはあるのだけど
個人の場合手数料15%取られるし入金までに時間かかる。

で、とりあえずはVector以外のショッピングカートを試してみようと調べていたのだけど1つの壁にぶつかった。

最近のショッピングカートはデジタルコンテンツのダウンロード販売に対応しているので住所入力しなくても購入できるオプションくらいあるかと思っていたらそうでもないっぽい。
いくつかのカートを調べていて住所入力をスキップできるカートにはまだ出会っていない。

ちなみにVectorの場合は名前、email、電話番号が必須入力項目で住所入力欄は無い。

デジタルコンテンツをネットで購入するのに必要のない住所を入れる事で購入をためらう人がどれだけいるか解らない。
あんまり気にする程の事でも無いだろうか?

ちなみに、いくつかのショッピングカートに住所入力をスキップする方法は無いか問い合わせしてみたけどどこも検討の余地はなさそうな返事だった。

まぁVectorも併用すれば良いのだけど
仕事で顧客のショッピングカートのデータを使って何かするという事が増えてきているので慣れる為に自分でも1つ運用しておこうというのも大きな目的なので今回はどれか選んで試してみようと思う。

InstallShield2012で表示を日本語にするには

開発環境をVisualStudio2012に移行しようとしているのだけど
以前から言われている通りセットアッププロジェクトがIntsallShield Limited Editionしか付属しておらずしかも英語版という事で困り中。

とりあえずテストで適当なプロジェクトを作り試してみることに。

慣れないInstallShieldの設定を英語版で頑張って作ってみて
実行すると表示も英語になってしまった。

f:id:holmes:20131021172733p:plain


どうやらここをいじれば日本語表示なるっぽい。
(1)「Organize Your Setup」 の 「Setup Language」を「Japanese:日本語」に変更
f:id:holmes:20131021172848p:plain


作りなおしてみて実行してみると・・
f:id:holmes:20131021173040p:plain


これで何とか作る事はできそうだけど
細かい設定はまだ良くわかってない

IntsallShield Limited Editionの設定画面を日本語化できないのかな・・

カラーミーショップのAPIを.NETから使ってみた

「カラーミーショップ」APIを全プランで無料提供開始!


カラーミーショップのAPIが全てのプランに無料公開というニュースを見たらちょっと作ってみたいものが出てきたので.NETから操作できないか試してみた。

開発環境はVisualStudio Professional 2012
言語はVisualBasic




まずはカラーミーのデベロッパー登録
http://api.shop-pro.jp/developers


仮登録されメールが送られてくるのでそこから本登録

ログインした後でアプリケーションの登録

f:id:holmes:20131018165635p:plain

アプリケーション名は適当に入力

「Webアプリケーション以外を作成する場合は、
リダイレクトURLに urn:ietf:wg:oauth:2.0:oob を登録してください。」
とあるのでリダイレクトURLにはそのまま「urn:ietf:wg:oauth:2.0:oob」を入力



認証方式はOAuthを使っているというのでまずはそこから調査

そういえばTwitterクライアントのTweenがOAuth対応になっているし
オープンソースだったようなと思い探してみるとTweenの作者きりさんのブログにこんな記事が

OAuth(xAuth)のVB.net実装サンプル

すばらしいです。
このライブラリをそのまま使わせてもらいました。



まずはWindowsのFormにWebBrowserのオブジェクトを貼り付け認証ページを表示させます。
必要なパラメータはこのページの「2. 認証ページを利用者に表示します」を参考にします。

f:id:holmes:20131018173856p:plain

ここでカラーミーショップの管理者IDとパスワードを入力してログインします。

すると認可コードを取得する事ができます。
このページの「3. 認可コードを取得」にあるWebViewを用いる場合を参考に認可コードを取得。


次にこの取得した認可コードをアクセストークンに交換します。
「4. 認可コードとアクセストークンを交換」の部分。

結果はJSON形式で返ってくるのですが
.NETでJSONを扱うにの何が良いか調べたら出てきたのが「Json.net」
これはNUGETでプロジェクトに取り込めます。


これでやっとアクセストークンを取得する事ができました。

今後はこのアクセストークンを使ってカラーミーショップのデータにアクセスしていきます。

APIの操作方法はこちらのページを参考にします
カラーミーAPIインターフェイス v1

例えば店舗情報から店IDと店名を取得する場合は
WebRequestを使って以下のURLを呼び出します

Dim webreq As System.Net.WebRequest = System.Net.WebRequest.Create("https://api.shop-pro.jp/v1/shop.josn?fields=id,title")

webreq.Headers("Authorization") = "Bearer " & m_strAccessToken


Headers("Authorization")の部分は取得したアクセストークンをここで設定しています。
これを指定しないと権限が無いとエラーになってしまいます。

結果はJSONで返ってくるのでここからidとtitleの値を取得します。


16日にAPIが公開されてからここまで2日かかりました。

ふだんWebの仕事をしている訳ではないのでOAuthとかも初めてでしたのでなかなか大変でしたが
これでやっと思いついたアイデアを形にできる入口に立てました。


========= 2014/11/10 追記 =========

コメント欄で質問があったので簡単ですが説明を

kiriさんのサイト(OAuth(xAuth)のVB.net実装サンプル - きりの日記
に「オリジナルなこちら」というリンクがあると思いますが
その先のsourceforgeのサイトから以下の3つのファイルを取得します。
・HttpConnection.vb
・HttpConnectionOAuth.vb
・IHttpConnection.vb

それをプロジェクトに追加してください

f:id:holmes:20141110093728j:plain


そしたらFormでも何でも良いので

kiriさんのサイトの
使い方サンプル(xAuth)
初期化~認証まで

を参考にとりあえずはカラーミーのAPIの認証を通るところまで試してみて下さい。

それができたら次のステップで店舗情報や商品情報、受注情報の取得に進みます。





AccessMDBのデータが時々消える謎現象

取引先で動いているシステムでAccessMDBのとあるテーブルのデータが5,000件を超えた辺りから動きが怪しくなってきた。

VB6+AccessMDBで作ったシステムなので相当古いのだが今でも使われている。
.NETで作り直したいけど予算が...

それはともかくこんな現象
・日々の業務ではそのテーブルに追加・更新のみを行う
・5,000件を超えても問題なく処理される日もある
・数週間に1回突然テーブルのデータがランダムに消えて5,000件ぴったりの状態になってしまう。



気になるのが2点
・サーバーの共有フォルダにMDBが置いてある。
 (システム利用者は1人のみなので同時利用はない)
・Officeのアップデートがされていない(できない環境)

Accessのバージョンがいくつなのかは次回訪問時に確認予定だけど
環境によってこんな事が起こるなんて事あるのかな?


今のところさっぱり解らない。

明日台風が去った後で訪問できそうなので
詳しく調べて来る予定。

    • 追記

他に近い現象の事例を探していてやっと見つけた

何かの拍子にレコードが消える
http://www.accessclub.jp/bbs/0190/beginers59794.html

あとこれ!

Access 2007 - 最適化で DB 消失バグにご用心
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsTSht2007Bug.html


どうも今回のシステムでも最適化のタイミングで消えているような気がしてきた。
VB6で作成したシステムではシステム終了のタイミングで最適化の処理を走らせていたのだ。

こちらの客先では簡単にWindowsUpdateやOfficeのUpdateをできるような環境ではないので
それをお願いする事はできない。(というか許可が降りない)

古いVB6の開発環境をVirtualPCのXPModeに残してあったので
そこでシステム終了時のMDBの最適化をやらないように変更してみた。


とりあえずこれで様子見てもらおう。