UWPアプリを公開する前に読んでおかないと,ということでずっとUWP UXガイドライン(PDF版)を読んでいたのだが,ようやく読み終わった。それほど新しいことはなかったけど,アイコン周りとSegoe MDL 2は参考になったかな。

ガイドラインとは関係ないけど,Windows StoreのKPIとしてクラッシュ回数も関係しているという話をどこかで読んで,GW中にひたすらバグFixしていた。1ヶ月でクラッシュ600回が多いのかよく分からないけど,ほとんどが読み込み中の操作っぽいのでかたっぱしから修正。多少ランキングに貢献するのかなあ。

Analog Book ReaderのUniversal Windows Platform(UWP)化を進めているのだが,折角UWPにするならWindows 10 Mobileも試してみたい。てことでエミュレータも試さすにいきなりFREETEL KATANA02を購入。安かったので。。。

どうやれば自作ストアアプリを試せるのか分からないけど,いきあたりばったりでやってみる。とりあえず開発者モードに変更して,PCとUSBで接続。Visual StudioをDeviceモードにして,ARMデバッグしてみた。お,いきなり動いた。スゴイ。さすがUWP。でもUIがごちゃごちゃしてるのと動作が遅い。このままPhone対応で公開してもしょうがない。てことで次のリリースではPhone非対応にしよう。

2016042901

で,少し触ってみたのだが,意外に今使っているNECのAndroid(Medias N-04E)の代わりになるかも。Outlook使えるからDocomoメールも受信できそうだし,サービス系はEdgeでなんとかいけるし。ただ,GPSの精度が少し悪いかな。Docomo SIM入れてA-GPS的な感じにしてみたけど,2ブロックくらいずれる。散歩に使うのに少し厳しいかも。

Analog Book ReaderのUWP移行がひとまず完成。GW中にテストをしてアップロードできるかな。

前回の宿題としては,GridViewの選択についてはとりあえず右クリックで行うことにした。バージョン情報ダイアログはUWP sampleのUI Basic SampleにあるようにPopupで対応した。

UWP対応だけでは寂しいので,ずっと直したかった画像のぼやけを修正。今のバージョンでは,画像をCanvasの機能で拡大縮小しているため,拡大縮小の精度が悪い。キャンバス自体を拡大率に合わせて大きくしたり小さくしたりすれば画質が高くなるのだが,WinrtではLayoutTransformが使えないため,難しかった。そこはUWPでも同じなのだが,Silverlight toolkitのLayoutTransformerクラスをUWP化して使っている例があり,同じように対応した。だいぶ画質が上がるはず。

情報処理試験の日。去年エンベデッドに受かって,残るは論文(とITパスポート)だけということで今回受けるつもりはなかったんだけど,論文不要な情報セキュリティマネジメントというのが新設されたので受けてみた。セキュリティスペシャリストの下位互換だったら受けないけど,ユーザ側の試験なので勉強の価値はあるかなということで,一応本買って勉強した。

午前は知識問題がほとんど。知らない用語もいくつかあったけどなんとなく答えは分かる。40分くらいで終わって退出可能時間まで暇だったのでウェザタイのアイデアだししてた。午後は国語の問題。多少ややこしい問題もあったが,全体的に素直な問題だった。全体的に計算も深い知識も必要なく,セキュリティスペシャリスト持ちにとっては簡単。選択式じゃなくて記述式にしたら丁度良い難易度かも。

で,全部マークシートだったので即日解答発表。午前1問だけ間違って49/50+32/32。惜しい。まあ,セキュリティスペシャリストとったのは10年くらい前なので,最新の知識を勉強する機会ができてよかったかな。

Weather Typing 3の作業が一段落なので,以前からやりたかったAnalog Book ReaderのUniversal Windows Platform対応を検討。UWPプロジェクトを作って既存のソースコードを追加,ビルドし直すところまではサクサクできたが,動かしてみるといろいろおかしなところがある。

  • 戻るボタンが動かない
  • ダイアログのレイアウトが崩れる
  • Semantic zoomがマウスでできない
  • ScrollViewerのズームがマウスでできない
  • GridViewで右クリック選択できない
  • ドラッグアンドドロップができない
  • チャームがない

