FC2ブログ

本を読む

読書やコンピュータなどに関するメモ

「「日本の伝統」という幻想」

 ビジネス啓発書のベストセラーランキングを見ると、「こうすれば儲かる」というネタと「あなたの周りにいるこんな嫌な人たち」というネタは定番のようだ。

 「「日本の伝統」の正体」の続編といえる本書では、第一部を「「伝統ビジネス」の作り方」に、第二部を「「伝統マウンティング」社会」として、あやふやな伝統の持ち出され方をパロディ的に解説している。

 伝統と言われるものの源流が、けっこうビジネスだったりするのは、前書でも書かれたとおり。本書の第一章ではさらに、どういう点がビジネスのネタになるかを、成功例や失敗例をまじえて、「記念日と二十四節気を狙え!」「失敗に学んで、新しく作れ!」「江戸・京都・旧国名を使え!」といった調子でパロディっぽく書いている。しかし「寒の土用の丑の日」「サマー・バレンタインデー」「イースター」という新しいネタにセルフツッコミしてるのが笑った。

Rubyでカナのソート

 これは「ライティングや編集にまつわるあれこれ Advent Calendar 2018」の12月12日の記事です。いままでブログにちょろちょろ書いていたことを、アドベントカレンダー向けにまとめます。

 さて、専門書などの巻末には、多くの場合、索引が設けられています。TeXなど、本文中の指定した箇所から自動的に索引を作る機能があるツールもあります。そうした機能がない場合は、本文から単語とページ番号(ノンブル)を抜き出したデータを用意して索引を作ります。

 索引は、アルファベット順や読み(カナ)順にソートされます。このソート方法については出版社各社や編集者各自でそれぞれ対応していると思います。ここでは、私の方法について書きます。まあ地味なテーマです。

カナのソートは何が問題か

 カナのソートというと、一見、文字コード順にソートすればいいように思えます。たとえば、こんな場合です。

  • うみ
  • かわ
  • やま

 しかし、長音(音引き)が入る場合はどういう順序になるでしょうか。

  • あーてぃすと
  • あいでんてぃてぃ

 あるいは濁音や促音などが入ったら、どのような順序でしょうか。

  • いが
  • いかだ
  • たった
  • たつた
  • だった

実はJISの規格がある

 こうしたカナ(などを含む日本語文字列)のソート順には、JIS X 4061「日本語文字列照合順番」という規格が存在します。

 ルールをざっくりいうと、先頭から1文字ずつ比較していきます。文字の比較としては、まずその文字の文字クラスを比較します。文字クラスが同じなら基底文字列を比較します。そして、基底文字列で比較しても最後まで同じだったら、照合属性を含めて再び先頭から比較します。

 と言われても、独自の用語が並んでいてわかりませんね。この用語をそれぞれ説明します。

 文字クラスとは、文字の種類です。JIS X 4061では次表のように決められています。番号が少ないほうが順番が先です。

番号 文字クラス
1 スペース
2 記述記号
3 括弧記号
4 学術記号
5 一般記号
6 単位記号
7 アラビア数字
8 欧字記号
9 ラテンアルファベット
10 仮名
11 漢字
12 げた記号

 次に、基底文字とは、文字の余分な属性を除いた文字です。アルファベットなら、大文字小文字を揃えます。カナであれば、ひらがなかカタカナか、小書き文字(発音や拗音)、濁音・半濁音を揃えます。つまり、「a」と「A」、「あ」と「ア」、「つ」と「っ」、「は」と「ば」と「ぱ」が同じになります。

 この基底文字の扱いでは、長音の扱いも決まっていて、直前の母音として扱われます。つまり「カー」は「カア」と、「オー」は「オオ」として扱われます。「んー」は直前の母音がないので「んん」となります。「んー」は専門書の索引にはあまり出ないと思いますが。

 基底文字で最後の文字まで比較してまったく同じであれば、基底文字にするときに除いた属性を照合して再び先頭から比較します。濁音半濁音については「清音文字 < 濁音文字<半濁音文字」、小書き文字や大文字小文字であれば「長音記号 < 小文字 < 大文字」となります。まあだいたいUnicodeやJISの文字コード順です。

 これらを適用すると、次のような順序になります。これは単純に文字コードでソートした順序とは異なります。

  • あーてぃすと < あいでんてぃてぃ
  • いが < いかだ

RubyでCLDR

 たとえば、Excelでかな文字列をソートすると、JIS X 4061に従うようです。私も前職で10年ちょっと前は、索引のソートにExcelを使っていました。

 ここでは、Excelでなくテキストファイルとバッチ処理による例を、Rubyでやってみます。

 Unicodeコンソーシアムでは、CLDR(Common Locale Data Repository)プロジェクトで、ロケール固有の情報をまとめた、一種のデータベース(XML)を定めてています。CLDRには、数字の桁区切り(カンマかピリオドかなど)や、重さや長さの単位、通貨の単位、月日や日時の表記、数字を言葉で書く方法などが含まれます。

 このCLDRの中に文字列の照合順序も含まれています。

 CLDRをRubyから扱うには、twitter_cldrというライブラリがあります。twitter_cldrはRubyGemsにあるので、gemコマンドやbundleコマンドでインストールできます。

