PHPとMySQLで取得した値をD3.jsを使って描画するときの備忘録

シェアする

サーバーサイドからデータを取得して、非同期でグラフを描画したいというケースがあるかと思います。更にそこからレスポンシブでグラフを変化させるという事を求められることがありますが、今回は第一段階としてシンプルにサーバーからデータを取得して、JavaScriptで受け取って、そのままd3.jsで描画するという流れについてご紹介します。

就職・転職・起業・フリーランス・起業・自宅で稼ぐ金額を増やしたい、スキルアップして年収・給与を2倍にあげたいという方は絶対チェックしてくださいね。

▼当サイトで申込みが多いプログラミングスクール・教室はこちら!

【1位】GEEK JOB【未経験から正社員のITエンジニアへの転職可能!『無料』プログラミング教室、上場企業へ内定】

【2位】WebCamp PRO (ウェブキャンププロ)【就職転職保証・返金保証・年収300万上がる】

【3位】WebCamp(ウェブキャンプ)【5ヶ月連続!3位】

ほかにも多くのプログラミングスクールがありますが、現役エンジニアが利用して間違いないスクールを厳選しています。

実際にWebCampに通って上場企業へ転職、年収が上がったエンジニアの話 → プログラミング未経験からエンジニアへ

d3.jsとは

d3.js

D3.js はデータに基づいてドキュメントを操作するための JavaScript ライブラリです。d3というのはデータ・ドリヴン・ドキュメントの略称となっていて、d3.jsを利用する事によってHTML、SVG、CSSをサポートして比較的簡単に複雑なグラフを視覚化できます。

d3.jsの公式ドキュメント

http://ja.d3js.node.ws/

英語のドキュメント
https://d3js.org/

d3.jsで描画したもの

d3.js

データをビジュアル化する目的

Rplayでは就活イベントを多数掲載しており、直接就活生がイベントにエントリーできるようになっています。Rplayを経由してエントリーしたイベントの名前や大学、性別など様々なデータを解析していて、テーブル表示にしても直感的・視覚的に分かりにくいのでグラフィカルに表示したいというニーズがありました。

d3.js

単純に上記の画像のようなデータをテーブル表示にしても分かりやすい、比較しやすいというものもあります。

3つぐらいの大学の偏差値や内定先の企業、学費、強い部活などを比較するというようなデータ(テーブル)を作成し、ビジュアル化するのであればテーブルの方が分かりやすいと思います。

大事なのはデータの内容と目的を明確にし、ビジュアル化するということです。目的があると納得しやすいので、そこを明確にしておくことをお勧めします。

「データの羅列は見たくないけど、ビジュアル化されていたら見ることもある。」ということもありますので、そのページの滞在時間や離脱などで、グラフ化したページのUXを計測するというのも手ではあります。

そこから、まず第一段階として、「イベントに参加している学生の大学名と比率を円グラフで表示」というのを実装してみました。

簡単な実装の流れ

1. データベースからデータを取得する

上記は、イベントに参加している就活生の出身大学上位10大学をデータベースから取得して、更にその大学に通っている大学生の人数を取得します。

その後、大学生の10校のイベント参加者を母数としたいので合計値を算出します。
※若干冗長的になってしまっているのは、筆者がPHPに慣れていないということがございますので、ご了承くださいませ。

データが取得できたら、データを加工して、JSON形式にしておきます。
これは、JavaScriptでフロント側から取得したいためです。

2. フロント側でデータを取得する

そのままd3.jsなどのグラフィカルな使い方をせずに、表示するときもあります。tableなどにそのままレンダリングするというケースですが、今回はd3.jsを使います。

Rplayではこちらをapiとして作成しており、同一ドメインであるためにクロスドメインの問題は起きませんが、クロスドメインの問題が起きた場合は、jsonpを利用してください。

successの中でd3.jsの関数を書いていきます。dataで取得したらそのままデータを渡すように実装しています。綺麗に書く方法もありますが、今回は分かりやすさだけを追求してそのまま書きます。

ajaxで取得したデータを、drawPie関数の第二引数に渡して、そのまま描画の関数を実行しています。
#pieは、HTML側に、下記を用意することによって、そこにグラフが挿入されます。

