SlideShare a Scribd company logo
1 of 30
インターネット等から
データを自動収集する
ソフトウェアに
必要な補助機能とその実装
2022-05-22(sun) 下野寿之
日本計算機統計学会 第36回大会 (愛媛県県民文化会館)
1
Nomenclature :
• e.g. = “例” (ラテン語の exempli gratia )
• etc. = ”など” (ラテン語の et cetera )
• i.e. = “つまり” (ラテン語の id est )
• crontab = 毎分実行されるcronデーモンに
設定情報を設定するためのコマンド
• DL = ダウンロード
• STDOUT = 標準出力
• STDERR = 標準エラー出力
• URI = Uniform Resource Identifier
• URL = Uniform Resource Locator
2
前提: データを自動収集する(1)
1. 手作業を頻繁に介さず、自動的に収集したい。
2. データ源としては (例) :
• インターネット上のオープンデータ
• 厚労省オープンデータなどの新型コロナ関連情報 etc.
• 各種のクラウドサービスで更新しつつ提供されるデータ
• Googleドライブ, Amazon Web Service, etc.
3. 収拾したデータの保管の仕組み (例) :
• Gitのレポジトリに保管し、GitHubと同期する。
• ディレクトリに、日時の値で名前を付与して、格納する。
3
前提: データを自動収集する(2)
下記の状況 を仮定 — 十分に一般的! :
1. URLなどで指定されたデータを、DLして、
必要に応じ加工するプログラムがある。
2. 実行時に、STDOUT等に、次の情報を出力。
• HTTPステータスコード (200, 404など)
• DLしたファイルのサイズ
• その他不具合の情報 etc.
3. crontabで定期的に起動。
4
参考: crontab とは? (cron)
• Unix系OSにおいて、コマンドの定期実行の管理を
行うための、コマンドである。
• 分 時 日 月 曜日を表す5個の数(範囲と周期を表す文字
列の場合もある)の後に実行するコマンドが並ぶ。
• crontab –e で編集。先頭の#でコメントアウト。
5
⽇本全国と各都道府県の 毎⽇の新規感染者数
JX通信社 提供のデータを加⼯(2020年1⽉15⽇〜翌年2⽉7⽇; 横軸の数は⽉を表す)
6
この図の、元のデータを集める際に、本発表のコマンドが使える例 ☝
データ自動収集で起こる問題 :
想定困難な不具合が発生する :
• 次回の収集時まで、バグが分からない。
• 通信エラーも時々発生。データの形式が変更されることもある。
• 受信したデータがどんどん増大する。(複雑化も起こる。)
◎ 以下の共通する機能が欲しくなる :
1. 不具合発生の記録に日時情報を加えたい。
2. どんどん膨らむデータのサイズを監視したい。
3. 増えるディレクトリの中を手際よく把握したい。etc…
→ 上記の機能で、既存の仕組みで簡単なものが無さそう。
7
今回提供し紹介する機能 :
• シェルプログラミング用である
• UNIX系コマンドである。
• 再利用性と汎用性を高くした
• 毎回必要に応じ作り直す必要を減らした(バグが減る)。
8
timeput
入力の各行に、日時を先頭に追加。
timestamp
ログファイルの最後に、
日時情報が無ければ、追加。
dirdim
指定ディレクトリが持つ
ファイルの個数を算出。
dufolder
指定ディレクトリが、
ディスク上占有するバイト数を算出。
Gitレポジトリであれば、算出結果を
Gitのメッセージにして空コミット可能。
filedays
指定ディレクトリ内の全ファイルを
日時情報に従い日単位で集計する。
(分単位や、月や年単位に変更は可能)
今回提供し紹介する機能 (2) :
• できるだけ使い易くなるように工夫した
• 思い出し易さ、間違いのしにくさ etc.
• コマンド名は10文字以内, 基本的に単語2個の連結
• 便利な機能は引数を付けても15文字程度以内。
• オプションを多数持つ
• --help で端末からすぐにヘルプマニュアルを読める。
• オプション( -j や –r など)により、機能が豊富である。
• オプションはパラメータを伴う場合がある。
• 例: timeput –c ’faint red bold’
9
参考: インストール方法
• 各機能は、各コマンドとして提供される。
• 実行可能な各1個ファイル単体で本質的に構成。
• Perl言語で書かれている(50年後に使えることも考えた)。
• CPANモジュールとしてインストール可能。
• モジュール名は、それぞれ、
App::dirdim App::dufolder App::filedays
App::timeput App::timestamp
• cpanm App::コマンド名 でインストール。
• アンインストールしたい場合: cpanm -U App..
10
各コマンドの動作
11
filedays
12
13
timeput
14
15
timestamp
16
17
dufolder
18
19
20
dirdim
21
22
まとめ :
1. 今回の話は、数理統計やモデリングを必要と
する研究者を補助的に支援するための、非常
に有用と考えられるツールの提供の話である。
2. データを自動的に収集する際に、既存の仕組
みでは平易に実現しにくかった機能を、実装
し、即座に提供可能とした。
3. 10文字以内のコマンドで、15文字以内のコマ
ンド文で、日時情報の記録やデータファイル
の量の確認を容易にした。
23
参考文献 :
• [1] Perl Hackers Hub 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッ
グデータ時代の汎用的なデータ整備と分析のために, 下野寿之, 技術評論社 WEB+DB
PRESS Vol.124(2021年8月23日発売), https://gihyo.jp/dev/serial/01/perl-hackers-
hub/006901
• [2] 私の研究開発ツール(第100回)Table::Hack 表形式データの前分析ソフトウェア,
下野寿之, 映像情報メディア学会誌/72 巻 (2018) 7 号, https://doi.org/10.3169/itej.72.551
• [3] A Hacking Toolset for Big Tabular Files, Toshiyuki Shimono, in Proceedings of 2016 IEEE
International Conference on Big Data, pp.2902-2910.
• [4] A Quarter Century of UNIX, Peter H. Salus, Addison-Wesley Publishing Company, 1994.
• [5] Data Science at the Command Line: Facing the Future with Time-Tested Tools, Jeroen
Janssens, O'REILLY, 2014.
• [6] moreutils, https://joeyh.name/code/moreutils/, https://github.com/stigtsp/moreutils,
https://packages.debian.org/unstable/utils/moreutils, Joey Hess, 2006 ~ .
24
予備スライド
25
cpanmを使うために
cpanm を使うと、cpanと異なり、
• CPANモジュールのアンインストールが楽である。
which cpan でcpanが導入済みであることを確認。
which cpanm でcpanmが無い場合 :
• cpan App::cpanminus を実行してcpanmをインストール。
• cpanmで権限問題が発生した場合、その警告メッセー
ジの中間にあるような下記のコマンドを実行。
1. cpanm --local-lib=~/perl5 local::lib
2. eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
3. 上記は ~/{.bashrc,.zshrc} に追記すること。
4. cronで使うには別の設定ファイルに書き込む?
26
参考: マニュアル(使い方)の参照法
• --help ですぐに分かる(現状は日本語のみ)。
• 例 : dirdim --help ..
• man dirdim または perldoc dirdim のような形も可能。
• 現状では見てすぐ分かるマニュアルでは無い。
• 試しにいろいろ使ってみることを要求している。
• 試しに簡単に使って、大きな不具合は起きにくい。
• その水準のマニュアルは、やや一般的であろう。
• 例 : R言語のマニュアル
27
参考: 未達事項
• 英語のマニュアルは、用意していない。
• $LANG の値が ja_JP.UTF-8 か否かで、分けたい。
• 各コマンドの分かり安い解説書はまだ無い。
• コマンドの tabs などを上手に使うことを要求。
• ExtUtils::MakeMaker に依存しないインストー
ラーを自作することをしてみたい。
• timeput に-Tのオプションを付加することで、
ISO8601形式に対応するようにしたい。
28
参考: 各コマンドの作成方針
• 10文字以内とした。手入力が楽な様に。
• 意味のある英単語2個の組合せとした。
• N個の組合せだと、想起時にN! 通りの中で迷う。
• N=2⇒ 2通り 試せば良い。; N=3 ⇒ 6通りもある。
• 当然使われていないコマンド名と採用した。
• STDERRへの出力は着色イタリック太字とした。
29
30