戻るボタンについては自分でボタンを付けるのではなくタイトルバーに付けられるようになっていた。確かにWindows 10のアプリはそうなっているのでそれでOK。

var view = SystemNavigationManager.GetForCurrentView();
view.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
view.BackRequested += OnBackRequested;

レイアウトはまあ仕方ないので地道に直そう。


Semantic zoomに関してはMSのサンプルでもできないし,標準の時計アプリもズームできなくなっている。MSとしてはなかったことにしようとしてるのかなあ。

追記。と思ってもう少し調べたら以下のコードでできた。下のScrollViewerと同じで,ZoomModeを設定しないとホイールズームが使えない。



ScrollViewerのズームはScrollViewer.ZoomModeを設定することでできるようになった。Windows 8でもあったようだけど,デフォルト値が違うのかな。


GridViewで右クリック選択できないのは一番困るのだが,Windows 8.1では,右クリックで選択,左クリックで開くという動作ができたけど,Windows 10ではどちらかの動作しかできない。

ホント? と思ってWindows 10のスタートメニューを試したら確かに選択ができなくなっている。複数のタイルを移動したくなっても1つずつドラッグしないといけないのか。ずっとこの仕様でいくのかな。タブレットでもSwipe選択がなくなっているような・・・。


ドラッグアンドドロップができないのはWindows 10で増えたプロパティDragEventArgs.AcceptedOperation にDragOverから設定してやればOK。ついでに

if (e.DataView.Contains(StandardDataFormats.StorageItems))
{
    var storage = await e.DataView.GetStorageItemsAsync();
}

でファイルのドラッグアンドドロップができるようになる。まさにこれがやりたくてUWPに移行しているのでうまくいってよかった。


チャームは,どうやるのが正しいのだろう。バージョン情報をどこで出すのか? ということだけど,メニューからやるのかな。未調査。

Weather Typing 3.1を公開。ここまででWT2をベースにした作り直しは完了。UIがまだ分かりにくいところがあるのとさすがにマニュアルを作らないといけないけど。

バージョンアップのポイントは,去年のタイピングサミットでの要望の反映とバグ修正。特にロビー機能が使いづらかったのとリプレイがかなりバグっていたのを修正した。

この先は,ずっとやりたかった新たな機能の追加,なんだけど,いろいろ作りたいものがたまってきているので少し先かも。

それにしても,デスクトップアプリはダウンロード実行するハードルが高い。ブラウザで警告が出てOSで警告が出てウイルス対策で警告が出て,全て無視しないと実行できないとは。

Windows Storeレビュー削除について一応MSに問い合わせてみた。結果,荒らしか何らかの理由でアカウントが停止されたんだろう,という回答だった。レビュー内容はちゃんとした内容だったので違うと思うけど,まあいいや。日記ネタが増えたし。

最近,Windows Storeにレビューをもらっても1日で消されてしまう現象が発生している。開発者やユーザからはそもそも消す機能がないわけで,MSフォーラムで調べてみると「Reviews/ratings disappearing」というスレッドで困っている人が何人もいるようだ。Insider Preview版だと消されるという推測も挙がっているが,手元に保存しておいたログを見るとそうとも言えないような。半年経っても無回答というのがWindows Storeの過疎感を感じる。

Analog Book Readerのダウンロードが2万を超えた。ダウンロードグラフを見ると分かるが,ここ最近はほとんど海外からのダウンロード。特にUSからはステキなコメントをたくさんもらっている。Windows 10からのダウンロードが9割を超えているので,そろそろWindows 10 専用にUWP化するのもありかな。自分でも使っているけどドラッグアンドドロップ機能が欲しい。

2016031101

いつの間にか2月が終わる。謎のウイルスに冒された後アメリカに行ってしまったので何もできなかった。

WT3の進捗。ロビーというか対戦の仕方を改善しないといけないのでしばらく修正していたのだが,まずはチャットと対戦ウィンドウの分離,その他ロビーで表示するレベルの選択,状態表示,音再生などWT2が持っていた機能はひととおりできた。