$ gem install twitter_cldr

 twitter_cldrはCLDRのさまざまな機能を備えています。日本語の文字列をJIS X 4061にしたがってソートするには、Array(配列)からLocalizedArrayを作ってソートし、またArrayに戻します。

require 'twitter_cldr'

["あいでんてぃてぃ", "あーてぃすと"].localize(:ja).sort.to_a
#=> ["あーてぃすと", "あいでんてぃてぃ"]

 ただし、表記と読みが組になったデータをソートする機能は、そのままではありません。たとえば、次のようにします。

words = [
  { original: '春', yomi: 'ハル' },
  { original: '夏', yomi: 'ナツ' },
  { original: '秋', yomi: 'アキ' },
  { original: '冬', yomi: 'フユ' },
]

def sort_kana_cldr_by(enum)
  enum.sort_by do |x|
    TwitterCldr::Collation::Collator.new(:ja).get_sort_key(yield(x))
  end
end

sort_kana_cldr_by(words) {|x| x[:yomi]}
# => [{:original=>"秋", :yomi=>"アキ"}, {:original=>"夏", :yomi=>"ナツ"},
#     {:original=>"春", :yomi=>"ハル"}, {:original=>"冬", :yomi=>"フユ"}]

 ただ、twitter-cldr-rbは多機能なぶん、サイズも比較的大きめですし、やはり比較的大きめのライブラリいくつかに依存しています。

sort_kana_jisx4061を作った

 カナのソートに特化したRubyライブラリとしては、sort_kana_jisx4061というのもあります。私が作りました。

 もともとtwitter_cldrを知らずに手元で作っていた索引作成補助スクリプトから、カナのソート機能を切り出してライブラリ化したものです。コードは80行ぐらいの簡単なものです。

 sort_kana_jisx4061も、gemコマンドやbundleコマンドでインストールできます。

$ gem install sort_kana_jisx4061

 使い方はこんな感じです。

require 'sort_kana_jisx4061'

words = [
  { original: '春', yomi: 'ハル' },
  { original: '夏', yomi: 'ナツ' },
  { original: '秋', yomi: 'アキ' },
  { original: '冬', yomi: 'フユ' },
]

sort_kana_jisx4061_by(words) {|x| x[:yomi] }
# => [{:original=>"秋", :yomi=>"アキ"}, {:original=>"夏", :yomi=>"ナツ"},
#     {:original=>"春", :yomi=>"ハル"}, {:original=>"冬", :yomi=>"フユ"}]

 もともと索引作成用なので、読み文字列を含むデータをソートできるようにしています。また、カナや英数字に特化していて、漢字などはソート対象に入ることを想定していません。

 JIS X 4061とちょっと挙動が違うところとしては、単位記号を特別扱いせず一般の記号として扱っている点があります。これは、たとえば“$”はコンピュータ関連では、Unix系OSのプロンプトや、PerlやPHPの変数記号、Haskellの演算子などに使われるので、特別扱いするのはどうかなと思ったからです。でも規格に合わせたほうがいいんですかねえ。

 試しに手持ちの本物の書籍索引データ(“$”などは含まない)を元に、sort_kana_jisx4061とtwitter_cldrとでソートをかけてみたところ、まったく同じ結果になりました。この範囲ではsort_kana_jisx4061に問題はないようです。

 ということで、私の用途にはtwitter_cldrよりsort_kana_jisx4061のほうが使いやすそうです。

「決戦! 設楽原」

 複数の作家が1作ずつ書く「決戦!」シリーズの新作は、長篠の戦い、つまり長篠城をめぐる設楽原の戦いがテーマ。かつての、騎馬軍団 vs. 鉄砲三段撃ちというイメージから、ひところは騎馬軍団も鉄砲三段撃ちも完全否定の方向があったけど、最近はその間をとって馬による乗り込みも鉄砲大量投入もあったということで落ちついているように思う。

 それはさておき、本書では徳川&織田方の4編と武田方の3編が配されている。馬場信春は、主人公にはならないけど、いくつかの話で大活躍する。

 中でも、真田昌輝を主人公とした赤神諒「表裏比興の者たち」が印象的だった。長男の真田信綱でなく同じく剛勇で知られる次男の昌輝をもってきたところがニクい。で、父の策略と兄の武勇を持つ放蕩キャラで、ちょっとヒネていて謀略と生き残りだけを考えながら、結局史実どおり散る様子を描く。あの武藤喜兵衛も出るよ。あと於北さまの娘って清音院さまかな。

