Weather Typing 3の対戦機能を実装中。対戦相手の管理を自力で実装しているのだが,ホストの作成や参加はロビーを使うようにするつもり。サミットでも言われたが,IPアドレスを調べて他の人に教える,というやり方は難しく,ロビーを使えば気にしなくて済む。旧ウェザタイはインターネット前提ではなかったのでああいう形だったが,今は前提としてもいい気はする。
ウェザタイのウィンドウからホストを選択するとロビーに隠し部屋ができて,チャットもその場でできる,って感じかな。ロビーもウェザタイのウィンドウに入れられるとなおいいけど。
で,ロビーを前提にするということは,対戦モードで使う名前をロビーの名前にするということになるが,折角なので,対戦モード,ロビー,ランキングのユーザは統一を図りたい。というより旧ウェザタイがバラバラになっているのがおかしいのだが。一番ちゃんと管理してるのはランキングなのでランキングのユーザに統一するのがいいけど,どうだろう。何かいいアイデアがあれば教えてもらえると助かります。
というところで技術的な壁が一つ。ランキングのパスワードはPerlのCrypt関数(LinuxのCrypt関数と同じ)で不可逆暗号している。復号はできないので,Javaで作ったロビーから同じアルゴリズムを使えないと統一できない。調べたところ,Linux Cryptアルゴリズムは当然公開されていて,鍵が特殊なDESらしい。Cの実装例はいくつか公開されていたので,参考にしつつJavaに実装はできた。
対戦モードの進捗としては,進んできてはいるんだけど,まだまだかかりそう。10月までに終わるのか。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
Weather Typing開発。スコア関連機能とワード関連機能は実装完了。ということでついに対戦機能にとりかかる。ランキングとかロビー機能にも手を付けたいが,来年のタイピングサミットを考えると間に合わなくなりそうなので対戦機能を最優先で。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
人喰い掲示板シリーズの壁紙を公開しました。Pajyarou氏によると詳細はまだ語れないそうですが,素晴らしいクオリティですね。
ダウンロード
Flashゲーム
そのまま峠, 人喰い掲示板の噂
コメント・共有する
うちのサポート掲示板。ほっておくと1日200件くらいのSPAM投稿がある。今まではURL書き込み禁止と特定のホスト禁止で対策してきたのだが,最近は限界。ということで大幅に拡張した。HTML見れば分かるのでここに書いてしまうが,JavaScriptを解釈しないと書き込めないようにした。
- Formの書き込み欄の名前をJavaScriptからランダムに変える
- FormのActionをJavaScriptから変える
- CSSで非表示にしたエディットボックスを置いて,入力されたらSPAM認定
最初1を思いついて,JavaScript観点での対策を調べたら2が見つかって,あとはCSSにもリスク分散したいということで3を追加した。まあやるだけやっとけということで。
あとはCAPTCHA(読みづらい文字を表示して入力させる例の仕組み)というのもあるが,人にも読めない文字が表示されて,書き込む意欲がなくなるので却下。たかがSPAMのために本来のユーザが書き込みにくくなるのは本末転倒で,SPAM業者が懸命に手で書き込んでいるならこちらも懸命に対応するが,ロボットを使っているならこちらもロボットで対策するのが筋ですよね。
プログラミング, コンピュータ
コメント・共有する
Weather Typingのワードファイルだが,ワードの名前とか著作者を入れたいので,txtからxmlにしようとしている。で,今までのワードファイルから変換するためにWordMakerを作り直しているのだが,アプリ一個作るってことなので思ったより大変。とりあえずこんな感じ。

