Licsu-Web データ自由自在!

25
Licsu-Web Licsu-Web デデデデデデデデデデデデデデデデデデデデデデデデデデデデデデデデデデデ 「」 デデデデデデデデデデデデデデデデデデデデデ 「」

description

Licsu-Web データ自由自在!. 「図書系職員のためのアプリケーション講習会」. Licsu-Web のデータを自在に 加工してみましょう!. Licsu-Web からデータを取り出して、オリジナル帳票を作成したり、 Excel で集計しやすいように加工してみましょう。 ここで、テキスト処理(=図書館でもっとも応用のきく技術)について、まずは学んでください。 うまく作れたら、そのまま実業務で使ってしまいましょう!. 実はパターン化できるテキスト処理. 図書館の業務で必要とされることの多い技術は、テキストデータの加工です(経験談)。 - PowerPoint PPT Presentation

Transcript of Licsu-Web データ自由自在!

Page 1: Licsu-Web データ自由自在!

Licsu-WebLicsu-Web データ自由自在!データ自由自在!Licsu-WebLicsu-Web データ自由自在!データ自由自在!

「図書系職員のためのアプリケーション講習会」「図書系職員のためのアプリケーション講習会」

Page 2: Licsu-Web データ自由自在!

Licsu-Web のデータを自在に加工してみましょう!

• Licsu-Web からデータを取り出して、オリジナル帳票を作成したり、 Excel で集計しやすいように加工してみましょう。

• ここで、テキスト処理(=図書館でもっとも応用のきく技術)について、まずは学んでください。

• うまく作れたら、そのまま実業務で使ってしまいましょう!

Page 3: Licsu-Web データ自由自在!

実はパターン化できるテキスト処理

• 図書館の業務で必要とされることの多い技術は、テキストデータの加工です(経験談)。

• ある形式のテキストデータを別形式に加工することを、「フィルタ」といいます。

• この「フィルタ」プログラムの作り方は、使用するプログラミング言語に関係なく、ほぼ定型化できます。これについて、まず覚えてしまいしょう!

Page 4: Licsu-Web データ自由自在!

項目ごとにデータ処理(文字列の置換・集計など)

「フィルタ」プログラムの基本編!

氏名 職業 配属 血液型

コナン・ドイル

小説家 ??? よくわんない型

氏名 職業 配属 血液型

前田朗 図書館屋 社研図書室 O 型

1行のデータの項目わけ

不要行(あれば)の除去

書式を指定して出力

前田朗 , 図書館屋 , 社会科学研究所 , O 型コナン・ドイル ,  小説家 , ???, よくわかんない型      (以下、略)

氏名 職業 配属 血液型

前田朗さん 図書館司書 社会科学研究所図書室

O 型かも

1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

氏名  --- 前田朗さん職業 --- 図書館司書配属 --- 社会科学研究所図書室血液型 --- O 型かも       ・       ・       ・

文字列加工のときは、1行を読んで出力で OK 。集計の場合は、全行を読んでから出力する

前田朗 , 図書館屋 , 社会科学研究所 , O 型 1行づつ取り出し

Page 5: Licsu-Web データ自由自在!

Licsu-Web の業務データを取り出してみよう

個人情報(利用者 ID) などの扱いには十分注意しましょう。危ないと思ったら取り出さないほうが安全です。

汎用ファイル出力

帳票(拡張子 ert) のファイル

Licsu-Web サーバ

テキストデータ(XML 形式 )です。帳票内の文字を書き換えることもできます

テキストデータ(カンマ or タブ区切り)です。単純なデータ構造ですが、扱いは容易です。

Page 6: Licsu-Web データ自由自在!

課題 0

• 自分の担当業務のデータを汎用ファイル出力で取り出してみましょう。出力時のオプション設定は次のようにします。– エンコード →  UTF-8– 区切り文字 → タブ– 括り文字出力 → しない– ヘッダ出力 → する

Page 7: Licsu-Web データ自由自在!