More Related Content

Similar to インターネット等からデータを自動収集するソフトウェアに必要な補助機能とその実装

企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案Toshiyuki Shimono
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesignRyoma Nagata
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampMasahiro NAKAYAMA
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Ruo Ando
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2uchan_nos
 
170622 02
170622 02170622 02
170622 02openrtm
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14swkagami
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤Recruit Lifestyle Co., Ltd.
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話ShunyoKawamoto
 
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714swkagami
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishYohei Azekatsu
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Ruo Ando
 
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro YokoyamaInsight Technology, Inc.
 

Similar to インターネット等からデータを自動収集するソフトウェアに必要な補助機能とその実装 (20)

企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesign
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
170622 02
170622 02170622 02
170622 02
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
 
Azure Data Explorer
Azure Data ExplorerAzure Data Explorer
Azure Data Explorer
 
コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話コピー自動生成プロダクトでDataflowを導入した話
コピー自動生成プロダクトでDataflowを導入した話
 
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01
 
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
[C23] 「今」を分析するストリームデータ処理技術とその可能性 by Takahiro Yokoyama
 

More from Toshiyuki Shimono

国際産業数理・応用数理会議のポスター(作成中)
国際産業数理・応用数理会議のポスター(作成中)国際産業数理・応用数理会議のポスター(作成中)
国際産業数理・応用数理会議のポスター(作成中)Toshiyuki Shimono
 
