クロノス・クラウン - 記事検索

ツイート @rutenさんをフォロー
クロクロ ショップ 本、ゲーム、同人誌他を販売
クロクロ ツールズ 便利なWebアプリを多数収録
IT用語大辞典 IT用語を解説
ソフトウェア
めもりーくりーなー Winのメモリーをお掃除するソフト
Novel Supporter 小説推敲補助ソフト
PCソフト 便利なソフトを多数公開
Webサービス 便利で楽しいサービス多数
レトロゲームファクトリー レトロゲーム移植会社のお仕事小説
#電書ハック 電子書籍編集部のお仕事小説
顔貌売人 IT系ミステリ
裏切りのプログラム IT系ミステリ
ゲーム
Little Bit War Switch向け高速RTS
TinyWar high-speed 1ステージ数分の8bit風RTS
EX リバーシ 変形盤面、ステージ多数
PuzzleAndGame.com ブラウザで遊べるパズルやゲーム
同人活動
るてんのお部屋 コミケなどで活動(DL販売
no link
2016年02月02日 00:09:49
 うちのサイトは、いちおう法人名義のサイトではあるのですが、分類としては、「古き良き個人サイト」と分類してよいと思います。

 その「個人サイト」のブログ部分は、「News Collector」という自前プログラムで動いています。

 その昔「個人ニュースサイト」というものが流行った頃に、自分でプログラムを書いて、そういったサイトの更新を、しやすくしていたのですね。

 その後、「個人ニュースサイト」から「ブログ」へと、世の中の流行が変化したのですが、過去のデータをぶった切るのも、もったいなかったので、同じプログラムを建て増しして運用してきました。

「News Collector」の最初のバージョンは、2001年の3月23日。そこから15年ほど運用してきたのですが、さすがにプログラムを1から書き直した方がよい状態になっていました。

 でも、それだけ長く運用してきたコードをリプレースするのって、かなりしんどいのですね。

 とは言っても、メンテナンス コストが高くなりすぎて、メンテナンスが困難になっていたので、先週末と先々週末の4日ほどを使って、全面的にリニューアルしました。

 その結果、プログラムのメンテナンス性を取り戻せました。というわけで、その時の話をまとめておきたいと思います。



● 元の構成


「News Collector」というプログラムは、ローカルでデータを管理して、FTPでデータや静的HTMLを、サーバーに送ります。

 このプログラムは「WSH(Windows Scripting Host)」で書かれたものです。UIは「HTA(HTML Applications)」です。何というか、出てくる言葉が、やたら古めかしいです。

 それとは別に、サーバー側でCGIとして動作する「Perl」のプログラムが存在していました。「Perl」自体も、この15年ほどで色々とありました。

 構成をまとめると、以下のような感じです。

ローカル
・WSHで、記事データの管理と、静的HTMLの出力。
・サーバーにFTPで、データや静的HTMLを送る。

サーバー
・ローカルから送られた静的なHTML(サイトのトップページ)。
・ローカルから送られたデータで動く、PerlのCGI(検索や個別ページの表示)。

 このローカルのWSHのプログラムは合計366KB.。サーバー側のPerlプログラムは合計99KBありました。

 ただ、使われなくなった機能のコードも多く、生きているコードがどれぐらいなのか、ちょっとわからない状態です。

 それに、この15年の間に、私の実力が大きく変化しています。そのため、ほぼ別人と言っていい人間が、コードを追加しまくっている状態になっています。

 その結果、よく分からない巨大なスパゲッティコードになっています。

 このコードを元に、リニューアルをするのは非現実的です。というわけで、構成を完全に刷新して、新たに0からコードを書くことにしました。



● 新しい構成


 いくつか課題がありました。

・自分がよく使うプログラミング言語に置き換えたい。

・ローカルとサーバーのコードを、ある程度共通化したい。

・文字コードを、SJISではなく、UTF-8にしたい。

 これらを解決するために、プログラミング言語は「JavaScript」を選び、ローカルは「electton」、サーバーは「node.js」という構成にしました。

 最先端の方々からは、「node.js でサーバーを立てるんじゃなくて、CGI をやるなんて馬鹿じゃねえの」という声が聞こえてきそうです。

 まあ、そうですね。

 しかし、ローカルとサーバーのコードを共有化できるというメリットは、「メンテナンス性」を回復するという面から、計り知れない恩恵があります。

 今回のような、「ローカルとサーバーに、データがまたがる構成」は、だいぶ特殊な事例なので。

 というわけで、最初の週は、生まれて初めて「electton」をインストールして、2日ほどでクライアントアプリを書きました。UIやシステムは、今の自分が作るならばという視点で、完全に刷新しました。

 この段階では、文字コードはSJISのままです。

 次の週に、「node.js」用のCGIプログラムを書き、2日ほどでサーバー側を置き換えるプログラムを書きました。

 この段階で、文字コードをUTF-8に切り替えました。

 コードのファイルサイズは、以下のように激減しました。

・ローカル:
 コード:366KB → 53KB(14%に減少)

・サーバー:
 コード:99KB → 21KB(21%に減少)
 スキン:63KB → 46KB(73%に減少)

 コードが非常に整理されましたので、今後のメンテナンスは、かなりやりやすくなります。

 スキンのファイルサイズが減っているのは、スキンのシステムも、今の視点で作り直したからです。



● まとめ


 プログラムは、放っておくと、どんどん肥大していくので、どこかでメンテナンスが必要ですね。

 あと、技術のトレンドや「自分自身の興味」も大きく変遷していくので、数日で置き換え可能なプログラムなら、数年に一度は書き換える、あるいは大幅なメンテナンスをするのがよさそうだと思いました。

 しかしまあ、何年もちまちまと書いていたプログラムを、今のレベルと視点で書くと、4日で終わるのか……。あの労力は何だったのかと。まあ、血肉になっているのでしょう。

 というわけで今回は、「electron」の勉強も兼ねて、こういったリニューアルをしてみました。

 バグが見つかったら、ちまちまと修正します。お知らせください(汗
最新20件 (全て見る)

柳井が執筆した本や商品 (全て見る

マンガでわかるJavaScriptのPromise
JavaScriptのPromiseをマンガで解説。無料。
レトロ風RPG 全コード
JSのレトロゲーム風RPGの全コードを掲載&解説。
タワーディフェンス 全コード
JSのタワーディフェンスの全コードを掲載&解説。
レトロゲームファクトリー
過去のゲームを最新機用に移植する会社のお仕事小説。新潮社より発売中。
#電書ハック
電子書籍編集部のお仕事小説。文藝春秋より発売中。
顔貌売人 ハッカー探偵 鹿敷堂桂馬
シリーズ第2弾。文藝春秋より発売中。
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
松本清張賞の最終候補に残った拙作小説(デビュー作)。

サイト目次

PCソフト/Webアプリ/ゲーム

記事/マンガ

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について