Gumiki開発録
Gumiki開発に関する細かい情報や駄文を載せています。次のアップデートについての情報などはこちらに載せていきます。パッチ情報などについてはリリースノートを参照してください。
- インデックス
Gumiki開発録
2009/05/24 - この次の実装予定
2009/04/28 - ver1.22公開間近
2008/11/20 - ver1.21公開(*゚ー゚)
2008/11/19 - 公開直前情報2
2008/11/17 - 公開直前情報
2008/11/12 - Gumiki ver1.21b 公開直前
2007/12/6 - ver1.20のお話
2007/8/20 - v1.19a2
2007/3/7 - v1.18
2007/3/2 - v1.17b5
2006/12/28 - v1.17b4
2006/12/21 - 今年もあと僅か
2006/12/20 - v1.17b3
2006/12/8 - ver1.17bリリース
2006/12/1 - ver1.17a詳細
2006/11/27 - ver1.16rc3詳細
2006/11/19 - ver1.16rc2詳細
不具合修正
RSSフィードの能動的公開
コメント機能のオプション追加
#start_rem~#end_rem 命令
#start_space~#end_space 命令
#start_field~#end_field 命令
gzip暫定対応
新規命令 - #permalink
新規命令 - #copyright
スタイルシートのプラグイン実装
ToolTipの実装
レイアウトの修正
2009/05/24 - この次の実装予定
2009/04/28 - ver1.22公開間近
2008/11/20 - ver1.21公開(*゚ー゚)
2008/11/19 - 公開直前情報2
2008/11/17 - 公開直前情報
2008/11/12 - Gumiki ver1.21b 公開直前
2007/12/6 - ver1.20のお話
2007/8/20 - v1.19a2
2007/3/7 - v1.18
2007/3/2 - v1.17b5
2006/12/28 - v1.17b4
2006/12/21 - 今年もあと僅か
2006/12/20 - v1.17b3
2006/12/8 - ver1.17bリリース
2006/12/1 - ver1.17a詳細
2006/11/27 - ver1.16rc3詳細
2006/11/19 - ver1.16rc2詳細
不具合修正
RSSフィードの能動的公開
コメント機能のオプション追加
#start_rem~#end_rem 命令
#start_space~#end_space 命令
#start_field~#end_field 命令
gzip暫定対応
新規命令 - #permalink
新規命令 - #copyright
スタイルシートのプラグイン実装
ToolTipの実装
レイアウトの修正
2009/05/24 - この次の実装予定
ver1.22-b1をリリースしました。Canvas命令サポートは他のWiki群との差別化になりそうです。さて、今後のリリーススケジュールですが、8月頃に安定版のver1.22を出し、10~11月頃にver1.23を予定しています。
1.23では負荷低減の一環として、Blogなどで用いられているHTMLキャッシュページ化の実装を検討しています。いまのままだと負荷集中するくらいの人気サイトにGumikiを採用するとマトモにページが見られる保障がないのですよね…。
ただし現在の実装と合わない面も多く、開発に手間取るかもしれません。
2009/04/28 - ver1.22公開間近
5月にver1.22を公開します。今回の修正点については改めてお知らせしますが、一つの目玉として、HTML5.0のCanvas仕様がGumiki構文の中に組み込んで使えるようになりました。
リファレンスが先に出来上がっていますのでそちらを参照ください→Canvas機能について
2008/11/20 - ver1.21公開(*゚ー゚)
ダウンロードよりどうぞ。今回の【簡易インストール版】を使えば、プロバイダ&FTPツールとの相性がよければ、実はパーミッション設定をすることなく、forinit.cgi ひとつ実行するだけで新規セットアップが完了します。いつもは書き込み許可属性を付与していた*.dat 系のファイルがセットアップ時に自動作成されるようになったのが大きいです。
ともあれ、まだβ版としているだけあって何かバグが出てくる可能性もありますが、そのときは掲示板のほうまで連絡いただければと思います。
2008/11/19 - 公開直前情報2
ver1.21b1が月初めに仕上がったものの、リリースに向けて調整をしているうちにb4までバージョンが上がってしまいました。懸念していたDB破損問題については根本的な解決には至ってはいないものの構成管理情報のバックアップ/リストアを実装したことにより管理者側の負担は大きく減りました。ぜひ、近日中にリリースする新バージョンのGumikiをお使いください。
2008/11/17 - 公開直前情報
Gumiki ver1.21bの公開は遅くても11/24(月)までに行いたいと思っています。なお、以前から稀に発生しているファイル欠損についての不具合ですが、やはり短時間にアクセスが集中する時に発生しやすいようです(1分で100回など)。たぶんアクセスログやアクセスカウンターのような、ユーザからのアクセスで更新系が発生する類のコードのロック制御が間に合っていないのでしょう。
何とか対処できればと思いますが、もし発生した場合でも、データベースの破損状態を復旧しやすいようにする何らかの補助機能も搭載しておいた方が良さそうですね。うーん。
なお、ver1.20系より、アクセスログは高速版の#accesslog2 が使えるようになりました。ver1.2系に置き換えた方はログ取得のコマンドは置き換えを推奨します。
2008/11/12 - Gumiki ver1.21b 公開直前
3~4月にver1.2系の公開を……などと下に書いてありましたが、既に11月になってしまいました。一応ver1.21bのビルドが完了し近日中に公開予定なのですが、予告してあったレルム削除機能およびID隠蔽については結局見送りとなってしまいました。その代わりとして、アーカイブ機能の強化など、使い勝手が色々向上する機能追加を施しました。詳細についてはまたのちほど。しかし今更ながらの話ですが、Gumikiは4つの問題点を抱え込んでいます。
ひとつはシフトJIS統一。SQL-Engineのコードとの親和性を考えて、Gumikiのコードも画面出力もすべてシフトJISなのですが、これが原因で文字コード問題が色々発生しています。
二つ目はGumikiページの改行コード。シフトJISの世界ならCRLFを付与するべきですが、色々あってCRコードだけになっており、NotePadなどで開くと一行で表示されてしまいます。見栄えの問題だけでなくいくつか面倒が発生しているので、将来的には何とかスタンダードな改行方式に戻したいなあとは思うのですが、既存の互換性を考えると頭が痛く、放置したままになっています。
3点目は画面レイアウト。IE基準の作りなので互換モード設計なのですが、そのせいでFirefoxなど他のブラウザと画面がズレる問題が発生しています。標準モード設計にすれば統一できるのですが、これをすると従来のスタイルシートを全部手直しする必要があり、これが結構面倒。CSSハックで誤魔化す手もあるっちゃあるのですが……。ともあれ現在はまだGumikiおよび標準スタイルにおいて、「IEで最適表示を保証。Firefoxでは多少崩れるけど致命的にならなければOK」というポリシーとなっています。しかしながらIE8ではデフォルトが標準モードとなるそうで、そうなればGumiki(およびスタイル)も標準モードをベースに作り変える必要が出てくることでしょう。
最後はごく稀に発生する構成データの破損。原因はいまだ不明で、その破損に繋がりそうなXSSをver1.2系で少しだけ対処したのですが、それで治る確証は今のところありません。構成データを管理するエンジンのSQL-Engine自体に何らかのバグが潜んでいる可能性も捨てきれないのですが、そうであれば尚更直せないわけで。。
いずれも問題点とは認識しつつも、もうしばらくは様子見。但し互換/標準モードの件については、ver1.2系ではシステムコンフィグ画面から標準モードを選べるようにはなっています。自作の標準モード用スタイルを載せたい場合などにどうぞ。
2007/12/6 - ver1.20のお話
ver1.1系は現在1.19.1が最新版ですが、原則的には今後はバグ修正のみとしまして、次の機能アップデートはver1.2系に譲ることになります。ver1.2系の初期公開は3月~4月を予定しています。
現在のところ決まっている予定は以下の通り:
○ レルム削除機能
レルム内の全データを抹消する機能です。
○ IDの隠蔽
レルム、ページは1から順番にIDが振られており、IDを指定すれば違うレルムのページが見られてしまうのが現在の仕様です。あまり好ましくは無いので、何らかの隠蔽ができるように考えています。
2007/8/20 - v1.19a2
久しぶりに改良中。ver1.19としてリリース予定で、現在は調整段階です。主な追加機能はスパム対応やページ挿入機能の強化など。
2007/3/7 - v1.18
b6までベータ開発が続き、1.17系にすると誤解を招きそうなのでフルセット版はver1.18として改めることになりました。内容はv1.17b5とほぼ同じ。 #status 命令が追加された程度。このv1.18フルセットの公開準備は整いましたので近日公開開始します。
2007/3/2 - v1.17b5
v1.17正式版(フルセット)のリリース作業をすっかり忘れていました。ので、その直前候補版としてのパッチ情報。但しこのv1.17b5ソースの公開予定はありません。備忘録的にメモ。ページ削除時、そのページについていたコメントや掲示板の書き込みも連動して物理削除されていたが、編集ログを有効にしている場合、編集ログの中に抹消したコメントを転写するようにした。
CoolFeedのテキストエリアフォーム版を用意。いわゆるメールフォーム的に活用するためのもの。
[/ページ名/]の記法の実装。 #link に近い「存在確認付きリンク」(ページが存在していない場合に?マークを付ける)ができるようにした。
2006/12/28 - v1.17b4
b3に存在していた不具合の修正。ワールドトップページで管理者のホストを登録しておいた場合、(その管理者のみが)サービスを停止しているレルム内の情報を閲覧することが可能に。これにより、まだ見せたくない構築中のレルムが、こっそり誰かに覗かれるという懸念を排除することができるようになった。
サービスを停止しているレルムのページにアクセスした場合、特定のページにリダイレクトする機能を実装。サイト全体のメンテナンス告知などをするときに大変便利です。
このver1.17b4パッチは要望が無い限りは配布予定はありません。来年の1月末にはVer1.17(正式版)としてフルセットをリリースしますので、そのときまとめて。
2006/12/21 - 今年もあと僅か
私にとってGumikiは、自分のサイト構築用の道具として開発したものであり、その期間として最大1年を充てました。その期限がもうじき終わろうとしています。今後も小さめな更新やバグ取りなどでアップデートそのものは行いますが、こちらの開発にかける時間的コストはごく僅かとなるでしょう。
いまだにドマイナーであるこのCMSツールが、2-3年ほど経った後に少しは広がっているかどうかは分かりません。決して誰にでも簡単に全ての機能を使いこせるほど甘いツールではありませんから一般受けはしないでしょう。けれども、ホームページといえばブログシステムとすっかり思い込んでしまっている人達が、そのブログは日記に特化しすぎたシステムであり、時系列に拠らないコンテンツとしてのサイトはブログでは色々無理があるということを理解し、何かいいツールがないかと模索するとき、Gumikiはその一つの回答と成りえますし、もちろんHTMLベースでやってきた人にとっても良いマイグレーション対象と成りえます。これはWeb1.5~2.0の入口の間を彷徨う、決して新鮮なツールではありませんが、自信を持って提供している強力なシステムです。
2006/12/20 - v1.17b3
v1.17bからのミニ・パッチであるb3が近日中にリリースされます。いずれも微細なもの。ad_blue.css/ad_green.cssスタイルシートの不具合の調整
トリップ機能の成りすまし防止
フロートスレッド掲示板活用の強化
掲示板の書きこみ限界を1000に規定
Gumiki認証の認証画面でのクライアントホスト情報を表示しないよう修正
掲示板投稿削除機能に存在した不具合の修正
#recent一覧のtitleツールチップにページの経過時間を表示するようにした
#printcsv内で呼ばれる文章に [[]]でのページリンクを有効とした
最新のコメント&掲示板の一覧を出力する #commentrecent機能の仮実装
2006/12/8 - ver1.17bリリース
1ヶ月ぶりにパッチリリース。パッチ情報はリリースノートの方に全部まとめたのでそちら参照してください。今回からプラグインスタイルシートの別途提供も始まっています。wakakusa2.css は、今までのスタイルシートの中ではもっとも出来の良いスタイルだと思っています。
ver1.17bにはZip.pmをこっそり添付しておきました。ログ解析云々の下にちょこっと「Zipアーカイブの取得」なるリンクが表示されると思います。これを押下すると、ページおよびページ構成情報のバックアップをZipファイルの形で取得できるようになります。バックアップ管理は少し楽になるんじゃないかと思います。
2006/12/1 - ver1.17a詳細
内部開発中のv1.16rc3→v1.17a改良情報。動作チェックが終わり次第、ver1.17パッチとして配布します。検索(#search)機能で、ページに付いたコメントも検索対象に含めた
v1.16で実装したメニューページの置き換え機能のバグを修正
#setmes、 #printmes 命令の追加
一部スタイルのみ調整
2006/11/27 - ver1.16rc3詳細
内部開発中のrc2→rc3改良情報。スタイル微調整。一部スタイルはIEのフォントサイズ「中」でも不快感の少ないようにした。
RSSフィード出力用に #rssfeedflag 命令を追加。これをページに埋め込んでおくと、エントリの出力の際、これ以降のみ出力対象とします。ページの頭に固定的な文字列を埋め込んでいる人に有益です。
2006/11/19 - ver1.16rc2詳細
現在のローカルビルドはver1.16rc2。別につど公開しても良いと言えば良いのですが現状そこまで多くの需要はありませんし、毎週のようにパッチを出してもかえって対応が面倒でしょうから、次に公開するのはver1.17になってからとなります。一通り、パッチリリースしたver1.15+からver1.16rc2までの修正点を説明付きで列挙していきます。
不具合修正
- Zip.pmがapp_modディレクトリに配置された場合にも認識されなかったバグの修正
- ページ名に望ましくない文字が入ってきた場合に他の文字に置き換えるよう調整
RSSフィードの能動的公開
今までは、#rss と記述することでRSSアイコンと共に、レルムのRDFアドレスを提供してきました。しかしIE7でフィードを自動登録できる機能が搭載されたため(Firefoxなどにも付いています)、Gumikiもこれに対応しました。これにより #rss といちいち記述しなくても、IE7等のユーザはこのサイトがRSSに対応し、フィードを登録可能であることを知ることができるようになりました。コメント機能のオプション追加
#comment に、 "host" オプションを追加しました。このオプションを指定すると、コメント投稿欄に投稿者のhostが表示されるようになります。この場合、フォームにはhostが公開されることの注意書きが追加されます。#start_rem~#end_rem 命令
指定範囲内の記述の解釈を無視します。ようするに/* ~ */ のようなものです。#end_page と合わせてお使いください。#start_space~#end_space 命令
指定範囲内において、半角空白を解釈し画面に反映させます。これを指定しない限りは半角空白はHTMLレンダリングエンジンの規則に従い無視されるとか複数書いても1個しか有効にならない、と言うことになります。半角空白でレイアウトを取る必要がある場合にお使いください。他の範囲命令と違い、#end_space は必須ではありません。
なぜこの機能をデフォルトにしないのかといった問題については色々複雑な背景があります。動作としては半角空白は全て という文字に置き換えているのですが、このためページ容量が増えるとか変換負荷がかかるとか、一部不具合が発生する可能性などがある、というのが理由です。
#start_field~#end_field 命令
HTML4.0の<fieldset>および<legend> 命令の互換サポートです。本来はフォームをグループ化するために使うタグですが、レイアウト用としても使えるために標準命令化しました。gzip暫定対応
IE7では、Content-Lengthを正しく送らないページを正しくレンダリングしないという不具合があるようです。Content-LengthはWebサーバが自動的に付与する場合もありますが保証はされません。GumikiでもContent-Lengthを付与することは可能でしたが、これは転送プロセスに変更が生じるだけでなく若干のパフォーマンス低下も招くため現状では見送っています。変わりに「gzip転送すれば正しくレンダリングされるらしい」という情報があるため、迂回策としてgzip転送の機能を付与しておきました。正式サポートはしませんし、gzipそのものはGumikiには付けておりません。
デフォルトではgzip転送は使わないように、gumiki.cgi の先頭のほうでコメントアウトされています。
IE7のレンダリング問題は置いておき、gzip転送についてですが、サーバのスペックが強力で、かつ表示するページの容量が大きいという場合は、有効にしておいたほうがクライアント的には快適となるでしょう。サーバのスペックが心許ない、あるいは表示するページの容量が小さいという場合には効果が望めないか、あるいは逆効果にもなります。
新規命令 - #permalink
「#permalink」と書くことで、現在のページへの永続的なリンクアドレスを表示する機能です。もっとも、アドレスバーに表示されているURLもある程度の持続性が保証されているURLです。しかしアドレスバーのURLは2バイトコードを含むため、何かの目的でペーストするにはあまり向きません。メールや、URL自動認識型の掲示板に(2バイトコードを含むアドレスを)貼ると正しく認識しないことがあります。
この命令で出力されるURLは2バイトコードを使わない、id値に置き換えたものになります。しかしid値は現在におけるページファイルの配置場所を記録しているだけであり、たとえばこのページが一度削除され新しく作り直されると別のidが振られ、以前のidは廃止されます。それゆえ厳密にはPermalinkとしての持続性は保証されません。
「#permalink utf8」というオプションを用意しています。こちらはページ名を自動的にUTF-8エンコードしたアドレスになります。おそらくこれがもっとも持続性の高い正統なURL形式です。しかし、日本語の長いページ名を付けていると非常に長いURLとなります。人の紹介する場合はid値を使ったリンクとどちらが良いかはユーザの判断に委ねられます。
新規命令 - #copyright
右下にある「Powered by Gumiki ver1.xx」の所(デフォルトフッタ)に別の文字列を埋め込みたい場合、今まではcgiファイルを直接編集するしかありませんでした。もちろんFooterページを作って対処することもできましたが、若干配置場所が違うとか、#setproperty credit no を付けないと見栄えが変になる等があり、ver1.16rc2からは #copyright 命令によって、デフォルトフッタの文字列を任意に置き換えることができるようにしておきました。これはHeaderページに埋め込むことを前提としています。なお、この命令実装の派生で、 <version> タグが追加されました。これは#print_version とほぼ同等です。逆に #print_versionは推奨しない命令(Deprecated
)となり、将来的には削除の予定です。
スタイルシートのプラグイン実装
/css/plugin 直下にスタイルシートを置いておくと、レルム設定の所からセレクトボックスでスタイルが選べるようなプラグインスタイルの機能に対応しました。また、この機能の実装で、今まではHeaderを使わないスタイルを「基本」、Headerを使うスタイルを「拡張」としてきましたが、拡張という概念が混乱を引き起こすと想定されたため、前者を「TypeI」、後者を「TypeII」と呼ぶように用語が修正されました。
なお、初のプラグイン用スタイルとして、wakakusa.css および wakakusa2.css を提供することになります。これは white.css を元としてベースを緑にし、さらに淡い配色を加えたものです。
ToolTipの実装
span title を用いたツールチップを実装しました(<tip>タグ)。このTooltipは便利ですが、不具合を2つ抱えています。一つはFirefoxなどのブラウザでは改行ができない事。もう一つは、IE等で同じツールチップを一定時間表示すると消えてしまううえ、別のツールチップを表示するまでは再度これを見ることができないという問題点です。完全なToolTipを作るためにはJavaScriptが必要となります。それはもはやツールチップではなくポップアップテキストと呼ばれます。
しかし、Gumikiはポップアップテキストは実装の予定はありません。JavaScriptは実装ポリシー上、必要なもの以外は使わないという方針があるからです。
レイアウトの修正
- スタイルシートのx-small表記の多くをsmallに変更。これはFirefoxで想定以上に小さく表示されてしまうためです。
- デフォルトフッタの末尾に を埋めていたのを止めてスタイルのpaddingで調整するように修正。
→TopPage