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

詳細。どうもWindows 10でFlyoutを出すとテーマ色が変になってしまうみたいで、Windows 10のバグのような気がする。そのうち直るかも知れないけど見にくすぎるので、とりあえずテーマに関係なく色を固定してしまった。ハイコントラストとかにすると見づらいのかもしれないのでWindows 10が直してきたら元に戻そう。
あとWindows 10ではウィンドウモードで動くようになったのでドラッグアンドドロップとかサポートしたいけど、Universal Windows Appにしないとダメっぽい。ウェザタイ後にやるか。
プログラミング, コンピュータ
Analog Book Reader, winrt
コメント・共有する
ベーマガイベント、会場の席数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を理解していれば割とサクサク作れる。

Weather Typingのインストーラ自体はファイルを指定するだけなので簡単。その後、.NETとVCランタイムを入れるためBundleを作る。あらかじめ用意されている.NET用のパッケージを使うとアンインストールとかがうまくいかなかったので自分で定義したり、バンドルのUIが英語しかなかったので日本語wxlファイルを作ったり結構苦労した。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
はっぱさんと第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言語でこんなことしたら怒られる感じですね。
プログラミング, コンピュータ
Arduino, IchigoJam, ベーマガ
コメント・共有する
WT3テスト公開して,日々バグ報告が挙がってきている。致命的な問題も既にいくつか挙がっていて,すごく助かる。テスティングのクラウドアウトソーシングってことですね。単に他人にテストしてもらっているとも言えるけど,開発者としてはテストリソースが足りないのを補えて,ユーザとしても早く使えて貢献もできるという方法で,双方にメリットがある気がする。
今はまだバグ報告系のものが多いけど,使いづらい系の指摘も募集中ですので,使い慣れてしまう前に指摘よろしくです。その辺の指摘が欲しくて,あえて使い方を何も説明していなかったりもします。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
Weather Typing 3をテスト公開。テストに参加して頂ける方は以下からダウンロードしてください。
Weather Typing 3テスト公開用ページ
まだまだバグが残っているので,バグを発見した方はtwitterでもメールでも何でもよいので,連絡よろしくです。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
Twitterにも書いたけど,Weather Typing 3のテストバージョンは今月末に公開予定。一ヶ月テストして,9月正式リリース,その後新コンセプト版を検討かな。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
WT3プロジェクト開始以来ずっと考えていた新コンセプトが決まった。「タイピングの奥深さが分かる仕組みと競い合う場」という感じで,いろんなタイピング要素を許容した上で,それを「ワードを早く打ち切った方が強い」の単一の価値基準で競うというもの。
タイピング要素は,TODみたく動体視力とか反射神経とかタイピングに関係の薄い要素は排除して,WTらしくガチな要素。例えばどんな入力方式か,ローマ字のカスタマイズの最適化,どれだけ難しいワードを打ったのか,など。今までも結局はこの辺りの要素が含まれて対戦結果が決まっていたわけだけど,それを,見て分かるようにしたい。今までのWTだと「早いなあ」で終わりだったのだが,「上級者はこんなことしてるのか」というのが分かるように。
で,コンセプトが決まった後いろいろなアイデアが出てきているのだが,どうしよう。締切まで時間がないのと,このコンセプトだとWT2ネットランキングのリセットが必要なんだよね。一旦WT2を使いやすくした版を作ってから別ものとして出すか迷い中。
余談だが,このコンセプトまでくるのにはいろいろヒントがあったわけで,それぞれ感謝。
・タイピング同人誌でタイピングの奥深さを知ったこと
・タイピングサミットでもらった要望の中の隠れた需要
・折角作るなら戦略性を上げて対戦特化すれば? というY氏のアドバイス
・ぷよぷよ(?)
プログラミング, コンピュータ
Weather Typing
コメント・共有する
WT3。スコアファイルの構成が決まった。ついでに公開鍵を使って私が署名したファイルだけをアップロードできるようにしてみたり。掲示板でちょうど指摘があったけど,ワードのランダムアルゴリズムもDRBGを使ってワードを原理的に予測不能にしたりして暗号技術をふんだんにつかっている。今時のアプリ開発ではこういう技術は必須ですね。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
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のソースを見て原因を調べてから使って下さい。そして原因を教えて下さい。。。
プログラミング, コンピュータ
WPF, Weather Typing
コメント・共有する
しばらくDenasu System内のコンテンツとして公開していたFlashゲーム(人喰い掲示板関連)について,鳥菜木市奇譚というサイトに独立しました。今後はこちらのサイトで更新されていきますのでよろしくです。
Flashゲーム
人喰い掲示板の噂
コメント(2)・共有する
第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
コメント・共有する
Arduinoでラジコンを作った。
前回,車とダブルギアボックスを使って車が動くようになったのだが,これだと左右の前輪がつながっているのでうまく曲がらない。そこで,ボールキャスターを使って左右に曲がるようにした。
さらに,BluetoothモジュールRN-42を使ってPCから操作できるようにした。
表裏はこんな感じ。


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

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

