2003年10月10日
川俣晶の縁側ソフトウェアMagSite1開発日誌total 1675 count

バグとWebアプリケーションならではのもどかしい制約

Written By: 川俣 晶連絡先

 今日、継承に関する話を1つオータムマガジンに書きましたが、その理由はこれを書きたかったからではありません。本当は忙しいので、こんなものを書いている暇はないはずでした。忙しい理由は、もちろんMagSite1のMagMLの実装です。

 では、なぜ継承の話を書いたのか。それは、かなりコンテンツへのアクセスカウントが上がっているにもかかわらず、新規コンテンツが数日無くて、読みに来る読者に申し訳ないからでした。

 しかし、MagSite1に原稿を作成して、「書き込む」ボタンをクリックしたら、なんと例外を吐いて落ちてしまいました。これはびっくり! こんな現象は初めてです。

 ともかく忙しいけれど、作業が一段落した時点で調査を始めました。

 途中の経過を略して結果だけ書くと、ある便利な機能が悪さをしていることが分かりました。

 現在のMagSite1は、コンテンツの新規作成を行うと、空のコンテンツファイルを作成します。中身を書き込んで確認ボタンを押したりすると、このファイルに中身が入って行きます。これらのファイルから管理メニューのドラフトのコンテンツリストが作成されます。

 しかし、うっかり間違って新規作成をクリックしてしまい、慌てて戻るボタンをクリックすると、空のコンテンツファイルが残ったままになります。(本来は、破棄して終了ボタンを押して戻るべき局面)

 こんなことを繰り返すと管理メニューに空のコンテンツがいくつもリストされて邪魔だろう、ということで、管理メニューを作成するときに、空のコンテンツを削除するようになっていました。

 ところが、ある順番で操作すると、この機能が重大な問題を引き起こします。

 まず、Webブラウザを2枚開きます。1枚で新規コンテンツの作成を開始し、空のコンテンツファイルが存在する状態にします。そして、2枚目のWebブラウザで管理画面を開きます。この時点で、空のコンテンツファイルは削除されてしまいます。

 そのまま新規コンテンツの作成を続けると、あるはずのファイルが無いため、エラーになって落ちるという訳です。

 以上が症状の顛末です。

 問題は、これをどう解決するか、ということですが。

 放置された空のコンテンツファイルと、今まさに編集作業中の空のコンテンツファイルを区別することはできません。編集はクライアントサイドで行われる作業ですが、それをサーバ側で確認する手だてはないのです。Webアプリケーションならではのもどかしい制約と言えます。

 というわけで、今回は、残念ながら空のコンテンツを削除する機能は取り除くことにしました。

 まあ、基本的には、「破棄して終了」ボタンを使ってくれれば問題にはならないことですし、残った空のコンテンツファイルを削除する手順も簡単なので、これで良しとしましょう。

 おそらく、リッチクライアントの技術を使えば、こういう悲しい状況に陥らない管理も実現できると思いますが、これは次バージョンの課題ということにします。

Facebook

キーワード【 川俣晶の縁側ソフトウェアMagSite1開発日誌
【MagSite1開発日誌】の次のコンテンツ
2003年
10月
13日
このサイトのMagSite1をバージョン0.14に更新
3days 0 count
total 2331 count
【MagSite1開発日誌】の前のコンテンツ
2003年
10月
04日
現時点での内容を0.13としてこのサイトに反映
3days 0 count
total 1765 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20031010172538
サイトの表紙【MagSite1開発日誌】の表紙【MagSite1開発日誌】のコンテンツ全リスト 【MagSite1開発日誌】の入手全リスト 【MagSite1開発日誌】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.34 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.