japan.internet.comThe Internet & IT Network
RSS
  • ニュース
  • コラム
  • リサーチ
  • ヘッドライン
  • 特集
  • ブログ
  • プレスリリース
  • 専門チャンネル
  • イベント
  • ランキング
  • ニュースメール
2008年9月6日
文字サイズ文字サイズ小文字サイズ中文字サイズ大
デベロッパー2008年3月28日 10:00

PHP/SWF Chartsでデータをグラフ化する

海外海外internet.com発の記事
  • このエントリーを含むはてなブックマーク
  • この記事をクリップ!
  • Buzzurlにブックマーク
  • Yahoo!ブックマークに登録
  • newsing it!

はじめに

 四半期の売上、窓口担当者、利益幅の動向...そのほか何であれ、データは企業にとって活動の基礎となるものです。中間管理職のためにPowerPointプレゼンテーションを作成する新米社員から、有望な販売先を何とか獲得しようとする頑張り屋の販売担当者に至るまで、すべての従業員が種々の企業情報に簡単かつ便利にアクセスできることが求められます。最初の要件である「簡単さ」は、インターネットによって既に解決されています。今日、企業データには事実上どこからでもアクセスできます。会社のイントラネットで、ホテルのワイヤレスネットワークを介してノートパソコンから、あるいは携帯電話を使ってタクシーの中からでもアクセスできます。しかし、2番目の要件である「便利さ」は、それほど単純ではありません。

 便利なデータアクセスという要件は、なかなか厄介な問題です。というのも、生のデータを提供しただけではほとんど役に立たないからです。データは首尾一貫したやり方で集計され操作されてはじめて利用できるようになります。ユーザーがデータのコンテキストを容易に把握し、大局的な観点から理解できるようにしなければなりません。そのための最もうまいアプローチの1つは、データを視覚化する方法をユーザーに提供することです。この場合、たいていはスプレッドシートまたはグラフ作成機能(あるいは両方の組み合わせ)が使われます。しかし、データの書式化にかかわる退屈な作業からユーザーを解放してあげたいと思ったら、どんな方法を使用すればよいのでしょうか。

 このチュートリアルでは、PHPおよびFlashでグラフを作成するための強力なソリューションである「PHP/SWF Charts」を紹介します。PHP/SWF Chartsは多様なグラフ形式をサポートしており、横棒グラフ、ローソク足グラフ、3次元の縦棒グラフ、円グラフ、3次元の円グラフ、散布図、極グラフ、コンポジットグラフなどがあります。具体例については、maani.usのPHP/SWF Chartsギャラリーを参照してください。本稿の例では棒グラフを使用していますが、PHP/SWF Chartsを使用すれば単純でも非常に見映えのよい棒グラフを生成できることがわかるはずです。

 厳密にはオープンソースと言えませんが、それでも無料バージョンの使用および配布が可能です。有料バージョンもあります。有料バージョンでは、サポートなど、無料バージョンにない特典が加わります。ライセンスオプションの詳細については、PHP/SWF Chartsの公式サイトを参照してください。

PHP/SWF Chartsのインストール

 PHP/SWF Chartsのインストールは簡単です。まず公式Webサイトに行き、最新バージョンをダウンロードします(ダウンロードページ)。3種類の形式(TAR、ZIP、SIT)が用意されているので、自分のオペレーティングシステム(それぞれUnix/Linux、Windows、OS X)に合ったアーカイブ形式を選べます。

 次に、ダウンロードしたものをWebサーバーのルートディレクトリ内のどこかのディレクトリ(たとえば、/usr/local/apache/htdocs/charting/)に展開します。それだけです。これでPHP/SWF Chartsを使用する準備ができました。