プログラム。どうしてもハード部分がメインになるのでソフト部分は超適当だけど,上げておこう。
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接続できるようにしてスマホから操作するかな。
プログラミング, 電子工作
Arduino
コメント・共有する
昨日買ってきたパーツで車を動かしてみた。タミヤのダブルギアボックス,モータードライバTA7291P 2個をつないで,1.5V単4電池4本でモーターの電源を確保。Arduinoは9Vの角形乾電池とジャンパーピン変換で電源を確保。これで左右のタイヤの方向を変えて曲がることができるようになり,USBを使わなくなったので動かしやすくなった。
この前はタンクを買ったのだが,結局タミヤのユニバーサルボードとタイヤセットを合わせることで,自由度があがりそうだったのでそちらに乗り換えた。裏表に部品を実装できるようになったので配線が楽。


プログラミング, 電子工作
Arduino
コメント(1)・共有する
はっぱさんとArduinoワークショップの三回目を開催。アキバでBluetoothやモーターの足りない部品を揃えた。
その中で,はっぱさんがIchigoJamを見つけて購入。ボードを組み立ててテレビにつなぐとBASICプログラムを実行できるというもの。ベーマガに投稿していた我々としては見逃せない。マニュアルを見つつ二人で懐かしがっていると,電子工作マガジンにBasic Magazine復活の噂を見つけてこちらは私も購入。2ページだけだけど復活している。しかも投稿プログラムまで募集しているとは。こういった方面で盛り上がるのはいいですね。
プログラミング, 電子工作
Arduino, IchigoJam, ベーマガ
コメント・共有する
「人工知能は人間を超えるか」 (松尾 豊) を読んだ。いわゆる人工知能(アルゴリズム)ではなくて人工生命(思考,意識)に近い方の話。自分は大学でニューラルネットを研究していて,数年前に脳関連の本を読みあさったまま中断していたが,最近ディープラーニングが話題なので詳細が知りたくて。
結局ディープラーニングは特徴量を探すことができるようになりました,ってことなわけで,それ自体はこの本にも出ているPalmの創始者ジェフ・ホーキンスの「考える脳 考えるコンピューター」とかスティーブ・グランドの「アンドロイドの脳」でなんとなくできたよ,くらいにはなっていたように思うけど。
私が数年前に考えていたのは,その先,どうやって意識に持っていくかというところで,Googleが猫を猫と判定しても,それが敵と思って逃げるのか,かわいいと思って近づくのかを実現したいわけで。するとどうしても本能的なところが必要になって,現実世界に身体を持たないと難しい,というところで止まっていた。といっても遺伝的アルゴリズムで自然淘汰をするのは数億年かかりそうだし。その辺は「人工知能は人間を超えるか」にも書いてあったけど必要だよね,くらいだった。
最近Arduinoをやってるのも,現実世界からセンサで情報を取り込んで,モーターを動かすのをニューラルネットでやって何か面白いことできないかなあ,というものなので,ウェザタイを作りつつ勉強再開しているところ。
プログラミング, コンピュータ, 書評
コメント・共有する
Weather Typing 3 の対戦部分を作っているが,C#のソケットは同期関数と非同期関数がある。通信中にUIをブロックしたくないので,BeginConnect~EndConnectなどの非同期関数を使うのだが,相当めんどう。処理がその場で終わらないので処理の続きは基本コールバック関数になる。するとイメージ的には以下のようなワケの分からない処理になってしまう。実際には再AcceptとかするのでLambda式では書かないけど。
class Server
{
Callback OnLogin;
Callback OnError;
void Start()
{
try
{
BeginAccept(() =>
{
try
{
BeginReceive(() =>
{
try
{
if("login")
{
OnLogin();
}
}
catch(Exception)
{
OnError();
}
});
}
catch(Exception)
{
OnError();
}
});
}
catch(Exception)
{
OnError();
}
}
}
Analog Book Readerでも非同期処理で苦しんだけど,WindowsRTの場合はだいたいの関数がawaitできるのでまだよかった。同じ事をするのにこんなにすっきり書ける。
class Server
{
Callback OnLogin;
Callback OnError;
async Task Start()
{
try
{
await Accept();
await Receive();
if("login")
{
OnLogin();
}
}
catch(Exception)
{
OnError();
}
}
}
プログラミング, コンピュータ
Analog Book Reader, Weather Typing
コメント・共有する
ゴールデンウィークで捗ったのでWeather Typing 3の進捗。ひととおり対戦ができるようになった。まだ旧ウェザタイの対戦を真似して作り直したところなので新しいことはあまりないが,画面の大きさを変えたり,一対戦ごとにルールや対戦相手を変えたりはできるようになっている。安定化したら一度テスト公開しようかな。
対戦モードはシングル,インターネット対戦,LAN対戦,ロビー,CPUの5つ。インターネット対戦は,ロビーを使うことでIPアドレス指定を不要にしたモード。IPアドレスが必要な場合はLANモードで直接指定もできる。



