質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

5回答

5016閲覧

ログ解析結果グラフを非ソフトエンジニアに手軽に見てもらう方法

sin_250

総合スコア112

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2016/05/07 07:34

とある組み込み製品について、市場稼働時のログを解析し、
障害率等をまとめたグラフを作る仕事をここ最近毎日行っています。
今はエクセルで行っています。

これは最終的にグラフで可視化し、事業判断に用いるためのものなので、
ソフトに詳しくない人(技術部長や事業部長が)が
「手軽に」「いつでも」「最新のグラフを」見れることが重要です。

しかしエクセルでデータを集計しグラフ化するのは時間がかかるので、
完全自動化を検討しています。
イメージは以下です。

(1)以下の動きをするPythonプログラムを組む。
あるフォルダ以下にあるログファイルを全て解析し、
解析結果(日毎のエラー数、取引数等)を
ファイルベースのデータベース(SQLite)に登録する。
Pythonを使うのは、単に私が使い慣れているからです。
この部分はソフトメンバーのみが行うため、
環境構築は自由が利く。つまりライブラリなどは好き勝手に使える。

(2)ファイルベースのデータベースは、社内ファイル共有サーバーの
決めた場所に入れておく。
なお、ファイルベースなのは、単にデータベースサーバーを立ち上げるのが
社内的に色々と面倒だから。

(3)↑のデータベースを自動で読み込んで、見たいデータのグラフを
だれでも手軽に見れるようにしたい。

(1)(2)は実現方法がハッキリしているのですが、
(3)をどんなツールを使えばいいか、悩んでいます。
部内では共有ファイルサーバーは存在します。
ただしファイルを共有できるだけで、Apacheなどを立ち上げたりすることができません。

(3)の選択肢は安直には以下が思いつきます。

(A)Pythonでデーターベースにアクセスしてグラフを書くデスクトップアプリを作る。
→Pythonスクリプトをexe化して配布することになる。
exe化できるライブラリがかなり制限されるはずである。
バージョンアップの際にいちいち配布しなおすことになるが、
あちこちで新旧バージョンが混在しかねない。

(B)データーベースにアクセスしてグラフを書くWEBサイトを作る。
→本当ならこれが理想的。ただし社内でWEBサーバーを立ち上げる手順が面倒というか前例なく機材もない。

(C)ファイルサーバーにExcelフィルを置いておいて、
そのExcelの中でデーターベースにアクセスし、グラフを掻く。
→いちばん現実的かも。やったことないのでできるのか不明であるが。

そこそこの規模の会社におり、社内ネットワークが色々とややこしくWEBサーバーを勝手に立ち上げたりすることができません。

何か、もっと簡易で、社内の誰でも使える方法があればご教示をいただきたく。
よろしくお願い申し上げます。

以上

raccy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

次のようにしては如何でしょう?

  • ファイルサーバーに html, javascrip ファイル、csv データファイルを置く。
  • グラフを見たい人は、 html ファイルを web ブラウザで開く。
  • csv データは、別ツールの集積結果であり、適宜 更新をする。

d3.js を利用すると、csv ファイルなどからグラフをつくることが可能です。
csvファイルを heml のテーブル表示にして、ソート可能にすることができる javascript のライブラリーもたくさん存在しています。
例: http://jsgt.org/lib/jquery/plugin/csv2table/v002/test.htm

投稿2016/05/07 08:52

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2016/05/08 03:08

回答ありがとうございます。d3.jsを調べてみましたが、かなり高機能ですね。 javascriptも本格的にはやったことがないのですが、WEB全盛かつこれでデスクトップアプリも作れてしまうのだから、覚えておいたほうがいいと思うようになりました。ありがとうございました。
guest

0

katoyさんと同じやり方になりますが、次のような方法はどうでしょうか?

  • ファイルサーバーに html, javascriptファイル、JSONデータファイルを置く。
  • グラフを見たい人は、 html ファイルを web ブラウザで開く。
  • ソフトメンバーの人は、適宜pythonスクリプトでJSONデータを作りなおす