2016013001

で公開しようと思ってロビーにつないでみたのだが,現バージョンも含めて問題点がたくさん。やっぱり実際に試してみないと出てこないバグがあるわけで,公開まではもう少し時間かかりそう。必要なのは分かっていてなかなかできなかったんだけど,WT1の開発の頃のようにできるだけロビー常駐するようにしてみます。

アキバで買ってきた測距モジュール「GP2Y0A21YK」とサーボ「SG92R」とユニバーサルアームを使ってラジコンをバージョンアップ。サーボに測距モジュールを付けて回せるようにした。ついでに今後のためにiPodを設置する場所を用意。測距モジュールから測定した左右の障害物情報をBluetoothで,iPodから取得した画像をWi-FiでPCに送りつけて,PC側で前後左右に車を自律制御するというのが目標。途中からArduinoでロボット工作をたのしもうを参考にやっているが,だいたいPart1+αができた。

はっぱさんとアキバでArduinoワークショップ。前回までのワークショップで,電子工作が本格的になってきたため作業スペースを確保しないと進められないという課題がでていた。その後,ベーマガイベントはんだづけカフェというのを知り,今度行ってみようという話になっていた。ここは無料の電子工作スペースで,はんだづけを中心とした電子工作ができる。というところでとりあえず行ってみたのだが,さすがに無料だけあってスペースが確保できず。

まあその辺りは予想していたので,もう一箇所調べておいたAssemblageに行ってみた。こちらは有料だからか閉店間近だからかゆったり工作できた。

とりあえずはっぱさんにラジコンを見てもらい,はっぱさんのArduinoシールド作りを見学。せっかくだから私も秋月電子で購入した測距モジュールのピンソケットはんだづけをしてみる。さすがにはんだ環境は快適。次の目標はこれを使って障害物を検知するところかな。

いつも年末にやっているソフトウェアのアップデート。MSDNは,去年PremiumからEnterpriseに強制アップグレードされたのだが,Premiumと同様2年で30万円のままらしいので更新。あとはOffice 2016。ついでに今まで使っていたWindows Live Mailも更新されなくなってしまったので,Outlook 2016に更新してみた。以前乗り換えようとしたときは重すぎて諦めたけど今のPCスペックなら問題なさそう。

といったところで終了だったんだけど,なんか突発的にお金が増えたのでAdobe CC Completeを衝動契約してみた。一週間で7年分も利益が出るとは。PhotoShopとIllustratorしか使わないけど。

WT3は・・・ずっとロビーのUIを考えてるんだけどいい案がなくて進まない。これ以上考えても仕方ないので,とりあえずチャット画面を別ウィンドウで開くようにしようかな。

タイピングサミット以来,忙しいのと英語数学の勉強をしていたせいでプログラムしてなかったのだが,そろそろ落ち着いた。とりあえずリハビリとして,しばらくほっておいたAnalog Book Readerのバージョンアップ。1ページ表示できるようにして欲しいという要望を何人かからもらっていたので実装してみた。他にも自分が普段使っていて欲しい機能をいくつかサポートしてみた。

Analog Book Readerは普段使っているので次はこれをやろうというのが自然に出てくるのだが,ウェザタイは普段自分が使ってないのでなかなか手が出せなかったりする。まずはタイピングの練習を復活させるところからやるというのが遠回りに見えて確実なのかも知れない。

以前申し込んだベーマガイベント「ALL ABOUT マイコン BASIC Magazine」に参加してきた。期待していた以上の盛り上がりと内容で満足。たくさん面白い話を聞けたのだが,ネタバレは避けてね,という話だったので必要なところだけ抜き出して感想を書いてみる。

