調べてみたら、小説を読もうはWEB APIが使えるようです。
現在のGoshinは通常の検索と同様にhtmlを取得していましたが、これだとhtmlの構造が変わったときに対応するのが大変で、少しばかり不安に思っていました。
WEB APIでjsonを取得できればそういった不安要素を排除できるという利点があり、Goshinの機能をバージョンアップすることにしました。
またWEB APIには会話率を指定して作品を除外できる機能もありました。具体的にどのように会話率を計算しているのかはわかりませんが、情景描写などが全く無い文章を除外できそうです。
除外キーワード数は残念ながらWEB APIでも通常の検索と同じ数または長さしか受け付けないようです。これは本当に残念です。とはいえ、無制限に長くしすぎればデータベースの負荷も増大しますし、どこかで制限する必要もあるのでしょうが、あのサイトで玉、せめて原石を探そうとするなら、どうしても圧倒的多数を占める石を除外していく必要があり、そのために除外キーワードが増えてしまうのは避けられません。数えてみたら除外キーワードを33単語登録していますが、たぶん30語ほどしか機能しないと思われます。
もうちょっと欲しいところです。
Archive for the 'リリース情報' Category
バグ修正です。
一つ目のルールが護身判定から無視されていたのを修正しました。
ついでにsystem.data.sqlite.dllのバージョンを1.0.79.0にバージョンアップ
120306-goshin
非常に基本的なバグを見逃していたので更新です。
・トップページ(http://127.0.0.1/)からルール設定画面へのリンクが間違っていて404になっていた。
いつもリンクをクリックせずに手動で設定画面に飛んでいたので発覚しませんでした。申し訳ありません。
sqliteモジュールを1.0.74.0から1.0.76.0にバージョンアップした。
モジュールは公式サイトから落とせるものと同一の、static linked かつmixed-mode assemblyです。
goshin
いつもどおり古いバージョンは削除します。
system.data.sqlite.dllを最新版に差し替え
system.data.sqlite.dllの現時点最新版である1.0.74.0はmixed mode assemblyが提供されており、
これまでのsqlite.interop.dllが不要になった。
ただしVisualC++2010のランタイムが別途必要になる。
「小説を読もう」仕様変更への対応
検索した小説の並び準を明示的に指定しない場合に新着準で表示されなくなったので修正。
バグ修正
護身対象から古い日付の小説を削除する時に、
目次を持たない小説の最終更新日時を取得できず強制終了していたのを修正。
護身対象から古い日付の小説を削除する時に、
小説の目次最終更新行が見出しだった場合に最終更新日時を取得できず強制終了していたのを修正。
goshin
例によって過去のgoshin.zipは削除します。
一部バグがあったので修正と、前回リリース直後にsystem.data.sqliteの更新があったので、同梱しているsystem.data.sqliteとsqlite.interop.dllを入れ替え
*間違ってデバッグ情報が入ったものをアップしてしまったので再アップしました
goshin
ついに完成しました。
「小説を読もう」および「にじファン」の閲覧補助ツールです。
フルバージョンの.net framework4.0が必要です。
windows updateなどから入手できるものは簡易版のclient profileなので、たぶん動作しません。
改めて説明すると、このツールはWEBサーバー兼webクライアントとして動作します。
WEBサーバーとしては、デフォルトでは127.0.0.1の80ポートでブラウザからの接続を待ちうけします。
起動時にオプションを指定することで、他のマシンからの接続を受け付けたり、ポートを変更することもできます。
ブラウザからこのソフトを通じて、「小説を読もう」および「にじファン」に接続し、検索結果を表示します。
その際、作品ごとに個別にタグをつけてローカルDBに保存して管理します。
以降、検索するたびに、DBに保存した情報を参照し、一定基準に満たない作品だった場合は検索結果から除外します。
これで「もう二度と読みたくない」と思ったあんな小説こんな小説をブロックできます。
なお、前バージョン時は32bitソフトでしたが、今回より環境ごとによって32bitになったり64bitになったりします。
切り替わりは自動なので意識する必要はありません。
圧縮ファイル内部にはC#用sqliteライブラリのsystem.data.sqlite.dllと、32bit版と64bit版の二種類のsqlite.interop.dllが同梱されています。
sqlite.interop.dllはc++製ネイティブなので、環境ごとにdllが必要なので二種類です。
またmsvcr100.dllが不要なようにビルドしなおしてあります。ソースにはなんら変更は加えておりません。
注意事項
2011年4月にリリースされたsystem.data.sqlite.dllはsqlite3 ver3.6.23.1を元にしていますが、これはsqlite3 ver3.7.0との相互運用に際してバグが報告されています。下記リンクを参照してください。
http://www.sqlite.org/src/info/51ae9cad317a1
報告されているのは3.7で作成したdbに3.6.23で書き込むとdbが破損するという不具合です。
既にfixedとなっていましたが、逆の現象が2010年4月のsystem.data.sqlite ver 1.0.66.0と、現在最新版のsqlite3 3.7.6を元にしているver 1.0.72.0で再現されました。
1.0.66.0で作成したdbを1.0.72.0で書き込むとdbが破損したような症状になりました。書き込み読み込み共に可能ですが、最適化が失敗するような状態です。しかし1.0.66.0のsystem.data.sqlite.dllに切り替えると最適化が可能で、もちろん書き込み読み込みも可能でした。
1.0.66.0で最適化後は、1.0.72.0のdllに切り替えて最適化も可能だったり、あるいはやっぱりダメだったり、症状はさまざまです。
もちろんこちらで変更したsqlite.interop.dllのせいではないことは確認済みです。
バックアップしていたDBを試してみると、全てダメというわけでもなく、発生条件がよくわかりません。いずれにしろDBが読み込めるという状況には変わりは無いので、最適化できないDBからデータを全て抜き出して新しくDBを再作成する機能を実装しています。
困ったら使ってみてください。
goshin
このソフトのことを改めて説明してみようと思います。
ネット上で小説を投稿して不特定多数の人に公開できるサイトはいくつかありますが、
そのうちの大手の一つが「小説家になろう」です。
掲載された小説は、オリジナル作品は「小説を読もう」で検索して読めます。
オリジナルではない、既に発表済みの作品のパロディ、いわゆる二次創作と呼ばれる作品は、「にじファン」から検索して読めます。
商業出版ではなかなかお目にかかれない奇抜な設定や、商業出版するには物足りないけど光るところがある、という作品を読むことが出来れば万々歳です。
ところがこの投稿サイトは、登録すれば誰でも小説を投稿できるので、まさしく玉石混淆の状態です。そして玉に比べて石の数が圧倒的に多いのが問題です。感覚的な比率だと、1:1000くらいですね。
あまりに酷い出来でもう二度と読むまい、と思った作品であっても、あまりにも作品数が多すぎるために読んだことを忘れてしまい、次に検索結果に引っかかったときにまた読んでしまって時間が無駄になることもしょっちゅうです。
検索システムもあまり上等ではありません。たとえば短い文章を連続して投稿する作者の作品は常に検索結果で上位に出てくるようになります。あるいは、空白空行をたくさん使うことで文字数を稼いで大作のように見せかけたりすることも可能です。
ことほどさように閲覧するには忍耐と努力が必要なサイトですが、とにもかくにも無料ですし、極稀には面白いものもあります。がんばって探せば二日に一回くらいは、それなりに読める作品も探し当てられます。
が、とにかくゴミが多すぎるので、一度読んだゴミを分別して検索結果から除外できるようにできないものか、そうすればもっと簡単にそれなりに読める作品を捜しやすくなるのに、と考えた結果作り始めたのがこのGOSHINというソフトです。
このソフトはHTTPサーバー兼ブラウザー兼データベース管理ソフトです。
データベースは組み込みDBのsqliteを使っています。
普段使っているブラウザからこのソフトを経由して、小説を読もう、またはにじファンを検索し、検索結果の作品にそれぞれタグを付けて分類することができます。タグの一つ一つに点数を設定し、合計点数が設定値を超えた作品は、検索結果から除外するという機能があります。
もう使い始めて一ヶ月を超えましたが、既に登録数が700を超えています。来月には800に達するかも知れません。
このソフトを使用することで、二度と読みたくないと思った作品を検索結果から除外できます。
以上がこのソフトの説明です。
簡単な使い方は同梱の説明書を読んでください。
また前バージョンから一部データベースの仕様が変わり、互換性がなくなっています。
goshin.db3を削除するか、または下記の手順でDBを手動で更新してください。
--------------------------------------------------------------------------------
sqliteに対応した適当なクライアントを入手し、goshin.db3を指定して開く
メンテナンス用テーブルを作成する
CREATE TABLE "goshin_maintenance" ([ncode] VARCHAR2(10) NOT NULL UNIQUE, [latest] DATETIME)
メンテナンス用テーブルにデータを追加する
insert into goshin_maintenance select [ncode] , '2000-01-01' from goshin
--------------------------------------------------------------------------------
あまりにも便利すぎて、もうこれ無しでは小説を読もうもにじファンも巡回できそうにありません。
我ながらイイモノを作ったと思います。
110519-goshin
前回からの更新点
多すぎて列挙不能。
ものすごい数の機能追加とバグ修正をしました。もうこれで完成で、あとはブラウザごとの挙動の統一などでおわりになります。
小説を読もうに対応できました。
その他数え切れないほどのバグを修正し、仕様も変更し、最適化を重ね、ほぼこれで完成版かと思われます。
前回アップロードしたバージョンは初回起動時に必ずエラーがでて、それ以降動かなくなるという致命的不具合がありましたが、
今回は解消されているはずです。
またDBの仕様を変更したので一旦データを破棄しないと使えません。
110408-goshin
改良版です。
相変わらずにじファンしか検索できませんが、そろそろ機能も一通り揃ってきたので、
次回あたりで小説を読もうの検索にも対応できるかもしれません。
以下変更点
http://127.0.0.1/rule_master
表示されるルール一覧を二列にした。
ルールの追加編集削除を繰り返すとDBファイルに不具合が生じて書き込みできなくなる場合があるので、
DBファイル最適化ボタンを追加した。
http://127.0.0.1/nizifan
紹介文の欄に「紹介文」と表示していたのを削除
題名に原作名を表示するようにした
110308goshin
ベータ段階ですが、一通りのデバッグは終わったので公開です。
このソフトの目的は、ネット上でオリジナル小説や二次創作を公開しているサイト「小説を読もう」および「にじファン」の作品にタグをつけて管理することです。
現時点では「にじファン」の方しか機能実装が終わっていません。
使い方
下記のファイルをダウンロードし、任意のフォルダに解凍して、goshi.exeを実行してください。
110226goshin
「http://127.0.0.1/rule_master」にアクセスすると、読了時間何分以下から検索結果から除外するか、
タグの合計点数が何点以上から検索結果から除外するか、タグの追加編集ができる画面が開きます。
「http://127.0.0.1/nizifan」にアクセスすると、「にじファン」の通常の検索画面が開きます。
作品ごとにタグ付けができるボタンが用意されています。
注意事項
このソフトはhttpサーバーとして動作します。apacheやiisなどの他のwebサーバーや、
proxomitoron、2chTURBOなどのローカルプロキシーソフトが動いている場合には、正常に動作しません。