2015年8月24日月曜日

スケジュールの見直し

Windows10を導入してみました。そんなに悪くないと思いました(メンテナンスと称して午前3時に勝手に立ち上がるのには驚きましたが)。

制作の進行状況ですが、タイトなスケジュールで頑張る予定だったのですが、真夏にそんなことができるはずもなく、あまり進んでいません。

働かぬ頭でいろいろ考えた結果、UIを大きく変更することにしました。

それに合わせて、Windows Formは一旦捨てて、新しい環境に以降しようと思います。何度も愚痴ってしまっていましたが、Windows Formのレイアウトルーチンは結局いまだにまともにコントロールできていません。「マウスポインタを乗せるとポップアップする」といったようなアグレッシブなUIを実現するには、かなり低レベルから自分の手でコントロールしないとうまくいかないようです。

そのために大々的に一から書き直すことになりますが、それに合わせて試しにWindows10のストアアプリに以降してみようかと思います。

Windows 10以前のストアアプリは、Windows 8以降でないと動かず、タブレット用に全画面表示が強制され、操作がタッチ前提の上、見慣れぬUIという4重苦のような環境でした。ですがWindows10は無償アップグレードということで、これからユーザーが増えてくると思いますし、またWindows10では普通のデスクトップアプリもストアに置いていいらしいので、「マイクロソフトのお墨付きがある安全な普通のアプリが簡単に手に入るよ」みたいなことで、ストアも使い物になるかもわかりません。

とにかく「お金がない」という絶対的危機的状況を解決するめどが全然立っておらず、マネタイズのプランが「ビットコインで寄付してもらう」という現実味のないものなので(洗練されたヘビーユーザーの中では当たり前の行為なのかもしれませんが、洗練された世界のことがよくわからないので判断できません)、もっとまじめに取り組もうと思います。Windowsのストアに置いて、マイクロソフトの審査に通ったアプリとして、マイクロソフトの提供するアプリ内課金を使って、課金してもらおうと思います。

今までのスケジュールは

PC版で基本機能完成→マルチプラットフォーム化→英語版へのローカライズ→スマホの狭い画面、タッチ操作への対応→スマホ版完成!

スマホ版完成によりはじめてまともにマネタイズが可能になってお金が入ってくる、かなり気の長いプランでした。しかしこの夏をグダグダに過ごしたことで、悠長すぎるこのスケジュールは見直しを余儀なくされました。

(現在ある中途半端なアルファ版)→英語版へ→ストアアプリへ→機能の追加→ストア版完成→スマホの狭い画面、タッチ操作への対応→スマホ版完成

英語版を作ってから、言語だけを日本語にするのは、日本人である私には簡単です。ただ日本語版を英語にするのは大変なので、もう最初からアメリカ人のMS審査部門に向けて英語で作り、その後で日本語版にしようと思います。特に日本のユーザーに向けてつくろうとすると、スタンプやガクブルや名前の匿名化など、難しいものからほとんど不可能なものまでいろんな機能に対応しなければいけなくなります。日本RedditのCSSの凝り具合を見ると、独自描画ルーチンで日本人にまともに使える専ブラを作るのは不可能ではないかとも思えてきます。

一旦メインユーザーに海外を想定して、日本向けの特殊な機能は後回しにし、とにかく急場をしのごうと思います。

2015年8月2日日曜日

沖縄移住計画

夏は暑く、あまり調子は上がりません。しかし暑いのは8月いっぱいぐらいですし、積極的に午睡したり、涼しい時間に活動したりすることでそれなりにやっていくことができます。

ほんとうに恐ろしいのは冬です。冬は12月下旬くらいから3月上旬ぐらいまで、耐えられないほど寒い期間が3ヶ月ほどあり、また寒すぎればキーボードが打てず暖かくすると眠くなるという逃げ場のない状況がずっと続きます。

とにかく冬はダメなので、冬が来る前に沖縄に移住したいという、夢とも妄想ともつかない願望をここ数ヶ月持ち続けています。スマホ版がうまいこといって、お金を得られたら、もしかしたらできるのではないかと思っています。

2015年7月31日金曜日

休みの予定

いろいろ試した結果、3週間働いて、3日休む、というペースがよいのではないかという結論に達しました。それにあわせて3週間おきに新しいバージョンを出していこうと思います。3週間&3日を1イテレーションとして

1イテレーション:一般公開
2イテレーション:正式版
3イテレーション:スマホ版
4イテレーション:予備

4イテレーションで大体3ヶ月になります。4イテレーション経過後1ヶ月休もうと思います。

英語の勉強がしたいのですが、いろいろ実験した結果プログラミングとは両立できず、一週間程度の休みでは十分な勉強ができないということがわかりました。一ヶ月ぐらい英語漬けにしたらレベルアップできるのではないかと思います。

4ヶ月中一ヶ月と9日休むことになりますが、結局週に1日でも2日でも休んでしまうと、集中が切れて取り戻すのに2日ぐらいかかってしまうので、1週間のうちまともに稼動できるのは3日ぐらいになってしまいます。休みを3週間に1度にすることで、その無駄が排除でき効率が上がることがわかりました。その代わり休みなくやるためには1日6時間ぐらいが限界のようです。

おそらく1イテレーションでは一般公開には間に合わないのですが、おばあちゃんから一万円もらったので、8月も乗り切れる可能性が高く、寄付を求めて急がなくても大丈夫かもわかりません。それとは別にイテレーションごとに新バージョンは出していこうと思っています。

2015年7月28日火曜日

Windows.Formsの問題

アクティブフォーム上に置いて、一度でも表示されたことがないとコントロールは正しく配置されないんですが、プログラム上でShowするだけでなく、Showした結果として実際に画面に表示されないとそのフラグが立たないようです。この問題にあらゆるタイミングで引っかかりまくっているのですが、いまだにどう御せばいいのか分かりません。基本的にコントロール配置は表示前にやるので、まともにやると解決不能です。

DockとかFlowLayoutPanelのようなものを使わずに、全て手動配置にすればおそらく解決できるんですが、ウインドウサイズ変更を手動で反映するのはかなり手間です。メインフォームに関しては隠しコントロールを作らずに、最初は全てVisible=trueにして、Control.Loadイベントか何かで隠したいものをVisible=falseにしても解決可能のようですが、メインでないフォームではどうもうまく行きません。

休み

3週間休まなかったので休んだほうが良いかと思い、1週間休んでみました。2日以上休んでも体感的に違いがわからず、意味があったのかはよく分かりません。次からは連続2日以上休まないことにします。

2015年7月22日水曜日

ロードマップ

一応公開にはこぎつけましたが、よく考えるとまだ全く危機を脱したわけではありません。多少タイムリミットは伸ばせたとはいえ、一刻も早く公開して寄付を求めて実際に寄付が集まらないと破産してしまうことに違いはありません。

「なんでこんなアタリマエのことが出来ないんだこのクソブラウザ!」と言われない、出来て当たり前の最低限をひと通り実装して、一般公開する、というのが次の目標になります。使っててストレスを与えないところまで持って行きたい。そのために必要なことを書き出してみます。

ブラウザのようにスレとサブレのタブを一ペインにまとめる。
背景色、文字色を変更可能に。
タブをドラッグして移動できるようにする。
コメントのテキストをドラッグで選択してコピー
RedditのURLをクリックした時に、専ブラ内で開けるものは開く。
いろんなところで右クリック出来るようにする
スタンプの実装
板一覧に登録されてるサブレディットを最新のものに
マウスを使ったショートカット
スレ立て
板一覧メニューがクソ以下なので根本的に直す。更新できるようにする。
プライベートメッセ ージ(返信)を使えるようにする。
書き込んだコメントの評価一覧を見れるようにする
画像サムネマウスオーバーで画像を見たい

↑ここまでが一般公開までに最低限やらなければならないこと


書き込みプレビュー
注目フィルタを正しく動かす
コメントを開いたり閉じたり出来るようにする
NG機能
スレの全コメントの取得(ある程度スレが進むと省略されてしまうので、省略されたコメを全て取得する。新着、ベスト200件に出てこないコメの評価も全部更新出来る)
購読サブレの全解除(デフォルトの英語サブレ対策)
評価値、カルマを保存してグラフ化する
実況(?)
スレやコメントの検索
公開後に出てくるであろう私が気づいていない様々な不満に対応する

↑ここまでが正式版までにやりたいこと

正式版といってもパイロット版の正式版、P1.0ということになります。

パイロット版では直せないことがいくつかあります。

・大きいコメントのちらつき(並列処理時の謎例外で一瞬ちらつきます。解決法が何も思いつきません)
・ソース先読み(スレを開いた時に、ソースを裏で先に読みこんでおこうとすると、なぜかUIスレッドもガクガクになるので、先読みをやるのはパイロット版では諦めることにします)

現バージョンはWinFormという古い、Win32APIのラッパーを利用してやっているので、いろいろガタが来ています。
正式版ではMono&GTK#に移植して、MacやLinuxでも動かせるようにする予定なので、その時に治せるんじゃないかと考えています。また、GTKにはテーマというのがあるらしく、それを使えば見た目を根本的にカスタマイズ出来るとかいう話なので、それを使ってダサい見た目もなんとか出来ればと考えています。