マイコンBasic Magazineは1982~2003まで刊行していた雑誌。私は家にたまたま創刊2号からバックナンバーがあって読んでいたが,リアルタイムには85年~90年くらいにPC6001,ぴゅー太,ファミリーベーシックでプログラムを打ち込んでいた。その後は94年くらいにまた読み始めてPC-9821で4回プログラムを投稿して2回載せてもらった。その後2000年くらいからC Magazineに浮気していたら休刊に。今回のイベントは内容的にも80年代に読んでいた人がメインターゲットで,年齢層は高め。今でも現役で趣味プログラムしている方ってどのくらいいるのかな。

会場はアキバの元中学校を利用したイベントスペース。チケット3000円で470人,その後の売り上げに貢献するわけでもない,という出版社的にはどう考えても赤字だろうというイベントで,この辺を安く抑えつつベーマガらしい手作り感を出すという高度な戦略が見て取れた。機材の不調もどこまでが演出でどこまでが本当なのかよく分からなかった。

トークイベントで一番印象に残ったのは,編集部の皆さんもライターの皆さんも,好き勝手やっていたこと。他の雑誌がやっているからこういう記事が必要,ではなく書きたいものしか書くなという編集長の方針がすごくよかった。趣味のプログラムと仕事のプログラムの両方をやっているけど,やりたいことじゃないといいものはできないというのはよく感じるところ。

トークの中でも,結構今だったら,というか当時でも他の出版社だったらダメなのかも知れないけど,危険な話もちらほら。でもそのくらい自由な雰囲気でないとクリエーターなんて育たないよね,と思ってみたり。

一つ気になったのは,未来のことがあまり語られなかったところ。編集長は電子工作マガジンの企画で自作してたドローンを持ってきていて,さすがやる気満々だったけど,それ以外では昔を懐かしんで終わりという雰囲気が。今も現役という人は少ないかも知れないけど,子供の世代にベーマガみたいな環境を作れるといいんだけど。

最後にベーマガイベントはまだ終わりません,で画面が暗くなったときはベーマガDVD発表か? って期待したけど,普通にエンディングだった。See You Next Eventで終わったけど,DVDで資金を作るという流れに,ならないかな。

ともあれ,長年自分の中ではキャラクターとしてしか存在しなかった編集部の人を見られたり,バトル・オブ・ぷよぷよの中の人が見られたり,P6音声合成の注意事項朗読で笑わせてもらったり,素晴らしいイベント,ありがとうございました。

第2回の感想→現役プログラマとして参加するベーマガイベントII

前回のあらすじ

昨年,タイピングサミットに初参加してWeather Typingへの要望をたくさんもらい,来年は新バージョンを持ってくることを約束するのだった。

準備

てことで,WT3をなんとか対戦ができるところまで完成させたので,大会で使ってもらえるか売り込んでみた。予想通りWindows XPがネックにはなるものの,今年はWindows 7を数台用意する予定とのことで,了承してもらえた。自分も大会のトラブルシュートを兼ねて2日目に参加することに。タイピング自体は前日に一夜漬けをしたが,シングルプレイでギリギリレベル5がやっと。団体戦は去年1ワードしかとれなかったので今年は2ワード取得を目標にしよう。

当日

第7回タイピングサミットの2日目。ほぼ全員が月姫打online(TOL)をやっていたので少し教えてもらったり。去年プレイ動画を見たが,タイピングで戦略性を極めるとこういう感じになるんだろう。相手フィールドを見ながらどれだけのワードを溜めるかとか,キャラクターごとの特殊能力を使って逆転するとか,ぷよぷよ~んを連想するが,実力差があるプレイヤー同士でも勝負になりそうなのはよさそう。だが,やっぱりウェザタイはタイピング要素だけの方向性でいきたいのでこういった戦略性をタイピングだけで表現するのが次の課題。

WT3団体戦

午後の団体戦。WT3をこういった大会で使うのは多分初めてなので,途中で動かなくなったりしたら怖いなあ,という他の参加者とは違う緊張感を持ちながらの参加。間近で見たことでいろいろな要改善点が判明。特にウィンドウが小さいと4人目のプレイヤーの得点が隠れてしまうのは計算外だった。ニコ生配信もしていたので,問題文を大きくすると得点が見えず,得点を見えるようにすると問題文が見えなくなるという。団体戦の結果は他の方のレポートを見てもらうとして,自分はCチームの1人目で参加,5ワード取得。数字,英語,よく分からない言語などが混在したワードで,得意なワードなら取れるという斬新設計。でも得意なワードで戦うというのは新コンセプトでも考えているところで,大きなヒントになりそう。

