1 / 25

Licsu-Web データ自由自在!

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

betty
Download Presentation

Licsu-Web データ自由自在!

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Licsu-Webデータ自由自在! 「図書系職員のためのアプリケーション講習会」

  2. Licsu-Webのデータを自在に加工してみましょう!Licsu-Webのデータを自在に加工してみましょう! • Licsu-Webからデータを取り出して、オリジナル帳票を作成したり、Excelで集計しやすいように加工してみましょう。 • ここで、テキスト処理(=図書館でもっとも応用のきく技術)について、まずは学んでください。 • うまく作れたら、そのまま実業務で使ってしまいましょう!

  3. 実はパターン化できるテキスト処理 • 図書館の業務で必要とされることの多い技術は、テキストデータの加工です(経験談)。 • ある形式のテキストデータを別形式に加工することを、「フィルタ」といいます。 • この「フィルタ」プログラムの作り方は、使用するプログラミング言語に関係なく、ほぼ定型化できます。これについて、まず覚えてしまいしょう!

  4. 1行づつ取り出し 前田朗, 図書館屋, 社会科学研究所, O型 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 氏名 --- 前田朗さん 職業 --- 図書館司書 配属 --- 社会科学研究所図書室 血液型 --- O型かも        ・        ・        ・ 「フィルタ」プログラムの基本編! 前田朗, 図書館屋, 社会科学研究所, O型 コナン・ドイル, 小説家, ???, よくわかんない型      (以下、略) 1行づつ取り出して処理 1行づつ取り出して処理 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 文字列加工のときは、1行を読んで出力でOK。集計の場合は、全行を読んでから出力する 書式を指定して出力 書式を指定して出力

  5. Licsu-Webの業務データを取り出してみよう Licsu-Webサーバ テキストデータ(XML形式) です。 帳票内の文字を書き換えることもできます テキストデータ(カンマ or タブ区切り) です。 単純なデータ構造ですが、扱いは容易です。 汎用ファイル 出力 帳票(拡張子ert)の ファイル 個人情報(利用者ID)などの扱いには十分注意しましょう。 危ないと思ったら取り出さないほうが安全です。

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

  7. テキスト処理にはスクリプト言語を使おう • 図書館では、テキスト処理ができると強力 • いまどきの軽量言語(LL)は、本格システムまで作れる! • コマンド(命令文)と条件式の書き方を覚えれば、とりあえず使える。 • スクリプト言語の種類 • Perl • Ruby • などなど

  8. Perlのインストール • テキストデータの加工の定番ソフトPerlをインストールしましょう(Licsu-Webレンタル端末には、既にインストールされています) • 以下のサイトから、Windows版(MSIがお勧め)をダウンロードしてPCにインストールしてください。 • http://www.activestate.com/ActivePerl/download.html

  9. 多言語エディタのインストール • テキスト処理は、UNICODE (utf8)で行うのがわかりやすいです。 • Windows標準のメモ帳でも utf8の読み書きができますが、大き目のファイルには対応していません。 • 多言語対応エディタ(EMEditor)を次のサイトからインストールしてください。 • http://jp.emeditor.com/modules/download2/

  10. Perlことはじめ ~その1~ • エディタでスクリプトを記述 • データを一行づつ読み込む($lineは変数) • while ($line = <>) { ここに1行づつの処理を記述  } • データを書き出す • print $line; • 適当なファイル名で保存(try.pl など) • Windowsのコマンドプロンプトから、コマンド入力で実行 • perl try.pl 入力ファイル> 出力ファイル • エディタで出力ファイルを開いて、結果を確認 コマンドの末尾は、; で終わりにします。 しかし、制御文 の} のあとには;不要です。

  11. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題1 • 課題0で出力した「汎用ファイル出力」データを、別ファイルに書き出してみましょう! 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  12. Perlことはじめ ~その2~ • 条件によって処理をわけよう • If文の使用 • if ( 条件式) { 条件にマッチしたときの処理} • 文字列のパターンで条件式を作る • $line =~ /ser6015/; • (「文字列 ser6015 を含んでいる行」という条件です) • 情報検索でいうトランケーションのような、さらに高度な指定も可能です。 • . → 任意の1 文字にマッチ • [A-z] → アルファベット1文字にマッチ • \t → タブ1文字にマッチ • などなど

  13. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題2 • 課題1のスクリプトを修正し、特定の文字列が含まれているときのみ、ファイルに出力するようにしましょう! 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  14. Perlことはじめ ~その3~ • 文字を別の文字におきかえよう • 文字列のパターンで条件式を作る(「その2」の復習) • $line =~ /ser6015/; • (「文字列 ser6015 を含んでいる行」という条件です) • 情報検索でいうトランケーションのような、さらに高度な指定も可能です。 • . → 任意の1 文字にマッチ • [A-z] → アルファベット1文字にマッチ • \t → タブ1文字にマッチ • などなど • その応用で、条件に当てはまる部分を別の文字にする • $line =~ s/ser6015/■雑誌作業ID[社研]■/; • 変数$lineのデータそのものが書き換わります!

  15. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題3 • 課題1のスクリプトを修正し、特定の文字列を別の文字列に置換して、ファイルに出力するようにしましょう! 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  16. Perlことはじめ ~その4~ • 特定のフィールドのデータを出力しよう • データを区切り文字で分割するには、split関数を使います。たとえば、変数$lineがタブ区切りデータであれば、次のように使います。 • @record = split(“\t”, $line); • 上記の @record は配列(リスト)です。Perlの場合は、@がついた変数名のものが配列扱いになります。たとえば、配列の第一番目の要素を取り出すには次のようにします。 • $line[0] • 配列のn番目の要素を取り出すときは、[]内にn-1の数値を指定します。

  17. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題4 • 課題3のスクリプトを修正し、特定のフィールドのみ指定して、ファイルに出力するようにしましょう! 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  18. Perlことはじめ ~その5~ • 数値データを集計しよう • Perlは数値データを扱うこともできます。たとえば、変数「集計結果」に変数「A」、変数「B」のデータを加えるには次のようにします。 • 集計結果 = 変数A+ 変数B ; • 次の略記法も便利です。 • 変数A += 変数B ; # 変数「A」に変数「B」を加える • 変数A++ ; # 変数「A」に1を加える

  19. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題5 • 課題4のスクリプトを修正し、特定の数値のフィールドのみ出力するようにしましょう。 • さらに、数値の合計を出力するように直しましょう。 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  20. Perlことはじめ ~その6~ • ハッシュを使い条件ごとに集計しよう • Perlは「ハッシュ」という特殊な変数を使うことができます。先の配列と似ていますが、数値によるインデックスではなく、文字列を指定できます。 • ハッシュ全体 → %data • ハッシュの一要素 → $data{‘test’} • {}の中に文字インデックスを入れます。上記は文字列ですが、変数でも大丈夫です。 • ハッシュの全データを出力(定番の処理なので覚えてしまいしょう) • foreach $key (keys %data) { • print $data{$key}; • print “\t”; # タブを出力 • print $key; • print “\n”; # 改行指定 • }

  21. 1行のデータの項目わけ 不要行(あれば)の除去 項目ごとにデータ処理 (文字列の置換・集計など) 課題6 • 課題5のスクリプトを修正し、たとえば作業ID別に集計を出すようにしてみましょう。 1行づつ取り出して処理 1行づつ取り出して処理 書式を指定して出力

  22. Perlことはじめ ~その7~ • HTMLでの出力 • HTMLはテキストデータですので、Perlで生成することができます。 • 入力データの改行の削除 • chomp $line; • 文字の出力 • print “<table> …. “; • 改行の出力 • print “\n”;

  23. 課題7 • 課題6のスクリプトを修正し、集計をHTMLの表形式で出すようにしてみましょう。 • さらに進んで、集計にこだわらず汎用ファイル出力から、実用的なHTML形式の帳票を作成してみましょう。 • うまく、作れたものについては、Webアプリケーションの形にして公開します。

  24. Perlことはじめ ~その8~ • CGIで動作させる • Perlを使い、Webブラウザ上でシステムを作ることができます。そのための仕組みとして古くからあるのが、CGIです。 • 先の課題のスクリプトを発展させて、汎用ファイルの集計プログラムを作ることもできます。 • http://gensen.dl.itc.u-tokyo.ac.jp/test/licsu-form.html • このスクリプトですが、別紙のとおり、A4用紙たった1ページに収まるくらいの分量です。

  25. Perlことはじめ ~その9~ • さらにPerlを学ぶには • 「超初心者によるPerl独学」 • http://homepage1.nifty.com/gak/perl/index.html • 「Perl基礎入門」 • http://www.kent-web.com/perl/index.html • Excel形式での出力 • PerlにExcel用のモジュール(プラグイン)を追加すれば、実現可能です。チャレンジしたいかたは、講師までお申し出ください。

More Related