プログラミング, コンピュータ
Weather Typing
コメント・共有する
Weather Typingの開発は,ローカルランキングの実装が終わって,そろそろWebランキングの作り直しを考えているところ。以前作り直そうとしたときはJavaを考えていたけど,最近だと何がいいのかなあ。Java/Ruby/Python/PHPってところなんだろうけど,とりあえずRuby on Railsを勉強してみようか。
というところで明日からまたアメリカ行きなので,Ruby勉強しつつワードファイルの実装でも片付けるか。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
最近Analog Book Readerの評価とコメントが増えている。コメントで,1ページずつ表示する機能が欲しいというのをいくつかもらっているのだが,Weather Typing開発が一区切りついたら検討するので,もう少しお待ちを。
Amazon Kindle for PCが話題。ダウンロードしてArduino本を読んでみるが,やっぱり使い勝手が微妙によくない。ページめくりが遅いのはインターネット前提だからしかたないかもだけど,拡大しておいて次のページに行くと拡大率が戻っているとか,細かいところでイライラする。Kindle APIとか公開してくれればAnalog Book Readerで読めるようにできるんだけどなあ。
プログラミング, コンピュータ
Analog Book Reader
コメント・共有する
Pajyarouさんと浅草橋の新春けもケットへ。我々には内容が分からないのが残念だが,こういう雰囲気はいいですね。とりあえずもげぇたん本はなさそうということだけは分かった。
今回のはFlash関連の話で行ったのだが,Denasuの活動も少しずつ外に向かっているのを感じて楽しい。
それはそれとして,アキバが近かったので白色LEDを始めとする基本部品を買ってきた。配線がおかしいのか,全部つなげても白にならなかったので,とりあえず青色LEDのキャプチャを載せておく。

プログラミング, コンピュータ
Arduino
コメント・共有する
以前買ってきてそのままだったArduinoを使って何かしようということで,はっぱさんとLEDをチカチカさせてみた。経験者であるはっぱさんと実習したことでだいたいのことが分かったので,部品をそろえて面白いことをやってみたい。


今日は,はっぱさんが持っている赤+緑LEDとタクトスイッチx2で,片方のスイッチで赤がだんだん明るくなり,もう片方のスイッチで緑がだんだん明るくなるようにして,赤緑黄を自在に光らせられるようにした。これだけでもかなり楽しい。ちなみにはっぱさんがやっていたのは10年以上前なので青色LEDはさすがにない。
プログラミング, 電子工作
Arduino
コメント・共有する
Weather Typing V3開発。ランキング部分の実装をしているが,まあまあのUIができた。

この辺のUIはなかなかよい例がなくて,WebとかExcelとかを参考に数日費やしてみたが,最終的に,ヘッダをクリックするとポップアップツールが表示されて,ソート,検索ができるようにした。もちろん部分インクリメンタルサーチや候補選択による完全マッチもできるので,Qwertyのみ見たいとか,公式ワード1~3だけ見たいとかもできる。DenasuページにあるオンラインランキングもこんなUIにしたいが,HTML+JavaScriptで実現できるかな。
プログラミング, コンピュータ
Weather Typing
コメント・共有する
pajyarouさんの新作「そのまま峠 その3」が公開されました。作品が進む度にどんどん凝ってきてますね。
Flashゲーム
そのまま峠
コメント・共有する
冬休みということでWeather Typing 3の開発。プレイ結果をグラフで表示しようとしてここ数週間止まっていた。せっかくなのでWPFで描画できないか調べると、ItemsControlでグラフを描画する例があった。が、やってみると意外に面倒。点や線は確かにXAMLでBindingできるのだが、座標変換とかはコードビハインドなので、結局プログラムで描画してる気分。
というところで現状のUI。サミットの要望はほとんど入れてないし、まだまだ変わると思うけど。



