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のソースを見て原因を調べてから使って下さい。そして原因を教えて下さい。。。

しばらくDenasu System内のコンテンツとして公開していたFlashゲーム(人喰い掲示板関連)について,鳥菜木市奇譚というサイトに独立しました。今後はこちらのサイトで更新されていきますのでよろしくです。

第200回のTOEICを受けてきた。前回900超えたらLR卒業しようと思ってたのに超えられなかったので,TOEIC対策を覚えているうちにってことで。TOEIC対策としては土日で模試を3つやって本番へ。

朝模試をやったおかげか集中力が高い。Listeningの問題を聞きながら選択肢を読むのもうまくいった。Part3とか,問題読んでる途中で3問塗りつぶして次の問題を読んでることも。Readingもとりあえず全部読んで回答するやり方で10分余って,今までで一番手応えがあった。問題が極端に簡単だったのでなければ,少なくとも900は行くとは思うけど,どうだろう。900超えたら一回偉そうなブログにまとめてからSWを受けるつもり。

そういえば調べようと思って忘れていた。前回の日記でラジコンを作ったときに,モータへの電源は6Vを入れている。これは,TA7291Pの電圧降下が2.5Vくらいあるらしいという情報を見てとりあえず6Vにしたのだが,本当のところどうなのかをテスターで計ってみた。結果,TA7291Pへの入力をPWMで最大出力255にしたときに2.9Vだった。ダブルギアボックスの説明では3Vで動かせと書いてあるので丁度いいようだ。ていうか3.1Vも降下してるけど何か変なのかなあ。

Arduinoでラジコンを作った。

前回,車とダブルギアボックスを使って車が動くようになったのだが,これだと左右の前輪がつながっているのでうまく曲がらない。そこで,ボールキャスターを使って左右に曲がるようにした。

さらに,BluetoothモジュールRN-42を使ってPCから操作できるようにした。

表裏はこんな感じ。

2015051701

2015051702

構成としては以下の通り。

  • タミヤのユニバーサルボード,タイヤセット,ボールキャスター,ダブルギアボックスで基本の車を作成
  • 単4電池とボックスでモータの電源を確保,6P電池とジャンパピン付きスナップでArduino用の電源を確保
  • モータードライバTA7291Pを2個使って,モーター,Arduino電源,モータ電源を接続
  • RN-42 Bluetooth 2mmピッチ変換モジュールXBee用2.54mmピッチ変換基板でブレッドボードに載せる

RN42については,買ったものがXBee用の2mmピッチだったので,2.54mmピッチに変換。秋月電子の変換ボードは3.3Vレギュレータ付きなので,電源は5Vそのままつなげるが,ArduinoからRN42へのシリアル通信は3.3Vに変換しないといけないので適当に抵抗で電圧を落とす必要がある。はんだ付けも多少慣れたけど2mmピッチは小さすぎて辛い。

2015051704

RN42の使い方はWebを探すと先人が情報を残してくれているが,Macのコンソールが一番楽そうなのでMacから繋いでみる。RN42を配線して電圧をかけると赤LEDが点滅し,それだけでMac上でBluetoothデバイスとして見つかる。ペアリングすると赤LEDが点灯するので,コンソールから「screen /dev/tty.RNBT-DF42-RNI-SPP 115200」を実行。キーボードで通信ができる。

回路図。Fritzingを使用して作図。ごちゃごちゃするのでGND省略してるけど,適当にArduinoのGNDか電池のマイナスにつなぐ。

2015051705

プログラム。どうしてもハード部分がメインになるのでソフト部分は超適当だけど,上げておこう。

int rpositive = 9;
int rnegative = 6;
int lpositive = 11;
int lnegative = 3;
int led = 13;
int lspeed = 0;
int rspeed = 0;
char inByte = 0;

void setup()
{
  Serial.begin(115200);
  pinMode(lpositive, OUTPUT);
  pinMode(lnegative, OUTPUT);
  pinMode(rpositive, OUTPUT);
  pinMode(rnegative, OUTPUT);
  pinMode(led, OUTPUT);

  analogWrite(lpositive, 0);
  analogWrite(lnegative, 0);
  analogWrite(rpositive, 0);
  analogWrite(rnegative, 0);
}

void loop()
{
  if (Serial.available() > 0)
  {
    inByte = Serial.read();
    if (inByte == 'w')
    {
      // forward
      lspeed += 50;
      rspeed += 50;
      Serial.println('f'); 
    }
    else if (inByte == 's')
    {
      // backward
      lspeed -= 50;
      rspeed -= 50;
      Serial.println('b'); 
    }
    else if (inByte == 'a')
    {
      // left
      lspeed += 50;
      rspeed -= 50;
      Serial.println('l'); 
    }
    else if (inByte == 'd')
    {
      // right
      lspeed -= 50;
      rspeed += 50;
      Serial.println('r'); 
    }
    else if (inByte == 'z')
    {
      // stop
      lspeed = 0;
      rspeed = 0;
      Serial.println('s'); 
    }

    if(lspeed > 200)
    {
      lspeed = 200;
    }
    if(rspeed > 200)
    {
      rspeed = 200;
    }
    if(lspeed < -200)
    {
      lspeed = -200;
    }
    if(lspeed < -200)
    {
      lspeed = -200;
    }

    if(lspeed >= 0)
    {
      analogWrite(lpositive, lspeed);
      analogWrite(lnegative, 0);
    }
    else
    {
      analogWrite(lpositive, 0);
      analogWrite(lnegative, -lspeed);
    }
    if(rspeed >= 0)
    {
      analogWrite(rpositive, rspeed);
      analogWrite(rnegative, 0);
    }
    else
    {
      analogWrite(rpositive, 0);
      analogWrite(rnegative, -rspeed);
    }
    
    if(lspeed != 0 || rspeed != 0)
    {
      digitalWrite(led, HIGH);
    }
    else
    {
      digitalWrite(led, LOW);
    }

    delay(100);
  }
}

次はスマホからBluetooth接続できるようにしてスマホから操作するかな。

昨日買ってきたパーツで車を動かしてみた。タミヤのダブルギアボックス,モータードライバTA7291P 2個をつないで,1.5V単4電池4本でモーターの電源を確保。Arduinoは9Vの角形乾電池とジャンパーピン変換で電源を確保。これで左右のタイヤの方向を変えて曲がることができるようになり,USBを使わなくなったので動かしやすくなった。

この前はタンクを買ったのだが,結局タミヤのユニバーサルボードとタイヤセットを合わせることで,自由度があがりそうだったのでそちらに乗り換えた。裏表に部品を実装できるようになったので配線が楽。

2015051101

2015051102