そういえばワードがXMLになっていて,今回のワードを準備するのに苦労したとというのを聞いて,実は今まで通りテキスト形式のワードも使えるよ,という話をしたらショックを受けていた。マニュアルも用意できなかったので分からないですよね。すみません。スコアとかワードとか,互換性がとれるところはできるだけ互換性をとっています。

囲まれる会

団体戦の後,去年に続けて作者が囲まれる会を開催して頂く。団体戦で気付いたことも含めて改善点を列挙。言いたかったことと違う,言い足りないこと等あれば随時Twitter等で受け付けます。

  • Result画面を表示するのに一瞬固まる
  • カナ入力で「か」「ひ」などをShiftを押しながら打てない
  • 自分がワードを取ったときと相手がワードを取ったときで音を変えられないか
  • ウィンドウを小さくしたときに,4人目のプレイヤー情報を表示できない
  • Ctrl+何かのショートカットで画面が切り替わった後,ハイフン(のばし記号)が拡大縮小になってしまい打てなくなる
  • ネット対戦でホストができるかどうかが分かるようにしてほしい
  • 全体的に動作が重い
  • インターネット上に置いてあるワードを気軽に使えるようにしたい
  • レベルを日本語ワードと英語ワードで分けたい
  • XPで動かしたい
  • 記録をCSV等にExportしたい
  • 結果画面で,グラフ中のワードとスピードの両方を確認したい
  • ロビーでチャットをしながらシングルプレイがしたい
  • ロビー対戦以外で,対戦中に色を変えられない
  • ロビーに入るのにユーザ登録がいるのが入りづらくなっている
  • 対戦相手を締め切るボタンでしめきるといきなりゲームが始まる
  • 観戦モードのような,チャットが盛り上がる要素が欲しい
  • シングルプレイでもワードを混ぜられるといい
  • 入力方式のカスタマイズ
  • 英語以外の言語対応
  • 団体戦モード

なお,団体戦エキシビジョンでたにごんさんがリタイヤしたのは途中でハイフンが打てなくなったのが原因です。

次バージョン

今回,なんとかサミットに合わせてWT3を公開でき,大会で使ってもらった。ただ来年以降も使ってもらうには改善もいろいろある。それとは別に,本来WT3でやりたかったこともたくさんあるので,今回もらった要望なども合わせて作り込んでいく予定。

・・・でもラジコン作りとかもあるので作るのは遅いかも。

Weather Typing 3をリリース。WT2をベースに今の技術で作り直したバージョンなのでできることはあまり変わらないのだが,いろいろ改善はできた。何を改善したかは要望集を参照。主に去年のタイピングサミットでもらった要望を中心に,WT2の作りでは実現しづらかったものを修正した。

で,本当にやりたいのはここからで,以前の日記に書いた新コンセプトを作っていく。新コンセプトを意識して作ってきたのでいくつかのアイデアはすぐに実現できるかな。

Weather Typing 3はもう少しなのだが,別の話題。メインマシンDell Inspiron 17RにWindows 10を入れてしばらく経つがどうもバッテリーが充電されていないことに気付いた。バッテリーの寿命かと思ったが,電源を切っている間は充電されているようなのでOSかな,と思っていた。で,Dell Support Assistというのを入れたのだが,BIOSが更新されているよ,っという通知が来たので,公式ページからBIOSとChipsetを最新にしたところ,直った。基本を忘れていた。

ついでにDellの新しいPCとか見たけど,今使っているPCとスペックがほとんど変わらなかったのでまだまだ買うことはないな,と思った。メモリ16GBとSSDのおかげ。