extracting only a necessary file from a zip file
extracting only a necessary file from a zip fileextracting only a necessary file from a zip file
extracting only a necessary file from a zip fileToshiyuki Shimono
 
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021Toshiyuki Shimono
 
新型コロナの感染者数 全国の状況 2021年2月上旬まで
新型コロナの感染者数 全国の状況 2021年2月上旬まで新型コロナの感染者数 全国の状況 2021年2月上旬まで
新型コロナの感染者数 全国の状況 2021年2月上旬までToshiyuki Shimono
 
Multiplicative Decompositions of Stochastic Distributions and Their Applicat...
 Multiplicative Decompositions of Stochastic Distributions and Their Applicat... Multiplicative Decompositions of Stochastic Distributions and Their Applicat...
Multiplicative Decompositions of Stochastic Distributions and Their Applicat...Toshiyuki Shimono
 
Theory to consider an inaccurate testing and how to determine the prior proba...
Theory to consider an inaccurate testing and how to determine the prior proba...Theory to consider an inaccurate testing and how to determine the prior proba...
Theory to consider an inaccurate testing and how to determine the prior proba...Toshiyuki Shimono
 
Interpreting Multiple Regression via an Ellipse Inscribed in a Square Extensi...
Interpreting Multiple Regressionvia an Ellipse Inscribed in a Square Extensi...Interpreting Multiple Regressionvia an Ellipse Inscribed in a Square Extensi...
Interpreting Multiple Regression via an Ellipse Inscribed in a Square Extensi...Toshiyuki Shimono
 
BigQueryを使ってみた(2018年2月)
BigQueryを使ってみた(2018年2月)BigQueryを使ってみた(2018年2月)
BigQueryを使ってみた(2018年2月)Toshiyuki Shimono
 
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案Toshiyuki Shimono
 
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...Toshiyuki Shimono
 
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...Toshiyuki Shimono
 
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)Toshiyuki Shimono
 
新入社員の頃に教えて欲しかったようなことなど
新入社員の頃に教えて欲しかったようなことなど新入社員の頃に教えて欲しかったようなことなど
新入社員の頃に教えて欲しかったようなことなどToshiyuki Shimono
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなすToshiyuki Shimono
 
