tag:blogger.com,1999:blog-28802439825409389992024-03-14T03:15:08.083+09:00RedditChan BlogRedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-2880243982540938999.post-89176370392643550342015-08-24T10:07:00.001+09:002015-08-24T10:07:29.114+09:00スケジュールの見直しWindows10を導入してみました。そんなに悪くないと思いました(メンテナンスと称して午前3時に勝手に立ち上がるのには驚きましたが)。<br />
<br />
制作の進行状況ですが、タイトなスケジュールで頑張る予定だったのですが、真夏にそんなことができるはずもなく、あまり進んでいません。<br />
<br />
働かぬ頭でいろいろ考えた結果、UIを大きく変更することにしました。<br />
<br />
それに合わせて、Windows Formは一旦捨てて、新しい環境に以降しようと思います。何度も愚痴ってしまっていましたが、Windows Formのレイアウトルーチンは結局いまだにまともにコントロールできていません。「マウスポインタを乗せるとポップアップする」といったようなアグレッシブなUIを実現するには、かなり低レベルから自分の手でコントロールしないとうまくいかないようです。<br />
<br />
そのために大々的に一から書き直すことになりますが、それに合わせて試しにWindows10のストアアプリに以降してみようかと思います。<br />
<br />
Windows 10以前のストアアプリは、Windows 8以降でないと動かず、タブレット用に全画面表示が強制され、操作がタッチ前提の上、見慣れぬUIという4重苦のような環境でした。ですがWindows10は無償アップグレードということで、これからユーザーが増えてくると思いますし、またWindows10では普通のデスクトップアプリもストアに置いていいらしいので、「マイクロソフトのお墨付きがある安全な普通のアプリが簡単に手に入るよ」みたいなことで、ストアも使い物になるかもわかりません。<br />
<br />
とにかく「お金がない」という絶対的危機的状況を解決するめどが全然立っておらず、マネタイズのプランが「ビットコインで寄付してもらう」という現実味のないものなので(洗練されたヘビーユーザーの中では当たり前の行為なのかもしれませんが、洗練された世界のことがよくわからないので判断できません)、もっとまじめに取り組もうと思います。Windowsのストアに置いて、マイクロソフトの審査に通ったアプリとして、マイクロソフトの提供するアプリ内課金を使って、課金してもらおうと思います。<br />
<br />
今までのスケジュールは<br />
<br />
PC版で基本機能完成→マルチプラットフォーム化→英語版へのローカライズ→スマホの狭い画面、タッチ操作への対応→スマホ版完成!<br />
<br />
スマホ版完成によりはじめてまともにマネタイズが可能になってお金が入ってくる、かなり気の長いプランでした。しかしこの夏をグダグダに過ごしたことで、悠長すぎるこのスケジュールは見直しを余儀なくされました。<br />
<br />
(現在ある中途半端なアルファ版)→英語版へ→ストアアプリへ→機能の追加→ストア版完成→スマホの狭い画面、タッチ操作への対応→スマホ版完成<br />
<br />
英語版を作ってから、言語だけを日本語にするのは、日本人である私には簡単です。ただ日本語版を英語にするのは大変なので、もう最初からアメリカ人のMS審査部門に向けて英語で作り、その後で日本語版にしようと思います。特に日本のユーザーに向けてつくろうとすると、スタンプやガクブルや名前の匿名化など、難しいものからほとんど不可能なものまでいろんな機能に対応しなければいけなくなります。日本RedditのCSSの凝り具合を見ると、独自描画ルーチンで日本人にまともに使える専ブラを作るのは不可能ではないかとも思えてきます。<br />
<br />
一旦メインユーザーに海外を想定して、日本向けの特殊な機能は後回しにし、とにかく急場をしのごうと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-84185421128860162222015-08-02T17:45:00.000+09:002015-08-02T17:45:19.597+09:00沖縄移住計画夏は暑く、あまり調子は上がりません。しかし暑いのは8月いっぱいぐらいですし、積極的に午睡したり、涼しい時間に活動したりすることでそれなりにやっていくことができます。<br />
<br />
ほんとうに恐ろしいのは冬です。冬は12月下旬くらいから3月上旬ぐらいまで、耐えられないほど寒い期間が3ヶ月ほどあり、また寒すぎればキーボードが打てず暖かくすると眠くなるという逃げ場のない状況がずっと続きます。<br />
<br />
とにかく冬はダメなので、冬が来る前に沖縄に移住したいという、夢とも妄想ともつかない願望をここ数ヶ月持ち続けています。スマホ版がうまいこといって、お金を得られたら、もしかしたらできるのではないかと思っています。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-76039420849706500972015-07-31T13:22:00.001+09:002015-07-31T13:22:43.348+09:00休みの予定いろいろ試した結果、3週間働いて、3日休む、というペースがよいのではないかという結論に達しました。それにあわせて3週間おきに新しいバージョンを出していこうと思います。3週間&3日を1イテレーションとして<br />
<br />
1イテレーション:一般公開<br />
2イテレーション:正式版<br />
3イテレーション:スマホ版<br />
4イテレーション:予備<br />
<br />
4イテレーションで大体3ヶ月になります。4イテレーション経過後1ヶ月休もうと思います。<br />
<br />
英語の勉強がしたいのですが、いろいろ実験した結果プログラミングとは両立できず、一週間程度の休みでは十分な勉強ができないということがわかりました。一ヶ月ぐらい英語漬けにしたらレベルアップできるのではないかと思います。<br />
<br />
4ヶ月中一ヶ月と9日休むことになりますが、結局週に1日でも2日でも休んでしまうと、集中が切れて取り戻すのに2日ぐらいかかってしまうので、1週間のうちまともに稼動できるのは3日ぐらいになってしまいます。休みを3週間に1度にすることで、その無駄が排除でき効率が上がることがわかりました。その代わり休みなくやるためには1日6時間ぐらいが限界のようです。<br />
<br />
おそらく1イテレーションでは一般公開には間に合わないのですが、おばあちゃんから一万円もらったので、8月も乗り切れる可能性が高く、寄付を求めて急がなくても大丈夫かもわかりません。それとは別にイテレーションごとに新バージョンは出していこうと思っています。<br />
<br />RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-16675255694616217982015-07-28T17:38:00.000+09:002015-07-28T17:38:41.559+09:00Windows.Formsの問題アクティブフォーム上に置いて、一度でも表示されたことがないとコントロールは正しく配置されないんですが、プログラム上でShowするだけでなく、Showした結果として実際に画面に表示されないとそのフラグが立たないようです。この問題にあらゆるタイミングで引っかかりまくっているのですが、いまだにどう御せばいいのか分かりません。基本的にコントロール配置は表示前にやるので、まともにやると解決不能です。<br />
<br />
DockとかFlowLayoutPanelのようなものを使わずに、全て手動配置にすればおそらく解決できるんですが、ウインドウサイズ変更を手動で反映するのはかなり手間です。メインフォームに関しては隠しコントロールを作らずに、最初は全てVisible=trueにして、Control.Loadイベントか何かで隠したいものをVisible=falseにしても解決可能のようですが、メインでないフォームではどうもうまく行きません。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-34461496648830813482015-07-28T17:14:00.003+09:002015-07-28T17:14:45.240+09:00休み3週間休まなかったので休んだほうが良いかと思い、1週間休んでみました。2日以上休んでも体感的に違いがわからず、意味があったのかはよく分かりません。次からは連続2日以上休まないことにします。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-69866644087374984572015-07-22T11:42:00.000+09:002015-07-22T22:34:42.432+09:00ロードマップ一応公開にはこぎつけましたが、よく考えるとまだ全く危機を脱したわけではありません。多少タイムリミットは伸ばせたとはいえ、一刻も早く公開して寄付を求めて実際に寄付が集まらないと破産してしまうことに違いはありません。<br />
<br />
「なんでこんなアタリマエのことが出来ないんだこのクソブラウザ!」と言われない、出来て当たり前の最低限をひと通り実装して、一般公開する、というのが次の目標になります。使っててストレスを与えないところまで持って行きたい。そのために必要なことを書き出してみます。<br />
<br />
ブラウザのようにスレとサブレのタブを一ペインにまとめる。<br />
背景色、文字色を変更可能に。<br />
タブをドラッグして移動できるようにする。<br />
コメントのテキストをドラッグで選択してコピー<br />
RedditのURLをクリックした時に、専ブラ内で開けるものは開く。<br />
いろんなところで右クリック出来るようにする<br />
スタンプの実装<br />
板一覧に登録されてるサブレディットを最新のものに<br />
マウスを使ったショートカット<br />
スレ立て<br />
板一覧メニューがクソ以下なので根本的に直す。更新できるようにする。<br />
プライベートメッセ ージ(返信)を使えるようにする。<br />
書き込んだコメントの評価一覧を見れるようにする<br />
画像サムネマウスオーバーで画像を見たい<br />
<br />
↑ここまでが一般公開までに最低限やらなければならないこと<br />
<br />
<br />
書き込みプレビュー<br />
注目フィルタを正しく動かす<br />
コメントを開いたり閉じたり出来るようにする<br />
NG機能<br />
スレの全コメントの取得(ある程度スレが進むと省略されてしまうので、省略されたコメを全て取得する。新着、ベスト200件に出てこないコメの評価も全部更新出来る)<br />
購読サブレの全解除(デフォルトの英語サブレ対策)<br />
評価値、カルマを保存してグラフ化する<br />
実況(?)<br />
スレやコメントの検索<br />
公開後に出てくるであろう私が気づいていない様々な不満に対応する<br />
<br />
↑ここまでが正式版までにやりたいこと<br />
<br />
正式版といってもパイロット版の正式版、P1.0ということになります。<br />
<br />
パイロット版では直せないことがいくつかあります。<br />
<br />
・大きいコメントのちらつき(並列処理時の謎例外で一瞬ちらつきます。解決法が何も思いつきません)<br />
・ソース先読み(スレを開いた時に、ソースを裏で先に読みこんでおこうとすると、なぜかUIスレッドもガクガクになるので、先読みをやるのはパイロット版では諦めることにします)<br />
<br />
現バージョンはWinFormという古い、Win32APIのラッパーを利用してやっているので、いろいろガタが来ています。<br />
正式版ではMono&GTK#に移植して、MacやLinuxでも動かせるようにする予定なので、その時に治せるんじゃないかと考えています。また、GTKにはテーマというのがあるらしく、それを使えば見た目を根本的にカスタマイズ出来るとかいう話なので、それを使ってダサい見た目もなんとか出来ればと考えています。<br />
<br />
一般公開まで2週間ちょっと、おそらく実装2週間とデバッグ少々で間に合うと思います。正式版は一般公開後どのくらい修正しなければならないか次第になります。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-3395289914112777882015-07-20T17:04:00.000+09:002015-07-20T17:04:21.849+09:00ここまでのまとめとアプリの公開昨日の夜はだいぶデバッグが進んだような気がしたのですが、今日動かしてみるとけっこうガタガタです。ただ公開するすると言ってきてずっと出来ていなかったので、今回は出します。今までとは違って出せるものがないわけではないのです。ガタガタなだけで、やろうとしてること、コンセプトぐらいは伝わるのではないかと思います。<br />
<br />
ただよく考えれば、昨日今日動きだしたばかりのバグだらけのアプリを公開するというのは正気ではありません。アニメ第一話の試写会を色も塗らず原画のまま中割りもせず動きもガクガクの状態でやるようなものです。<br />
<br />
早く寄付を求めなければお金がなくなるという思いが先に立って、焦ってやってきましたが、寄付を求めるような思い上がったことが出来るようなところまで完成度を上げられていません。また、昨日親から一万円借りて、クレジットカードの未払いを払ったので、当座の危機は解消されたのではないかと思います。ここでクレジットカードが解約になってしまうと、もう一生クレジットカードが持てない可能性も高いので、ここが凌げたのは大きいです。インターネット代金5000円くらいも未払いのはずなのですが、未払いの督促状が見当たらないので、多分大丈夫だと思います。<br />
<br />
ここ3週間ぐらい休みなくやってきたのですが、疲れが出たのか現在全く頭が働いていません。少し休む必要があるようです。<br />
<br />
このアプリが何をしているかの説明を書き、現在把握している不具合とか、今後のロードマップ等、公開するにあたっていろいろ書きたいのですが、体力が残っていません。<br />
<br />
公開しますが、出来ればこれで判断はしないでいただければと思います。今回はブログ限定で公開します。このブログのここまでのグダグダを見て、なおまだ見ているという方、いるかどうか分かりませんが、そういう方がいたとすれば、アプリがガタガタでもそこまで気にしないような、専ブラに対する情熱と忍耐を持っている方ではないか、という希望的観測で行動してみようと思います。<br />
<br />
とりあえずバグや機能不足を除いても、大きな不満になりそうな要素がまだたくさん残っています。大きな不満になる要素を全て取り除き、大半の人がそんなに不満なく使えるレベル、そこまでもっていって、一般公開を可能にするのが次の目標です。これが一ヶ月後を予定しています。できればそこまでは、アプリに対する評価を留保していただければと思います。<br />
<br />
また、今回、このブログやアプリに対するリンク、宣伝等は、是非とも控えていただければと思っております。このアプリはまだ人前に出せる段階にはありません。「なら公開しなければいいだろう」という至極もっともな声が頭のなかに響いてきますが、出すといったからには出さねばならないとも思います。どうかよろしくお願いいたします。<br />
<br />
<a href="https://drive.google.com/file/d/0BzP_9LiaNnm1YVBRYThEbTJLU0k/view?usp=sharing">https://drive.google.com/file/d/0BzP_9LiaNnm1YVBRYThEbTJLU0k/view?usp=sharing</a><br />
<br />
動作条件:Windows Vista以降。Windows8ではうまく動かない可能性(?)<br />
<br />
アプリの最低限の説明:自動ダウンロードについて<br />
<br />
これらの数字は、仮のものです。最終版では変更されると思います。<br />
<br />
現在タブとして開かれている、購読、マルレ等を含む全てのサブレは、1分間に1回、一括で新着25件が自動取得されます。なぜ1分に25件かというと、デフォルトの購読英語サブレ全部合わせて新着が1分に多くて15件くらいだったので、25あれば大丈夫だろうという判断です。25はデフォルトの表示数でもあり、キャッシュが効きやすいんじゃないかとも考えました。<br />
<br />
現在表示されているスレが有る場合は、1分に1度、アクティブでないタブのスレは、5分に1度、新着が取得されます。<br />
<br />
新着の取得は、まずスレの情報だけを取得しコメント数を調べ、コメント数に変化があった場合、新着コメ200件を取得します。200なのはデフォルトなのでキャッシュが効きやすいだろうという判断です。<br />
<br />
サブレのタブは5分に1度、Hot順に100件を取得し、評価値などの変化を追います。アクティブなスレは5分に一度、そうでないスレは50分に1度、Best順200件を取得し評価値などの変化を追います。<br />
<br />
タブがどれだけ開かれていても、自動ダウンロードは3秒に1回までです。APIへのアクセスは1秒1回までとされていますが、自動ダウンロード以外でもアクセスされることがあるので余裕を見ています。<br />
<br />
アプリの最低限の説明2:未読フィルタ<br />
<br />
未読ボタンを押すと、未読コメだけが表示されます。画面に表示したことがあるコメントは既読になります。また、スクロールで一気に飛ばした場合も、飛ばされたコメントは表示されていなくても全て既読になります。<br />
<br />
今後について:<br />
<br />
しばらくは機能追加を控えてデバッグに専念しようと思います(どうしても入れたい機能「スレタブの結合」と「背景色、文字色の変更」を除きます)。一週間ぐらいデバッグすればだいぶまともになっているんじゃないかと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com1tag:blogger.com,1999:blog-2880243982540938999.post-80937513255333584512015-07-19T22:00:00.000+09:002015-07-19T22:00:07.209+09:00進捗デバッグはほとんど終わったと思うので、あとは謝辞を作って(BSDライセンスのものを使いまくっているので謝辞がないとライセンス違反になってしまうはずです)、細かいところを直して、明日公開できそうです。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-58406067252026740392015-07-18T19:03:00.001+09:002015-07-18T19:03:52.900+09:00進捗だいぶ動いてきてはいるのですが、まだバッグバグのバグだらけです。<br />
<br />
バグが全部取れて、1日動かしてみて、新しいバグが見つからなければ、「デバッグをしました」と主張することが可能になると考えています(バグが無くなったということではなく、バグを取る努力をある程度やりました、と主張しても怒られないといったくらいの意味です)。なのでそれができたら公開しようと思います。<br />
<br />
だいたいバグが取れてから1日ぐらいは動かさないと、ユーザビリティがどうなっているのか、予定通りの使い勝手になっているのかも分からないままです。「使いやすいアプリになりました」と主張できるのも1日使ってみてからの話だと思います。<br />
<br />
目標は明日中にバグを取って、明後日は1日いろいろ確認して、公開という感じで考えています。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-89329259976922085312015-07-15T18:46:00.000+09:002015-07-15T18:46:38.509+09:00進捗9割9分出来たと思います。<br />
<br />
まだ動かしてないので、「動かしてみたら全然動かない→設計ミスだった」という流れになって、またドツボにはまる可能性も無きにしもという感じではあるのですが、9割9分は実装できました。あとは最後の1分を実装して、デバッグして、動くようになったら、ひっそりと公開するという流れです。そんなに時間はかからないと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-60887398336607933292015-07-08T17:47:00.000+09:002015-07-08T17:47:28.564+09:00進捗1週間で終わらせると息巻いてから1週間経ってしまいました。しかし全然終わっていません。<br />
<br />
作りたい機能があと2つあったのですが、1週間かけてもそのうちの1つも終わりませんでした。再設計が必要になって、動いている部分にもかなり手を入れたのでどちらかと言えば後退しているかもしれません。<br />
<br />
コーディングやデバッグは手を動かしていればいずれ終わる、頭をつかう部分はありながらも、ひたすらパズルを解き続けるただの作業といえなくもないようなもので、何日作業すれば終わるかもだいたい分かるんですが、再設計となると、脳内に作った回路を破壊し、再構築する、脳の再プログラミングが必要になります。これはどれだけかかるのか分かりません。やりたいことを理解し、どうすれば実現できるか理解していれば、あとは実現するだけですが、理解が不十分で、実現のための方法論が困難すぎたため、再度やりたいことを正確に定義し、理解しなおし、道筋を考え直す必要があります。<br />
<br />
感覚的にはあと2週間ぐらいかかりそうです。いままでで学習出来たことは、「死ぬほど頑張れば1週間で出来る」といって目標を1週間にして自分にハッパをかけたつもりになっても、あふれるようにパワーが湧いてこなければ、結局死ぬほど頑張ることも出来ないし1週間で作ることも出来ません。そしてあふれるようにパワーが湧いてくることは滅多にありません。<br />
<br />
なのでこの目標は、いつものペースで、普通にやって2週間です。インターネットやクレジットカードの未払の督促状が来ていて、払い込まないとクレジットカードは解約でインターネットも止まることになります。そのデッドラインはおそらく今月末のはずです。本当の本当にデッドラインです。いままでデッドラインと言ってきたものは自分にハッパをかけるための幻のデッドラインでしたが、今回は本物です。<br />
<br />
デッドラインに辿り着くまでに、なんとかまともに動く実用的なものを作りたかったのですが、そのはるか手前、最低限自分のやりたい機能が動くだけの、実用もへったくれもないパイロット版に悪戦苦闘している有り様です。しかしパイロット版が終わり、一番難しい、一番やりたい機能が作れれば、あとの部分は惰性でコーディングとデバッグをしていけば作れるはずです。もっと難しい機能を作りたくならない限り、ですが。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-66654786522772167672015-07-01T11:52:00.002+09:002015-07-01T19:16:41.682+09:00進捗とうとう7月になりました。<br />
<br />
夏になるとバイオリズムがめちゃくちゃになってあまり進まなくなると思うので、梅雨のうちにかたをつけてしまいたいところです。<br />
<br />
前回の進捗で入れたい機能があと6つあるという話をしたんですが、この1週間で3つ消化出来ました。そして1つ諦めたのであと2つです。<br />
<br />
いい感じのペースだと思います。しかし残った2つは最高レベルの重要な機能だと思っているもので、実装もなかなか大変だと思います。そして大手を振って人前に出すためにはそれなりにデバッグしてまともに動かせるところまではやらないといけません。<br />
<br />
ここから一週間としばらくはペースをいけるところまで上げていこうと思います。それでバッチリ公開できるでしょう。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-22599302107941875552015-06-29T14:39:00.000+09:002015-06-29T16:13:20.856+09:00System.Drawing.Graphicsのマルチスレッド非対応問題<span style="-webkit-text-stroke-width: 0px; background-color: white; color: #333333; display: inline !important; float: none; font-size-adjust: none; font-stretch: normal; font: 15.39px/21.55px arial, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", メイリオ, Meiryo, sans-serif; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">Graphics.DrawImageはマルチスレッド対応していない。</span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: #333333; display: inline !important; float: none; font-size-adjust: none; font-stretch: normal; font: 15.39px/21.55px arial, "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", メイリオ, Meiryo, sans-serif; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><br /><a href="http://tiltcorrector.seesaa.net/article/249984715.html">http://tiltcorrector.seesaa.net/article/249984715.html</a></span><br />
<br />
<br />この時点でも驚愕の情報なんですが、DrawImageとDrawStringが並列処理でかちあうと例外が飛んでくるようなのです。Paintイベント時のGraphicsと、ビットマップから取り出したGraphicsでどこにかち合う要素があるのか全くわからないのですが。本当に、本当におかしなライブラリですWindows.Formsは。昔使ってた時は簡単にいろんなことが出来るなあと思いましたが、複雑なことは出来ないようです。複雑なことに使ったことがなかったので気付かなかったのですが、本当に全く困りました。これでは満足なパフォーマンスが出せそうにありません。<br />
<br />まあWinForm版はパイロット版という位置づけに自分の中でいつの間にか変わっていたので、パフォーマンスがそこまででなくてもいいような気もしますけれど。<br />
<br />しかも「InvalidOperationException オブジェクトは現在他の場所で使用されています」という例外で、MSDNにも記述がない上、私はいつも例外スロー時点でデバッグ中断する設定なのですが、InvalidOperationExceptionではあまりにも一般的すぎて例外スロー中断の例外に設定するわけにもいきません(結局設定しました。自分で投げてたInvalidOperationExceptionは全部他の例外に変えました。もっといい方法がないものでしょうか)RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-11812606406045242382015-06-24T23:45:00.000+09:002015-06-24T23:45:01.169+09:00進捗 前回25日までに仕上げたいといって、そしてもう25日にならんとしてるところですが、まだあと少しかかります。<br />
<br />
あと6個ぐらい機能を追加できれば、実用的に使えるとまではいかないまでも、プラグインで拡張したブラウザで見るのと比べてどう便利にできるのかを感じ取ってもらえるレベルまで進められると思います。そこまでいければソフトウェアサブレあたりでひっそりと公開して、フィードバックをもらったり、寄付を募ったりも出来るようになるはずです。<br />
<br />
インターネット代金未払の督促状がだいたい毎月5日あたりにくるので、その辺をデッドラインとして、それより前に仕上げないといけないので、あと1週間と考えて、1日1個機能を実装できればうまくいきます。1週間なら限界を振りきって1日10時間ぐらいやっても、燃え尽きずにやれるはずです。しかし急ぎすぎてコードの品質を下げてしまうのはもうコリゴリなので、品質を下げないでやりたいところですが、普通にやると2日で機能1個ぐらいのペースになってちょっと間に合いません。<br />
<br />
やや急ぎながら、コードの品質は下げずに、一週間ちょっとで燃え尽きるぐらいのペースでやっていこうと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-24298646630997590172015-06-13T22:41:00.000+09:002015-06-13T22:41:19.496+09:00今後の予定 ようやく全体的な再設計が出来ました。私はコードを書きながら設計するので、実装も大体終わった感があります。<br />
<br />
あとはデバッグして機能を追加して出すだけですが、口で言うのは本当に簡単です。しかし設計のために悩み苦しむフェーズが終わったので、ここから一気にスピードアップして、うまくいく可能性も、かなりあるような、楽観的観測をしています。<br />
<br />
来月までにお金が入らないと死んでしまうので、ベータ版を出して寄付を募って、実際に寄付が集まるまでの時間を考えると(本当に集まればいいんですが)、25日ぐらいには出さないといけないでしょう。そこから逆算して取捨選択して、どの機能を実装していくか決めていく必要があります。<br />
<br />
ベータ版を出した後の予定ですが、デバッグしながら英語版を準備し、さらに間に合わなかった機能を追加していき、デバッグと機能追加が終わったら、Mono&GTK#環境に移植して、マックやLinuxでも動くようにしようと思っています。今やっているWindows Form環境だとどうしても描画がカクつくのが直せないらしいのです。<br />
<br />
<a href="http://dobon.net/vb/dotnet/control/doublebuffered.html">http://dobon.net/vb/dotnet/control/doublebuffered.html</a><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">>フォームに大量のコントロールを配置している時のちらつきには別の理由があり、上記の方法では解決できません。</span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">このようにすると、一部のコントロールが正常に表示されなくなったり、最小化ボタンなどのアニメーションが無効になったり、Aeroを有効にしていると機能しなかったりなど、様々な問題があるようです。よって、できれば使用しない方が良いでしょう。</span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"> 変な設定を入れるとかなり描画がスムーズになるのですが、その設定が<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;">バグだらけでいろいろとおかしくなるということです。しかしこれ以外に頼れるものがないので今回はこれでいきます。</span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"> バグだらけの設定に頼るのは一時的にして、最終的には全てのベースになる、ちゃんとしたPC版を作らなければならないように思います。いずれはスマホにも移植しようと思っていますが、ベースがしっかりしていなければ難しいでしょう。</span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"> スマホ版はXamarin.Formsを使ってAndroid/iPhone両対応にする予定ですが、いきなりクロスプラットフォームにするのは難しいので、これに合わせて一旦Windows/Mac/Linuxのクロスプラットフォーム版を作ることにしました。オブジェクト指向のテクニックを使ってWindows FormとGTK#、.NetとMonoに両対応させます。UIをブラックボックス化して入れ替えられるように設計しなおしたので、おそらくうまくいくでしょう。</span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"></span></span></span></span><br />
<span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: white; color: black; display: inline !important; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"> 実際はGTK#を使ったことがないので、カクつかずうまく描画できるか、そもそもまともに動かせるのか、といったことはやってみないとわからないのですが、まあ何をするにもわからないことだらけです。楽観的にいこうと思います。</span></span></span></span>RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-53124829101667037452015-05-28T20:23:00.002+09:002015-05-28T20:23:25.223+09:00今後の予定 本当にお金が全然なくなってしまったので、とにかく可及的速やかにそれなりに動くものを作って、寄付を求めたいと思います。6月中に出せなければ完全にアウト、インターネットが繋がらなくなるのでこのプロジェクト自体が破綻してしまいます。寄付が集まらなくてもアウトですが、そこは今は考えないようにします。(最後の手段として親に土下座するというのもありますが、そこも今は考えないことにします)。<br />
<br />
進捗状況を言うと、現在全くまともに動いていないような状態です。ただ、今はひたすら最終形を目指して作っているので、動くようになった段階で、いきなり最終形に近い、機能がそれなりに揃った状態のものが出てくる予定です。<br />
<br />
いつの頃からか、最終形を目指して全面的に書き直すことになっていました。意識的にそう決断したわけではなく、目の前にあるコードが考えている最終形とあまりにも違いすぎるので、衝動的に書きなおし始めてしまったというのが実際のところです。<br />
<br />
本当はそれが出来た後にどうするかを書こうと思って書き始めたのですが、あまりにも取らぬ狸の皮算用すぎるので、やめます。まともに動く最初のバージョンを作らないことには、その先の予定を言っても虚しく響くだけになってしまうでしょう。とにかく早くまともに動く専ブラを出したいと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-84000956736609360682015-05-22T20:21:00.000+09:002015-05-22T20:21:05.244+09:00進捗内部動作を全部作り直して、その過程でいろいろな部分が壊れてしまいましたが、どうにか再び動き出しました。大手術でしたがなんとか生還できたようです。<br />
<br />
<a href="http://i.imgur.com/n8nfhMW.png">http://i.imgur.com/n8nfhMW.png</a><br />
<br />
ちょっと頑張れば元の機能は戻せるでしょうし、もうちょっと頑張ればいろいろな機能を付け加えて、そこそこちゃんと動く専ブラになると思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-46422204345972981222015-05-03T21:55:00.000+09:002015-05-03T21:55:18.786+09:00進捗こんな初心者みたいなことを報告したくはないのですが、やってもやってもコンパイルエラーのまま進みません。<br />
<br />
マークダウンの実装のためにしばらく時間を置いていた間に私の考えているアプリの動作が今まで書いてきたコードと全然あわなくなってしまっていて、変更範囲がものすごく広範囲に及んでいて全部書き直したほうが早いんじゃないかという気さえします。<br />
<br />
あまりコンパイルエラーを出したくないので変更を最小限にとどめようとして、旧仕様と現在の共通点を見つけようとする作業が、ほとんど共通点自体が無いため冷静に考えてみるとものすごく無駄が多く、また元のコードを新しい仕様のコードに置き換えていくたびに記憶も上書きしていかねばならず、旧仕様を忘れる→新仕様を覚える と忘れる作業が入る分ただ書くより辛い感じがします。<br />
<br />
いい加減な考えで適当に書いていた旧仕様を一気に新しくしようとして、いろんな泥沼に飲み込まれている感じがありますが、決して諦めて投げ出して進まなくなっているわけではありません。どこかを直すたびに他の部分と齟齬が出てコンパイルエラーの数は一向に減りませんが、最終的に必要なところを全部書き直せば終わるはずです。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-11773487296529921632015-04-24T20:58:00.003+09:002015-04-24T20:58:34.948+09:00進捗本当はゆっくり一つ一つやっていけば問題なかったことでも、一度に行うと混乱して収集がつかなくなることもままあります。<br />
<br />
「テキストボックスに表示していたのを自作マークダウン表示ルーチンに変更してテスト」<br />
「自動スクロールに任せていたのを自作部分描画ルーチンに変更してテスト」<br />
「問題のある動作を新バージョンに置き換えてテスト」<br />
<br />
とやっていけばそんなに問題はなかったと思うのですが、そ全部を一度にやりつつ適当にイケてない設計を直したり、よくわからない処理をコメントアウトしたり、ミドルウェアのRedditSharpに依存しないように書きなおしたりした結果、まともに動かなくなりました。もちろんそれ自体は一時的なことのはずです。<br />
<br />
特にRedditSharpにはいろいろな問題があり、置き換えたいと思っていたのですが、置き換えようと参照を切った瞬間にものすごい数のコンパイルエラーが発生し大改修が必要になりました。遅かれ早かれやらなければならなかったのですが、今やらなくても別に良かったはずなのですが、やってしまったので、RedditSharpがやっていたことを置き換えるためにしばらく時間が必要になりました。<br />
<br />
RedditSharpの問題というのは、gzip圧縮を受け入れていなかったり、コメント取得時に全体のコメント数が取れなかったり、IDだけあればダウンロードできるデータを取得するのにオブジェクト全体を要求されたり、コメントが編集済みかどうかわからなかったりmoreが取れなかったりなど色々あるのですが、軽い気持ちで参照を切った瞬間にそのありがたみをヒシヒシと感じることになりました。<br />
<br />
全く気合が足りていません。とにかくまともに生活するためにはソフトを作ってなんとかしてお金を得るしか今はありません。とにかく頑張らなければなりません。<br />
RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-49708328165195799952015-04-20T20:36:00.000+09:002015-04-20T20:36:11.140+09:00頭を切り替える時の現象一つのことをやっていると短期記憶が全部そのことで染まって、そのことをやっている分には効率がいいですが、さて別のことをしようとなるといろいろな不都合が起こります。長期間ひとつの作業をやって、それを終えてまた元の作業に戻るような場合には、一つのことをやっている間に忘れてしまったことを一つ一つ思い出しては短期記憶を上書きしていき、元の作業用に染め直さなければなりません。そして今がどういう状況で何をしたらいいのかを理解しなおす必要があります。<br />
<br />
プログラミングでは、よほど小さなソフトでない限り一度に把握できるのはソフトウェアの一部だけで、深く理解しなければコードをいじることは出来ません。書いた直後はよく覚えていても、しばらく放っておけば忘れてしまいます。忘れたらまたコードを読んで理解して記憶し直すしかありません。<br />
<br />
自分が書いたものなので理解するのはたやすいはずですが、なぜこんなにも辛かったり眠かったりするのか。一旦記憶が切れてしまうと、記憶を全部上書きしなおして本調子に戻るまでにずいぶん時間がかかってしまいます。その間中、頭が痺れるような感じになったり、ハイになったり眠くなったりします。この現象が一体何なのか、知りたいのですが検索しても出てきません。他の人からも聞いたことがありません。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-85339559412647400222015-04-19T20:40:00.001+09:002015-04-19T20:47:24.086+09:00部分描画とスクロールバーの問題テーブルタグも引用タグもその他全部のタグもとりあえずの実装は出来ました。本格的なデバッグは出来ていないので完成というのはまだ無理ですがマークダウンの実装は一区切りつきました。<br />
<br />
この後はマークダウン表示ルーチンをアプリに組み込まなければいけないのですが、ずっとマークダウンのことばかりやっていたのでアプリの実装の詳細をかなり忘れてしまいました。組み込みにもまだ大きな問題が残っています。<br />
<br />
いろいろ思い出さなければいけないので、なぜこんなにもマークダウンをズルズルとやる羽目になったのかちょっと書き出してみようかと思います。<br />
<br />
もともと不具合がありました。これはWindowsの16bit時代からの名残か何かで、全体の高さが32767ピクセルを超えるとスクロールバーがそれ以上スクロールしなくなるというものです。300コメントを超えた当たりでこれが実際に起きるようになり、これへの対応に追われ続けて、まだ対応が終わっていないという状況です。<br />
<br />
スクロールの範囲を広げるだけならスクロールルーチンを自作するだけなので別に難しいことはないのですが、問題は「300コメントを30000ピクセルに渡ってズラッと表示した後に、スクロールバーでスクロールする」というのが非常に動作が遅いというところにあります。それは私が「コメントに対してテキストボックスを作成し、300コメントなら300個のテキストボックスを縦に並べてズラッと表示する」という恐ろしいほどの手抜き実装をしているのが原因です。つまりこれは不具合というよりも、私の手抜きに対して必然的に生じた当然の帰結というべきものです。不具合というのは手抜きでもバグでもオブラートに包んで表せる便利な言葉ですが、それを隠れ蓑にするべきではありませんでした。まったく申し訳ないです。<br />
<br />
300個のテキストボックスを並べるのは動作が非常に遅いです。それはテキストボックスというものが300個並べられることを想定して作られていないというようなことが原因だろうと思います。これを解決するためには部分描画が有効です。つまり必要な部分、たとえば132番目のコメントから描画を初めて、140番目のコメントで画面が全て埋まったらそこで描画をやめる、といったように画面に表示される部分だけ描画処理を行えば、全体がどんなに大きくても描画量を一定にすることが出来ます。この場合なら描画用アイテムは132から140までの9個で済みます。<br />
<br />
そこからスクロールするのも簡単です。上に10ピクセルスクロールしたとしたら、131番目のコメントの下から10ピクセル分から描画を開始すればいいわけです。スマホのようなインターフェースであれば指でスクロールするだけなのでそれで問題ないのですが、この時問題になるのはスクロールバーです。<br />
<br />
スクロールバーはスクロールできる全体の範囲を知っていることを前提にしたUIです。「これを描画した結果全体が何ピクセルになるか」を知っていないと正しく動かすことが出来ません。描画した結果何ピクセルになるかを知るためには描画に等しい負荷がかかることも多く、このスクロールバーの存在が原因で、大半のテキストエディタは1MBといったような、現代のCPUであれば二次キャッシュに乗ってしまうような小さな容量のテキストファイルを表示しただけでまともに動かなくなりますし、そうでないエディタは文字幅が一定のフォントを用い改行ケタ数を指定することでどうにか動かそうとします(それでもまともに動かないことも多いです)。<br />
<br />
しかしスクロールバーはPC用アプリに必須のものなので削除することは出来ません。問題は「いかに効率よく描画後のサイズを知るか」というところにあります。そのためには「描画せずに描画後のサイズを知る」処理が必要になり、なかなか面倒です。しかしHTMLのテーブルタグを綺麗に配置しようとすれば、描画後の大きさをあらかじめ知ることが必須になりますので、どうせマークダウンのためにテーブルタグを実装するなら最初からマークダウンの処理を書いてしまえば良い、ということで作り始めたというのがあらましになります。<br />
<br />
そして七難八苦があり、描画後の大きさを効率よく知ることが出来るルーチンが書けたように思います。ただ、まだ動かしていないのでわかりません。私がやったのは、動かす前に速く走るコードを書こうとする「事前最適化」と呼ばれるもので、プログラミングの世界では最も愚かな人間がやることとされています。「このコードは速く走るのか」ということを考えながら書くと普通に書くのの何倍も時間がかかりますし、普通に書いて実際にコードが遅くなるのか、その遅くなる原因はなにか、というところまで突き止めてからでないと、ほとんどの最適化の努力は空回りに終わります。現代のハードウェアでは、プログラマが思ったとおりにコードが実行されることは稀で、速く走るコードを書いたつもりで普通に書くより遅くなっているというのは非常によくあることです。<br />
<br />
ただこの処理がボトルネックになるだろうというのは私なりの確信があります。「オバマ大統領だけどなにか質問ある?」といったサブミの2万ぐらいのコメントをストレスなく表示するためには、描画後の大きさをものすごい速さで計算することが必須になるでしょう。<br />
<br />
そしてこれを「部分描画ルーチン」に組み込まなければなりません。部分描画ルーチンもマークダウンの実装を始めるより前の大昔に軽いテストしかしておらず、正しく動くかは分かりません。実際かなりややこしい処理になります。これがうまく動けば、とりあえずのブログ限定公開にこぎつけることが出来ると思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-25494623401795697012015-04-15T21:56:00.000+09:002015-04-15T21:56:11.999+09:00進捗 HTMLの禁則処理が難しくかなり苦戦しています。が多分出来たんじゃないかと思います。<br />
<br />
マークダウンが出来上がるまでまだ少しかかりそうです。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-65020743620503590902015-04-13T20:25:00.002+09:002015-04-13T20:25:48.756+09:00マークダウン Redditのマークダウンはタグの直接入力が出来ませんし、綺麗なXHTMLデータがもらえるので解析に苦労することはありません。<br />
<br />
マークダウン自体に幾つか温情があり「Tableは入れ子にならない」「Tableの中にリストも引用も作れない」「リストの中にTableも引用も作れない」といった形になっています。入れ子になるのは引用とリストだけですがリストの入れ子はほとんど何も出来ません。問題は引用の入れ子で、引用の中にはTableも入れることが出来ます。といっても引用は入れ子になってもインデントが深くなるぐらいの効果しかないので別に複雑になりません。Tableが入れ子にできたら終わりでしたがギリギリ致命傷は免れたと思います。<br />
<br />
これはマークダウンを解析して専ブラをつくろうという人に対しては有用な情報かもしれません。といっても仕様を見ればわかるので無用かもわかりません。いちおう備忘録として残しておきます。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-1159234032389050632015-04-09T18:36:00.001+09:002015-04-09T18:36:11.454+09:00進捗前回マークダウン対応とブラッシュアップを一週間でやるといっていました。そして一週間が過ぎ、現在マークダウン対応の半分ぐらいしか進んでいないという状況です。<br />
<br />
おそらく1日16時間ぐらいやれば目標通りのスケジュールで出来たと思うのですが、そこまでは出来ないにしても1日8時間ぐらいやっていけばマークダウンぐらいは終わるだろうと思っていたのですが、思っていたよりかなり難しく、全然終わりませんでした。申し訳ないです。<br />
<br />
気合も足りていません。しかし難易度が高いと気合ではカバーしきれない部分もあります。マークダウンといっても簡易HTMLブラウザの表示部分をちょこっと作るだけだと思ったのですが、禁則処理などよく理解できない部分が多く、まだマークダウンの底が見えたのかも自信がありません。<br />
<br />
とりあえずあと4日ぐらいでマークダウンを完成させて、もういろいろ考えるのが面倒なのでその後公開しようと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com0tag:blogger.com,1999:blog-2880243982540938999.post-1018472982635498892015-04-02T19:03:00.001+09:002015-04-02T19:03:48.219+09:00今後の予定 自分の中で公開へのハードルが上がっていき、「マークダウンもツリー表示もできていない現状では公開は不可能」という確信が芽生えてきました。不具合を直してブラッシュアップして公開してしまう、という予定は自分の中では無理な感じになりました。<br />
<br />
「不具合を直すついでにマークダウンへの対応もしてしまいたい」という、関連する作業をまとめてやってしまいたい願望があり、またデバッグやブラッシュアップをそろそろやってしまわないと、自分で動かしていても快適に便利に動いているかどうかはブラッシュアップしてみるまでわからず、またデバッグは放っておくほどに入り組みながら記憶が薄れていき直すのが大変になっていくというのもあるので、不具合を直してブラッシュアップするのは公開と関係なくしなければならないように思います。<br />
<br />
不具合を直してブラッシュアップしてるのに公開しないというのはやるせないものがあります。近い時期に目標を立てていかないとやる気を継続するのが難しい部分もあるので、不具合を直し、ブラッシュアップして、マークダウンへの対応も行い、その上であまりおおごとにならないようにひっそりと公開しようと思います。これの目標を一週間後とします。<br />
<br />
そこからさらに一週間かけて、ツリー表示と、それに付随するいろいろなアイデアの実装を行って、正式なベータ版として公開したいと思います。結局最近考えていたいろいろな機能が、ツリー表示と連動させないとイマイチ意味不明の謎機能にしかならないので、私の考えているレディット専ブラを世に問えるのはツリー表示導入以降ということになりそうです。<br />
<br />
まとめると、1週間後に2ch専ブラ風のレディットブラウザを作り、2週間後にレディット専ブラの最初のまともなベータを作る、そういう予定で進もうと思います。RedditChanSakushahttp://www.blogger.com/profile/06905643929153932677noreply@blogger.com1