‘Weather Typing’のエントリ

何も書かないうちに1月経過してしまう。WT3は順調に進めているが,入力方式プラグインの実装が膨大になっていてなかなかきりのいいところまでいかない。残っているのは入力方式ごとの重みの自動計算,プラグインのサンドボックス化,キー入力の送信から分そのものの送信に変更,リプレイ互換性の確保,といったところ。ここまでやってようやく仮公開できるが,いつになるか。

WT3。最終形は果てしなく遠いけど,今はカスタマイズ性を上げる作業を進めている。とりあえずワードカスタマイズと入力方式のカスタマイズのUIデザインは終わって,入力方式はあと一息というところ。デザインはやろうと思えばどこまでも凝れるのでいったん区切らないと。そこまでできたら開発版をアップロードするかな。

10月が終わってしまうのでエントリを追加。

WT3の開発は進んでいるのだが,まだ区切りがつくまで遠い。入力方式プラグインカスタマイズツールを作ろうとしているのだが,その前に,前回適当に間に合わせで作ったロビーのデザインを改善したり。

で本屋で目を引いた「なるほどデザイン」という本を読んでいるのだが,面白い。だいたいのデザイン本はルールと例は載っているが,設計方法が書かれていないので,初心者としてはどう役立てれば良いのか分からない。で,この本は設計方法が書かれていて,ステップごとに改善されていく様子が載っていたりする。役立ちそう。

Weather Typing。サミットでラグが発生していた問題が解決。ローマ字入力のカスタマイズでビットフラグを使っているのだが,C++のときにSTL bitsetで実装していたのをC#ではBitArrayで実装した。で,これがかなり遅くて,単純なlong型を使ったビットフラグに変えることで劇的に早くなった。

これまでも入力が遅い問題は報告が挙がっていたのだが,自PCでは再現せず原因が不明だった。サミットでは「5人対戦で長文を入力した場合」というヒントがあったおかげでやっと分かった。

ただ,今入力方式をがらっと変えていて,安定するまでだいぶ時間がかかる。修正版を公開するのはまだ先になりそう。

毎年恒例のタイピングサミット,行ってないけど感想を書いてみる。

今回は仕事関連で行けなさそうなので元々エントリーはしなかったのだが,いろいろあって自分だけ休みになったのでニコ生で中継を見た。

恒例にしてもらっているWT団体戦。毎回工夫をこらした大会を開催して頂いてありがたい。中継もかなりよくなっていたし。去年もサミット後にニコ生のタイムシフトで振り返ったけど,さすがに打っている文字はほとんど見えなかった。今年は部屋の明るさとか映し方で,かなりはっきり見えるようになっていた。それ以外にも,去年分かりづらかったチーム名が色分けになっていたり,随所が改善されていた。

で,懸案のつながりにくさとか前バージョンからの操作の変更は,おそらく事前に入念な準備をしてもらっていて,こちらから見ると大きなトラブルはなさそうだった。ただ,以下の点はソフト側の作り込みが甘いので,せっかく使ってもらっているのでこの辺はなんとかしたい。

  • ゲーム中,得点が全員分見えない
  • とにかく動作が重い
  • 結果表示のグラフがよく分からない
  • ローマ字とかなで打てる範囲が違う

とりあえず上の課題は解決するとして,来年は新コンセプトの機能を作り込んで提案してみるつもり。でも新機能は大会的には関係ない機能が多いのかな。提案するなら団体戦機能を作り込みたいけど,そこまでいけるかな。

以下詳細。

ゲーム中,得点が全員分見えない

去年の反省で,「得点部分の大きさを変えられるようにする」という調整をしたのだが,本来の要求は「画面サイズを限界まで落とせること」だったことを思い出す。画面の解像度を上げてフォントの大きさを調整すればよいと思っていたが,プロジェクタを使う前提だとそうもいかないか。

とにかく動作が重い

何が原因だろう。自宅だと2台のPCで5人対戦しても遅くはない。問題文が長いと遅いということは,.NETのWPFの描画が追いつかないのか。であればUnityとかフレームワークレベルでの移行が必要になってしまう。

結果表示のグラフがよく分からない

結果表示のグラフは改善が必要かな。拡大縮小とか,1人分のグラフを強調表示とか。まあこれは別途検討中の履歴分析と合わせて考えよう。

ローマ字とかなで打てる範囲が違う

今回のウリ?のバラエティに富んだワード。ローマ字とかなで打てる特殊文字に違いがあるので,途中で打てない文字が出て来ないか心配したが,考慮済みだったようで,さすがの運営。でも新コンセプトでもワードのバラエティ性は重要なので何か必要かも。

ついでにモールス信号。今,ちょうど入力方式のプラグイン機能を開発中なのだが,サンプルとしてモールス信号を作ろうとしていた。今回の擬似的なものではなくちゃんとトンツーできるようになる,かな。

Weather Typing 3.1.1公開。少し前にTwitterで報告を受けた対戦ができない問題の修正。そろそろ次のステップに行きたいんだけど,ABR,電子工作,新しいアプリ,どれを優先させるか。

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

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

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

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

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

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

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

2016013001

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

いつも年末にやっているソフトウェアのアップデート。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は普段使っているので次はこれをやろうというのが自然に出てくるのだが,ウェザタイは普段自分が使ってないのでなかなか手が出せなかったりする。まずはタイピングの練習を復活させるところからやるというのが遠回りに見えて確実なのかも知れない。

前回のあらすじ

昨年,タイピングサミットに初参加して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の作りでは実現しづらかったものを修正した。

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

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

.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ファイルを作ったり結構苦労した。

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

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

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

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

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

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

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

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

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

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

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

対戦もローカルで動いてきたのでインターネットを介した対戦をしてみた。が,結局対戦はうまくいかず。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のソースを見て原因を調べてから使って下さい。そして原因を教えて下さい。。。

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();
		}
	}
}

ゴールデンウィークで捗ったのでWeather Typing 3の進捗。ひととおり対戦ができるようになった。まだ旧ウェザタイの対戦を真似して作り直したところなので新しいことはあまりないが,画面の大きさを変えたり,一対戦ごとにルールや対戦相手を変えたりはできるようになっている。安定化したら一度テスト公開しようかな。

対戦モードはシングル,インターネット対戦,LAN対戦,ロビー,CPUの5つ。インターネット対戦は,ロビーを使うことでIPアドレス指定を不要にしたモード。IPアドレスが必要な場合はLANモードで直接指定もできる。

2015043001

2015043002

2015043003

アメリカ出張。飛行機の中で,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とかを巻き込んでいく必要があるんだろう。まだそんなコミュニティはなさそうなので,盛り上げることになるのだが,それをどうするか,そこまでは本には書いてない,よなあ。

Weather Typing 3の対戦機能を実装中。対戦相手の管理を自力で実装しているのだが,ホストの作成や参加はロビーを使うようにするつもり。サミットでも言われたが,IPアドレスを調べて他の人に教える,というやり方は難しく,ロビーを使えば気にしなくて済む。旧ウェザタイはインターネット前提ではなかったのでああいう形だったが,今は前提としてもいい気はする。

ウェザタイのウィンドウからホストを選択するとロビーに隠し部屋ができて,チャットもその場でできる,って感じかな。ロビーもウェザタイのウィンドウに入れられるとなおいいけど。

で,ロビーを前提にするということは,対戦モードで使う名前をロビーの名前にするということになるが,折角なので,対戦モード,ロビー,ランキングのユーザは統一を図りたい。というより旧ウェザタイがバラバラになっているのがおかしいのだが。一番ちゃんと管理してるのはランキングなのでランキングのユーザに統一するのがいいけど,どうだろう。何かいいアイデアがあれば教えてもらえると助かります。


というところで技術的な壁が一つ。ランキングのパスワードはPerlのCrypt関数(LinuxのCrypt関数と同じ)で不可逆暗号している。復号はできないので,Javaで作ったロビーから同じアルゴリズムを使えないと統一できない。調べたところ,Linux Cryptアルゴリズムは当然公開されていて,鍵が特殊なDESらしい。Cの実装例はいくつか公開されていたので,参考にしつつJavaに実装はできた。

対戦モードの進捗としては,進んできてはいるんだけど,まだまだかかりそう。10月までに終わるのか。

Weather Typing開発。スコア関連機能とワード関連機能は実装完了。ということでついに対戦機能にとりかかる。ランキングとかロビー機能にも手を付けたいが,来年のタイピングサミットを考えると間に合わなくなりそうなので対戦機能を最優先で。

Weather Typingのワードファイルだが,ワードの名前とか著作者を入れたいので,txtからxmlにしようとしている。で,今までのワードファイルから変換するためにWordMakerを作り直しているのだが,アプリ一個作るってことなので思ったより大変。とりあえずこんな感じ。

2015020701

Weather Typingの開発は,ローカルランキングの実装が終わって,そろそろWebランキングの作り直しを考えているところ。以前作り直そうとしたときはJavaを考えていたけど,最近だと何がいいのかなあ。Java/Ruby/Python/PHPってところなんだろうけど,とりあえずRuby on Railsを勉強してみようか。

というところで明日からまたアメリカ行きなので,Ruby勉強しつつワードファイルの実装でも片付けるか。

Weather Typing V3開発。ランキング部分の実装をしているが,まあまあのUIができた。

2015011001

この辺のUIはなかなかよい例がなくて,WebとかExcelとかを参考に数日費やしてみたが,最終的に,ヘッダをクリックするとポップアップツールが表示されて,ソート,検索ができるようにした。もちろん部分インクリメンタルサーチや候補選択による完全マッチもできるので,Qwertyのみ見たいとか,公式ワード1~3だけ見たいとかもできる。DenasuページにあるオンラインランキングもこんなUIにしたいが,HTML+JavaScriptで実現できるかな。

冬休みということでWeather Typing 3の開発。プレイ結果をグラフで表示しようとしてここ数週間止まっていた。せっかくなのでWPFで描画できないか調べると、ItemsControlでグラフを描画する例があった。が、やってみると意外に面倒。点や線は確かにXAMLでBindingできるのだが、座標変換とかはコードビハインドなので、結局プログラムで描画してる気分。

というところで現状のUI。サミットの要望はほとんど入れてないし、まだまだ変わると思うけど。
Weather Typing 3

Weather Typing 3

Weather Typing 3

あとは対戦モードを開発しないといけないのだが、その前にV1との互換性とワードを考えてみる。

スコアファイルは今まで取ってなかった履歴情報も記録できるようにするつもりだが、過去の互換性は取るつもり。履歴ファイルとリプレイは、いろいろ改善するためにあえて互換性を切りたい。当然旧バージョンとの混合対戦も不可。

あとOSも,とりあえず.NET4.5で作っているのでWindows XPでは起動しない。Windows 7でも新しい.NET Frameworkインストールが必要だが、Windows Updateで入るのでまあよいか。

ワードについては、英語ワード追加と日本語ワードの整理。日本語は、ワード1~3をマージ+スマホで打ちにくい記号を外す+新ワードをいくつか追加して1つにまとめるというのを考えている。新ワードはぱじさんに話をしたところ、1日で400くらい作ってくれた。すばらしい。

タイピングの伝道師として有名なPocariさんがTwitterで発表していたけど、Japanese added to Intersteno Internet Contest、つまり国際タイピング競技会に日本語が登録されたらしい。タイピングサミットの時にウェザタイ対戦で盛り上がっている様子を動画に撮っていたのだが、このためだったんですね。多少は貢献できたということなのかな。

要望を受けていた画像の回転は実装完了。かなりいろんなところをいじったのでちゃんとテストする必要があって,リリースは来週かな。ついでにWindows Dev Centerにあるクラッシュレポートも対応したいんだけど,いまいちどこで落ちてるか分からない。