Guiを使わないテキストデータ処理
Guiを使わないテキストデータ処理Guiを使わないテキストデータ処理
Guiを使わないテキストデータ処理Toshiyuki Shimono
 
データ全貌把握の方法170324
データ全貌把握の方法170324データ全貌把握の方法170324
データ全貌把握の方法170324Toshiyuki Shimono
 
Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420Toshiyuki Shimono
 
大きなテキストデータを閲覧するには
大きなテキストデータを閲覧するには大きなテキストデータを閲覧するには
大きなテキストデータを閲覧するにはToshiyuki Shimono
 

More from Toshiyuki Shimono (20)

国際産業数理・応用数理会議のポスター(作成中)
国際産業数理・応用数理会議のポスター(作成中)国際産業数理・応用数理会議のポスター(作成中)
国際産業数理・応用数理会議のポスター(作成中)
 
extracting only a necessary file from a zip file
extracting only a necessary file from a zip fileextracting only a necessary file from a zip file
extracting only a necessary file from a zip file
 
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021
A Hacking Toolset for Big Tabular Files -- JAPAN.PM 2021
 
新型コロナの感染者数 全国の状況 2021年2月上旬まで
新型コロナの感染者数 全国の状況 2021年2月上旬まで新型コロナの感染者数 全国の状況 2021年2月上旬まで
新型コロナの感染者数 全国の状況 2021年2月上旬まで
 
Multiplicative Decompositions of Stochastic Distributions and Their Applicat...
 Multiplicative Decompositions of Stochastic Distributions and Their Applicat... Multiplicative Decompositions of Stochastic Distributions and Their Applicat...
Multiplicative Decompositions of Stochastic Distributions and Their Applicat...
 
Theory to consider an inaccurate testing and how to determine the prior proba...
Theory to consider an inaccurate testing and how to determine the prior proba...Theory to consider an inaccurate testing and how to determine the prior proba...
Theory to consider an inaccurate testing and how to determine the prior proba...
 
Interpreting Multiple Regression via an Ellipse Inscribed in a Square Extensi...
Interpreting Multiple Regressionvia an Ellipse Inscribed in a Square Extensi...Interpreting Multiple Regressionvia an Ellipse Inscribed in a Square Extensi...
Interpreting Multiple Regression via an Ellipse Inscribed in a Square Extensi...
 
Sqlgen190412.pdf
Sqlgen190412.pdfSqlgen190412.pdf
Sqlgen190412.pdf
 
BigQueryを使ってみた(2018年2月)
BigQueryを使ってみた(2018年2月)BigQueryを使ってみた(2018年2月)
BigQueryを使ってみた(2018年2月)
 
Seminar0917
Seminar0917Seminar0917
Seminar0917
 
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
既存分析ソフトへ
データを投入する前に
簡便な分析するためのソフトの作り方の提案
 
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
 
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
To Make Graphs Such as Scatter Plots Numerically Readable (PacificVis 2018, K...
 
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)
Make Accumulated Data in Companies Eloquent by SQL Statement Constructors (PDF)
 
新入社員の頃に教えて欲しかったようなことなど
新入社員の頃に教えて欲しかったようなことなど新入社員の頃に教えて欲しかったようなことなど
新入社員の頃に教えて欲しかったようなことなど
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなす
 
Guiを使わないテキストデータ処理
Guiを使わないテキストデータ処理Guiを使わないテキストデータ処理
Guiを使わないテキストデータ処理
 
データ全貌把握の方法170324
データ全貌把握の方法170324データ全貌把握の方法170324
データ全貌把握の方法170324
 
Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420
 
大きなテキストデータを閲覧するには
大きなテキストデータを閲覧するには大きなテキストデータを閲覧するには
大きなテキストデータを閲覧するには
 