テキスト処理にはスクリプト言語を使おう

• 図書館では、テキスト処理ができると強力• いまどきの軽量言語 (LL) は、本格システムまで作れ

る!• コマンド(命令文)と条件式の書き方を覚えれば、

とりあえず使える。• スクリプト言語の種類

– Perl– Ruby– などなど

Page 8: Licsu-Web データ自由自在!

Perl のインストール• テキストデータの加工の定番ソフト Perl をイ

ンストールしましょう( Licsu-Web レンタル端末には、既にインストールされています)

• 以下のサイトから、 Windows 版 (MSI がお勧め)をダウンロードして PC にインストールしてください。– http://

www.activestate.com/ActivePerl/download.html

Page 9: Licsu-Web データ自由自在!

多言語エディタのインストール

• テキスト処理は、 UNICODE (utf8) で行うのがわかりやすいです。

• Windows 標準のメモ帳でも utf8 の読み書きができますが、大き目のファイルには対応していません。

• 多言語対応エディタ (EMEditor )を次のサイトからインストールしてください。– http://jp.emeditor.com/modules/download2/

Page 10: Licsu-Web データ自由自在!

Perl ことはじめ ~その1~

• エディタでスクリプトを記述– データを一行づつ読み込む ($line は変数 )

• while ($line = <>) {  ここに1行づつの処理を記述   }– データを書き出す

• print $line;– 適当なファイル名で保存 (try.pl など)

• Windows のコマンドプロンプトから、コマンド入力で実行

• perl try.pl 入力ファイル > 出力ファイル• エディタで出力ファイルを開いて、結果を確認

コマンドの末尾は、 ; で終わりにします。しかし、制御文 の} のあとには ; 不要です。

Page 11: Licsu-Web データ自由自在!

課題 1

• 課題 0 で出力した「汎用ファイル出力」データを、別ファイルに書き出してみましょう! 1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 12: Licsu-Web データ自由自在!

Perl ことはじめ ~その2~

• 条件によって処理をわけよう– If 文の使用

• if ( 条件式 ) { 条件にマッチしたときの処理 } – 文字列のパターンで条件式を作る

• $line =~ /ser6015/; – ( 「文字列 ser6015 を含んでいる行」という条件です)

• 情報検索でいうトランケーションのような、さらに高度な指定も可能です。

– . → 任意の 1 文字にマッチ– [A-z] →  アルファベット1文字にマッチ– \t →  タブ1文字にマッチ– などなど

Page 13: Licsu-Web データ自由自在!

課題 2• 課題 1 のスクリプトを修正し、特定の

文字列が含まれているときのみ、ファイルに出力するようにしましょう!

1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 14: Licsu-Web データ自由自在!

Perl ことはじめ ~その 3~

• 文字を別の文字におきかえよう– 文字列のパターンで条件式を作る(「その2」の復習)

• $line =~ /ser6015/; – ( 「文字列 ser6015 を含んでいる行」という条件です)

• 情報検索でいうトランケーションのような、さらに高度な指定も可能です。

– . → 任意の 1 文字にマッチ– [A-z] →  アルファベット1文字にマッチ– \t →  タブ1文字にマッチ– などなど

– その応用で、条件に当てはまる部分を別の文字にする• $line =~ s/ser6015/■ 雑誌作業 ID[ 社研 ]■/;

– 変数 $line のデータそのものが書き換わります!

Page 15: Licsu-Web データ自由自在!

課題 3• 課題 1 のスクリプトを修正し、特定の

文字列を別の文字列に置換して、ファイルに出力するようにしましょう!

1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 16: Licsu-Web データ自由自在!

Perl ことはじめ ~その 4~

– 特定のフィールドのデータを出力しよう• データを区切り文字で分割するには、 split 関数を使い

ます。たとえば、変数 $line がタブ区切りデータであれば、次のように使います。

– @record = split(“\t”, $line);

