どっこい生きてるWebアプリケーション

株式会社ピーデー
川俣 晶
2002/03/23


Webアプリケーションの未来はどっちだ?

 前回は、「Webアプリケーションの時代は終わるか?」というテーマで書いたが、これを書く際に注意したことが1つある。それは、業務用システムとして使われるイントラネット系のWebアプリケーションを主に想定することである。この範囲内において、Webアプリケーションの時代が終わる可能性は現実的に考えられることである。だが、世の中にあるすべてのWebアプリケーションが消えていくのかといえばそうではないと思う。というのは、企業内システムであれば、クライアントPCの仕様を統一したり、ある水準以上の機能を維持したりすることも可能なのだが、不特定多数向けのサービスを行う場合、どんな環境からアクセスされるかということを前提にすることはできないからだ。もちろん、特定のWebブラウザを使用することを強制的に求めているサイトも実際に存在するが、そのような強制をできるだけ減らしたいと思うなら、必然的にサーバサイド処理を中心とするWebアプリケーションにならざるを得ない。

 そのように考えると次に気になるのは、このようなWebアプリケーションの未来である。特に、Visual Studio .NETとASP .NETを用いたときに、Webアプリケーション作成の手間がどう変化するかは気になるところだ。それと同時に、現時点で、.NET Framework下でWebアプリケーションがどの程度安定して稼働するかも気になる。そこで、簡単なWebアプリケーションを1つ作成してテスト・サーバ上で公開、稼働させてみることにした。本稿はその結果のレポートである。

ニュース紹介サイトを試作する

 最近インターネット上では、複数のニュース・サイトから面白い記事をピックアップして、それを紹介するサイトがはやっている。ほかのサイトにある記事を紹介するだけで何が面白いのかと思うかもしれないが、これがけっこう面白いのである。その理由は2つある。1つは、個々のサイト運営者のセンスに合った記事が選ばれるため、読者は自分に合ったセンスのサイトを選んで読める。自分と似たようたセンスを持った人が運営するサイトを見つけ出せれば、労せずして自分の好みの記事だけに限って読むことができる。2つ目の理由は、記事の紹介文に付く気の利いたコメントだ。これにより、ニヤリと笑えたり、記事をより深く理解できるようになったりする。

 このようなサイトを運営するには、大きなハードルがある。もちろん、面白い記事を見つけ出すのも重要だが、それとは別に、毎日小まめにサイトを更新しなければならないという問題がある。毎日毎日何本もの記事を紹介するのだから、サイトのHTMLを書き換えるだけでも大変な労力である。しかも、ただ単に書けばよいというものではない。古くなった記事は、ちゃんと過去の記事として読めなければならないし、記事の一覧と本文は常に整合が取れている必要がある。このような作業をすべて手動でHTMLを書いて行うには、膨大な労力を要する。これにはおそらく、サイトを維持運営するためのサポート・システムが不可欠であろうと思っていた。

 さて、ASP .NETの実用性を調べてやろうと思ったときに思い出したのが、そのことである。1つ、そういうシステムをテスト的に作成してみようではないかと思い、実際に組んでみたのが、DeltaNET(Delta Network Experts Technology)である。このサイトにアクセスしていただければ、それがいくつかの機能から構成されていることが分かると思う。

DeltaNET(Delta Network Experts Technology)
ASP .NETの実用性を知るために開発したテスト・サイト。手間を省きながら、更新感が得られるページにすることなどを目的として、さまざまな自動化処理などを行っている。

 このうち、ページの下にあるオマケコンテンツの「技術者占い」と、「今日のラッキー言語」は、完全に無人での自動更新を実現している。「技術者占い」は、文章を4つの要素に分解し、それぞれに対応する語句を乱数で組み合わせて文章らしきものを構築している。乱数の種は日付を基に生成しており、同じ日付なら必ず同じ文字列を生成する。逆にいえば、サーバ内蔵時計の日付が変わった瞬間に確実に内容が変化するので、オーナーが更新をさぼっても、確実に占いは変化することになる。「今日のラッキー言語」は、プログラム言語の名前を乱数で選んで表示するだけの機能で、占い同様毎日変化する。もっとも、これらは乱数で表示しているだけのもので、内容にまったく意味がない。単なるお遊びである。

 さらに、「技術者占い」と「今日のラッキー言語」は、サイトを訪問した利用者が語句を自分で追加登録できる機能を用意している。例えば、「プログラム言語に私が大好きなRubyが登録されていないのはけしからん」ということなら、それを利用者が登録することができる。この場合でも、オーナーは何もしなくてもよい。

 もう少し込み入ったものはリンク集である。リンク集は、XML文書として名前とURLのペアが保存されており、このXML文書を編集するためのページが用意されている。データを修正するにはXML文書についての知識が必要となるが、更新頻度は低いものと考えて、ユーザー・インターフェイスは手抜きしている。

 最も込み入っているのは、ニュースとコラムである。この2つは内部的には同じクラスを用いて処理されており、見掛けは違うが構造は同じである。これを処理するために、少しばかりトリックを使っている。個々のコラムはXML文書として保存されている。SQL Serverなどを使わずにXML文書を使ったのは、ASP .NETでXMLを使い込んで試してみたいという意図があったのと、できれば.NET Framework標準以外のソフトウェアを使わずにシステムを構築した方が気が楽であるという理由による。さて、生のXMLを使うと処理は極めて重くなる。ファイルを参照するごとにファイルを解析しなければならないからだ。そこで、重い解析処理を実行することなく、コラム検索を行えるようにするために、XML文書に付けるファイル名を工夫した。具体的に検索を実行する項目は、日付と分類キーワードだと当たりを付けて、ファイル名に日付と分類キーワードを含めるようにした。例えば、「20020302230553_Java.xmlcol」というようなファイル名である。この場合、「20020302230553」が登録された日付と時刻で、「Java」が分類キーワードである。これにより、2002年3月2日に作成されたコラムを得るには、「20020302*.xmlcol」というワイルド・カードでファイル検索するだけでよく、分類キーワードがJavaのコラムを得るには、「*_Java.xmlcol」で検索すればよい。この程度の工夫でも劇的に処理効率をアップできるが、代わりに検索項目がプログラムの構造に深く入り込んでしまうので、後からの修正は難しい。本当のことをいえば、XMLデータベースに格納したいところだ。