インターネット等からデータを自動収集するソフトウェアに必要な補助機能とその実装

  • 2. Nomenclature : • e.g. = “例” (ラテン語の exempli gratia ) • etc. = ”など” (ラテン語の et cetera ) • i.e. = “つまり” (ラテン語の id est ) • crontab = 毎分実行されるcronデーモンに 設定情報を設定するためのコマンド • DL = ダウンロード • STDOUT = 標準出力 • STDERR = 標準エラー出力 • URI = Uniform Resource Identifier • URL = Uniform Resource Locator 2
  • 3. 前提: データを自動収集する(1) 1. 手作業を頻繁に介さず、自動的に収集したい。 2. データ源としては (例) : • インターネット上のオープンデータ • 厚労省オープンデータなどの新型コロナ関連情報 etc. • 各種のクラウドサービスで更新しつつ提供されるデータ • Googleドライブ, Amazon Web Service, etc. 3. 収拾したデータの保管の仕組み (例) : • Gitのレポジトリに保管し、GitHubと同期する。 • ディレクトリに、日時の値で名前を付与して、格納する。 3
  • 4. 前提: データを自動収集する(2) 下記の状況 を仮定 — 十分に一般的! : 1. URLなどで指定されたデータを、DLして、 必要に応じ加工するプログラムがある。 2. 実行時に、STDOUT等に、次の情報を出力。 • HTTPステータスコード (200, 404など) • DLしたファイルのサイズ • その他不具合の情報 etc. 3. crontabで定期的に起動。 4
  • 5. 参考: crontab とは? (cron) • Unix系OSにおいて、コマンドの定期実行の管理を 行うための、コマンドである。 • 分 時 日 月 曜日を表す5個の数(範囲と周期を表す文字 列の場合もある)の後に実行するコマンドが並ぶ。 • crontab –e で編集。先頭の#でコメントアウト。 5
  • 6. ⽇本全国と各都道府県の 毎⽇の新規感染者数 JX通信社 提供のデータを加⼯(2020年1⽉15⽇〜翌年2⽉7⽇; 横軸の数は⽉を表す) 6 この図の、元のデータを集める際に、本発表のコマンドが使える例 ☝
  • 7. データ自動収集で起こる問題 : 想定困難な不具合が発生する : • 次回の収集時まで、バグが分からない。 • 通信エラーも時々発生。データの形式が変更されることもある。 • 受信したデータがどんどん増大する。(複雑化も起こる。) ◎ 以下の共通する機能が欲しくなる : 1. 不具合発生の記録に日時情報を加えたい。 2. どんどん膨らむデータのサイズを監視したい。 3. 増えるディレクトリの中を手際よく把握したい。etc… → 上記の機能で、既存の仕組みで簡単なものが無さそう。 7
  • 8. 今回提供し紹介する機能 : • シェルプログラミング用である • UNIX系コマンドである。 • 再利用性と汎用性を高くした • 毎回必要に応じ作り直す必要を減らした(バグが減る)。 8 timeput 入力の各行に、日時を先頭に追加。 timestamp ログファイルの最後に、 日時情報が無ければ、追加。 dirdim 指定ディレクトリが持つ ファイルの個数を算出。 dufolder 指定ディレクトリが、 ディスク上占有するバイト数を算出。 Gitレポジトリであれば、算出結果を Gitのメッセージにして空コミット可能。 filedays 指定ディレクトリ内の全ファイルを 日時情報に従い日単位で集計する。 (分単位や、月や年単位に変更は可能)
  • 9. 今回提供し紹介する機能 (2) : • できるだけ使い易くなるように工夫した • 思い出し易さ、間違いのしにくさ etc. • コマンド名は10文字以内, 基本的に単語2個の連結 • 便利な機能は引数を付けても15文字程度以内。 • オプションを多数持つ • --help で端末からすぐにヘルプマニュアルを読める。 • オプション( -j や –r など)により、機能が豊富である。 • オプションはパラメータを伴う場合がある。 • 例: timeput –c ’faint red bold’ 9
  • 10. 参考: インストール方法 • 各機能は、各コマンドとして提供される。 • 実行可能な各1個ファイル単体で本質的に構成。 • Perl言語で書かれている(50年後に使えることも考えた)。 • CPANモジュールとしてインストール可能。 • モジュール名は、それぞれ、 App::dirdim App::dufolder App::filedays App::timeput App::timestamp • cpanm App::コマンド名 でインストール。 • アンインストールしたい場合: cpanm -U App.. 10
  • 13. 13
  • 15. 15
  • 17. 17
  • 19. 19
  • 20. 20
  • 22. 22
  • 23. まとめ : 1. 今回の話は、数理統計やモデリングを必要と する研究者を補助的に支援するための、非常 に有用と考えられるツールの提供の話である。 2. データを自動的に収集する際に、既存の仕組 みでは平易に実現しにくかった機能を、実装 し、即座に提供可能とした。 3. 10文字以内のコマンドで、15文字以内のコマ ンド文で、日時情報の記録やデータファイル の量の確認を容易にした。 23
  • 24. 参考文献 : • [1] Perl Hackers Hub 第69回 表形式データを操るUNIXシェル型Perl製コマンド群 ―ビッ グデータ時代の汎用的なデータ整備と分析のために, 下野寿之, 技術評論社 WEB+DB PRESS Vol.124(2021年8月23日発売), https://gihyo.jp/dev/serial/01/perl-hackers- hub/006901 • [2] 私の研究開発ツール(第100回)Table::Hack 表形式データの前分析ソフトウェア, 下野寿之, 映像情報メディア学会誌/72 巻 (2018) 7 号, https://doi.org/10.3169/itej.72.551 • [3] A Hacking Toolset for Big Tabular Files, Toshiyuki Shimono, in Proceedings of 2016 IEEE International Conference on Big Data, pp.2902-2910. • [4] A Quarter Century of UNIX, Peter H. Salus, Addison-Wesley Publishing Company, 1994. • [5] Data Science at the Command Line: Facing the Future with Time-Tested Tools, Jeroen Janssens, O'REILLY, 2014. • [6] moreutils, https://joeyh.name/code/moreutils/, https://github.com/stigtsp/moreutils, https://packages.debian.org/unstable/utils/moreutils, Joey Hess, 2006 ~ . 24
  • 26. cpanmを使うために cpanm を使うと、cpanと異なり、 • CPANモジュールのアンインストールが楽である。 which cpan でcpanが導入済みであることを確認。 which cpanm でcpanmが無い場合 : • cpan App::cpanminus を実行してcpanmをインストール。 • cpanmで権限問題が発生した場合、その警告メッセー ジの中間にあるような下記のコマンドを実行。 1. cpanm --local-lib=~/perl5 local::lib 2. eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) 3. 上記は ~/{.bashrc,.zshrc} に追記すること。 4. cronで使うには別の設定ファイルに書き込む? 26
  • 27. 参考: マニュアル(使い方)の参照法 • --help ですぐに分かる(現状は日本語のみ)。 • 例 : dirdim --help .. • man dirdim または perldoc dirdim のような形も可能。 • 現状では見てすぐ分かるマニュアルでは無い。 • 試しにいろいろ使ってみることを要求している。 • 試しに簡単に使って、大きな不具合は起きにくい。 • その水準のマニュアルは、やや一般的であろう。 • 例 : R言語のマニュアル 27
  • 28. 参考: 未達事項 • 英語のマニュアルは、用意していない。 • $LANG の値が ja_JP.UTF-8 か否かで、分けたい。 • 各コマンドの分かり安い解説書はまだ無い。 • コマンドの tabs などを上手に使うことを要求。 • ExtUtils::MakeMaker に依存しないインストー ラーを自作することをしてみたい。 • timeput に-Tのオプションを付加することで、 ISO8601形式に対応するようにしたい。 28
  • 29. 参考: 各コマンドの作成方針 • 10文字以内とした。手入力が楽な様に。 • 意味のある英単語2個の組合せとした。 • N個の組合せだと、想起時にN! 通りの中で迷う。 • N=2⇒ 2通り 試せば良い。; N=3 ⇒ 6通りもある。 • 当然使われていないコマンド名と採用した。 • STDERRへの出力は着色イタリック太字とした。 29
  • 30. 30