*正規表現を用いたテキストデータの一括検索・置換 [#aa7f29a4]

#contents

**第4回授業の獲得目標: &worried; [#ed8d7f67]
+&size(14){''ウェブページ経由で送信されるデータを知り、セキュリティに関心を持つ''};
+&size(14){''大量データ一括処理には検索・置換が有効であることを理解する''};
+&size(14){''正規表現とはどのようなものかを理解し、テキストエディタによる正規表現検索、置換の便利さを実感する''};
+&size(14){''テキストエディタとエクセルの間でのデータの共有方法を習得する''};
+&size(14){''エクセルによる簡単な表計算の方法を習得する''};

**【セキュリティ】ウェブページ経由で送信されるデータ: ⌣ [#ab0ca971]
私達は日常的にインターネットを、様々な方法で利用している。ネットを利用する場合、多くの場合、
-検索サイト使ってキーワード検索
-表示されたリンクをクリックして、ウェブページを表示
-場合によっては、キーボードから文字を入力することもある

このとき、インターネット上のサーバと、自分の使っているコンピュータの間で、どんな情報がやり取りされているか、知っているだろうか?例えば、インターネット上の匿名掲示板に、匿名で記事を投稿した場合、個人が特定される場合はあるだろうか?
//最初に挙手させて、インターネットを介して送信される情報を、どれだけ理解しているかを尋ねる。選択肢を与えるといいかもしれない。まず、Yahoo answerの例を出して、携帯電話からのアクセスで身元がばれた話しをする。でも、例えば、パソコンから、ならどうか。匿名の掲示板に、「この前期末試験でカンニングしてやった。千葉大学の試験なんてアマアマだからカンニングし放題。袖口にカンペを入れておいても、絶対に気づかれない」という書き込みをしたとする。匿名の掲示板だけど、誰が書いたか、特定されるだろうか?また、(1) 大学のパソコン、(2)ネット喫茶のパソコン、(3)家のパソコン のそれぞれで、書き込みした本人がばれる・ばれないの違いはあるだろうか?。ということを口頭で聞き、挙手させる。「ばれる」で聞いて、挙手したら、どうしてと聞く。また、大学、ネット、家の間に違いがあるかも尋ねる。

***ログファイル [#t3b701b9]
皆さんがインターネット上のページは閲覧するとき、自分がそのページを見ているなんて誰も知らないと思っているかもしれないが、実は、%%%どのパソコンを経由して、どのページが閲覧されたかということは、すべてログファイルに記録されている%%%。
~例えば、この授業ではmoodleを使ってレポートを提出してもらっているが、moodleからは次のような情報が閲覧できる。
--金 2012年 04月 27日 15:50 	172.xx.xx.xx 	XXXXXXX	quiz view 	課題3. テキストデータの検索・置換 【予習課題】
--金 2012年 04月 27日 15:50 	172.xx.xx.xx 	XXXXXXX	quiz close attempt 	課題3. テキストデータの検索・置換 【予習課題】
--金 2012年 04月 27日 15:50 	172.xx.xx.xx 	XXXXXXX	quiz continue attemp 	92
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	quiz attempt 	課題3. テキストデータの検索・置換 【予習課題】
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	quiz view 	課題3. テキストデータの検索・置換 【予習課題】
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	course view 	H24_情報処理
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	quiz view 	課題2. プロファイルの編集
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	quiz close attempt 	課題2. プロファイルの編集
--金 2012年 04月 27日 15:47 	172.xx.xx.xx 	XXXXXXX	quiz continue attemp 	93
--金 2012年 04月 27日 15:46 	172.xx.xx.xx 	XXXXXXX	quiz attempt 	課題2. プロファイルの編集
--金 2012年 04月 27日 15:46 	172.xx.xx.xx 	XXXXXXX	quiz view 	課題2. プロファイルの編集
--金 2012年 04月 27日 15:46 	172.xx.xx.xx 	XXXXXXX	course view 	H24_情報処理

こういう記録のことを、'アクセスログ''と呼ぶ。また、moodleに限らず、インターネットを介してウェブサーバにアクセスすると、ウェブサーバには、
 access_log 
というファイルができる。このファイルの中身は''テキストデータ''(今、勉強中の文字データのこと)で、次のような情報が書かれている。
 192.29.8.70 - john [30/Apr/2009:15:41:26 +0900] "POST /joho/index.php HTTP/1.1" 
  200 18644 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/5.0 
  (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 192.29.8.69 - tom [30/Apr/2009:15:42:18 +0900] "POST /joho/index.php HTTP/1.1" 
  200 6124 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/4.0 
  (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)"
 192.29.8.69 - tom [30/Apr/2009:15:43:17 +0900] "POST /joho/index.php HTTP/1.1"
  302 - http://bean.bio.chiba-u.jp/joho/index.php?cmd=edit&page=joho21%2FXXXXXX
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)"
 192.29.8.70 - jane [30/Apr/2009:15:43:39 +0900] "POST /joho/index.php HTTP/1.1" 
  302 - http://bean.bio.chiba-u.jp/joho/index.php?cmd=edit&page=joho21%2FXXXXXX 
  "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 192.29.8.1 - jane [30/Apr/2009:15:52:38 +0900] "POST /joho/index.php HTTP/1.1"
  200 18516 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/5.0
  (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 192.29.8.50 - john [30/Apr/2009:15:52:42 +0900] "POST /joho/index.php HTTP/1.1"
  200 6124 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/5.0 
  (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 192.29.8.8 - john [30/Apr/2009:15:52:45 +0900] "POST /joho/index.php HTTP/1.1"
  200 6124 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/5.0 
  (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 192.29.8.50 - tom [30/Apr/2009:15:52:47 +0900] "POST /joho/index.php HTTP/1.1" 
  200 6124 http://bean.bio.chiba-u.jp/joho/index.php?joho21%2FXXXXXX "Mozilla/5.0 
  (Windows; U; Windows NT 5.1; ja; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"
 (IPアドレス等のデータは適当に変更してある)
この中のIPアドレスというのは、インターネットに繋がっているコンピュータ1台1台につけられた、番号のことだ。つまりログファイルを見れば、いつどのコンピュータから、ウェブサーバのどのページにアクセスがあったのか、さらには、どんな文字が入力されて送信されてきたかが分かってしまう。~
さらに、大学などのネットワークでは、学内のどのコンピュータから、学外のどのコンピュータにアクセスがあったかということも、全てログファイルに残っている。自分がインターネットを介してどのページにアクセスしたかは、ネットワークの管理者ならば知ることができるということは覚えておこう。~
試しに、下のリンクにしてみよう~
~
&size(14){http://seki.jpn.org/ssi/env.html};~
皆さんのコンピュータから、インターネットを介して送信されている情報の一部が、表示されるだろう。~
ただ、安心してほしい。これらの情報は、インターネットを介した接続を正常に行うためにやりとりされているものであって、IPアドレスが分かったからといって、個人が特定される訳では無い。しかし、刑事事件などの大きな問題があって、警察などからサーバの管理者に情報公開の要請があった場合は別だ。~
また、プロキシーサーバを中間におけば、自分のコンピュータのIPアドレスを或る程度は隠すことができる。しかし、信用できるプロキシサーバを使わないと、かえって、自分が送受信している個人情報を、第三者に知られてしまうことにもなりかねない。


**大量データ一括処理には検索・置換が有効!!⌣ [#s5fcbac7]
前回授業では、K2Editorというテキストエディタを使って、テキストデータの検索・置換を体験してもらった。「検索・置換」がよく分からなかったという人もかなりの数いたので、もう一度簡単におさらいしておこう。(前回授業を「おそい」と感じた人は、この部分は飛ばしてもいい。今日の課題でもやっていてほしい)。

***検索と置換 はいろんなソフトウェアで使える 便利技 [#v13a430f]
コンピュータはとても便利だが、扱うデータがすぐに膨大になってしまい、人間の頭だけでは情報の整理が追いつかなくなることがある。例えば、コンピュータの中から自分の必要とするファイルを見つけ出すのは、一つ一つフォルダを目で探すと、けっこう時間のかかる作業になってしまう。そんなとき便利なのが、前回学習した
 検索 と 置換
だ。下に演習を3つ用意しておいたので、各自、やってみて欲しい。
-''演習1'': ブラウザからの文字列の検索~
今見ているこのページの中で、「置換」という文字列を探してみる。「編集」メニューから「検索」を選び(あるいは、コントロール+Fキー)、「置換」と入力。
-''演習2'': スタートメニューからのファイルやプログラムの検索~
スタートメニューからファイルやプログラムの検索のところに、探したいファイル名の一部を入力してみる。~
&ref(授業/H23/情報処理/04/Untitled-1.gif);
-''演習3'': MS Word内の文書で検索と置換~
右のファイルを開き、Wordの検索機能を使って、「芋」  という文字列を探す。 &ref(授業/H23/情報処理/04/example1.docx);~
また、その文字列を「茶」 に置換する。~
''発展演習'': 「粥」という文字を「飯」という文字に置換すると同時に、置換された文字の色を&color(red){赤色};にする。
-''演習4'': MS Excelの文書内での検索と置換~
右のファイルを開き、Excelの置換機能を使って、「使っていない」という文字を「ない」に置換する。  &ref(./example_4_1.xls);
 検索と置換は、ほとんどのソフトウェアで使える基本技だ
 大きい文書の中で特定の文字を探したいときなどは、すぐに検索しよう
 また、同じ文字をいくつも変更する場合は、置換しよう

***K2Editorでの検索・置換 :【復習】 [#a0da1056]
同じように、検索・置換をK2Editorでやってみよう。この後、正規表現を使った検索置換を勉強するが、まずは、通常の置換から。
+K2Editorを立ち上げて、下の囲みの中のテキストをコピー・ペースト
   Lumpty   Dumpty  sat   on a wall.
   Lumpty   Dumpty  had  a great    fall.
   All the  king's horses and   all the king's men
   Couldn't put   Lumpty    together again. 
このテキストの中のLumptyは実はスペルミスで、Humptyだった。そこで、全てのLumptyをHumptyに修正したい。~
数が少なければ手作業でやってもいいが、こういうときには、迷わず、一括検索・置換。
+メニューバーの「検索」から「置換」を選んで、検索ウィンドウを開き、検索語と置換語を入力
 検索語: Lumpty
 置換語:  Humpty
(大文字小文字の区別、ファイルの先頭からの横のボックスをチェックすることも忘れずに。正規表現をチェックしてあっても、この場合は影響は無い)
+''「全置換」''のボタンをクリックすると、対象としているテキストの中から、「Lumpty」が全て検索され、「Humpty」に置換される。
~
こんな簡単な操作だが、大切なのは、
~&size(16){&color(brown){''非常に大きなデータファイルであっても、検索・置換は一瞬にして終わる''};};
~ということだ。もし検索・置換をやらなかったとしたら、
 1行ずつ目で検索語を探し、
 見つかった検索語を消して、置換語を1つずつペーストする
~なんていう面倒なことをしなくてはならない。

***もう1つの演習: テキストデータをタブ区切りにして、エクセルで閲覧 [#ad6d6a23]
前回授業でやったもう一つの大事な点は、
 タブで区切られたテキストデータをエクセルにコピーペーストすると、マス目の1つ1つにうまく収まる
ということだ。~
''タブ''というのは、キーボードの左端にある「Tab」と書かれたキーを押すことで入力できる、ある種の空白文字のことだ。この空白文字の扱いはアプリケーションソフトの種類によって異なっており、
-テキストエディタ: スペースよりも広い空白が挿入
-MSワード: スペースよりも広い空白が挿入される。ルーラーで幅を変えられる
-MSエクセル: タブキーを押すことによって、カーソルを一つ右のセルに移動できる

~
では、下のデータ(東葛地域における空間放射線量の測定結果 単位は μSv/h。http://www.pref.chiba.lg.jp/taiki/press/2011/230602-toukatsu.htmlから抜粋)を使って実際に操作してみよう。操作の流れは、
-1.下の囲みの中のデータをコピーしてK2Editorにコピー・ペースト
-2. K2Editorで 半角のコンマ(,) を 全てタブに置換する
 検索語: ,
 置換語: タブ (編集画面で1つタブを入力し、それをコピーして、置換語を入力する場所にペースト)
-3. 一括置換できたら、全てを選択してコピーして、エクセルにペースト

これだけの数の検索・置換も、一瞬で終わるはずだ。~
作業が終わったら、放射線量の順に並び替えてみよう
 測定値*(μSv/h) ,,,,
 測定地点名,地上 1.0m,地上 0.5m,地面の形状 ,測定日天候
 野田市桐ヶ作(二川小学校),0.09,0.1,土,5月31日晴
 野田市野田(野田幼稚園),0.13,0.13,土,5月31日曇り
 野田市木野崎(福田保育所),0.23,0.25,土,5月31日晴
 柏市松葉町(松葉第一公園),0.49,0.54,土,5月31日晴
 柏市千代田(千代田町公園),0.42,0.47,土,5月31日晴
 柏市大津ヶ丘(大津ヶ丘中央公園),0.33,0.35,土,5月31日晴
 我孫子市白山(我孫子第四小学校),0.3,0.31,土,5月31日曇り
 我孫子市中里(湖北小学校),0.2,0.2,土,5月31日晴
 我孫子市布佐平和台(布佐南小学校),0.35,0.33,土,5月31日晴
 松戸市常盤平西窪町(常盤平保育所),0.18,0.19, 土,6月1日曇り 
 松戸市小金(小金保育所),0.24,0.24,土, 6月1日曇り
 松戸市二十世紀が丘梨本町(二十世紀公園),0.34,0.36, 芝生, 6月1日曇り
 流山市江戸川台東(江戸川台保育所),0.24,0.26, 土, 6月1日曇り
 流山市流山(流山小学校),0.32,0.34, 土, 6月1日曇り
 流山市名都借(名都借保育所),0.28,0.28, 土,6月1日曇り 
 鎌ケ谷市粟野(北部小学校),0.27,0.29, 土,6月1日曇り 
 鎌ケ谷市中央(鎌ヶ谷小学校),0.24,0.25, 土,6月1日曇り 
 鎌ケ谷市道野辺中央(道野辺保育園),0.17,0.17, 土, 6月1日曇り  

~以上のように。&size(16){&color(brown){''大量データの処理に、検索・置換は非常に有効!!''};};であることは、忘れないでおこう~


**正規表現と友達になろう ⌣ [#vde4d78f]

上の例では、 HumptyをLumptyに置き換えるという、ごく簡単な操作を行った。では、もっと複雑な処理をするにはどうすれば良いか?たとえば、前回の課題を考えてみよう。
   Humpty Dumpty sat on a wall.
   Humpty Dumpty had a great fall.
   All the king's horses and all the king's men
   Couldn't put Humpty together again. 
という内容のテキストに対して、
-1. 「空白以外の任意の文字が任意の数だけ連続して『pty』を含む文字列」を全て「Pumpty」に置き換えると、上のテキストはどうなるか?
-2.「空白以外の任意の文字が1つ以上連続した後にallが続く'文字列」を全て「ball」に置換すると、対象とするテキストはどうなるか?
-3. 改行文字(画面には表示されていないけれど、改行を指定している文字コード)を全て削除すると、対象とするテキストはどうなるか?
-4. テキスト中の「タブ」(授業で説明したタブコードのこと)を全て半角スペースに置き換えると、上のテキストはどうなるか?

前回課題の内容は、「」の中の言葉の意味を考えてもらうことがポイントだった。例えば、
  「空白以外の任意の文字が任意の数だけ連続してptyを含む文字列」
とはどういうものかというと、上の例では、
 Humpty
 Dumpty
がそれに対応する。他にどんな文字列が 「空白以外の任意の文字が任意の数だけ連続してptyを含む文字列」になりうるか、自分で考えてみよう。
 当てはまる語: "empty"  "ptylos"  "optymous"
 当てはまらない語: "emp ty"  "puty"  "Ptylo"(大文字・小文字を区別しない場合は当てはまる)

「空白以外の任意の文字が任意の数だけ連続してptyを含む文字列」という表現がどうして便利かというと、もし、この表現で検索文字を指定できたら、上のテキストに対して1回の置換操作で、HumptyDumptyの両方をPumptyに置換できる。~
こういう便利な表現が、&size(16){正規表現};だ。

~正規表現はIT用語辞典によると、
 文字列のパターンを表現する表記法。文字列の検索・置換を行なうときに利用される。
検索や置換で文字そのものを検索・置換するのでは無く、%%%パターンを検索・置換するもの%%%ということだ。(「正規」という言葉に特に意味があるわけでは無いので、気にしなくてもよい)~
正規表現による検索・置換はテキストエディタを利用する醍醐味であると言える。~
&size(14){習得できれば、大学生活中も、社会に出てからも、様々な場面で役立つこと間違いない!、なぜなら、};
~&size(16){手作業で一つ一つ繰り返さなければならない作業が、&color(blue){''検索パターン''};と&color(blue){''置換パターン''};を考えるという知的作業に一変する};
~この授業で是非とも習得して欲しい。

***正規表現の演習1: [#l307159a]
   Humpppppty Dumpppppppty sat on a wall.
   Humpppty Dumpppppty had a great fall.
   All the king's horses and all the king's men
   Couldn't put Humpppppppppppty together again. 
上の テキストをみると、pがたくさん連続している場所があることが分かる。どうも、手入力するときに、"p"をいくつも連続で入力してしまったようだ。~
%%%2つ以上pが連続しているところは、全てpを1つにしたい。%%%~
そんなとき、例えば
 1回目
 検索語:pp
 置換語: p
 2回目
 検索語:pp
 置換語: p
という検索置換を何度も繰り返すのも1つの手ではあるが、次のような正規表現を使えば、1回で処理が済む
 検索語:  p+
 置換語:  p
ここで出てきた
 +
という記号が正規表現の基本表現のうちの1つだ。この"+"の意味は、
 直前のパターン(文字そのものや、正規表現で表された文字列)の1回以上連続するもの
ということだ。例えば、
 an+d
という正規表現は、
 and
 annd
 annnnnnnnnnnd
には一致するが(このことを、「マッチ」するという)、~
 ad
 add
 adn
などには一致しない。

***正規表現の演習2: + を使って連続するアンダーバー(_)を一括検索・置換 [#y7095b10]
 Humpty__Dumpty__sat______on_a_wall.
 Humpty____________Dumpty__had__a_great____fall.
 All_the__king's_____horses_and___all_the______________king's_men
 Couldn't_put___Humpty____together_________________again.
この演習では、スペースの代わりにアンダーバー(_)を用いている。(というのは、検索・置換文字列を説明するときに、スペースは画面に表示されないため、説明しにくいから)~
そこで、2つ以上半角アンダーバーが連続しているところは、全て半角アンダーバー1つにしたい。~
これを正規表現を使ってやってみよう。~
ヒントは、
|&size(16){_+};|

***他の正規表現も見てみよう: K2Editorのヘルプファイル [#c3e61d5e]
正規表現には、上に示した以外にも様々な命令がある。K2Editorを立ち上げて、メニューバーからヘルプを表示させ、画面をスクロールして検索・置換に関する説明を見ると、正規表現について様々なことが書いてある。ヘルプにある説明はかなり分かりやすく書かれているのだが、これまで全く正規表現に触れたことの無い人が、この説明を理解するのは不可能だろう。前回の予習課題は、ヘルプファイルに書かれているような言葉の意味を考えて貰ったものだ。そこで、ヘルプファイルから、重要な点をいくつか抜き出して、例をあげて説明する。
~注) 例年、「マッチする」という言葉が分かりにくいという質問が出るので、下に正規表現を使った検索語がマッチする場合と、マッチしない場合の例を挙げておく。
 正規表現を使った検索語:  an+d (意味:aで始まり、nが1回以上、任意の数繰り返し、dで終わる文字列)
 上の検索語にマッチする文字列の例: and, annd,  annnd, annnnnnnnnnnnnnnnnd
 上の検索語にマッチしない文字列の例: ad, aid, acid, answered

-よくつかう正規表現
|&size(16){.};| 注:半角ドット1つ| (改行以外の) すべての文字にマッチする|
||| 例: a.d|
||| aで始まり、つぎになにか1文字つづき、dで終わる文字列。|
||| 「and」「add」「a漢d」などがマッチする。|
|&size(16){*};| 注:アスタリスク1つ|直前のパターンに0回以上の連続にマッチ|
||| 例: an*d    |
|||aで始まり0回以上のnの繰り返しを含みdで終わる文字列。|
||| 「ad」「and」「annd」などがマッチする。|
|&size(16){+};| 注:プラス記号1つ| 直前のパターンに1回以上連続でマッチ|
||| 例:    an+d    |
||| aで始まり1回以上のnの繰り返しを含みdで終わる文字列。|
||| 「and」「annd」はマッチするが「advance」「add」などはマッチしない。|
|&size(16){[...]};| 〔〕の中の文字のグループ| 複数の文字を指定してもいいし、「-」で範囲や、「^」で否定をあらわす|
||| 例:   [abc]          |
||| 文字a,b,cのどれかに一致する文字 |
||| 上に挙げた「+」と組み合わせて使われることが多い |
||| 例:  [abc]+ |
||| 「abc」  「abacabcb」  「cccaaabbb」などがマッチ |
||| 例:   [a-z]+    半角英文字小文字のみからなる文字列 |
||| 例:  [A-Za-z0-9]+   半角英数字のみからなる文字列 |
||| [の次ぎに^をいれると、「文字集合以外」 をあらわすことができる。 |
||| 例:   [^a-z]+      半角英数字以外の文字からできている文字列 |
||| 文字aからz(半角小文字)以外の文字にマッチ。 |
|&size(16){ \t};| | タブ	<<エクセルとの合わせ技に必須!>>|
|&size(16){ \n};| | 改行|
|^||行の先頭位置を表す|
|$||行の終わりの位置を表す|
-&color(red){注:};日本語キーボードでは、\は半角の¥マークです
※:上の解説はK2Editorのヘルプファイルとマック版JeditXのヘルプファイルを参考にして作成した。MS Wordのワイルドカード検索も正規表現の文法にかなり近いものを使っている。~
 
***正規表現を使った演習問題 3 [#mbf5c788]
-次の囲みの中のテキストデータを、K2Editorの新しいページにコピー・ペースト
   Humpty   Dumpty  sat      on a wall.
   Humpty   Dumpty  had  a great    fall.
   All the  king's horses and   all the king's men
   Couldn't put   Humpty    together again. 

-1. 上のテキスト中、 "pty" で終わる単語を全て"Pumpty"に置き換える。
--ヒント: 半角スペース以外の文字の連続を表す正規表現は、
 [^ ]+
-2. 上のテキスト中、 "all" で終わる単語を全て"ball"に置き換える。
-3. 上のテキスト中、大文字で始まる単語を削除する
--ヒント: 大文字で始まる単語はこの場合
 [A-Z][^ ]+
-4. 上のテキスト中、小文字を全て削除する
--ヒント 小文字全ては
 [a-z]+

***正規表現を使った検索・置換の練習2⌣ [#t17cfc1a]
※一緒に操作すること。今回復習課題に出す操作の多くが含まれている。なお、ポイントは~
        &size(16){テキストデータにおける"タブ"はExcelの"カラム(列)の区切りに相当する};
~ということ。タブで区切られたテキストデータは、エクセルにコピー・ペーストすることで、カラム(列)で区分されたデータとして扱う事が出来る。~
 &ref(授業/H19/情報処理/05/Untitled-1.gif); というテキストをコピーして、エクセルにペーストすると、&ref(授業/H19/情報処理/05/Untitled-2.gif); 
-練習: 下の囲みの中のデータはタブで区切られたテキスト。コピーして、エクセルにペースト(貼り付け)してみよう
 リンゴ	ミカン	ナシ
 スイカ	モモ	ブドウ
 サクランボ	イチゴ	バナナ
--※エクセルできれいな表として貼り付けられなかった場合、一度、K2Editorにペーストしてから、再度コピーし、エクセルにペーストしてみよう。
-練習: 下の囲みの中のデータは複数の半角空白で区切られたテキスト。コピーしてそのままエクセルにペーストしても、きれいな表にはならない。そこで、正規表現を使って、複数の空白をタブ1つに置換してみよう。~

 リンゴ     ミカン       ナシ
 スイカ   モモ       ブドウ
 サクランボ  イチゴ        バナナ
--問題:複数の半角空白の連続を表す正規表現は何か?置換文字に指定する文字は何か?
-方法:
+K2Editorを開いて、新規ページに上のデータをペースト
+データの並びをじーっと見る
 リンゴ     ミカン       ナシ
+下のようなパターンが見えてくる
  リンゴ<複数の半角空白の連続>ミカン<複数の半角空白の連続>ナシ
~<複数の半角空白の連続>をタブに置き換えればいいということだから、
+正規表現検索・置換を使って
 (正規表現チェック)
 検索文字 [ ]+
 置換文字 \t
+全体を選択してコピーする。
~&size(14){  ここまででK2Editorでの操作は終わり。次はエクセルでの操作 };
+エクセルで新しいページを開き、左上角のセルをクリックして、
+ワークシートの中の左上のセルをクリックして、ペースト。【''&color(brown){テキストファイルのデータをエクセルに移動できた};''】

**テキストファイルとエクセルの間でのデータのやりとり⌣ [#v67f4026]
いまやった操作は、テキストデータをK2Editorで編集して、エクセルの表にしたというもの。皆さんは簡単にできたけど、実はわりと高度な技。千葉大生100人に聞いて、10人知っているかどうか。。。
~これほど世の中でパソコンが普及していても、大半の人は、テキストファイルを編集したことが無いみたい。だから、タブ区切りテキストとエクセルのセルの関係も知らない人が大勢いる。~
~今後、皆さんは学習や研究の過程でいろんなデータを扱うことになるが、
~      %%%&size(16){''テキストデータにおけるタブはエクセルのセル間の区切りに対応する''};%%%
~ということを知っているだけで、~
~      &size(16){''大量のデータの一括処理処理やデータの書式統一がとても楽になる''};&bigsmile;~
~一つ一つコピー・ペーストしたり、目で探しだすのもいいけれど、テキストエディタによる一括整形でラクしたいものだ。


**Excel(エクセル)の操作の基本:表計算⌣ [#cf6d3549]
今日から2回ほど、表計算ソフトの代表ともいえるExcel(エクセル)の操作を習得する。表計算ソフトは、コンピュータに作らせた表の上に数値を記入して計算させるもの。手計算では、表の中の一つの数値を変更したら他の数値も全てもう一度計算し直さなければならない場合も、表計算ソフトを使うと、他の数値は自動的に再計算される。このアイデアは、ハーバード大学の学生であったDaniel Bricklinが1979年が思いつき、[[VISICALC>http://en.wikipedia.org/wiki/VisiCalc]]というソフトウェアとして実現したものだ。その後、表計算ソフトは、DOS/V機(日本ではPC-98)におけるLOTUS-1-2-3やWindowsにおけるMicrosoft Excelとして発展してきた。表計算ソフトは、ハードウェアの普及を促進したということで、パーソナルコンピュータにおけるキラーソフト(キラーアプリ)と呼ばれている。

***Microsoft Excelの各部の名称 [#n0ea8c8d]
&ref(授業/H18/情報処理/05/excelmeisho.gif,40%);

***値・数式の入力と計算 [#v7d5b0c3]
+セルを一つクリックして、 =1+2 という式を入力
&ref(授業/H18/情報処理/05/sushiki.gif,80%);

***セルの参照 [#iea38758]
+セルA1に5, セルB1に8を入力
+セルC1をクリックして半角=を入力し、セルA1、せるB1をクリック
--(あるいは、セルC1をクリックして、=A1+B1と入力しても同じ)
>&ref(授業/H18/情報処理/05/sansho.gif,80%);
 5	8
***式(参照)のコピー・ペースト [#s63538e9]
+式を入力したセル(例ではC1)をクリックしてコピー(ctrl+c):選択されたセルが波線で囲まれる
+同じ法則(例では「左側の2つのセルの値を足すこと」)を適用したいセルをマウスドラッグで選択
+ペースト(ctrl+v)すると、選択範囲に全て式がコピーされる
>&ref(授業/H18/情報処理/05/sanshocopy.gif,80%);
 5	8
 1	2
 3	4
 5	6
 7	8

***絶対参照 [#i79ab1a3]
+下の例のようにエクセルに果物の個数を入力して合計を求める
--&ref(授業/H18/情報処理/05/soutaierr1.gif,80%);
+りんごの個数の全体に対する比率を =B2/B5 で計算。書式をパーセントにする(あるいは、パーセントの計算式を入れる。関数を使っても良い)。
+りんごの比率の入ったセルをコピーして、他の項目の比率のセルにペーストしてもうまく行かない
--&ref(授業/H18/情報処理/05/soutaierr2.gif,80%);
+これは、%%%通常のコピー・ペーストでは、セルが''相対的な位置関係で参照''されるため%%%
+リンゴの比率を計算するときに、分母のセル指定を $B$6 と$記号をつけて参照することで、絶対参照できる
--&ref(授業/H18/情報処理/05/zettai1.gif,80%); → &ref(授業/H18/情報処理/05/zettai2.gif,80%);
 	個数	比率
 りんご	10	
 みかん	15	
 ばなな	25	
 合計	50	

***関数の利用 [#f56385fb]
+合計を入力したいセルをクリック(例ではC6)
+ =sum( と入力し、マウスで合計したい数値の範囲をドラッグし、最後に ) を入力してリターン
-(合計を入力したいところにカーソルを持っていって、ツールバーのΣをクリックしてリターンでもよい)
>&ref(授業/H18/情報処理/05/sum.gif,80%); → &ref(授業/H18/情報処理/05/sum2.gif,80%);
~
&size(16){今つかったsum関数は、エクセルを利用する上で最も頻繁に用いられる関数。使い方をよく覚えておこう。};


**第4回授業の課題 [#x7813f24]
-提出期限:5月15日正午
-moodleページ http://bean.bio.chiba-u.jp/moodle24/ にアクセスし、第4回授業の課題1・2を提出しなさい。

**Dropbos課題再提出 [#tee1bd2a]
 4039
 4001
 4002
 4004
 4005
 4007
 4008
 4012
 4013
 4016
 4017
 4020
 4021
 4024
 4025
 4029
 4032
 4033
 4036
 4037
 4038