日本鳥類目録改訂第7版 掲載鳥類リスト JPBirdList_7ed_ver1.xls の加工

2012年 11月 1日 掲載


はじめに

日本鳥類目録が改訂され,書籍も販売されているのだが, 1冊 5,500円という値段はちょっと,いや,かなり高い. バードウォッチャーが探鳥記録の整理に使う程度であれば,日本鳥学会の以下のページ,

に掲載されている「掲載鳥類リスト」の Excelファイル程度のものがあれば十分だろう. だが,この Excelファイルは,目・科・属・種・亜種ごとに列の内容が異なっており, かなり使いかってがわるい. ということで,あつかいやすいように加工してみた.


加工の概要

Microsoft Excel で「掲載鳥類リスト(JPBirdList_7ed_ver1.xls)」に若干の下処理を施し,AWKスクリプトで整形を行う.


作業環境

今回,加工を行った環境は以下のとおりである.


加工の手順

ステップ 1:元の Excelファイルを下処理

まずは,JPBirdList_7ed_ver1.xls を Microsoft Excel で開き,「PartA自然分布種」シートの「B」列の内容を以下のように英語(半角)に置換する.

ここで,置換するのは「B」列だけである. 全体で置換を行うと「キジ目」が「キジorder」になったりして,めんどうなことになる. また,「亜種」より先に「種」を置換してしまうと, 「亜species」みたいなものができてしまい、 やはりめんどうになるので注意しよう。

1〜7行は,あってもこの後の処理に影響はないが, わずらわしいので削除してしまおう.

このように下処理を行ったシートを,「テキスト(タブ区切り)(*.txt)」形式で保存をする. 保存した タブ区切りファイル(今回は,JPBirdList_7ed_ver1.txt という名前で保存した)は, 次のようなテキストファイルになっているはずである.

1	order	GALLIFORMES	キジ目					
2	family	PHASIANIDAE	キジ科					
3	genus	TETRASTES	Keyserling & Blasius	エゾライチョウ属				
4	species	1	Tetrastes	bonasia	"(Linnaeus, 1758)"	エゾライチョウ		
5	variety	1	1	Tetrastes	bonasia	vicinitas	"Riley, 1915"	エゾライチョウ
6	genus	LAGOPUS	Brisson	ライチョウ属				
7	species	2	Lagopus	muta	"(Montin, 1781)"	ライチョウ		
8	variety	2	1	Lagopus	muta	japonica	"Clark, 1907"	ライチョウ
9	genus	COTURNIX	Garsault	ウズラ属				
10	species	3	Coturnix	japonica	"Temminck & Schlegel, 1849"	ウズラ		
:
:

これを,Cygwin上の awk で処理をする.

ステップ 2:「分類,和名,学名」の 3列のタブ区切りファイルを作成

JPBirdList_7ed_ver1.txt はタブ区切りで,

となっているので,次のようなスクリプト convert_JPBirdList.awk

BEGIN{
  FS="\t"
  OFS="\t"
}
$2=="order"{
  print $2, $4, $3, "\r"
}
$2=="family"{
  print $2, $4, $3, "\r"
}
$2=="genus"{
  print $2, $5, $3, "\r"
}
$2=="species"{
  print $2, $7, $4 " " $5, "\r"
}
$2=="variety"{
  print $2, $9, $5 " " $6 " " $7, "\r"
}

を通せば,「分類,和名,学名」の3列の タブ区切りファイルができる (※ awk の出力する改行コードが UNIX の LF なので,上のスクリプトでは "\r" を追加することにより,出力の改行コードを Windows の CR+LF になおしている).

$ awk -f convert_JPBirdList.awk JPBirdList_7ed_ver1.txt > jbl7a.txt

できあがった jbl7a.txt は,次のような形になっている.

order	キジ目	GALLIFORMES
family	キジ科	PHASIANIDAE
genus	エゾライチョウ属	TETRASTES
species	エゾライチョウ	Tetrastes bonasia
variety	エゾライチョウ	Tetrastes bonasia vicinitas
genus	ライチョウ属	LAGOPUS
species	ライチョウ	Lagopus muta
variety	ライチョウ	Lagopus muta japonica
genus	ウズラ属	COTURNIX
species	ウズラ	Coturnix japonica
:
:

このような形にしてしまえば,あとは好きなように加工ができる.

ステップ 3:好みの形に加工

たとえば jbl7a.txt を,次のようなスクリプト convert_jbl.awk

BEGIN{
  FS="\t"
}
$1=="order"{
  print "\r\n* " $2 " " $3 " *\r\n\r"
}
$1=="family"{
  print "  [ " $2 " " $3 " ]\r"
}
$1=="genus"{
  print "  < " $2 " " $3 " >\r"
}
$1=="species"{
  print "     " $2 " " $3 "\r"
}
$1=="variety"{
  print "     ( " $2 " " $3 " )\r"
}

に通してみる.

$ awk -f convert_jbl.awk jbl7a.txt > japan_bird_list7a.txt

japan_bird_list7a.txt は,和名と学名を併記した次のような形になる.


* キジ目 GALLIFORMES *

  [ キジ科 PHASIANIDAE ]
  < エゾライチョウ属 TETRASTES >
     エゾライチョウ Tetrastes bonasia
     ( エゾライチョウ Tetrastes bonasia vicinitas )
  < ライチョウ属 LAGOPUS >
     ライチョウ Lagopus muta
     ( ライチョウ Lagopus muta japonica )
  < ウズラ属 COTURNIX >
     ウズラ Coturnix japonica
:
:

和名だけのリストを作るには,2列目だけを出力すればよいが, 種と同じ名前の亜種があるので,それを出力しないようにするとよいだろう. 次のようなスクリプト convert_jbl_j.awk

BEGIN{
  FS="\t"
  species=""
}
$1=="order"{
  print "\r\n* " $2 " *\r\n\r"
}
$1=="family"{
  print "  [ " $2 " ]\r"
}
$1=="genus"{
  print "  < " $2 " >\r"
}
$1=="species"{
  print "     " $2 "\r"
  species = $2
}
$1=="variety" && $2 != species{
  print "     ( " $2 " )\r"
}

を書いてみた.このスクリプトに jbl7a.txt を通す.

$ awk -f convert_jbl_j.awk jbl7a.txt > japan_bird_list7a_j.txt

できあがった japan_bird_list7a_j.txt は以下のような形になる.


* キジ目 *

  [ キジ科 ]
  < エゾライチョウ属 >
     エゾライチョウ
  < ライチョウ属 >
     ライチョウ
  < ウズラ属 >
     ウズラ
  < ヤマドリ属 >
     ヤマドリ
     ( ウスアカヤマドリ )
     ( シコクヤマドリ )
:
:

「PartB外来種」のシートも同じように加工することができる.

あとは,Microsoft Word などで読みこんで,段組みでもして印刷すればよい.


[ KDOホームにもどる ]


(C) 2012 KDO