取材への道

 これは「ライティングや編集にまつわるあれこれ Advent Calendar 2018」の12月2日の記事です。昨日はモーリさん「体験型の記事などでよく見る「顔写真付きで会話させる」ちょっと古い方法」でした。

 ここで扱うのは、取材記者の準備や心得といった比喩としての“道”ではありません。IT系の記者会見やイベントが開かれる会場に取材に行くための道(ルート)の話をします。テクニックの話というより、ゆるいライフハックとして読んでください。

目黒駅から目黒雅叙園アルコタワーへ

 目黒雅叙園アルコタワー(AWSは移転してしまいましたが)の正面入口は、目黒駅から行人坂を下った目黒川近くにあります。行人坂は急なので上り下りが大変です。

 アルコタワーのアネックス(別館)の入口は、駅にほど近い、行人坂の上にあります。ここからアネックスに入れば、エスカレーターを使って坂を通り、本館の連絡口から入れます。

 ただし、オフィスビルの中を通るので、ご利用は節度を持って。

 OpenStreetMapの地図で両ルートを示します。青い線が通常のルート、赤い線がご紹介するルートです(以下同じ)。線が下手なのはご容赦ください。

目黒駅から目黒雅叙園アルコタワーへ

有楽町線から京葉線に乗り継ぐ

 幕張メッセに都内方面から行く場合、京葉線を使うことが多いと思います。有楽町線から京葉線に乗り換える場合は、路線図的には、終点の新木場まで行くことになります。

 有楽町線の有楽町駅の銀座一丁目側の改札から、東京国際フォーラムをはさんで、京葉線の東京駅の改札があります。そのため、東京国際フォーラムの地下1階の通路を通って、乗り継げます。

 トータルの時間でどちらが早いかまでは計っていません。ただ、京葉線に始発駅から乗れるというメリットはあります。

 また、東京駅から海浜幕張駅であれば、500円を払って特急を使い、1駅30分で行くという手も使えます。特急だとテーブル付き席に座れるので、写真を整理するなどのちょっとした作業もできます。

有楽町線から京葉線に乗り継ぐ

海浜幕張駅から幕張メッセへ

 海浜幕張駅から幕張メッセに行くには、屋根のある通路を通るのが定石だと思います。ただし、イベントのときは人も多いし、屋根があるので少し閉塞感もあります。雨の日は助かりますが。

 そこで、遊歩道「メッセモール」を通るルートを使えば、緑と水に癒やされながら海浜幕張駅と幕張メッセを行き来できます。まあ、歩く距離は変わりませんが。

海浜幕張駅から幕張メッセへ

恵比寿駅からウェスティンホテルへ

 ウェスティンホテルから恵比寿駅へは、恵比寿スカイウォークの動く歩道から、恵比寿ガーデンプレイスを通っていきます。このとき、恵比寿スカイウォークの終点から正面に出ると、信号を渡り、恵比寿ガーデンプレイスを通ります。

 恵比寿スカイウォークの終点から正面に出るかわりに、向かって右に向かうと、地下に下りる階段とエスカレーターがあります。こちらから、恵比寿ガーデンプレイスの地下1階を通ると、ウェスティンホテルの地下1階入口に入れます。信号を避けられるほか、雨の日にも便利です。

恵比寿駅からウェスティンホテルへ

飯田橋サクラパークへ

 飯田橋サクラパークに行くとき、半蔵門線や都営新宿線からは、九段下駅で東西線あたりに乗り換えて飯田橋駅に行くことになります。ただし、飯田橋駅の東西線ホームから飯田橋サクラパークまでは、近いようで、300m以上あります。また、九段下で電車の待ち合わせが悪い場合もあります。

 場合によってですが、九段下駅から歩くという手もあります。1番出口を出て靖国神社方面に向かい、右折して早稲田通りを道なりに進むと、飯田橋サクラパークに着きます。700mぐらいのようです。

飯田橋サクラパークへ

赤羽橋駅からザ・プリンス パークタワー東京へ

 ザ・プリンス パークタワー東京には芝公園駅が近いと思います。ただし、大江戸線であれば赤羽橋駅を使うことになります。

 赤羽橋駅からは、5叉路の信号を越えて、ザ・プリンス パークタワーのホテル宿泊者入口(南)エントランスから入ります。ホテルのエントランスなので、タクシーやバスや送迎車が出入りしやすいようにロータリーになっていて、歩行者は少しだけ回り込むことになります。

 この垣根の1箇所に歩行者が出入りできる小さな口がついています。ここを通れば、ほんの少しですが歩く距離が短縮できます。

赤羽橋駅からザ・プリンス パークタワー東京へ

結び

 ぱっと思いつくネタをいくつかまとめてみました。このほかにも、取材記者それぞれにノウハウがあると思います。公共交通機関の乗り継ぎとか。

 同じルートを繰り返していると飽きるので、気晴らしに新しいルートを開拓してみましょう。

 「ライティングや編集にまつわるあれこれ Advent Calendar 2018」では、まだまだ参加者を募集しています。編集者さん、ライターさん、どしどしご参加ください。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad