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

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
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件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

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