あとは対戦モードを開発しないといけないのだが、その前にV1との互換性とワードを考えてみる。
スコアファイルは今まで取ってなかった履歴情報も記録できるようにするつもりだが、過去の互換性は取るつもり。履歴ファイルとリプレイは、いろいろ改善するためにあえて互換性を切りたい。当然旧バージョンとの混合対戦も不可。
あとOSも,とりあえず.NET4.5で作っているのでWindows XPでは起動しない。Windows 7でも新しい.NET Frameworkインストールが必要だが、Windows Updateで入るのでまあよいか。
ワードについては、英語ワード追加と日本語ワードの整理。日本語は、ワード1~3をマージ+スマホで打ちにくい記号を外す+新ワードをいくつか追加して1つにまとめるというのを考えている。新ワードはぱじさんに話をしたところ、1日で400くらい作ってくれた。すばらしい。
プログラミング
Weather Typing
コメント・共有する
しばらく前にMac Bookが起動しなくなってほっておいたのだが、ようやく調べたところ、HDDが壊れたっぽい。なのでこれを機にPC環境を一新。なんかちょうどお金も振り込まれていたのでアキバへ。Intel SSD 730K Series 240GBを2個、CFD DDR3 PC3-12800 8GBx2を買ってきた。こういう増設はずいぶん久しぶりだ。
今のメインPCは、DellのInspiron 17R Special Edition。CPUはCore i7 2.4GHz。1TBのHDDに加えて、ノートでは珍しくディスクの空きスロットがあるので、SSDを追加してWindows 8.1 updateを入れる。ついでにメモリはメーカー上限8GBを超えて16GBにしてみる。マウンタのネジがついてないので周辺からもってきたりしたが、何の問題もなし。Dellのノートは昔からパーツ交換しやすいのがよいです。で、起動時間が爆速になった。2年前のPCだけど、これで最新のノートと同じくらいになったかな。
で、Mac Book Pro 13インチ。HDDを外してSSDを取り付ける。ついでにInspironから外した4GBx2メモリのお下がりを付けて4GB->8GBに。特殊ネジがあったけど適当にペンチでなんとかしたりしたが特に難しくはなかった。Yosemiteを新規インストールした。以前はMavericksでXCodeを動かしたらものすごい重かったけど、これなら開発できるかな。
コンピュータ
コメント・共有する
タイピングの伝道師として有名なPocariさんがTwitterで発表していたけど、Japanese added to Intersteno Internet Contest、つまり国際タイピング競技会に日本語が登録されたらしい。タイピングサミットの時にウェザタイ対戦で盛り上がっている様子を動画に撮っていたのだが、このためだったんですね。多少は貢献できたということなのかな。
プログラミング
Weather Typing
コメント・共有する
最近仕事で数学の知識が必要になるので勉強。たまたま家に群論の本があったので読む。よく学校の勉強は将来役に立たないとか言うけど、そんなことないと思う。World Tester作るのに物理使ったし、Purentro作るのに音楽使ったし、英語と数学は日常的に使うし。言ってみれば掃除スキルとか料理スキルとかもそうだし。いろんなことを広く浅くやってるから必要になったときに深く勉強するのが楽、といった方がいいのかな。
その他
コメント・共有する
Windowsストアに,見開きページになった本を分割したいという要望が。この機能はずっと付けたかったのだが,自動的に分割するのは難しいのでどうしようかと思っていた。あまりメニューを増やしたくはないが,メニューに付けるしかないのかな。
プログラミング
Analog Book Reader
コメント・共有する
Analog Book Reader 1.4を公開した。メールでもらった要望「縦横が逆になった本を読みたい」というのと,掲示板でもらった要望「ドラッグ時にスクロールしたい」に対応。あとはいくつかのUI改善。
縦横問題についてはいろいろ考えたが,結局右回転,左回転ボタンを付けることに。メニューではなく二本指で自由に回転させるというのも考えられるが,どうしても拡大縮小と競合してしまうためやめた。利用シーンは縦横逆の本を読みたいというものなので,1つの本で1回やれば済む話。拡大縮小に比べて使用頻度は低いため,メニューの方がよいという判断。
UI改善の中では,操作に合わせた方向補正を実装した。例えば,日本語の本を開いたらデフォルトで左開きになってしまったとき,つい左ボタンを押してしまうが,その場合勝手に右開きに変えて2ページ目に進む,というもの。Analog Book Readerは,ユーザが仕様に合わせるのではなくて,ユーザ操作の裏を推測してソフトが合わせるという考え方で作っているがその一つ。
まあ,本当なら,日本語を自動判定して右開きにしたり,縦横逆だったら自動判定して回転させたりしたいのだが,そこまでの技術はまだないわけで。
プログラミング
Analog Book Reader
コメント・共有する
Analog Book Reader 1.4に向けてWindows Storeに報告されているクラッシュレポートを見る。相変わらずどこで落ちているか分かりづらいけど,2つほど修正。
前にも少し書いたが,クラッシュ箇所の特定方法をアップデート。
- Windows 8.1 SDKからwindbgをインストール
- Defrag Toolsで配布しているPDE.dllのx86/x64版をそれぞれwindbgと同じフォルダにコピー
- 「プロジェクト\AppPackages」フォルダにあるappxsymをzipにした中身のpdfファイルと,appxbundleファイルをzipにした中身のappxファイルをzipにした中身のexeファイルを,「どこか\x64\symbols\exe」,「どこか\x86\symbols\exe」フォルダに配置
- windbgでdmpを開く
- シンボルの設定を「SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols; どこか\x64\; どこか\x86」に設定
- 「.reload /f xxx.exe」コマンドでシンボルをリロード。lmコマンドで読み込めていることを確認
- 「!pde.dse」コマンドでスタックトレースを表示
- スタック上にexeが出てくれば,Visual StudioでNativeデバッグしてdisassembleから関数内のオフセットを探す。出てこなければ・・・今のところ諦めるしかない?
プログラミング
Analog Book Reader, Windows Store, winrt
コメント・共有する
要望を受けていた画像の回転は実装完了。かなりいろんなところをいじったのでちゃんとテストする必要があって,リリースは来週かな。ついでにWindows Dev Centerにあるクラッシュレポートも対応したいんだけど,いまいちどこで落ちてるか分からない。
プログラミング
Weather Typing
コメント・共有する
Analog Book Readerのユーザさんから英文メールが。縦横が入れ替わっているドキュメントを読むことがあって,その場合に読みづらいという要望。電子書籍リーダーとして足りない機能の一つなので,次のバージョンで対応する予定。簡単かと思ったが,ブックマークとかマーカーとかも回転させないといけないので結構いろんなところを直さないといけない。
プログラミング
Weather Typing
コメント・共有する
幼稚園の頃によくプレイしていたPC-6001のARKというゲームがあるのだが,調べても情報が出てこなくてずっと探していた。最近Youtubeでプレイ画面が出ていて,さらに調べていくと月刊マイコンだったことが判明。どうりでBasicマガジンを調べても出てこないはずだ。
ということで国会図書館に行って月間マイコンの1982年4月号を請求。なるほど,読者投稿ではなく特集の1つだったのか。全ての物体が角度を付けたLINEで作られているとか,表のキャラクタ画面と裏のグラフィック画面を交互に配置して描画の遅さをカバーしてるとか,参考になった。
プログラミング
ベーマガ, 国会図書館
コメント・共有する
Analog Book Reader 1.3.1を公開した。Windowsストアでもらったコメントに対応して,高解像度の画像を開いて縮小したときに画像が汚くなるのを改善した。
前回の日記で,winrtの画像補間がどれも同じ感じと書いたが,実際はFantアルゴリズムであればある程度よい結果が得られていた。ただ,ScrollViewerの拡大縮小の結果,ぼやけた感じになっていた。そこで,画像をスクリーンの大きさに合わせたものを等倍にすることで最適化することにした。今までと少し動きが変わるので,今までと比べて劣化することがあったら報告してもらえるとありがたい。
Analog Book Readerでは,ScrollViewer内に画像を表示しているのだが,そのままだとスケーリングで画像が汚くなってしまうので,一旦画像をZoomFactor倍してからScrollViewerで表示している。デフォルトのアルゴリズムでは,拡大はある程度大丈夫だが,縮小は汚くなってしまうのが今回の問題。そこで補間アルゴリズムをFantにしたのだが,結局縮小した画像をScrollViewerがZoomFactorによってさらに縮小し,ScrollViewerの大きさに合わせて拡大しているような動作になっていた。そのため,画像がぼやけてしまう。いろいろ調べてみたがいい案はない。RenderOptionsが使えればScrollViewerで補間付きの拡大縮小ができるのだが,winrtにはない。ScrollViewerの拡大率が変わったときに画像を拡大縮小して拡大率を1.0に戻すのも検討したが,動作がおかしいので却下。そこで発想を変えて,画面の大きさを拡大率1.0にするようにした。これなら,画像を画面にぴったり合わせたときが一番綺麗に見えて,そこから拡大縮小したときも多少は見栄えがよくなる。今まで高解像度の画像があると,最大限に縮小してもあまり縮小できなかった問題も解決することができてよい案かとは思う。が,今までうまく見えていた画像がぼやけたりすることがあるのでは,と少し怖い。手元の本ではうまく見えてはいるけど・・・。
プログラミング
Analog Book Reader, winrt
コメント・共有する
久々にAnalog Book Readerにコメントがついた。「高解像度でスキャンしたファイルを表示するとモアレがひどい」とのこと。こういうコメントが一番参考になる。以前マンガビューアとして使うには機能が足りなすぎるというのを日記に書いたけど,具体的な優先順位がなくてどれから手を付けるべきか分からなかったのだが,まずはこの辺だろうか。
漫画ビューア専用ソフトだと拡大縮小のアルゴリズムが選べて,一番良いのを選ぶと縮小が綺麗。Analog Book ReaderはWindowsRTの標準を使っているが,自分の環境ではディスプレイの解像度が大きいので縮小に関してはあまり気にしていなかった。アルゴリズムはNearestNeighbor/Linear/Cubic/Fantの4種類が選べるが,どれも縮小は似たような感じ。自力で作るかNuGetしかないか。
プログラミング
Analog Book Reader
コメント・共有する
家のTVをケーブルテレビに移行した。ついでにネットの方もフレッツからケーブルTVに。固定電話とメールアドレスが1つ増えた。何かメールアドレスが7種類になってるけど。関連してメール周りを見直し。
最近ドコモメールのSPAMがうっとおしいのでようやく設定を調べた。基本的に教えた人以外からは来ないはずなので登録アドレス以外は受信拒否に。しばらく自動受信をオフにしていたが,これでオンに戻せる。
で,ドコモ設定を見ていたら最近はPCでも受信できることが分かったので早速設定してみる。が,設定完了までにどれだけステップが必要なんだというほど難解。今までドコモにログインしていたIDとは別のドコモIDが必要になって,作ってメール設定しようとしたら携帯でやれと言われて,その後Wi-Fiをオフにして,それでもエラー。どうやらメールアプリが更新されていて,クラウド用メールアプリがあるんですね。そのアプリを入れて,ドコモIDの利用を可にして,PCでメールサーバの設定を入れて完了。なるほど,PCでメールを送受信するような人はもちろんこれくらい分かるはずだと。強気でいっていいと。さすがNTT,全国のサービスUX設計をしている人達に勇気を与えてくれますね。
そうそう,NTTフレッツの契約解除は,電話の人も親切でルータの返却も簡単で分かりやすかったのは付け加えておこう。
コンピュータ
コメント・共有する
Weather Typingの画面デザインを進めている。プログラミングと違ってどこまでいっても終わりがないのでここが一番時間がかかる。最初にWeather Typingを作ったときはUI知識もデザイン知識もなかったし、DirectXで画面を作っていたので使いにくいところがたくさんある。ゲームを終わらせないと設定変えられないとか、その辺を洗い出して再設計しているのだが、進まない。
プログラミング
Weather Typing
コメント・共有する
アメリカで衝動買いしたArduino UNOをはっぱさんに渡してきた。一人でやってもモチベーションが上がらないので道連れに。Arduinoは小型のマイコンで、ハードウェアをつなげてソフトウェアを組み込むことでいろんなことに使える。とはいえまだ本体しかないので、いろいろ揃えていかないと何もできないかな。
プログラミング, 電子工作
コメント・共有する
9/30からアメリカサンフランシスコに出張して今日帰国予定。アメリカにいるけど英語を使う機会はそんなになくて,日本にいる方が英語使う気がする。一応Surfaceと開発環境はあるが,こっちにいるとやっぱり時間が取れなくて,結局開発は難しい。Windows 10もプレビューが出ているので試したいけど,回線的に厳しいので,日本に帰ってから試すしかない。しばらくは出張がありそうなので,どうにかできないかなあ。
その他
コメント・共有する
Weather Typing 3.0開発,とりあえずQwertyのシングルモードは打てるようになった。スマートフォン版をWindowsで使えるようになった感じ。ウィンドウを拡大縮小できるし,文字の拡大縮小もできる。