グラフの作成はamchartsで行います。
デモのどのグラフでもいいので、editしてもらうと分かるのですが、最近のamchartsは、JSONデータだけあれば、グラフを描くことができます。作りなおすファイルが一つで済むので、今回のような案件には適しているのではないでしょうか。
https://www.amcharts.com/demos/

もう一つのは案は、ソフトメンバーがPDFのレポートを作るスクリプトを書くことです。インタラクティブなグラフではありませんが、PDFなのでメールで送ることもでき、利用者側からすると便利だと思います。ソフトメンバーの方も、毎朝一回スクリプトを動かすだけです。
スクリプトは次のような手順を取ります。

  • matplotlibを使ってグラフの画像をファイルにする
  • reStructuredTextフォーマットの文書を作り、グラフも読み込んでおく。
  • rst2pdfを使ってreStrucuredTextをPDF化する

http://sakito.jp/python/rst2pdf.html

投稿2016/05/07 12:19

lightson

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2016/05/08 03:49

ご回答ありがとうございました。まずはjavascriptでグラフを書いてみるところからトライしてみます。これである程度の方向性を見出すことができました。ありがとうございました。 なお、ベストアンサーを選ぶのが難しいのですが(本当はみなさんにあげたいのですが) 具体的なイメージがわくElectronを紹介いただいたracccy様にさせて頂くこと、なにとぞご了承ください。 今後とも、よろしくお願いいたします。
guest

0

ベストアンサー

前時代的ですけど、Accessで作るとかですかね。全くお勧めはできませんが。

もし、(B)でのやり方が確立できそうであれば、Electronで作るという手もあります。Webの技術そのままでデスクトップアプリにすることができますので、そのままファイルサーバーに置くだけで使うこともできると思います。ただ、アプリのサイズが結構でかい事だけが難点です。

あと、分析対象のグラフで幅が固定で、検索や任意指定が不要なら、データ収集後にExcelファイルも作ってしまうと言うのもあるかと思います。月ごとにフォルダを分けて日ごとにファイルを分ければ良い感じになるかと。PythonからExcelファイルを作るライブラリもありますのでPythonでそのまま作成というのもありだと思います。この場合、Excelファイルに限定する物ではありませんので、PDFにして、そのまま印刷もできますという選択もできます。

他には、LibreOfficeのODSファイルにしてPythonでマクロを書くという技もあるのですが、PythonマクロをODSファイルに組み込むのが結構めんどうらしいのであまりお勧めはできません。

投稿2016/05/07 09:52

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2016/05/08 03:10

まずはElectronで作ってみます。本案件に限らず、習得しておけば便利な技術になりそうです。 ご回答ありがとうございました。
guest

0

Python は詳しくないのですが…
データをExcelのスプレッドシート形式に出力しては?
グラフ化のとこは要検討でしょうか。

もしくは、テキストに出力して、Excelからテキストデータを
読み込んでグラフ化するあたりをVBAで組むとか。

投稿2016/05/07 07:56

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin_250

2016/05/08 03:06

ご回答ありがとうございます。 社内だとエクセルが共通言語なので、VBAも覚えないといけないのかなぁ、と最近思い始めています。VBAで何ができるのかあまりわかっていませんが、それが一番つぶしがきくのかもしれないです。
guest

0

1時間に一回程度の更新ならば、画像出してしまうというのもありだと思います。
リアルタイムなら、HTAを利用してできるような気がします。(やったことないですが^^;)

投稿2016/05/07 07:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/05/07 09:09

描画点をtextファイルへ吐き出せば、HTAでデスクトップアプリっぽく作れそうです。 javascriptでのDBへのアクセスも可能なようなので、どちらでもいけますね。
sin_250

2016/05/08 02:44

HTAやElectronなど、javascriptでデスクトップアプリを作る手段があるのですね。 これであれば確かにWEBサーバーを立ち上げる必要がありません。 グラフ描画はjavascriptで行こうと思います!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問