付加価値を付けるカウント機能

 このサイトの開発中に興味深い機能を思い付いて付加した。それは、コラムが何回読まれたのかをカウントする機能である。これを用いて、過去3日間に最も読まれたコラムと分類キーワードをランキング表示する機能を付けた。これは、コラムが読まれるごとに刻一刻と変化するもので、どのようなコラムが好まれ、読まれているかという状況がリアルタイムに把握できる。これは興味深い双方向コミュニケーション機能の一種といえるだろう。サイトの作成者がどんな考えを持っているか読めば分かるのは当たり前だが、読者は黙して語らずで傾向が見えにくい。読者の声を反映させるしくみとしては掲示板があるが、発言する読者はごく一握りであることを考えれば、読者の全体傾向を知るには適さない。しかし、単に読むことがリアクションとしてランキングに作用するということであれば、読者は語らずとも「読んだ」という行動によって何かの意思表示をしたことになる。もちろん、これは匿名の行為であって、だれが何を読んだのかは記録されない。これは逆にいえば、ページが表示されるごとにアクセスカウントを集計して動的にランク付けする関係上、数値以外の情報を処理する余裕などないということでもある。

実績はどうか

 実は、このプログラムは、最初からDeltaNETとして開発したものではなく、さるプライベートな目的のために筆者が作成し運用していたプログラムを修正して、本コラムのサンプル・プログラムとしたものだ。両者のプログラムの骨格はほとんど同じである。このプライベートなサイトは、2002年2月18日より運用を開始しており、ほぼ1カ月間実際に運用してきた。この間、プログラムに手を加えながら24時間ノンストップで運用してきたが、特に大きな問題には遭遇しなかった。システム構成は、Pentium III-550MHz、メモリ256MbytesのNLXマザーボードのPC上で、Windows 2000 Server(Service Packやパッチは随時適用している)とVisual Studio .NET(英語版の製品版)という組み合わせである。取りあえず、これまでの実績を見る限り、ちょっとした出来事でシステムがダウンするような脆弱なものではないことが確認できた。もっとも、アクセス頻度もそれほどではないので、高負荷時にどこまで実用に耐えるかという点は、今回の検証でも明らかにはなっていない。これはまた別の問題だろう。

 もう1つのポイントは作りやすさだが、C#を用いたASP .NETプログラミングは非常に扱いやすかった。動的にWebコントロールを追加しながらページを構築する方法に慣れてしまえば、思いどおりのページをプログラムから生成することも容易である。しかし、手放しで褒められるかというとそうでもない。フォーム・デザイナーで何も考えずにコントロールを配置したり、文字を入力したりしていると、意図せざる妙なタグが入り込んでいたりするので、結局HTMLソース・レベルで編集する羽目になった。また仕様面でも疑問がある。例えば、PやH1〜H6要素に対応するWebコントロールがないのはよいことだろうか? W3Cが推奨する、より安全性の高い、HTMLらしいHTMLを生成するには使いにくい感がある。それに対してデータベースとの連係機能などは充実しており、ASP .NETが目指すものは、HTML的な表現力の充実というよりは、HTMLを通してデータベースのデータを提供することにあると感じられる。その点で、イントラネット上の業務アプリケーションは作りやすいかもしれないが、HTMLらしいコンテンツの表現力をアピールするサイトはやや作りにくいと感じる。このような状況から見る限り、まだASP .NETは万能の決定打になりえてはいないように思われる。

 なお、参考までに、DeltaNETのソース・コードは同サイトより入手可能にしてある。きれいなソースとはいい難いが、興味のある方はソースもご覧いただきたい。

 ただし公開しているサンプル・ソースは、ディレクトリ構造や初期データを用意しなければ稼働しないものなので、基本的には、ソースの説明を目的とする参考リストとお考えいただきたい。End of Article


川俣 晶(かわまた あきら)
 株式会社ピーデー代表取締役、日本XMLユーザー・グループ代表、日本規格協会 次世代コンテンツの標準化に関する調査研究委員会 委員、日本規格協会XML関連標準化調査研究委員会 委員。1964年東京生まれ。東京農工大化学工学科卒。学生時代はENIXと契約して、ドラゴンクエスト2のMSXへの移植などの仕事を行う。卒業後はマイクロソフト株式会社に入社、Microsoft Windows 2.1〜3.0の日本語化に従事。退職後に株式会社ピーデーの代表取締役に就任し、ソフトウェア開発業を始めるとともに、パソコン雑誌などに技術解説などを執筆。Windows NT、Linux、FreeBSD、Java、XML、C#などの先進性をいち早く見抜き、率先して取り組んできている。代表的な著書は『パソコンにおける日本語処理/文字コードハンドブック』(技術評論社)。最近の代表作ソフトは、携帯用ゲーム機WonderSwanの一般向け開発キットであるWonderWitch用のプログラム言語『ワンべぇ』(小型BASICインタプリタ)。

 「Insider.NET - Opinion」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間