プログラミング, コンピュータ
Weather Typing
コメント・共有する
8年ぶりに情報処理試験を受けた。前回10点足りなくて落ちたエンベデッド。今回はタミヤタンクも作ったし大丈夫でしょう,と思ったけど午後Iは結構難しかった。先週マルツパーツで見て覚えたZigBeeに関する問題があったので,Arduinoも役にたったことにしよう。
今回解いた問題はウェアラブル心電計,レジのお釣り装置,テレビ会議システムだったんだけど,やっぱり問題が具体的で面白い。広く浅くハードの勉強をしたい人にはお勧め。
情報処理試験は久しぶりだったけど,あんなに慌ただしい試験でしたっけ。お昼休み1時間あるから余裕でご飯食べに行こうとしたら20分前に着席せよと言われたり,休み時間30分かと思いきや7分しかなかったり。会場が歩いて行けるところだったのはよかったけど。
ツッコミどころとしては,二千円札はお釣りとして出ないようにする,って堂々と書かれてて二千円札がかわいそうになりました。
プログラミング
資格試験
コメント・共有する
昨日買ってきた「タミヤ タンク工作基本セット」を使ってモーター制御を試してみた。タンクのモーターにモーター制御IC「TA7291SG」をつなぐ。ここにArduinoの電源をつなぐとArduinoが壊れるので別途モーター用の電源がいるのだが,3V電池じゃ出力不足という情報があり,ACアダプタから延ばしたUSBから電源を取ることに。「ブレッドボード用ミニBメスUSBコネクタDIP化キット」を購入してきたので初のはんだ体験。はんだというと鉛のイメージだったんだけど最近は鉛じゃないんですね。