最近Analog Book Readerのダウンロード数が増えている。詳細を見るとUSを中心にWindows 10からのダウンロードが増えているよう。ただ、Windows 10で動かすとFlyout(ポップアップ)を表示するとボタンなどの色が変になるのが分かっていた。そこで、一日ウェザタイを止めて最近Analog Book ReaderのWindows 10対応をすることに。ストアにはもう申請したので少ししたらアップロードされるはず。

2015082301

詳細。どうもWindows 10でFlyoutを出すとテーマ色が変になってしまうみたいで、Windows 10のバグのような気がする。そのうち直るかも知れないけど見にくすぎるので、とりあえずテーマに関係なく色を固定してしまった。ハイコントラストとかにすると見づらいのかもしれないのでWindows 10が直してきたら元に戻そう。

あとWindows 10ではウィンドウモードで動くようになったのでドラッグアンドドロップとかサポートしたいけど、Universal Windows Appにしないとダメっぽい。ウェザタイ後にやるか。

ベーマガイベント、会場の席数100くらいっぽいから争奪戦かな、と思って当日待機して12時丁度に予約。途中アンケートが出てきたけど、予約完了前だったのでほぼスルーで予約完了。アンケートは内容ほとんど見てないけど、質問したいことを書く欄があったような。事前に教えてもらえるか予約完了後にしてくれればじっくり考えたんだけどなぁ。これはチケット販売システムの仕様らしいので、トラフィックを分散させるとか何か理由があるんでしょう。

お土産付きのVIP席と普通席があったんだけど、VIP席は普通席予約完了したらもう売り切れていた。普通席は30分後に売り切れ。意外と売り切れまで時間かかったなあと思ったけど、その後Facebook情報で会場が400~500人規模だったことが明らかに。どうりで余裕があったはずだ。

てことで、予習?復習?をしに国会図書館へ行ってベーマガを注文。自分が一番読んでいた1986年あたりを見てきたけど、CheckerFlag(投稿プログラムへの講評)が記憶以上に毒舌だった。当時の記憶も思い出してきたけど、前回のテクニック、結構違っているところがあった。

  • 掲載基準:アイデア+テクニック。アイデアが最優先
  • 短くする:論理の塊でマルチステートメントを使う。同じ事は書かずDATAを使う。
  • 見やすくする:サブルーチンコメントを工夫
  • 早くする:論理式(true:-1,false:0)を使う。変数名は短くする。よく使うサブルーチンは前に。
  • マシン語:スクロール、キャラクターなど効果が大きいところはマシン語も可。
  • 入力しやすくする:DATAは16進圧縮する。チェックサムを付ける。

こういうのを特集だったりCheckerFlagで毎月少しづつ覚えていくのはいい経験になっているはず。今の時代こういうゆっくり地力を付けるやり方はできないし。

ウェザタイのインストーラを作ってみた。公開は一通り全部の環境で試した後を予定。

.NET FrameworkとかVCランタイムとか必要なものが増えたり、ファイアウォールの設定を元に戻したりを考えるとインストーラがあった方が便利ってことで。慣れている人向けに今まで通りzipも公開する予定。

インストーラというとやっぱりInstall Shieldかな、使い慣れてるし、ってことでVisual StudioについてくるInstall Shield Limited Editionを調べたんだけど、ライセンスとか制限で悩むのが面倒なのでWiXを使ってみた。WiXはインストーラをXMLで作れるもので、Windows Installerを理解していれば割とサクサク作れる。

2015081301

Weather Typingのインストーラ自体はファイルを指定するだけなので簡単。その後、.NETとVCランタイムを入れるためBundleを作る。あらかじめ用意されている.NET用のパッケージを使うとアンインストールとかがうまくいかなかったので自分で定義したり、バンドルのUIが英語しかなかったので日本語wxlファイルを作ったり結構苦労した。

はっぱさんと第4回Arduino Workshopを開催。といってもここまでくると外での作業は難しいので情報交換だけなのだが。で,電子工作マガジン2015年夏号内のBasicマガジンにはっぱさんのIchigoJamプログラムが掲載されていることが判明。素晴らしい。ベーマガページも大幅増量で,これは別冊化からの独立の流れで復活もあるか?