PHP/SWF Chartsの使用

 PHP/SWF Chartsを使ってグラフを作成するためには、2つのスクリプトを作成する必要があります。最初のスクリプトは、もっぱらグラフを作成するためのものです。2番目のスクリプトは、そのグラフをブラウザ内に表示するためのものです。退屈そうな作業に見え、PHP/SWF Chartsの初心者は当惑するところですが、このアプローチによって、複雑なロジックと、Webページおよび対応するグラフの書式化に使われる表示マークアップとがきれいに分離されます。この効果はPHP/SWF Chartsの最初の棒グラフを作成するときに明らかになります。

棒グラフの作成

 ある会社に優秀な販売チームがあって、販売担当者たちを競わせ、四半期の売上がトップになった人に海外旅行をプレゼントすることになったと考えてください。さらにプレッシャーをかけようとして、セールスマネージャは会社のイントラネットを通じて全社員が見られるリアルタイムのグラフを作成することにしました。PHP/SWF Chartsを使用すれば、売上実績を示す棒グラフを簡単に作成することができます。

 PHP/SWF Chartsは配列を使って渡されたデータに基づいてグラフを作成するので、各販売担当者の実績を入れた多次元配列を作成できます。次のスクリプト(barchart.php)には、それ以外に必要な2つのタスクも含まれています。すなわち、charts.phpを取り込むことと、SendChartData()関数を呼び出して、作成した配列を渡すことです。

barchart.php
<?php

   // Include the charts.php library
   include "charts.php";

   // Create the array
   $chart['chart_data'] = array ( 
           array ( "", "January", "February", "March" ),
           array ( "John Smith", 124198.42, 200088.34, 412128.99 ),
           array ( "Michael Rodgers", 119099.56, 247998.99,
                   476991.11 )
   );

   // Build the chart
   SendChartData($chart);

?>

 次に、グラフを表示するスクリプト(barchart-output.php)を作成します。

barchart-output.php
<?php

   // Include the charts.php library
   include "charts.php";

   // Display the chart
   echo InsertChart("charts.swf", "charts_library", "barchart.php",
                    400, 350);

?>

 ブラウザ内でbarchart-output.phpを呼び出すと、次のグラフが表示されます。

図1 売上データを縦棒グラフで表示
図1 売上データを縦棒グラフで表示

 グラフを横棒グラフにしたければ、barchart.phpの配列の後に次の行を追加するだけで済みます。

$chart['chart_type'] = "bar";

 barchart-output.phpをもう一度実行すると、次のグラフが表示されます。

図2 売上データを横棒グラフで表示
図2 売上データを横棒グラフで表示

3次元の縦棒グラフの作成

 棒グラフはすっきりしていますが、訴求力が少し弱いかもしれません。グラフを立体化すると、もっと見映えがよくなります。barchart.phpを修正して、グラフを3次元バージョンに変えてみましょう。

<?php

   include "charts.php";

   $chart['chart_data'] = array ( array ( "", "January",
                                          "February", "March" ),
           array ( "John Smith", 124198.42, 200088.34,
                   412128.99 ),
           array ( "Michael Rodgers", 119099.56, 247998.99,
                   476991.11 )
   );

   // Set the chart type
   $chart['chart_type'] = "3d column";

   // Determine how much the chart should be rotated both
   // horizontally and vertically
   $chart['chart_pref'] = array (
          'rotation_x'=>25,
          'rotation_y'=>15 );

   // Set the chart offset, width and height, and shading
   $chart['chart_rect'] = array (
          'x'=>50, 'y'=>50,
          'width'=>300, 'height'=>250,
          'positive_alpha'=>55, 'negative_alpha'=>25 );

   SendChartData($chart);

?>

 barchart-output.phpをもう一度ロードすると、次のグラフが表示されます。

図3 立体化でグラフの見映えが向上
図3 立体化でグラフの見映えが向上

