Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,768)  
Tera Term  (1,863)  
CrystalDiskInfo  (1,753)  
HandBrake Japanese Language Version  (1,682)  
CrystalDiskMark  (840)  
FFFTP  (808)  
ffdshow  (757)  
MergeDoc  (629)  
mixfont-mplus-ipa  (619)  
10  TortoiseSVN  (517)  
11  FreeMind  (445)  
12  BathyScaphe  (421)  
13  Amateras  (380)  
14  Boookends  (375)  
15  SMPlayer  (370)  
More >>

サーバーサイドとクライアントサイド、グラフはどちらで描画すべきか?

2008年02月08日 12:42 Colin-Beckingham(2008年2月1日(金)) 1 2 3
 クライアント向けにWebページにグラフを掲載することがよくあるが、その際、サーバーとクライアントのどちら側でグラフを描画するかを決める必要がある。どちらにも長所短所があり、どちらにすべきかはそのときの状況によって変わる。

 サーバーサイドの場合、.pngファイルなどの形式でグラフの画像を作り、掲載するページに埋め込むのだが、その画像はスクリプトを使ってデータと軸のラベルを設定し色を決め凡例を作り画像の大きさを定めた上で出力される。

クライアント側で描画する場合は、同様のパラメーターとデータをクライアントに送り、クライアント側で描画する。描画にはJavaScriptがよく使われる。しかし、グラフを掲載するWebページを配信する際に送るのはデータとパラメーターだけではない。描画に使われるJavaScriptとカスケード・スタイル・シートのライブラリーも送る必要がある。両方式には、次表に示す長所と短所がある。

長所短所 サーバーサイド クライアントサイド
長所
  • データの数字は外部に出ない
  • グラフのコピー・貼り付けが可能
  • 同じグラフを複数個所で使用するのが容易
  • ブラウザーによっては、グラフの大きさが変更可能
  • グラフは少しずつブラウザーにロードされ表示される
  • データをローカルで処理可能
  • ダウンロードした.jsと.cssのライブラリーは再利用可能、再利用ではダウンロードの負荷はない
短所
  • ページを再読み込みしない限り、同一データの再処理はできない
  • サーバー・プロセッサーの負荷が高い
  • サーバー側に画像を保存しておく必要がある
  • 同じグラフでも、表示のたびに描画する必要がある
  • ダウンロード・パッケージに.jsと.cssライブラリーを含める必要がある
  • クライアント側でJavaScriptが使え、有効になっている必要がある
  • スクリーンショットを使わなければグラフのコピーはできない
  • 画面上ではライブラリーをロードしていることがわからないので、ロードが遅く見える

 オープンソースの世界には、一方または両方の方式が可能なクラス・ライブラリーがある。簡単な例としては、サーバーサイド・ライブラリーではlibchart、クライアントサイト・ライブラリーではWebfx Chartingがある。どちらもPHPスクリプトに組み込むことができ、出力とコードの例が公開されている。コーディングに必要な作業量も同程度だろう。以下、両方式の長所短所を比較するため、このライブラリーを使って行ったテストの結果を紹介する。これは、両ライブラリーが生成するグラフの品質を比較するものではない。また、Javaなどを使う方法もあるが、ここでは考慮していない。

 両方式の選択で考慮すべき条件は、配信に必要な帯域幅と実処理時間の2点に集約される。一般に、帯域幅の定量化は比較的容易だ。したがって、サーバー管理者は帯域幅に正式な上限を設定する一方、共用サーバー上の処理時間については、過大な負荷を負わせたウェブマスターの利用を制限する権利を保持しつつ、各自の良識に任せている。どちらについてもサーバー管理者を満足させておくことは、ウェブマスターにとってもよいことだ。

関連トピック

最終更新:2008年04月09日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.