四半期評価アクセス数集計の遅れとリニューアルに関して

いつも小説家になろうをご利用頂きありがとうございます。
システム担当のウメです。

ついに7月になりました。
四半期評価についてですが、現在、4月~6月分を集計中です。現在、新旧混ざったランキング結果が表示されており、ご迷惑をおかけしていますこと、お詫びします。この集計にはかなり時間がかかるものと思われます。新しい結果が順次反映されていきますので集計終了まで今しばらくお待ちください。

続いてアクセス解析ですが、現在、6月分のアクセスを集計しております。こちらも四半期評価の集計と平行に行なっております。集計作業中は書き込みに専念することで処理速度を向上させており、集計終了までアクセス解析が閲覧できないなどご迷惑をおかけしますが、何卒ご理解とご了承をお願いします。集計終了は明日未明の予定です。


▼リニューアルに関して
色々な事情で遅れていますリニューアルですが、7月末に大規模リニューアルを行なうべく現在、最終段階に入っております。
リニューアルに際してサーバ数の増加、全サーバのスペックアップを行います。リニューアルの詳細スケジュールについては近日中にお知らせいたします。
新たにしおり機能、レビュー機能、お気に入りユーザ機能、お気に入り小説機能、活動報告(ブログ機能に相当)を導入します。そのほかにも検索エンジン(小説を読もう!、ラブノベ、NOS、ノクターンノベルズ、ムーンライトノベルズで採用)の精度向上、作者紹介ページのデザインを見やすくします。ご期待ください。


▼ちょっとくわしい技術的なリニューアルのお話
2004年の運営からはやいもので5年が経ちました。当時はまだYouTubeなどの動画投稿サイトはありませんでしたし、SNS(mixiなど)もまだできたてほやほやだったと記憶しています。小説家になろうもこの5年の間に何度か機能追加、機能修正は行なってきました。時代の流れにあわせ、最初は作者IDでしかログインできなかった作者ページも、Eメールでログインできるようになりました。PC向けに自動ログインもつきました。とはいえ、基盤は2004年当時のまま。ユーザ登録ページはおそらく当時からほとんど変わっていませんし、作者ページ、小説投稿、小説管理ページもほぼ当時のままです。フレームという技術を否定するわけではありませんが、今では推奨されないフレームも小説管理ページで当時のまま使われています。
小説家になろうのシステムは今も昔もPHPという言語で作られていますが、このPHPでさえ、この5年間でバージョンが4から5に上がり、書き方もかなり変わっています。
この現行システムに限界を感じたのは約1年ほど前のことです。やはり一番の理由は時代の流れによるプログラムの書き方、ファイルの名づけ方でしょうか。
昔はコード量も少なく、「動けばいい」と考えていたのですが、保守/管理を考えると「ただ動くだけではだめ」という結論に至りました。
特に現行システムは度重なる修正から、URLとプログラムファイルが1対1で対応しておらず、バグを見つけてからそのプログラムが書かれている部分を探すのに、下手をするとどの部分かを探すだけで、数十分の時間を要します。それからコードを修正するのですが、これはif文とincludeを不規則に多様しているせいなのですが、もうコードはスパゲティーのようにぐちゃぐちゃな状態になっており、修正がさらにソースコードの可読性を悪化させ、新たなバグの発生源になってしまっています。

このような反省から、新システムは昔のソースコードをほぼ全部捨てて、一から開発することにしました。今回はフレームワーク全採用でURLとファイルに法則をもたせ、Model、Controllerに分け、保守しやくしました。Model、Controllerを半自動作成するプログラムを開発したことにより作業効率向上とキーボードのうち間違えによるニアミス防止も行ないました。

今回作った新システムは7月1日未明現在、プログラムのファイルだけで1,779,147バイト、ファイル数にして400ファイルに上ります。文字数にすると約100万文字程度(※)、原稿用紙換算すると、400字詰め原稿用紙につめつめに書いて3,000枚程度です。このほか、サイトの直接のデータである文字などが入ったHTMLファイルや画像ファイルを足すと全部で25MB,ファイル数は3000に上ります。しかし、おそらくこれも今日の夜にはまた、かなりのファイルが追加されていることでしょう。


これほど大きなリニューアルをこの時期に、しかも少人数で(数ヶ月という)短期間で行なえるとは思ってもみませんでした。
今まで挫けず、リニューアルまであと数週間という段階までこれたのも皆様のご声援あってのものと思っております。
リニューアル終了まで色々とご迷惑をおかけしていますが、これからもよろしくお願いします!


※ソースコードは主にアルファベットですが、一部で日本語を使っています。アルファベットは1文字1バイト、日本語は3バイトです。その他、半角スペース、改行も1バイトです。そのため、実際の文字数や原稿用紙枚数は不明ですが、まぁ、おおよそ上に書いてる通りかと勝手に推測しています。ちなみにどこから3000枚なんて半端な数字が出てきたのかとかは気にしないでください。2500枚以上4000枚字以下ってことで・・・。