自由丁番 (両開用) 【N-1005】528 2013/1/30 自由丁番(両開用) 【N-1005】 自由丁番(片開用) 【N-900】 自由丁番(両開用) 【N-990】 ブラウン
Licsu-Web データ自由自在!
description
Transcript of Licsu-Web データ自由自在!
Licsu-WebLicsu-Web データ自由自在!データ自由自在!Licsu-WebLicsu-Web データ自由自在!データ自由自在!
「図書系職員のためのアプリケーション講習会」「図書系職員のためのアプリケーション講習会」
Licsu-Web のデータを自在に加工してみましょう!
• Licsu-Web からデータを取り出して、オリジナル帳票を作成したり、 Excel で集計しやすいように加工してみましょう。
• ここで、テキスト処理(=図書館でもっとも応用のきく技術)について、まずは学んでください。
• うまく作れたら、そのまま実業務で使ってしまいましょう!
実はパターン化できるテキスト処理
• 図書館の業務で必要とされることの多い技術は、テキストデータの加工です(経験談)。
• ある形式のテキストデータを別形式に加工することを、「フィルタ」といいます。
• この「フィルタ」プログラムの作り方は、使用するプログラミング言語に関係なく、ほぼ定型化できます。これについて、まず覚えてしまいしょう!
項目ごとにデータ処理(文字列の置換・集計など)
「フィルタ」プログラムの基本編!
氏名 職業 配属 血液型
コナン・ドイル
小説家 ??? よくわんない型
氏名 職業 配属 血液型
前田朗 図書館屋 社研図書室 O 型
1行のデータの項目わけ
不要行(あれば)の除去
書式を指定して出力
前田朗 , 図書館屋 , 社会科学研究所 , O 型コナン・ドイル , 小説家 , ???, よくわかんない型 (以下、略)
氏名 職業 配属 血液型
前田朗さん 図書館司書 社会科学研究所図書室
O 型かも
1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
氏名 --- 前田朗さん職業 --- 図書館司書配属 --- 社会科学研究所図書室血液型 --- O 型かも ・ ・ ・
文字列加工のときは、1行を読んで出力で OK 。集計の場合は、全行を読んでから出力する
前田朗 , 図書館屋 , 社会科学研究所 , O 型 1行づつ取り出し
Licsu-Web の業務データを取り出してみよう
個人情報(利用者 ID) などの扱いには十分注意しましょう。危ないと思ったら取り出さないほうが安全です。
汎用ファイル出力
帳票(拡張子 ert) のファイル
Licsu-Web サーバ
テキストデータ(XML 形式 )です。帳票内の文字を書き換えることもできます
テキストデータ(カンマ or タブ区切り)です。単純なデータ構造ですが、扱いは容易です。
課題 0
• 自分の担当業務のデータを汎用ファイル出力で取り出してみましょう。出力時のオプション設定は次のようにします。– エンコード → UTF-8– 区切り文字 → タブ– 括り文字出力 → しない– ヘッダ出力 → する
テキスト処理にはスクリプト言語を使おう
• 図書館では、テキスト処理ができると強力• いまどきの軽量言語 (LL) は、本格システムまで作れ
る!• コマンド(命令文)と条件式の書き方を覚えれば、
とりあえず使える。• スクリプト言語の種類
– Perl– Ruby– などなど
Perl のインストール• テキストデータの加工の定番ソフト Perl をイ
ンストールしましょう( Licsu-Web レンタル端末には、既にインストールされています)
• 以下のサイトから、 Windows 版 (MSI がお勧め)をダウンロードして PC にインストールしてください。– http://
www.activestate.com/ActivePerl/download.html
多言語エディタのインストール
• テキスト処理は、 UNICODE (utf8) で行うのがわかりやすいです。
• Windows 標準のメモ帳でも utf8 の読み書きができますが、大き目のファイルには対応していません。
• 多言語対応エディタ (EMEditor )を次のサイトからインストールしてください。– http://jp.emeditor.com/modules/download2/
Perl ことはじめ ~その1~
• エディタでスクリプトを記述– データを一行づつ読み込む ($line は変数 )
• while ($line = <>) { ここに1行づつの処理を記述 }– データを書き出す
• print $line;– 適当なファイル名で保存 (try.pl など)
• Windows のコマンドプロンプトから、コマンド入力で実行
• perl try.pl 入力ファイル > 出力ファイル• エディタで出力ファイルを開いて、結果を確認
コマンドの末尾は、 ; で終わりにします。しかし、制御文 の} のあとには ; 不要です。
課題 1
• 課題 0 で出力した「汎用ファイル出力」データを、別ファイルに書き出してみましょう! 1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その2~
• 条件によって処理をわけよう– If 文の使用
• if ( 条件式 ) { 条件にマッチしたときの処理 } – 文字列のパターンで条件式を作る
• $line =~ /ser6015/; – ( 「文字列 ser6015 を含んでいる行」という条件です)
• 情報検索でいうトランケーションのような、さらに高度な指定も可能です。
– . → 任意の 1 文字にマッチ– [A-z] → アルファベット1文字にマッチ– \t → タブ1文字にマッチ– などなど
課題 2• 課題 1 のスクリプトを修正し、特定の
文字列が含まれているときのみ、ファイルに出力するようにしましょう!
1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その 3~
• 文字を別の文字におきかえよう– 文字列のパターンで条件式を作る(「その2」の復習)
• $line =~ /ser6015/; – ( 「文字列 ser6015 を含んでいる行」という条件です)
• 情報検索でいうトランケーションのような、さらに高度な指定も可能です。
– . → 任意の 1 文字にマッチ– [A-z] → アルファベット1文字にマッチ– \t → タブ1文字にマッチ– などなど
– その応用で、条件に当てはまる部分を別の文字にする• $line =~ s/ser6015/■ 雑誌作業 ID[ 社研 ]■/;
– 変数 $line のデータそのものが書き換わります!
課題 3• 課題 1 のスクリプトを修正し、特定の
文字列を別の文字列に置換して、ファイルに出力するようにしましょう!
1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その 4~
– 特定のフィールドのデータを出力しよう• データを区切り文字で分割するには、 split 関数を使い
ます。たとえば、変数 $line がタブ区切りデータであれば、次のように使います。
– @record = split(“\t”, $line);
• 上記の @record は配列(リスト)です。 Perl の場合は、 @ がついた変数名のものが配列扱いになります。たとえば、配列の第一番目の要素を取り出すには次のようにします。
– $line[0]» 配列のn番目の要素を取り出すときは、 [] 内にn -
1の数値を指定します。
課題 4• 課題 3 のスクリプトを修正し、特定の
フィールドのみ指定して、ファイルに出力するようにしましょう!
1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その 5~
– 数値データを集計しよう• Perl は数値データを扱うこともできます。た
とえば、変数「集計結果」に変数「 A 」、変数「 B 」のデータを加えるには次のようにします。
– 集計結果 = 変数 A + 変数 B ;
• 次の略記法も便利です。– 変数 A += 変数 B ; # 変数「 A 」に変数「 B 」
を加える– 変数 A++ ; # 変数「 A 」に1を加える
課題 5• 課題 4 のスクリプトを修正し、特定の
数値のフィールドのみ出力するようにしましょう。
• さらに、数値の合計を出力するように直しましょう。
1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その 6~
– ハッシュを使い条件ごとに集計しよう• Perl は「ハッシュ」という特殊な変数を使うことができます。先の配列と似ていますが、数値によるインデックスではなく、文字列を指定できます。
– ハッシュ全体 → %data– ハッシュの一要素 → $data{‘test’}
» {} の中に文字インデックスを入れます。上記は文字列ですが、変数でも大丈夫です。
– ハッシュの全データを出力(定番の処理なので覚えてしまいしょう)
» foreach $key (keys %data) {» print $data{$key};» print “\t”; # タブを出力» print $key;» print “\n”; # 改行指定» }
課題 6
• 課題 5 のスクリプトを修正し、たとえば作業 ID 別に集計を出すようにしてみましょう。 1行づつ取り出して処理
1行のデータの項目わけ
不要行(あれば)の除去
項目ごとにデータ処理(文字列の置換・集計など)
書式を指定して出力
1行づつ取り出して処理
Perl ことはじめ ~その 7~
– HTML での出力• HTML はテキストデータですので、 Perl で生
成することができます。•入力データの改行の削除
– chomp $line;
• 文字の出力– print “<table> …. “;
•改行の出力– print “\n”;
課題 7
• 課題 6 のスクリプトを修正し、集計をHTML の表形式で出すようにしてみましょう。
• さらに進んで、集計にこだわらず汎用ファイル出力から、実用的な HTML 形式の帳票を作成してみましょう。
• うまく、作れたものについては、 Webアプリケーションの形にして公開します。
Perl ことはじめ ~その 8~
– CGI で動作させる• Perl を使い、 Webブラウザ上でシステムを作ることが
できます。そのための仕組みとして古くからあるのが、CGI です。
– 先の課題のスクリプトを発展させて、汎用ファイルの集計プログラムを作ることもできます。
• http://gensen.dl.itc.u-tokyo.ac.jp/test/licsu-form.html
– このスクリプトですが、別紙のとおり、 A4用紙たった1ページに収まるくらいの分量です。
Perl ことはじめ ~その 9~
– さらに Perl を学ぶには• 「超初心者による Perl独学」
– http://homepage1.nifty.com/gak/perl/index.html
• 「 Perl基礎入門」– http://www.kent-web.com/perl/index.html
– Excel 形式での出力• Perl に Excel 用のモジュール(プラグイン)
を追加すれば、実現可能です。チャレンジしたいかたは、講師までお申し出ください。