今回は取得したデータを直接d3.jsを使って描画していますが、ネットに落ちている情報ですと結構ファイルから取得するケースがあります。
下記のようなケースです。この方が綺麗に書くことができますが、リアルタイムでのグラフ変更をするときには変数を第一引数に渡すことができませんでした。ですので、今回はご紹介してきた実装方法で実装しています。

さいごに: d3.jsは以外と簡単

以上いかがでしたでしょうか。

以外と一連の流れをやってみると簡単に実装できてある程度綺麗なグラフが表示できるので楽しいです。

ここからグラフをホバーしたときにアニメーションさせたり、値がリアルタイムで変化したり、ブラウザのサイズによって可変させたり、様々な要件が追加されることがあります。そういうリアルタイムでのインタラクションを含むビジュアル化をするときにd3.jsは威力を発揮します。

それに関しては引き続きタイミングがありましたら書いていきます。

おすすめの転職サイトランキング・当サイトで人気のトップ3

第1位 マイナビエージェント×IT

おすすめポイント

  • 平日忙しい人も、土曜日開催の個別のキャリア相談に参加できる
  • 職種や仕事内容(上流工程から参加したい、要件定義、実装メインなど)の要望ができ、ミスマッチがない
  • 大手マイナビが運営しており、案件数が業界最大級
  • 未経験でも転職可能な案件も多数掲載
  • ベース年収のアップも見込める

マイナビエージェント×IT公式サイトへ

第2位 案件数日本最大級・未経験でも転職成功する リクナビネクスト

リクナビネクストの特徴

  • 大手企業リクルートが運営
  • 登録者数が数十万人規模!
  • グッドポイント診断で自分の強みがわかる!
  • 会員登録無料!
  • 未経験でも歓迎という職種・求人案件が多数掲載
  • サイト未掲載の特別求人の掲載

公式サイトへ

リクナビネクスト診断

リクナビネクストのグッドポイント診断は、自分の強み、自分の分からなかった性格など細かいところを客観的に分析できます。 転職の時に他の職種に変えたい、環境を変える時に自分を振り返りる時にオススメです。

自分の強みから、転職先としてどの業界があっているのか、どの職種があっているのかなどもわかります。 「リクナビネクスト 」にしかないグッドポイント診断で転職の前に自分を振り返りましょう!

グッドポイント診断の活用方法

リクナビネクストのグッドポイント診断の活用は自分の適職の判断にも利用できます。自分の性格ややりたいことがわかっていないと面接にいった時に違和感を感じたり、 面接官から悟られるということもあります。

「自分の強みが解らない」、「面接などでいまいち自分をアピールできない」、「自分でやりたいことがない」などになやんでいる方は、一度試してみることをおすすめします! 「リクナビネクスト 」で自分の適職を診断する。

公式サイトへ

リクナビネクストの診断の評判と使い方

リクナビネクストの適職診断を使ってみた結果をご紹介しています。それぞれに診断結果が異なるので、自分の適職診断を行って天職を探してみましょう!

グッドポイント診断の利用は無料

グッドポイント診断の利用は無料です。リクナビネクストが会員登録をしてくれた転職希望者のために【強み】を発見するために開発したツールだからです。 リクナビネクストは「自社のサービスを利用して、転職者が次の場所で活躍して良い人生を送ってくれること」を望んでいるからです。グッドポイント診断を利用して、 適職を見つけたいという方は、リクナビネクストの診断の使い方の記事をどうぞ。

▶️ リクナビネクストの診断使い方

就職・転職・起業・フリーランス・起業・自宅で稼ぐ金額を増やしたい、スキルアップして年収・給与を2倍にあげたいという方は絶対チェックしてくださいね。

▼当サイトで申込みが多いプログラミングスクール・教室はこちら!

【1位】GEEK JOB【未経験から正社員のITエンジニアへの転職可能!『無料』プログラミング教室、上場企業へ内定】

【2位】WebCamp PRO (ウェブキャンププロ)【就職転職保証・返金保証・年収300万上がる】

【3位】WebCamp(ウェブキャンプ)【5ヶ月連続!3位】

ほかにも多くのプログラミングスクールがありますが、現役エンジニアが利用して間違いないスクールを厳選しています。

実際にWebCampに通って上場企業へ転職、年収が上がったエンジニアの話 → プログラミング未経験からエンジニアへ

シェアする

この記事が気に入ったら
いいね!しよう

Rplayの最新情報をお届けします

TwitterでRplayをフォローする