とりあえずやってみたがうまく付けられてるのかな。まあ出力は5Vがちゃんと取れていたので大丈夫だろう。
で,Arduinoからモーター制御IC用電源と,PWMで制御入力を入れて,プログラムをちゃちゃっと入力。
サイズ大きいけど動画も見られます。なんか出力不足なのか遅いけど,前後に動くようになった。次はモーター2個にして左右に曲がれるようにしたり,Bluetoothでスマホからラジコンみたいに動かしたい。
これで来週の情報処理試験エンベデッドも準備OKだ。きっと。。
プログラミング, 電子工作
Arduino
コメント・共有する
はっぱさんとArduino勉強会の2回目。前回はLEDの実験だったが,今回はモーターがテーマ。動くものができると楽しいですよね。
アキバに部品を見に行くのが目的だったが,山手線が動いていない関係で新橋で下車。ついでなのでタミヤのプラモデルファクトリーへ行ってみる。20数年ぶりのミニ四駆とか,工作キット,プラモデルなどなんでもあって飽きない。
その後アキバに行ってはっぱさんいきつけの部品屋めぐり。いきあたりばったりだったが一通りモーターを動かせる部品を購入。したところで時間切れ。Bluetoothまではいけなかった。
プログラミング, 電子工作
Arduino
コメント・共有する
TOEICの結果が返ってきた。900目標で885点。上がってはいるけど微妙だ。900を超えたら本格的にSW勉強をしようと思っていたが,もう一回だけLRを受けるか。。
英語
資格試験
コメント・共有する
denasu.comにGITサーバをたてた。Visual Studio 2013になったときにVisual Source SafeからGITを使うようにしたのだが,ローカルリポジトリからリモートリポジトリへ変えた。今までメインPCとモバイルPCで開発するのにOne Driveを使って同期していたのだが,zipにして全部コピーして面倒だった。これでファイル毎に楽に同期できる。
Visual Studio 2013はSSHに対応していないのでどうしようかと思ったが,結局gitプロトコルでアクセスすることにした。ただ,gitポートを開けるのはセキュリティ的に問題があるので,ポートフォワーディングすることに。9418をSSHポートフォワードしたSSHクライアントを起動して,「git://server/・・・.git」にアクセスすればOK。
プログラミング, コンピュータ
コメント・共有する
アメリカ出張。飛行機の中で,Twitterで話題?のちきりんさん著「マーケット感覚を身につけよう」を読んだ。自己啓発書なんかは読まないからよく分からないけど,この本は多分そういうのとは違う気がする。
この本はマーケット感覚(価値の見つけ方)が主題の本だけど,お金が発生しないことでもあてはまることが説明されていて,自分の場合はフリーソフト作成にあてはまる。そこで,フリーソフト作成とマーケット感覚について考えてみたのでここに残しておこう。飛行機で映画見ない人はひたすら何かを考えてしまうわけですね。
フリーソフトというのは,自分のために作ったソフトを公開して,同じことに困っている人にも使ってもらおうという趣旨のものだが,ユーザは多い方がフィードバックももらえて作者もユーザも嬉しい。ただ,フリーソフトの性質上,万人に受け入れられるものではなく一部の人が嬉しいものなので,狭い市場でどれだけピンポイントでユーザに届けられるのかというのを考えないと,全く知られずに終わってしまう。
フリーソフトの価値
そもそもフリーソフトの価値って何? という話になるのだが,今まで漠然と考えていたのは以下。
企業が作るもの:
- 万人受けするものを作らないと規模が出ないので,一部の人だけが満足するようなソフトは作りづらい
- 作成者がユーザであることは希で,受注だったり上が決めた企画だったりするので,ユーザの感覚と開きが大きい
フリーソフト:
- 採算度外視なので,一部の人しか満足しないようなソフトでも作れる
- 作成者がユーザであることがほとんどなので,ユーザの感覚を熟知している
ゲームだと制作者の熱意によってまた違ってくるかも。個人的には,企業が作ったものはライトに使う分にはいいけど,ヘビーに使おうとすると使いづらい。逆にフリーソフトはその分野を知っている人ほど使いやすい印象。代表例だと,TV/DVD視聴ソフトとか電子書籍リーダーなんかは単なるコンテンツのおまけ程度で,使う人のことを全く考えていないUIが多い。
てことで,1年前に作ったAnalog Book Readerでは,そこの不満を解消するために,ユーザからしたらこういうのが欲しいんだよ,的な電子書籍リーダを作った。その辺は以前の日記で書いているのでいいとして。ただ,ダウンロード数はあってフィードバックももらっているんだけど,いまいちフィードバックをもらって解決して,的なループまでいっていない。
成功例
14年前,学生の時に作ったWeather Typingはマーケットをあまり意識しないで作っていたが,たまたまタイピングコミュニティの人達に届いてフィードバックをたくさんもらい,一緒に育てることができた。これを再度分析してみる。
Weather Typingは,当時SEGA ザ・タイピング・オブ・ザ・デッドをやり続けて,タイピング対戦だけに特化したソフトがあればいいのに,というきっかけで作ったが,対戦ができることが価値かというとそうではないんだろう。
その後,GANGASさんで紹介してもらってタイピングゲームのコミュニティから使ってもらうようになり,掲示板で議論しながら対戦機能を完成させていった。SWOTっぽく分析すると
- 企業とは違い,作者がユーザに近いところにいるのでリアルなフィードバックが得やすい位置にいる
- 作者自身がユーザなので要望の取り込み方,取捨選択の基準がしっかりしている
- 学生で時間があるので,ロビーサーバでユーザとチャットしたり実際に対戦したりできた
という強みがあって,
- 当時できつつあったタイピングソフトユーザのコミュニティ
- TVでタイピングソフトが取り上げられて,ちょっとした流行になっていた
という環境があって,
- 作者に直接要望を言えて,
- タイピングソフト利用者にとって違和感なく実装してくれる
という価値をユーザに提供していたことになる。と思う。で,フィードバックを実現していくことで,「この作者に要望を出せば理想のソフトができる」という信頼を得られ,さらにフィードバックが来るようになり,ループができた。
今作っているWeather Typing 3も,タイピングサミットでもらった要望をまとめあげる予定なのでそこはブレていないが,もう少し小出しに出していかないと求めるものとずれていってしまういそうだ。一応この日記で情報は出していってるが,動くものを少しずつ公開していった方がいいのだろう。
今後の作戦
じゃあAnalog Book Readerはこれからどうしようか。今までは,ターゲットが毎日本を読むヘビー読書家なので,Windowsアプリだとあんまりそんな人はいないのかなあ,くらいに思っていた。
でもこの本を読んだ後だと,例えば
- 現状,電子書籍リーダーは各社が自社のコンテンツを見るためのソフト(自主的な規制状態)になっているため,自由競争になっていない。
- ユーザは,電子書籍リーダーなんて紙に比べて読みにくいでしょ,と思っているため,電子リーダーだからこそできる価値に気付いていない
という,ある種ブレークスルー直前状態なわけで,ここになんとか貢献できないかなあ,という想いがある。
究極的には,電子書籍リーダーが,単なるおまけ的なアプリから,紙ではできなかった読書体験をするアプリとして認知されるようにしたい。なので,そういうコミュニティ的な活動が盛り上がってAmazonとかを巻き込んでいく必要があるんだろう。まだそんなコミュニティはなさそうなので,盛り上げることになるのだが,それをどうするか,そこまでは本には書いてない,よなあ。
プログラミング, コンピュータ, 書評
Analog Book Reader, Weather Typing
コメント・共有する
Windows ストア 電子書籍リーダーAnalog Book Readerを公開して1年が経過。ちょうどダウンロード数も10,000を超えたのでまとめ。