一般公開まで2週間ちょっと、おそらく実装2週間とデバッグ少々で間に合うと思います。正式版は一般公開後どのくらい修正しなければならないか次第になります。

2015年7月20日月曜日

ここまでのまとめとアプリの公開

昨日の夜はだいぶデバッグが進んだような気がしたのですが、今日動かしてみるとけっこうガタガタです。ただ公開するすると言ってきてずっと出来ていなかったので、今回は出します。今までとは違って出せるものがないわけではないのです。ガタガタなだけで、やろうとしてること、コンセプトぐらいは伝わるのではないかと思います。

ただよく考えれば、昨日今日動きだしたばかりのバグだらけのアプリを公開するというのは正気ではありません。アニメ第一話の試写会を色も塗らず原画のまま中割りもせず動きもガクガクの状態でやるようなものです。

早く寄付を求めなければお金がなくなるという思いが先に立って、焦ってやってきましたが、寄付を求めるような思い上がったことが出来るようなところまで完成度を上げられていません。また、昨日親から一万円借りて、クレジットカードの未払いを払ったので、当座の危機は解消されたのではないかと思います。ここでクレジットカードが解約になってしまうと、もう一生クレジットカードが持てない可能性も高いので、ここが凌げたのは大きいです。インターネット代金5000円くらいも未払いのはずなのですが、未払いの督促状が見当たらないので、多分大丈夫だと思います。

ここ3週間ぐらい休みなくやってきたのですが、疲れが出たのか現在全く頭が働いていません。少し休む必要があるようです。

このアプリが何をしているかの説明を書き、現在把握している不具合とか、今後のロードマップ等、公開するにあたっていろいろ書きたいのですが、体力が残っていません。

公開しますが、出来ればこれで判断はしないでいただければと思います。今回はブログ限定で公開します。このブログのここまでのグダグダを見て、なおまだ見ているという方、いるかどうか分かりませんが、そういう方がいたとすれば、アプリがガタガタでもそこまで気にしないような、専ブラに対する情熱と忍耐を持っている方ではないか、という希望的観測で行動してみようと思います。

とりあえずバグや機能不足を除いても、大きな不満になりそうな要素がまだたくさん残っています。大きな不満になる要素を全て取り除き、大半の人がそんなに不満なく使えるレベル、そこまでもっていって、一般公開を可能にするのが次の目標です。これが一ヶ月後を予定しています。できればそこまでは、アプリに対する評価を留保していただければと思います。

また、今回、このブログやアプリに対するリンク、宣伝等は、是非とも控えていただければと思っております。このアプリはまだ人前に出せる段階にはありません。「なら公開しなければいいだろう」という至極もっともな声が頭のなかに響いてきますが、出すといったからには出さねばならないとも思います。どうかよろしくお願いいたします。

https://drive.google.com/file/d/0BzP_9LiaNnm1YVBRYThEbTJLU0k/view?usp=sharing

動作条件:Windows Vista以降。Windows8ではうまく動かない可能性(?)

アプリの最低限の説明:自動ダウンロードについて

これらの数字は、仮のものです。最終版では変更されると思います。

現在タブとして開かれている、購読、マルレ等を含む全てのサブレは、1分間に1回、一括で新着25件が自動取得されます。なぜ1分に25件かというと、デフォルトの購読英語サブレ全部合わせて新着が1分に多くて15件くらいだったので、25あれば大丈夫だろうという判断です。25はデフォルトの表示数でもあり、キャッシュが効きやすいんじゃないかとも考えました。

現在表示されているスレが有る場合は、1分に1度、アクティブでないタブのスレは、5分に1度、新着が取得されます。

新着の取得は、まずスレの情報だけを取得しコメント数を調べ、コメント数に変化があった場合、新着コメ200件を取得します。200なのはデフォルトなのでキャッシュが効きやすいだろうという判断です。

サブレのタブは5分に1度、Hot順に100件を取得し、評価値などの変化を追います。アクティブなスレは5分に一度、そうでないスレは50分に1度、Best順200件を取得し評価値などの変化を追います。

タブがどれだけ開かれていても、自動ダウンロードは3秒に1回までです。APIへのアクセスは1秒1回までとされていますが、自動ダウンロード以外でもアクセスされることがあるので余裕を見ています。

アプリの最低限の説明2:未読フィルタ

未読ボタンを押すと、未読コメだけが表示されます。画面に表示したことがあるコメントは既読になります。また、スクロールで一気に飛ばした場合も、飛ばされたコメントは表示されていなくても全て既読になります。

今後について:

しばらくは機能追加を控えてデバッグに専念しようと思います(どうしても入れたい機能「スレタブの結合」と「背景色、文字色の変更」を除きます)。一週間ぐらいデバッグすればだいぶまともになっているんじゃないかと思います。