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:未読フィルタ

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

今後について:

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

2015年7月19日日曜日

進捗

デバッグはほとんど終わったと思うので、あとは謝辞を作って(BSDライセンスのものを使いまくっているので謝辞がないとライセンス違反になってしまうはずです)、細かいところを直して、明日公開できそうです。

2015年7月18日土曜日

進捗

だいぶ動いてきてはいるのですが、まだバッグバグのバグだらけです。

バグが全部取れて、1日動かしてみて、新しいバグが見つからなければ、「デバッグをしました」と主張することが可能になると考えています(バグが無くなったということではなく、バグを取る努力をある程度やりました、と主張しても怒られないといったくらいの意味です)。なのでそれができたら公開しようと思います。

だいたいバグが取れてから1日ぐらいは動かさないと、ユーザビリティがどうなっているのか、予定通りの使い勝手になっているのかも分からないままです。「使いやすいアプリになりました」と主張できるのも1日使ってみてからの話だと思います。

目標は明日中にバグを取って、明後日は1日いろいろ確認して、公開という感じで考えています。

2015年7月15日水曜日

進捗

9割9分出来たと思います。

まだ動かしてないので、「動かしてみたら全然動かない→設計ミスだった」という流れになって、またドツボにはまる可能性も無きにしもという感じではあるのですが、9割9分は実装できました。あとは最後の1分を実装して、デバッグして、動くようになったら、ひっそりと公開するという流れです。そんなに時間はかからないと思います。

2015年7月8日水曜日

進捗

1週間で終わらせると息巻いてから1週間経ってしまいました。しかし全然終わっていません。

作りたい機能があと2つあったのですが、1週間かけてもそのうちの1つも終わりませんでした。再設計が必要になって、動いている部分にもかなり手を入れたのでどちらかと言えば後退しているかもしれません。

コーディングやデバッグは手を動かしていればいずれ終わる、頭をつかう部分はありながらも、ひたすらパズルを解き続けるただの作業といえなくもないようなもので、何日作業すれば終わるかもだいたい分かるんですが、再設計となると、脳内に作った回路を破壊し、再構築する、脳の再プログラミングが必要になります。これはどれだけかかるのか分かりません。やりたいことを理解し、どうすれば実現できるか理解していれば、あとは実現するだけですが、理解が不十分で、実現のための方法論が困難すぎたため、再度やりたいことを正確に定義し、理解しなおし、道筋を考え直す必要があります。

感覚的にはあと2週間ぐらいかかりそうです。いままでで学習出来たことは、「死ぬほど頑張れば1週間で出来る」といって目標を1週間にして自分にハッパをかけたつもりになっても、あふれるようにパワーが湧いてこなければ、結局死ぬほど頑張ることも出来ないし1週間で作ることも出来ません。そしてあふれるようにパワーが湧いてくることは滅多にありません。

なのでこの目標は、いつものペースで、普通にやって2週間です。インターネットやクレジットカードの未払の督促状が来ていて、払い込まないとクレジットカードは解約でインターネットも止まることになります。そのデッドラインはおそらく今月末のはずです。本当の本当にデッドラインです。いままでデッドラインと言ってきたものは自分にハッパをかけるための幻のデッドラインでしたが、今回は本物です。

デッドラインに辿り着くまでに、なんとかまともに動く実用的なものを作りたかったのですが、そのはるか手前、最低限自分のやりたい機能が動くだけの、実用もへったくれもないパイロット版に悪戦苦闘している有り様です。しかしパイロット版が終わり、一番難しい、一番やりたい機能が作れれば、あとの部分は惰性でコーディングとデバッグをしていけば作れるはずです。もっと難しい機能を作りたくならない限り、ですが。

2015年7月1日水曜日

進捗

とうとう7月になりました。

夏になるとバイオリズムがめちゃくちゃになってあまり進まなくなると思うので、梅雨のうちにかたをつけてしまいたいところです。

前回の進捗で入れたい機能があと6つあるという話をしたんですが、この1週間で3つ消化出来ました。そして1つ諦めたのであと2つです。

いい感じのペースだと思います。しかし残った2つは最高レベルの重要な機能だと思っているもので、実装もなかなか大変だと思います。そして大手を振って人前に出すためにはそれなりにデバッグしてまともに動かせるところまではやらないといけません。

ここから一週間としばらくはペースをいけるところまで上げていこうと思います。それでバッチリ公開できるでしょう。