ノウキナビKPI自動収集ソフト ノビルナビ開発日誌Vol.4
こんにちは!
ノウキナビエンジニアの山崎です。
今回は「業績評価指標(KPI)を自動収集するソフト」ノビルナビの開発日誌第4弾です。
前回で課題点を3つ上げました。
・「指標に優先順位をつける」
・「クリティカルな情報を取得できるボタンの作成」
・「正確なデータの収集」
今回はこのデータの収集という部分に関して掘り下げたいと思います。
また、開発物を本番環境に反映させていきます。
データを扱う際の最低条件とは?
ノビルナビではさまざまなデータベースに散らばったデータ群を適切に集める必要性があります。
さまざまなデータベースには必ず下記項目が入っているのが条件です。
・指標名・・・例:ノウキナビサイト閲覧数
・指標値・・・指標の実値
・日付・・・その指標を獲得した日付
データベースの種類とAPIとは?
データベースにはさまざまな種類があります。
例:Microsoft Excel、Google SpreadSheet、Email、各種SNS(Youtube・Facebook・Instagram・LINE)のアナリティクス、GoogleAnalytics・Yahooショッピング・楽天市場など
それらを、各社が提供しているAPIで接続し、自動でデータを収集してこれるのがノビルナビです。
APIとは、Application Programming Interfaceの頭文字を取った略語で、「アプリケーション、ソフトウェア」と「プラグラム」をつなぐものです。
ここでいうアプリケーションとは、Googleが提供しているSpreadSheetやYahoo株式会社が提供しているYahooショッピングなどを指し、プログラムとはノビルナビを指します。
GoogleやYahooなどの企業がアプリケーションの一部を外部に公開している物がAPIであり、それを利用して、GoogleやYahoo内のデータをプログラムを通じて取得することができます。
毎日自動でデータを取得してくれば、どんなに手間のかかる大量のデータ集計作業も何の苦労もなく終わってしまうということです。
今回は、開発環境でスプレッドシートの情報を取得し、画面に表示する処理を作成していましたが、それらを本番の環境でも問題なく表示できるか試してみようと思います。
Dockerとは?
「ノビルナビ」を本番反映させるにあたり、弊社でも初の試みであるDocker環境を導入することにしました。
さて、Dockerというのは何でしょうか。
Dockerとは、簡単に言えば、パソコンの環境を丸ごと管理することができるソフトウェアのことです。
普通であれば、1つのパソコンで使用することができる環境は1つのみなのですが、
コンテナ仮想化という技術を用いて、同じパソコンの中に、全く別のパソコンを作ってしまうことができます。
そうして作った別の環境の中でプログラムを書いていきます。そして作った環境は他の人にも配布することができます。
他の人はその配布された環境を受け取り、例えばWindowsとMacといった全く別のパソコン同士でも同じ環境を共有することができるのです。
Dockerの環境はDockerfileという設定ファイルをもとに構築します。
ノビルナビでは、
・画面表示の部分をNode.js環境(Nuxt.js)
・データ収集の部分をPython環境(Django)
・本番環境用に各アクセスによってどのページを表示したら良いか決めるルーターという処理をNginx環境(uWSGI)
主にこの3つの環境をDockerで作成し、それぞれの環境が相互通信できるようにして、本番サーバーにアップロードしました。
無事、問題なく本番環境に反映させることに成功!
Dockerを使うと何が良いの?
使用しているなかで感じたメリットが下記2点あります。
他の人が使用しているパソコンに依存せずに済む。
例えば、プロジェクトに新メンバーが入ってきた際、そのプロジェクトの開発に加わる時はまず開発環境を作り上げなければいけません。
1つのパソコンにさまざまなところから開発に必要なライブラリをダウンロードする必要があります。
そのライブラリも1つ1つに更新パッケージなどが入っていて、プロジェクトのメンバーのパソコンによって使用しているライブラリのバージョンが違うことも大いにありえます。
そういったバージョン違いがあると齟齬が生じて、ある人ではエラーが起こらないのに、別の人ではエラーが起こるといったねじれが生じてしまうケースがあります。
Dockerであれば環境はDockerHubと呼ばれるクラウドに保管しておけますし、環境の配布をすることができるので、齟齬が生まれずにチームでの開発を進めることができます。
環境構築が手早く済む
そもそもプログラムを始める前に、開発環境を構築するのが大変一苦労します。
Dockerはすでに各プログラミング言語ごとに環境を用意してくれているので、それを再利用するだけで環境構築が済んでしまいます。
またその環境を自分好みにカスタマイズすることももちろん可能です。
こういったDockerの環境構築の手早さや再利用性の高さを評価し、導入しました。
そもそもウェブってどうやって画面を表示しているの?
本番環境に反映させていくにあたってそもそもな疑問とぶつかりました。
我々がインターネットを見れている仕組みとは何なのか?
これは、昔の人が発明した画期的なシステムが根幹となっています。
それは、WWW(ワールド・ワイド・ウェブ)です。
WWWは、主に下記の3つの要素で成り立っています。
・HTML(Hypertext Markup Language)・・・Webページの設計書のようなもの、WebページとWebページをつなぐ機構を持つ(リンク機能)
・HTTP(Hypertext Transfer Protocol)・・・ウェブ同士が通信する際の規格・通信ルール
・URL(Uniform Resource Locator)・・・URLはWebページが存在する住所
下記の3ステップで閲覧したいページを見ることができています。
- Webブラウザを開きURLにアクセスすることによって、Webブラウザはそのファイルが存在しているWebサーバーに「そのページを見せてください」とリクエストを投げます。
- Webサーバーはリクエストを受け取り、そのWebブラウザに対象のページを提出します。
- Webブラウザは受け取ったページを画面に表示します。
ノビルナビでも上記のステップに沿って画面を表示しています。そこにデータ取得のため、APIアクセスが割り込んできています。
- Webブラウザを開き、ノビルナビのURLにアクセスすることによって、Webサーバーにページリクエストを行います。
- Webサーバーは対象URLに該当するクライアント(今回の環境でいうとクライアントはNode.js環境です)にアクセスし、クライアントが持つ対象のページをWebブラウザに提出しようとします。
- 提出する前に、クライアントの中でWebサーバーを通じてAPIアクセスを行なっています。APIはURLを使用して行うことができます。APIアクセスの先は、Python環境です。
- Python環境でAPIアクセスを受け取り、スプレッドシートAPIを実行します。スプレッドシートAPIは、Googleのサーバーにあるためそこにアクセスします。Googleの認証処理が必要です。
- スプレッドシートAPIの実行が終わり、Python環境はスプレッドシートのデータを取得します。そのデータを整形しWebサーバーに提出します。
- Webサーバーを通じてクライアントは受け取ったデータを画面に装飾を加えて表示します。
ノビルナビの初期ページを表示する主な流れです。これらのアクセスの行く先はNginxというWebサーバーを使用して制御しています。
Nginxはこのようなアクセスがあった場合はこの環境に、そのようなアクセスがあった場合はその環境にというように環境と環境の橋渡しをしてくれるものです。
いかがでしょうか?
普段何気なく使っているWebもさまざまなステップを踏んで情報を提供しているということがわかります。
以上、ノウキナビエンジニアの山崎でした!
弊社では、中古農機具を取り扱う販売サイト「ノウキナビ」を運営しております。
中古農機の買取や、新品農機具の販売、メーカー純正パーツの取り寄せサービスなども展開しておりますので是非一度ご覧になってみてはいかがでしょうか!
次回の「ノビルナビ開発日誌」をお楽しみに!