MOMOWORK

TOP

NOOKAXIS 1/100を作ったよ!

NOOKAXIS 1/100(ヌークアクシス ワンオブハンドレッド)は、
プロフィールページの総合管理の仕組みのCGIです。
如何に一つ一つのコンテンツの価値を失わせるのか?
そのことについて深く探究しつつ作りました。

なぜ作ったのか?

新規事業のためです。
MovableTypeを使おうと思っていたのですが、
NOOKBBSを作ったので、あれ?これ、自分でも作れるんじゃね?
と思い作りました。NOOKBBSと仕組みはたいして変わりません。
そんなありふれた技術の集合体のDBを使わないCMSです。

機能概要

Perlで動作する軽量な投稿・管理システムです。
データベースを使用せず、JSON ファイルで投稿データと認証情報を安全に管理します。
個人・小規模チーム向けに設計されており、静的ホスティング(CGI可)環境でも動作可能です。

  • 投稿の登録・削除・固定表示(ピン留め)
  • 管理者ログイン/ログアウト機能(セッション・CSRF 対応)
  • パスワード変更機能(SHA256ハッシュ)
  • 更新停止(フラグファイルによる制御)
  • 投稿ログの HTML ダウンロード機能
  • XSS・CSRF・不正投稿対策済み

構成ファイル

個別ユーザーは「write.cgi」経由でパスワード変更と挨拶文の投稿管理のみ行えます。
他は全て運営管理のシステムです。そのため、バックアップと復元が容易です。

ファイル名役割・説明
index.htmlプロフィール、挨拶、リンクを表示
log.html投稿ログを表示
write.cgi投稿、固定、削除、更新停止などを制御
style.cssサイト全体のデザイン
script.jsページの動的挙動や入力補助スクリプト
profile.pngプロフィール表示用の画像
stop.flag運用中に更新機能を停止するファイル。
folder.json実際のパスワードファイルの保存パスを定義。
外部から直接アクセスされないよう分離管理。
pass.json管理者パスワードを暗号化して保存。
posts.json投稿本文、固定表示、日時などの投稿データ。
access.logログイン・投稿・削除などの操作履歴を記録。
info.json補助情報を保存
user.json表示するユーザー名
links.jsonリンクファイルです。
links.cgilinks.jsonの生成
setup.cgiNOOKAXIS 1/100のセットアップ

※実際のファイル名とは違います。

提供形態

本システムは Assembly(アセンブリ)を通じてのみ提供・運用予定です。
構造上はBBSに近い仕組みを持ちますが、目的はコミュニケーションではなく、
プロフィールページの固定・参照・管理に特化しています。
設置・保守・アップデートは運営が一括管理し、ユーザー側での改変は行えない仕様です。

対応環境

  • Perl 5.10 以降
  • UTF-8対応(JSON保存時はASCIIエスケープ形式)
  • CGI実行可環境で動作確認済み
  • データ保存形式:JSON(DB不要)

ライセンス

  • 著作権:© MOMOWORK
  • 商用利用可(改変OK、再配布禁止)

編集後記

JSONの特徴がなかなか掴めずイライラし、すごく苦労しました。
ASCIIは普通に開いてもそのままでは読めないので人様の人生に
関与したくないという私の思い通りの仕様です。