chocolablog ver 0.7 にアップデートしました
Python 製自作ブログの chocolablog を ver 0.7 にアップデートしました。前回アップデートが 2013 年 5 月 2 日ということで、今回も 1 年以上の間を置いてのバージョンアップとなります。ver 0.6 ではシステム管理側でいろいろ機能を追加していきましたが、ver 0.7 では新機能の追加はほとんどなく、細かな機能拡張と不具合修正のみになります。
ver 0.6 で実装したスパムコメントのフィルタリング機能は、1 年半くらい運用してみてまずまずの成果をあげているようです。フィルタリング機能は 2 段構えなのですが、第 1 障壁を超えてきたコメントスパムが 2 件だけでした。その 2 件も察するに、スパマーさんが試しに普通にコメントしたんじゃないかという感じの内容だったので、第 1 障壁の役目としては問題ない範囲になります。
スパムコメント対策に限らず、システムとしてはだいぶ成熟してきた感が強くなってきているので、今後もこんなペースでの開発が進んでいくことになるんじゃないかと思っています。当面は大きめの機能追加の予定はありません。(単にネタ切れとも言う)
ver 0.7 の追加機能
フロント側・記事/コメント中のタブ、半角スペースを   として表示する
・デザインの微調整
chocola 記法の機能拡張
・コードタグのシンタクスハイライトに python 用、plain text 用を追加
・注釈/フォーマル/警告タグ内で他のタグが使えるように
システム管理側
・システム管理画面でコメントの編集機能を追加
改修した不具合
・記事作成で同名画像を置き換えると、古い画像が削除されタグとして表示される
・システム管理画面でタグを編集した際に、タグのつけられた記事数が 0 と表示される
・Amazon アフィリエイトの URL が URLEncode されている
・Amazon アフィリエイトタグで、発売日情報がなく、値引きがある商品の値引き表記が崩れる
・コメントの文字が自動折り返しされない場合にデザイン崩れが起きる
・ログイン失敗時にユーザーログの失敗数が更新されない
・ある条件でログアウトしようとするとエラーになる
DB まわりのフレームワークを変更しました
chocolablog ver 0.7 での目玉改修は、フロント側の機能拡張よりもむしろ、フレームワーク部分の大改造だったりします。ver 0.7 では DB アクセス部分の API を書きなおしていているため、更新履歴は短いにも関わらず、アップデートの影響範囲はほぼすべての機能になっています。O/R マッパーを強化してオブジェクトをそのまま DB の入出力に使えるようにしたり、SELECT 用 API の可用性を上げて外部 SQL ファイルを使わずにすむ場面が増えたりと、だいぶ今風なコードを書けるようになってきました。恩恵を受けるのはやはりモデル層になります。だいぶすっきりしました。ついでに単体テストも着々と増殖中です。
コードカバレッジで見ると今こんな感じです。chocodb というのが DB まわりのフレームワークです。一部後回しになっているメソッドがあったり、古い API が残っていたりするので 100% にはなっていません(そもそも論でいうとカバレッジが大正義ということではないですが)。
単体テストを整備し始めたのが最近になってからなので、全体で見るとまだまだですね。少なくともフレームワーク部分はもりもり増やしていきたいです。
……え?ただの自己満足ですか?
いいえ!れっきとしたアンチエイジングです!
こういうリファクタリングが思う様やれて、あまつさえバージョンアップの主目的にできるのも、商用製品でないプログラムの特権ですね。仕事では負の遺産を捨てるためだけに工数をさくなんて、よっぽど余裕のある会社じゃないとなかなかできません。
よろしくないコードをばしばし捨てていくのはとても楽しいです。コードを書き直すことでプログラム自体も若返りますし、開発者が新しい技術を吸収するチャンスにもなります。なにより古くて汚い実装を撲滅することで、開発者のモチベーションが上がっていくのが一番大きな効果なんじゃないかなと思います。
chocolablog の開発が始まってそろそろ 3 年が経とうとしています。私ひとりが趣味で作っているものなので、過去のコードが負の遺産になるとしたら(負の遺産だと思ったことは 1 度もありませんけれど)、それは単純に私の力不足ゆえです。最初に書いた時にはこれがベストなコードだと思っていたものも、あらためて見てみると考えの足りない部分はやっぱりあるものでした。過去にも大きな改修として、URL 構成を大きく変えたり、コントローラーがアクションを捌くあたりのフレームワークを書き直したりということをしています。今回の DB まわりの整理もそんなリファクタリングのひとつです。
ただ、こうしてコードを書き直したいと思える事自体がプログラムへの愛着のあらわれなんじゃないかなーと思います。好きなソフトウェアだからこそ、新機能とは関係ないソースコードを無駄に眺めては、まだまだ洗練できる部分を探してしまうのがエンジニアなんだと思います。
ということで、あいかわらずのまったり進行とはいえ、chocolablog の開発はまだまだ続きます。
chocolablog 開発 コメント (0) 2014/11/03 15:24:13