BasicマガジンはBasic投稿プログラムを載せていた雑誌で,1982年創刊2003年休刊。私の幼稚園以来の愛読書,2回ほどPC98プログラムを掲載してもらったこともある雑誌で,この雑誌がなければウェザタイはなかったし,職業も違いそう。今度イベントがあるようなのでチケットトライしてみようかな。

IchigoJamは,自作Basicマイコンと言えばいいのか。自作と言ってもチップのハンダ付けからやるレベルの自作なんだけど,メモリ4KBでBasicを組むという8bitマイコンもびっくりの内容。当時使ってたPC6001でも16KBだった。ではっぱさんのプログラムを見ていて当時を思い出したのだが,少ないメモリで動作し,雑誌掲載のために短く組むテクニックをいろいろ思い出した。電子工作マガジンで小学生がこのテクニックを使っていたんだけど,既にそこまでの投稿レベルになってるのか。

  • 命令は省略形を使う。PRINTは5バイトもくうので「?」で1バイトにする
  • 同じ理由で変数は短くする
  • IF文は遅いので極力論理式を使う。true:-1,false:0を計算式に組み込む。分かりやすい例でいうと「x = x + 128 * (x > 127)」とか。
  • 行数が多いといろいろ不利なのでマルチステートメントを使う。できるだけ1行に詰め込むってことですね。

あとはどうしようもなくなったらマシン語を埋め込むとかPEEK/POKEでシステムのメモリを直接読み書きするとかですかね。全体的に,C言語でこんなことしたら怒られる感じですね。

WT3テスト公開して,日々バグ報告が挙がってきている。致命的な問題も既にいくつか挙がっていて,すごく助かる。テスティングのクラウドアウトソーシングってことですね。単に他人にテストしてもらっているとも言えるけど,開発者としてはテストリソースが足りないのを補えて,ユーザとしても早く使えて貢献もできるという方法で,双方にメリットがある気がする。

今はまだバグ報告系のものが多いけど,使いづらい系の指摘も募集中ですので,使い慣れてしまう前に指摘よろしくです。その辺の指摘が欲しくて,あえて使い方を何も説明していなかったりもします。

Weather Typing 3をテスト公開。テストに参加して頂ける方は以下からダウンロードしてください。

Weather Typing 3テスト公開用ページ

まだまだバグが残っているので,バグを発見した方はtwitterでもメールでも何でもよいので,連絡よろしくです。

Twitterにも書いたけど,Weather Typing 3のテストバージョンは今月末に公開予定。一ヶ月テストして,9月正式リリース,その後新コンセプト版を検討かな。

WT3プロジェクト開始以来ずっと考えていた新コンセプトが決まった。「タイピングの奥深さが分かる仕組みと競い合う場」という感じで,いろんなタイピング要素を許容した上で,それを「ワードを早く打ち切った方が強い」の単一の価値基準で競うというもの。

タイピング要素は,TODみたく動体視力とか反射神経とかタイピングに関係の薄い要素は排除して,WTらしくガチな要素。例えばどんな入力方式か,ローマ字のカスタマイズの最適化,どれだけ難しいワードを打ったのか,など。今までも結局はこの辺りの要素が含まれて対戦結果が決まっていたわけだけど,それを,見て分かるようにしたい。今までのWTだと「早いなあ」で終わりだったのだが,「上級者はこんなことしてるのか」というのが分かるように。

で,コンセプトが決まった後いろいろなアイデアが出てきているのだが,どうしよう。締切まで時間がないのと,このコンセプトだとWT2ネットランキングのリセットが必要なんだよね。一旦WT2を使いやすくした版を作ってから別ものとして出すか迷い中。

余談だが,このコンセプトまでくるのにはいろいろヒントがあったわけで,それぞれ感謝。
・タイピング同人誌でタイピングの奥深さを知ったこと
・タイピングサミットでもらった要望の中の隠れた需要
・折角作るなら戦略性を上げて対戦特化すれば? というY氏のアドバイス
・ぷよぷよ(?)

