先週胃の調子が悪くて開発をお休みしてた。で体重が3kg減ったらそっちは直ってきたんだけど,胃痛を弱めるために変な寝方をしてたらドライアイがひどくなってさらにお休みしてた。何かを変えると何かしら不調になるってことで,いつもの健康は絶妙なバランスの上に成り立っているというのが分かる。

とりあえず,TwitterでもらったWT3の問題の改善版とAnalog Book Readerの次バージョンはテスト待ちになっているので,体調がよくなり次第リリース予定。

今,「Make: Electronics」を読んでいるのだが,その中で,ユニバーサルプレートの表裏で線を交差させることはできない。穴を経由してショートするから。と書いてあった。あれ,そういえば,と以前作ったボードを見ると,表裏で交差させたので問題がある。実際には線はプレートから少し浮いているのでショートはしていないんだけど,あまりよくない状態ってことですね。

普通の本だと交差するところはラッパー線を使う,くらいしか書いていなくて,表通せばいいじゃん,って思ったのだが,この本はやってはいけないことがいろいろ書いてあって勉強になる。

スマホでラジコンを操作しながらラジコン視点が見えるようにしてみた。iPod Touchで撮影した動画をWindows Mobileに飛ばして見ている様子をAndroidで撮影するという夢の共演。

前回の通り,Windows 10 MobileからArduinoラジコンをBluetooth経由で操作している。で,今回はラジコンに設置したiPod Touchからビデオ画像をWi-Fiでとばして,Windows 10 Mobileのアプリにリアルタイム表示した。ラジコン視点の画像が手元に表示されて割と楽しい。

このままだとWi-Fiにつながってないと遊べないが,SIM搭載したAndroidをテザリングモードにしてWi-Fiルータ化すれば,外でも同じ事ができる。スマホを3種類持ち歩くことになるけど。

とりあえずラジコン部分はこれで完成。iPod Touchからの画像はRGB生データで取得できるので,この情報をうまく使えば自律操作ができる。そこが最終目標。

前回,ラジコンを作るところまでいったが,操作するのはWindowsのPCだった。やっぱり操作するのはスマホの方がいいな,と思ってAndroidアプリを作ることを考えていたんだけど,そういえばWindows 10 Mobileがあった。てことで操作アプリをUWPしてみた。

Windows版では今まで通りSPPを使用してCOMポートのシリアル通信でBluetoothに繋いで,さくっと移植完了。でもWindows 10 MobileではCOMポートが何番か調べられないなあ,と思っていたらモバイルではSPPを使えないっぽい。てことでここを参考にRFCOMMでアクセスするように変更。Socketにするだけでやることは同じですね。

こんな感じ。Windows 10 MobileはWindowsで普通にデバッグできるからすごく楽。

201606192159

201606192159

しばらく前から英語の勉強のためHuluを契約しているのだが,最近配信しているアメリカのドラマSilicon Valleyが面白い。シリコンバレーにいるプログラマが,発明したアルゴリズム一つで戦っていこうっていう内容。シリコンバレーのスタートアップでやっていくにはどんな困難があって,開発者から経営者になっていく,それは成長なのか何なのか,みたいな話。見ていて精神力を奪われるのでまだ4話までしか見られてない。

で,面白さは既に語られているから良いとして,開発者から見て面白かった所を。
・「開発チームはなぜ必ず5人でこういう構成なんだ?」うん,確かにそんなイメージ。
・「スティーブと言えばジョブズに決まってるだろ。」「いや,ウォズニアック・・・」
・主人公の作業場所に飾られている絵が標準画像。何故?
多分気付かないネタもいろいろ仕込んでいる気がする。

で,話の軸となるアルゴリズムは,ロスレスの圧縮アルゴリズムで,例えば音楽ファイルが1.2MBになる。シャノンの例の定理はどこへ行ったの? って思ってたけど,4話で「何故ロスレスなのにDCT使ってるんだ」とか出てくるので,それなりに説得力のあるアルゴリズムの説明も出てくるのだろうか。圧縮したまま検索ができる汎用アルゴリズムということなので,パターン認識して,物体とかフレーズとかを文章的なものにして保存,復号時は文章的なものからオリジナルを復元するのかな,と思ったけどそれじゃロスレスにはならないし。

新しいはんだごての力を得て,自作Arduinoシールドが完成。

シールドの設計図。分かりにくいが,Drv1とDrv2がモータードライバTA7291P x2で,U5とU6がBluetoothモジュールRN42をXBEE変換したものを2.54mmピッチに変換したもの。基板作り自体初めてなのでこれでも3回くらい設計をやり直している。これで完璧,と思って部品を置いてみたら部品同士が当たってショートしちゃう,とか,パズルみたいだった。

2016052901

※回路に重要な問題があるので後の日記を参照のこと。

シールドの部品面。モーターなどの線はピンソケットにして取り外せるようにしておいた。線自体はジャンパーワイヤーを切ったものをはんだでつなげて熱収縮チューブで保護することでさくっと刺せるように。

2016052902

シールドのはんだ面。新しいはんだごての力を借りてようやくこんな感じ。まだまだ修行しないと。設計上線がクロスする箇所は絶縁したコードを使うのが普通っぽいけど,表面を経由したり表の抵抗を経由したりで回避した。

2016052903

ラジコン化したもの。前の実装では表と裏の部品が相互に邪魔して配置に制約があったのだが,ユニバーサルプレートを2枚重ねにしてネジが競合しないようにしたことで自由に配置できるようになった。ちなみに金属のやつは撮影用のiPod Touchを置くスペース(仮)。

2016052904

表詳細
2016052905

裏詳細
2016052906

Arduino。今までブレッドボードで動かしていたモーターとBluetoothをシールド化すべく,設計をした。少し線を付け始めたのだが,どうもソケットが溶けたりハンダが酸化したりする。いろいろ調べてみたところ,WEBはんだ付け講座ではんだごての選び方が乗っていて参考になった。使っていたのは太洋電気の入門セットなのだが,初心者こそ高い道具を,ということでHAKKOのFX-600に買い換え。その後しばらく練習したところ,かなり快適。古いのはランドにちょっと付けているといろいろダメージが残ってしまっていたが,新しいのは大丈夫。

Analog Book Reader 1.7をリリース。今回からUWPに対応したので,Windows 10のみになった。Windows 8.1の場合,Ver 1.6までしか使えないことになる。ダウンロードログを見てみてもほとんどWindows 10になっているのでもういいでしょう。

今回のバージョンアップは新機能はエクスプローラからのドラッグアンドドロップくらいで,画質とか安定性とかの向上がメイン。次はepub対応なんだろうけど,Edge APIとかでHTMLレンダリングできないかなあ。

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音声合成の注意事項朗読で笑わせてもらったり,素晴らしいイベント,ありがとうございました。

前回のあらすじ

昨年,タイピングサミットに初参加して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言語でこんなことしたら怒られる感じですね。