グラフの自動更新

 期末に近づくと、社員たちの目はグラフに釘付けになります。社員たちが絶えずグラフにアクセスすることで業務が停滞するのを避けるため、セールスマネージャはグラフをオフィスの壁に投影することにしました。しかしそのままでは、誰かが定期的にブラウザ表示を更新しない限り、グラフは更新されません。この問題を解決するには、PHP/SWF Chartsのライブ更新機能を使用して、指定した時間間隔でグラフが自動的に更新されるようにします。たとえば、barchart-output.phpを15秒ごとに更新したければ、barchart.phpに次の配列属性を追加します。

$chart['live_update'] 
    = array ( 'url'=>"barchart.php?time=".time(), 'delay'=>15);

 これが期待どおりに行われることを検証するため、グラフを表示した後に、いずれかの配列値を元の値とは大きく異なる値に変更し、スクリプトを保存してみましょう。15秒経つと、グラフに新しい情報が表示されるはずです。

まとめ

 PHP/SWF Chartsは非常に強力なグラフ作成ライブラリであり、本稿ではPHP/SWF Chartsの能力のほんの一端を紹介したにすぎません。詳細については、PHP/SWF Chartsのリファレンスを参照してください。この短いチュートリアルが読者自身のアプリケーションにグラフ機能を組み込むための参考になれば幸いです。

著者紹介

W. Jason Gilmore(W. Jason Gilmore)
IT Enlightenmentの共同創設者。ベストセラーとなった『Beginning PHP and MySQL 5: Novice to Professional, Second Edition』(Apress, 2006. 913pp)をはじめ、数点の著作がある。個人サイトはhttp://www.wjgilmore.com/。読者からの電子メールは大歓迎。メールの宛先はwjATwjgilmore.com。
このエントリーを含むはてなブックマーク この記事をクリップ!
BuzzurlにブックマークBuzzurlにブックマーク Yahoo!ブックマークに登録
最新トップニュース
データメーション
【データメーション】
OSについて気に入らないこと(9月5日)
ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」
【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
「導入期〜成長期へ!一歩一歩と前進を目指す『Annoii(アノイ)』」/maka hou,Inc.(9月5日)
最新テクノロジーの意外な処方箋
【最新テクノロジーの意外な処方箋】
グリッドコンピューティング技術でETに遭遇(9月5日)
Graphic Design Forum
【Graphic Design Forum】
古い Emigre を探して (9月3日)
エンジニアの独り言
【エンジニアの独り言】
データをローカルに保存するWebアプリケーション(8月22日)
デスマーチからの脱却
【デスマーチからの脱却】
30min. iPhoneアプリリリース(8月18日)
最新ハイテク講座
最新ハイテク講座
なぜ勝った? 世界No.1シェアをつかんだ“Windows”(9月5日)
developer.com
developer.com
デザインパターンの使い方: Composite(9月5日)
最新アフィリエイト事例にみる成功の法則
最新アフィリエイト事例にみる成功の法則
コンバージョンレートを高めよう!(9月5日)
百式のネットビジネス研究
百式のネットビジネス研究
ガジェット購入時に将来の買取保証プランを提供する「TechForward」(9月5日)
週刊-サイト別アクセス状況データ
週刊-サイト別アクセス状況データ
ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(9月4日)
「IT の耳」
「IT の耳」
【書評】『検索にガンガンヒットさせる SEO の教科書』――SEO テクニックで効果的に PR する(9月4日)
検索エンジンマーケティング
検索エンジンマーケティング
果たしてモバイル SEO は必要なのか?(9月4日)
Eメールマーケティング事情
Eメールマーケティング事情
読者が迷惑メールと認識する時…(9月3日)
日本と韓国のインターネットビジネス最新動向調査
日本と韓国のインターネットビジネス最新動向調査
日本と韓国の動画サイト比較1―現状(9月3日)
SNSをビジネスに活用しよう
SNSをビジネスに活用しよう
「しまじろう」に学ぶ企業内コミュニティの活性化のポイント(9月2日)
海外のインターネットコムアメリカ韓国ドイツトルコ
Copyright 2008 Jupitermedia Corporation All Rights Reserved.http://www.internet.com/