WT3。スコアファイルの構成が決まった。ついでに公開鍵を使って私が署名したファイルだけをアップロードできるようにしてみたり。掲示板でちょうど指摘があったけど,ワードのランダムアルゴリズムもDRBGを使ってワードを原理的に予測不能にしたりして暗号技術をふんだんにつかっている。今時のアプリ開発ではこういう技術は必須ですね。

TOEICに続いて情報処理試験の結果発表。エンベデッド合格してた。NW,DB,SC,ENを取ったのでスペシャリスト系は制覇か。後は論文系なんだけど,今のところ勉強するモチベーションがないのでここまで。

第200回TOEICの結果,915点。目標をクリアしたので卒業してSW試験に向けて勉強しよう。区切りなので,900点の英語力はこんな感じというのを記録しておこう。

全体としては,800くらいまでListeningとReading中心にやっていたが,その後1ヶ月アメリカで語学研修をやった後,SpeakingとWritingの練習にシフトした。結果的に,時間はかかったけど効果的に基礎を付けられたと思う。

Listening。600点台のときは早くてTOEIC半分も分からなかったけど,Friendsを1話5回くらい観てたら段々遅く感じるようになった。900点を超えた今だと,遅くて逆に集中力が続かない感じ。でも実際どの程度かというとネイティブが分かりやすく話してくれれば分かる,というレベルなので,900を超えてようやく基礎はクリアという感じしかしない。

Reading。ハリーポッター,ダレンシャン,シドニーシェルダン,英語の技術書で多分50冊くらいは読んだ。今は英語を読むのにめんどくさ感はない。たまに,文章を読んだ後に今読んでたのって日本語だっけ,英語だっけ,と分からなくなったりもする。ただ,日本語だと1ページ1分くらいとして,英語だと3~4分くらいはかかるのでやっぱりまだまだ遅い。

Speaking。よくTOEICは話す能力を測れない(今はSW試験があるけど)と言われるが,実感としてはListeningとReadingだけでもSpeakingの力は知らない間に身につくようだ。というのも,自分はひたすらListeningとReadingを続けていたら,800点を超えた辺りで英語が思い浮かぶようになった。というかそうなってるのにある日突然気付いた。この状態でSpeakingの練習を始めると,頭の中にいろんなパターンがインプットされていて,自分がしゃべった文のおかしいところが自分で分かるので,練習効率がいい。

Writing。これもListeningとReadingを続けていると,文章のパターンを覚えるので,こういう感覚のときはこういうフレーズ,というのが自然に分かるようになる。単語についても普段使う単語はほとんど見たことはあるはずなので,辞書を引けばどの単語を使えば自然かだいたい判断がつく。

ということで結論としてはひたすらインプットすべし,てことで,多分英会話の訓練だけやっても相当効率悪いと思う。だいたいこれだけやってても英語に触れた時間はネイティブの小学生にも及ばないわけで,時間をかけるしか方法はないんだろう。

対戦もローカルで動いてきたのでインターネットを介した対戦をしてみた。が,結局対戦はうまくいかず。UXとかバグとかいろいろ課題が分かったので,テスト公開はもう少し修正してから。

課題の一つで,TextBoxの挙動がおかしいというのがあって,以下のようなTextBoxを作ると,IME変換中にIME入力すると,それまでに入力した文字が消えてしまうと言うもの。どうもUpdateSourceTriggerがIME変換時もProperty変更だと思っておかしな動作をするっぽい。


回避策だけど,UpdateSourceTriggerを手動でやればいいかと思って,以下を作ってUpdateSourceTriggerを消してみた。

public class IMETextBox : TextBox
{
    protected override void OnTextChanged(TextChangedEventArgs e)
    {
        GetBindingExpression(TextBox.TextProperty).UpdateSource();
        base.OnTextChanged(e);
    }
}

この後IME変換中だったらUpdateSourceしない処理を付けようとしてたんだけど,何故か上のコードだけでちゃんと動いてしまった。なんか将来動かなくなりそうだけど今は時間がないのでこれで。適当な対策なので,使う場合はWPFのソースを見て原因を調べてから使って下さい。そして原因を教えて下さい。。。