• 上記の @record は配列(リスト)です。 Perl の場合は、 @ がついた変数名のものが配列扱いになります。たとえば、配列の第一番目の要素を取り出すには次のようにします。

– $line[0]» 配列のn番目の要素を取り出すときは、 [] 内にn -

1の数値を指定します。

Page 17: Licsu-Web データ自由自在!

課題 4• 課題 3 のスクリプトを修正し、特定の

フィールドのみ指定して、ファイルに出力するようにしましょう!

1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 18: Licsu-Web データ自由自在!

Perl ことはじめ ~その 5~

– 数値データを集計しよう• Perl は数値データを扱うこともできます。た

とえば、変数「集計結果」に変数「 A 」、変数「 B 」のデータを加えるには次のようにします。

– 集計結果  = 変数 A   + 変数 B ;

• 次の略記法も便利です。– 変数 A += 変数 B ; # 変数「 A 」に変数「 B 」

を加える– 変数 A++ ; # 変数「 A 」に1を加える

Page 19: Licsu-Web データ自由自在!

課題 5• 課題 4 のスクリプトを修正し、特定の

数値のフィールドのみ出力するようにしましょう。

• さらに、数値の合計を出力するように直しましょう。

1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 20: Licsu-Web データ自由自在!

Perl ことはじめ ~その 6~

– ハッシュを使い条件ごとに集計しよう• Perl は「ハッシュ」という特殊な変数を使うことができます。先の配列と似ていますが、数値によるインデックスではなく、文字列を指定できます。

– ハッシュ全体 →  %data– ハッシュの一要素 → $data{‘test’}

» {} の中に文字インデックスを入れます。上記は文字列ですが、変数でも大丈夫です。

– ハッシュの全データを出力(定番の処理なので覚えてしまいしょう)

» foreach $key (keys %data) {» print $data{$key};» print “\t”; # タブを出力» print $key;» print “\n”; # 改行指定» }

Page 21: Licsu-Web データ自由自在!

課題 6

• 課題 5 のスクリプトを修正し、たとえば作業 ID 別に集計を出すようにしてみましょう。 1行づつ取り出して処理

1行のデータの項目わけ

不要行(あれば)の除去

項目ごとにデータ処理(文字列の置換・集計など)

書式を指定して出力

1行づつ取り出して処理

Page 22: Licsu-Web データ自由自在!

Perl ことはじめ ~その 7~

– HTML での出力• HTML はテキストデータですので、 Perl で生

成することができます。•入力データの改行の削除

– chomp $line;

• 文字の出力– print “<table> …. “;

•改行の出力– print “\n”;

Page 23: Licsu-Web データ自由自在!

課題 7

• 課題 6 のスクリプトを修正し、集計をHTML の表形式で出すようにしてみましょう。

• さらに進んで、集計にこだわらず汎用ファイル出力から、実用的な HTML 形式の帳票を作成してみましょう。

• うまく、作れたものについては、 Webアプリケーションの形にして公開します。

Page 24: Licsu-Web データ自由自在!

Perl ことはじめ ~その 8~

– CGI で動作させる• Perl を使い、 Webブラウザ上でシステムを作ることが

できます。そのための仕組みとして古くからあるのが、CGI です。

– 先の課題のスクリプトを発展させて、汎用ファイルの集計プログラムを作ることもできます。

• http://gensen.dl.itc.u-tokyo.ac.jp/test/licsu-form.html

– このスクリプトですが、別紙のとおり、 A4用紙たった1ページに収まるくらいの分量です。

Page 25: Licsu-Web データ自由自在!

Perl ことはじめ ~その 9~

– さらに Perl を学ぶには• 「超初心者による Perl独学」

– http://homepage1.nifty.com/gak/perl/index.html

• 「 Perl基礎入門」– http://www.kent-web.com/perl/index.html

– Excel 形式での出力• Perl に Excel 用のモジュール(プラグイン)

を追加すれば、実現可能です。チャレンジしたいかたは、講師までお申し出ください。