ダウンロード数の推移を見てみると割とコンスタントにダウンロードがある。Windowsストアを使っている人自体少ないと思っていたのでダウンロード数が収束しないのは不思議。ちなみにウェザタイの最初の1年のVectorダウンロード数は2,000くらいなので,Flashゲームを別格とすると,うちのダウンロードアプリの中でもダウンロード数の上がり方は高い。
ランキングも日本のカテゴリランキングはずっと10位以内ということでアプリの少なさを物語っ・・・ではなくてありがとうございます。
レーティングは世界で67回,平均3.8とまずまず。海外からのダウンロードやコメントも割と増えているのは嬉しいが,アラビア語圏内から星5個もらったりすると本当に使えているのか心配になる。右から左に読むテストなんてしてないですよ。コメントについても,有用なコメントを最近ももらっているので応えたいのだが,ウェザタイの開発が終わるまでは難しい。
プログラミング, コンピュータ
Analog Book Reader, Windows Store
コメント・共有する
3年ぶりにTOEICを受けてきた。今回はもう前日にTOEIC模試を解くくらいにしたのだが,模試だと9割正答で参考得点900オーバーはいける。でも前回もそれで本番820点だったので今回もそのくらいかなあ。問題自体は簡単なんだけど,本番だといろんな要素があって集中力が続かない。どれだけ集中できるかを競うゲームに思えてきた。
来月はこれも久々の情報処理エンベデッド。来週はまたアメリカもあるのでウェザタイ開発が進まない。
英語
資格試験
コメント・共有する
Weather Typing 3の対戦機能を実装中。対戦相手の管理を自力で実装しているのだが,ホストの作成や参加はロビーを使うようにするつもり。サミットでも言われたが,IPアドレスを調べて他の人に教える,というやり方は難しく,ロビーを使えば気にしなくて済む。旧ウェザタイはインターネット前提ではなかったのでああいう形だったが,今は前提としてもいい気はする。
ウェザタイのウィンドウからホストを選択するとロビーに隠し部屋ができて,チャットもその場でできる,って感じかな。ロビーもウェザタイのウィンドウに入れられるとなおいいけど。
で,ロビーを前提にするということは,対戦モードで使う名前をロビーの名前にするということになるが,折角なので,対戦モード,ロビー,ランキングのユーザは統一を図りたい。というより旧ウェザタイがバラバラになっているのがおかしいのだが。一番ちゃんと管理してるのはランキングなのでランキングのユーザに統一するのがいいけど,どうだろう。何かいいアイデアがあれば教えてもらえると助かります。
というところで技術的な壁が一つ。ランキングのパスワードはPerlのCrypt関数(LinuxのCrypt関数と同じ)で不可逆暗号している。復号はできないので,Javaで作ったロビーから同じアルゴリズムを使えないと統一できない。調べたところ,Linux Cryptアルゴリズムは当然公開されていて,鍵が特殊なDESらしい。Cの実装例はいくつか公開されていたので,参考にしつつJavaに実装はできた。
対戦モードの進捗としては,進んできてはいるんだけど,まだまだかかりそう。10月までに終わるのか。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
Weather Typing開発。スコア関連機能とワード関連機能は実装完了。ということでついに対戦機能にとりかかる。ランキングとかロビー機能にも手を付けたいが,来年のタイピングサミットを考えると間に合わなくなりそうなので対戦機能を最優先で。
プログラミング, コンピュータ
Weather Typing
コメント・共有する