というところで設定とか対戦の実装を始めるのだが,出張でしばらく空いてしまいそうなので,その間にデザインを考えている。タイトル画面はこんな感じか? アイコン適当だけど。

プログラミング
Weather Typing
コメント・共有する
C#版Weather Typingを作る上でどうしても性能が出ない部分がある。キーボード入力部分と打鍵音再生。キーボード入力はWindows Messageでもいいけど,どうしても遅延が発生するのと,ツール対策上もっと低レイヤーが望ましい。打鍵音再生は普通に再生すると音飛びが発生しまくるし複数音同時再生ができない。
ということでC#でゲームを作るときに今は何を使うのか調べてみたところ,予想以上に混沌としていた。まず現行のWeather Typingで使っているDirectXをC#から使うManaged DirectXだが,.NET 4.0以降では使えない。そしてDirectXの後継XNAだが,別途ランタイムが必要で,既に廃止が決まっている。その後は・・・あれ,何もないのか。どうすればいいのさ。
てことでもうC#からP/InvokeでDirectXを呼び出しちゃうことにした。
プログラミング
Weather Typing
コメント・共有する
最近The Gamification Revolutionという本を読んでいる。いろんなことにゲーム的な要素を取り入れることでモチベーションを高められるというもの。Twitterなんか,フォローア数とか,最近一般に使えるようになったTwitter AnalyticsのImpressionsとか,あからさまにゲーム性を出してる感がある。こういうのをフリーソフト作りのヒントにしたい。
Weather Typingはランキング,ロビーや大会などでライバルに勝つというのがモチベーションにつながるのは分かるけど,それ以上何かないかな。TOD2は成績評価してたり,タイプウェルはアチーブメント的なのを導入してるのか。打鍵数とか練習時間が記録されるとか,全配列で一定の点数を出すと何か嬉しいことがあるとか,パッと思いつくのはそんなところかな。
Analog Book Readerも開発中から何かゲーム要素を付けたいとは思っていて,読書時間を記録するようにしたんだけど,もっと積極的に読書を面白くする方法はないだろうか。本を配布しているサイトを運営しているなら,やりようはありそうなんだけどなあ。
プログラミング, 書評
Analog Book Reader, Weather Typing
コメント・共有する
Windows 7問題が解決したところで新しいWeather Typingを少し考えてみる。まずは今までの要望を整理。サミットで頂いた要望も追加しておいた。
Analog Book Readerは一般向けに作ったので機能をできるだけシンプルにしたけど,Weather Typingはコアなユーザ向けなので多少複雑でも機能性とカスタマイズ性を重視するのが基本路線。といっても今のままのUIでは使いづらいのでUIは考えないといけない。
少し前からiOS/Android版をWindowsに逆移植し始めていて,C#+WPFではシングルプレイはある程度できた。ここにiOS/Android版では付けなかった対戦機能とカスタマイズ機能を付けると基本は完成するはず。
それにしてもC#+WPFの開発効率はすごい。今までJava/Objective Cで作っていたUIをXAMLに移植するとコードが数分の1くらいになるイメージ。今までコードで表示していたユーザ情報やランキング情報も,Binding使えばほぼ何も書かなくていい。画面回転でレイアウトを変えていた部分もかなりめんどうなコードだったが,XAMLなら何もしなくても可変サイズに対応できる。ここまで楽ならより凝ったUIにするのも考える余裕が出る。
プログラミング
Weather Typing
コメント・共有する