研究ブログ
コードの神話
コードと識別子(ID)はどちらもなんらかの事象・事物を識別するために用意する一意の記号である。抽象的な事物につけるときはコード、具体的な事物なつけるときは識別子(あるいは単に番号)というようである。コードは相対的には量が少なく固定的で、識別子は量が多く動的(追加や削除が多く行われる)ものとされる。コードはコード間で関係をもつことがある(たとえば上位コード下位コード関係)が、識別子はない。
ちなみにIMI共通語彙基盤では、コードとIDという別のクラスであるが、その違いは上の関係の有無と表記の有無である。
ただ、一般用語としてのコードと識別子(番号)は必ずしも上のような原則に則っているわけではなく、混在している。たとえば、郵便番号は番号といっているがコードとみたほうが適切である。一方、電話番号は識別子である。JANコードはコードと名打っているが内容としては識別子である。
さて主にコードに関してであるが、歴史は古く、図書館分類のようにコンピュータ導入以前から使われていたものもあるが、いまあるような多種多様なコードの出現はコンピュータ利用と相まって始まった。コンピュータの出現とともに使われてきたという経緯があるため、そのときどきのコンピュータの能力に依存した形でコードが決められてきた。コンピュータの能力が変化すればコードのあり方も変わるのである。そこで古いコードと新しいコードではその作り方が変わってきている。にもかかわらず古いコードの考え方が残っているところが問題である。これあ私が呼ぶところのコードの神話である。ではその神話を順にみていこう。
(1)コードは固定長であるべきである(半分正しく、半分間違っている)
コードの対象の総量は概ね固定されていることが多いので、その総量を予め見越せは、それにあった固定長の文字列を与えることは理にかなっている。ただ、固定長であることが必須ではない。識別子のほうはとくにそうで、総量が予想つかない場合や使い勝手を考えた時、可変長のほうが理にかなっていることがある。たとえばDOI(Digital Object Identifier)は可変長で、短いものもあれば長いものもある。また、長さもあまり無理してぎりぎりにすることはない(これも神話)。むしろ余裕があったほうがいいことがある。これも識別子の例で恐縮だが、ORCID (Open Researcher and Contributor Identifier)は研究者に対するIDだが、16桁の数字からなる。研究者が京単位までいるとは思えないが、これは別の人に対するIDであるISNIとの相互互換を図るためにこの桁数にしている。
(2)コードは構造的につくるべきである
構造的なコードとは、たとえば1桁目はこの分類を指し、2-3桁目はあの分類を指すといった、コードの文字列の中に構造があるようなコードのことである。先に挙げたJANコードやISBNは最初の何桁は事業者・出版社、次の何桁は商品番号を指すように桁ごとに分けられている。あるいは生鮮食品流通でつかわれるベジフルコードではもっと細かく大分類1桁、中分類3桁、品名2桁の計6桁のようにつくっていある。
これらは一見合理的にみえるが、拡張性や変更可能性がない、使いづらいコードなのである。たとえば一部の分類が想定される桁数を超えた場合、上位の桁を変更して無理やり収納せざるをえない。そうすると想定した構造が壊れてしまう。たとえば単一の事業者・出版社・中分類が複数の番号(文字列)をつかうことが上の例でもおこっている。
そもそもなんでこんな形式がよく使われきたかというと、一つはコンピュータの処理の能力であり、もうひとつは人間可読性からである。
確かにコンピュータの処理能力が乏しい時はコードの一部を使うだけで処理可能であるコードは便利である。今はそのメリットはほとんどない。むしろ分けて処理する方が面倒である。人間可動性とは人が読んでわかりやすいということである。確かにコードの文字列を見るだけで、コンピュータを使わずに内容の一部がわかるというのは人間にとってもありがたい。しかし、いまやコードを人間が読むというのは現実的な利用法とはいえない。むしろコンピュータにまず読み取らせるというが普通である。これが制約になるというはいまや不合理である。
ではどうしたらよいかといえば、コードに意味をもたせず、単に文字列(数字列)で表現すればいい。そして、もしそのコードの意味が知りたければ、そのコードに結び付けられた情報を別途データベースに問い合わせて知ればよい。データベースの構築が面倒と思うかもしれないが、そもそも現代のコードはコンピュータ利用が前提であり、そのために元になるデータベース構築やそれへの問い合わせは必須である。
(3)コードはコンパクトのほうがいい
なるべくコードのリストの長さが短いほうがいいコードだということである。これも人間可読性からくる不必要な制約である。確かに人間が読むのなら、何百ページのコード表はいやかもしれない。が、コンピュータにとってはなんら問題ない。むしろ必要なコードが用意されず、本来分けるべきものが一つのコードに押し込められてしまう状態のほうが困ったコードである。やたら「その他」項目が多いコードリストのその典型である。
(4)最新版のコードさえきちっと作っておけば、過去のコードは関係ない
一部のコードリスト(コード表)は毎年といった具合に改訂される。必要であればコードリストが改訂されるのは致し方ない。しかし、たとえ今後必要なはこの改訂されたコードリスト(コード表)だけだとしても、以前のコードとの関係性は必ず明示されなければならないし、ましては過去のコード(数字列や文字列)の再利用はもってのほかである。いまや、すべての情報は蓄積される。そのとき過去の情報は過去のコードリストを使って表現されている。この過去の情報を理解するのはいまのコードリストとの関係を知らないといけない。市区町村コードは合併等によって市区町村がかわればコードもかわる。幸いなことに市区町村コードはほとんど再利用がされていないので、コードが間違った対象に解釈されることはない。しかし、過去の文書で使われいる市区町村コードが指すものが何かはそのときの市区町村コードが何をさしているか(たとえば合併前の市を指しているのか後なのか)はコードの履歴を管理して、そこから導けるようにしないといけないというわけである。文部科学省の科学研究費補助金では分野等の分類表というコードリストを用意しているが、これは時々(2年に一度程度)改訂される。これはコードそのものも再利用されるので、あるコードは何を指しているのかは、何年次のコードリストかとペアにしないとわからないという使いづらいコードになってしまっている。
全体をまとめると、設計指針としてはこんぐらいだろうか。
(1)人に読ませることは考えるな。コンピュータに読ませることだけを考えよ。
(2)コンピュータ利用を前提に設計せよ。コンピュータの能力が発揮しやすい形式にせよ。また、データベース利用を前提に設計せよ。
(3)過去との関係も考えよ。
「集合知とはなにか」 6. まとめ
(承前)
6. まとめ
集合知、ことにインターネットを利用した集合知は、これまでのない知の発現の仕方であった。これからもより多くの人がインターネットにつながり、さらに多様な使い方をするつれ、様々な形で集合知は発現するであろう。とくに大規模なデータ収集と様々なアルゴリズムによる処理との組み合わせは、今後もこれまでにない集合知の作り出すことが可能になるだろう。ただし、集合知は万能薬ではないし、ある種の条件下でしたうまく働かない。そういう点を理解しておくとは肝要である。
* 脚注
(おしまい)
「集合知とはなにか」 5. 集合知に対する誤解
(承前)
5. 集合知に対する誤解
(つづく)
「集合知とはなにか」 4. 集合知のデザイン
(承前)
4. 集合知のデザイン
「集合知とはなにか」 3. 集合知のタイプ
(承前)
3. 集合知のタイプ
「集合知とはなにか」 2. 集合知の条件
(承前)
2. 集合知の条件
(つづく)
「集合知とはなにか」 1. 群盲象を評す(改訂版)
とある本の1章のために「集合知とはなにか」という小論を書いています。
以下はその草稿です。見直しをしていないので相当文章が汚いですが、まずは初稿ということで御容赦ください。
間違いの指摘、コメント、批評等があればぜひお願いします。
*******
追加コメント:集合知の導入あたりでいろいろご指摘を受けました。それを受けて第1章を中心に改訂しました。
第1章では第2段落と最終段落を主に改訂しました(改訂前の文章はコメントに残しておきます)。
*******
1. 群盲象を評す
「群盲象を評す」とは仏教説話にも出てくる話で、知っている人も多いだろう。おおよそこんな話である。多くの盲人が象を触ってそれが何であるかを知ろうとするが、ある人は柱のようだといい、ある人は壁のようだといい、触った場所によってまったく異なる意見がでてまとまらない(図1参照)。これはよく凡人は大人物や大事業を理解できない喩え、すなわち衆愚の喩えとして使うことが多い。この話はインドが原典で、意味するところは実は一意ではない。別の解釈では、多くの人が多様な情報を持ち寄り、それよって全体像が知ることができるという風に説明される。
後者の解釈は集合知のよい例になっている。多くの人が参画することで、一人一人が出来うること以上のことが出来るというわけである。別の形の集合知としては、秀でた少数の人に任せるより単に多数の人を集めて総合した方がうまくいくというものがある。あるいは堅牢な統率システムで集団を制御するより、各自に任せた方がうまくいうのもある。人は集まることで、全体として賢い振る舞いができる。これが集合知である。
ただ、この一つの話が賢さの喩えにも愚かさの喩えにもなるということが示唆するように、単に多数の人間が集まれば、無条件にそのようになるわけではない。そこがポイントである。実際、我々はどちらかというと集団の愚かさのほうをよく知っている。パニック時の暴動やバブルとその崩壊、民主主義の中での独裁政権の成立など、枚挙にいとまがない。一方の集団の賢さは少なくても近年になるまでは目立つような事象はなかった。近年、集団の賢さはインターネット普及につれて注目されるようになった。これは人の行動が変わったのではなくて、インターネットによって、後の述べるような集合知発現の条件が揃ってきて社会のいたるところで顕著になったということである。
集合知についてはジェームズ・スロウィッキーの本[i]で一般によく知られるようになった。彼は様々な分野で多数の人間が参加することで全体として賢さが現れることをまとめてwisdom of crowds (群衆の賢さ)と称した。集団による知性についてはこれまでもcollective intelligence(集団的知性)と呼ばれて、生物学、社会学、人工知能などの様々な分野で研究されてきた。ここでは集合知という言葉を両者を包含する意味で用いる[ii]。
[i] James Surowiecki : The Wisdom of Crowds: Why the Many Are SmarterThan the Few and How Collective Wisdom Shapes Business, Economies, Societiesand Nations, Anchor (2005) 邦訳:ジェームズ・スロウィッキー:「みんなの意見」は案外正しい、小高尚子訳、角川書店(2006)
[ii]スロウィッキーの集団の賢さは現象を包括して呼んでおり、一方集合的知性についてはそれぞれのアプローチで定義や原理、振る舞いが議論されている。本章では集合知の原理などに踏み込まず、現象としての集合知を紹介する。原理などの議論は後章を参照されたい。
モノとヒトの関係
「あなたは、あなたの選んだもので出来ている」と「モノのSNS」のブームへの洞察。
http://sakainaoki.blogspot.jp/2011/09/sns.html?spref=tw
ここではモノのSNS、http://sumally.com/ なるものが紹介されている。
その考察において、
日産の軽 MOCO「モコを選ぶ人」篇 (2007.10-)CM
の中の
「あなたは、あなたが選んだものでできている。」
というキャッチが取り上げられ、モノとヒトとの関係が語られている。
これをみて、ちょうどそのとき、自分もそんなことを考えていたな、ということを思い出した。
http://www.race.u-tokyo.ac.jp/vaci/sympo-H19-1130-j.html
> ...
> 13:10-13:40「人工物の価値と人,社会」武田 英明
http://www.race.u-tokyo.ac.jp/vaci/data/sympo-H19-1130-takeda.pdf
この中で、最後から4枚目なんかは、まさにこのキャッチの模式化。
端的に言えば、モノとヒトとの関係が主客逆転している、じゃあこの状況下でのモノづくりはなんなの?という問いかけです。
(その問いかけに対する回答は
http://www.race.u-tokyo.ac.jp/vaci/sympo-H22-0323-j.html
で部分的に試みた)
そのちょっとした実装ということで
木村諒史, 福原知宏, 大向一輝, 武田英明: 携帯電話とバーコードを用いた実世界における人や物の関係ネットワークの分析, 人工知能学会全国大会(第22回)論文集, No. 2E2-01, 旭川.
http://www-kasm.nii.ac.jp/papers/takeda/08/kimura08jsai.pdf
なんてものをつくってみたこともあった。
まあ実装は当時のあるだけなのでいかにもちゃちだけど、やりたいことはまさに、モノのSNS。
でもまあ、その経験からするとヒトのSNSのアナロジーではモノのSNSはうまくいかない。それはモノの世界の量や多様性はヒトの世界とはまったく違う(例えばモノのオントロジー)。発散するか、うまくいってもある特定のコミュに収斂するだけでしょう。もっと別の仕組みあるいは別の切り口が必要でしょう。
でもこういうことをみんなが考えるようになっているですね。元人工物工学メンバーとしてはちょっと希望を感じます。
International Workshop on Contributorship and Scholarly Attribution
http://projects.iq.harvard.edu/attribution_workshop
これは、いわばWeb時代の論文の著者を考えるワークショップ。研究の著者あるいは貢献者とは何か?どうクレジットして、どう利用されるべきか。いくつかの研究分野、いくつかの関係分野(出版等)の人を集めて、お互いに情報交換をして、問題を共有しようというものです。
*********
まず一番の問題分野である実験物理から。
加速器物理における論文著者の変遷を語る。
あとグループ著者の問題
**************
Issues of authorship practice and policy in experimental science research labs, Cassandra Extavour
実験生物学
*********************************************
*********************************************
Authorship: the journal perspective, Christine Laine, 出版社(医学系)
ロールの明示化
*********************************************
Authorship: a provostial perspective (deeply informed by scholar, selection/funding committee, and editorial board perspectives), Judith Singer, 学長の立場から
***********************************************
関係する活動のパネル
** PLoS: Big science and medicine and the attribution of authorship, Ginny Barbour,
- ガイドライン The First COPE guideline in 2003
しかし、
- authorshipはインフレーション中
- もはやauthorshipは無意味化している
-- ゲームのような様相
-- とても時間を食う
(武田注:因みにこの発表で取り上げられた著者沢山の例は
http://www.ncbi.nlm.nih.gov/pubmed/22463517
475人+Coroprate author (CDF Collaboration) なる著者。後者は前述のグループ著者に相当するものだと思う。
)
** Why are the attribution and citation of scientific data important? (Introduction to the BRDI/CODATA report) Christine Borgman, Professor and Presidential Chair in Information Studies, UCLA
** FundRef: a new project from a publisher-funding agency collaboration to standardize the collection and display of funding agency information in scholarly publications, Fred Dylla, Executive Director and CEO, American Institute of Physics
http://projects.iq.harvard.edu/attribution_workshop/files/fundref_overview_-_051112.pdf
- FundRef: 研究の資金源を論文に報告する標準的方法をよういいするパイロットプロジェクト(CrossRefが援助)
contributionのタイプを収集
**************************
この後は、小グループに分かれて議論
**************************
感想:
たぶん、こんなワークショップは世界で最初なんではないだろうか。
みんな困っている。でもどう困っているかは実は結構研究分野や関連分野で違う。私にとっても、たとえば実験物理ではあるときから装置を作った人や操作した人など工学系もいれるようになり、さらにアルファベット順が必須になっているとか、医学系では著者のガイドラインがあって、単に臨床実験に参加した人は著者じゃなくて謝辞となっていると、分野ごとの違いを知るのは新鮮。
で解決はあるのかというと、それは単純ではなさそう。映画とのタイトルロールのよるに、役割を記して書いていくのが一法であろうが(実際、会場では暗にそういうコンセンサスがあったような気がする)、質疑にあったように研究者の役割は映画制作の役割のように単純化できないところもある。またそれと業績評価もリンクしているだけにややこしい。
この会議はまずは問題を共有するという点では成功したのではないかと思う。
(以上)
アルゴリズムの呪縛
ちょっと前にデータの公開や共有に関する活動がなかなか評価されないということをtwitterに書いた。そのココロを語ろうと思う。
研究者というのは多くの場合、一定のディシプリンの元での教育を受け、そのディシプリンに基づいて研究活動をしている。ディシプリンはその分野の発展させる礎であると同時にその分野での研究を評価する基本原理でもある。
私は今でこそコンピュータサイエンスの研究者でございという顔をしているが、元々は(広義の)機械工学の教育を受けてきた。機械工学のディシプリンと言えば、「力学」(機械力学、材料力学、熱力学、流体力学)である。物理世界にいる限り、どんなものの設計・製造においても絶対的には力学からは離れられない。なので問題は結局最後は力学に帰着するというのは、機械工学者の頭にたたき込まれている。もちろん、事実の認識としては正しいが、事態の認識としては必ずしも正しくない。所与の問題の本質が力学問題にあるとは限らない。 現在の機械設計では人間や利用環境に本質であることもしばしばである。というものの、機械工学者はやっぱり困ったときはそのディシプリンである力学に立ち返る。いやもっといえば、困ったときは力学に頼ることで、自らの尊厳を維持している。この意味で、いわば機械工学者は力学教徒である。
コンピュータサイエンスのディシプリンがなにかといえば、アルゴリズムであろう。
最終的にコンピュータで実現する限り、どんなシステム・プログラムにおいても根本的にはアルゴリズムからは離れられない。もちろん、機械工学のときと同じで、アルゴリズムが問題の本質であるかは限らない。ヒューマンインタラクションなどもっと別のところに本質がある問題も多い。また、一方で現代の高度なプログラミング技術や分析技術においてアルゴリズムは表面的には現れないことも多々である。しかし、 アルゴリズムがこの分野の共通の知識であり、原理であることは変わりない。こまったときはここに立ち戻り頼る、この点においてコンピュータサイエンティストはアルゴリズム教徒である。
コンピュータが関わる世界は急速に広がっている。コンピュータサイエンスはコンピュータを作って使わせる立場であった。それはコンピュータを創造し利用を普及するという点においては正しかった。しかし、いまやWebに代表されるように世界のあらゆる情報がデジタル化してコンピュータで処理されるようになった。コンピュータはデジタル化された情報の媒体としての役割になっている。媒体側であるコンピュータの原理も重要であるが、その内容側、コンテンツの原理も重要である。この点においては、いまディシプリンの変更が迫られている。
今、大規模データ処理やコンテンツ処理、ソーシャルメディアなど、データやコンテンツに関する研究がコンピュータサイエンスで盛んに行われているようになっている。しかし、意識としてはアプライド・コンピュータサイエンス(応用計算機科学)であるようにみえる。極言すれば、コンピュータサイエンスの原理を様々なコンテンツに適用だけである。それは多分言いすぎで、コンテンツの中から新たなアルゴリズムを発見することを行っている研究というのがフェアであろう。この中からネットワークサイエンスのような新しい分野が生まれ出ることもある。しかし、これも実は扱いやすいところだけを抜き出しし、あとを捨てているという点においては、コンテンツのもつ問題を全面的に引き受けているわけではない。コンテンツにはコンテンツの問題があり、それを正面から扱うには違うディシプリンが必要である。
データ科学、コンテンツ科学というものがほんとにあるのか、あるとするならばそのディシプリンは何か?正直言って私にもまだ分からない。しかし、コンピュータサイエンスのディシプリンとは違うものではあるらしい。それを探求中のいうのが現状である。
私のグループでは今、コツコツと様々な分野のデータをLinked Data化している。その前処理やデータ処理、応用においてはいわゆるコンピュータサイエンスの課題もあるが、コンピュータサイエンスサイエンスの課題としてはさほど難しいものではない。実際中心的なデータ処理はほとんど解決済みである。むしろ我々の知りたいのは、こういった様々な分野のデータをLinked Data化するときにみえてくるデータ側、コンテンツ側の性質なり原理なりを知りたいのである。私は一方でソーシャルメディアの情報にも興味がある。この二つは一見別の問題にみえるが、コンテンツ側の原理を知りたいという点においては同じ探求の別側面だと思っている。
しかし、残念ながらコンピュータサイエンスのディシプリンからみれば、新しいアルゴリズムを探求しないような研究は評価されずらい。しかも、新しいアルゴリズムを結果として発見できないのではなくて、初めからしないといっているのだからタチが悪い。一方で新しいディシプリンに基づいているわけでもない。厳しいところである。現状をフランクにいえば、情報の「博物学」といったところだろう。博物学はある種のプレサイエンスである。そこから脱皮できるか、それは今後の活動次第だろう。
この小論では、データ科学、コンテンツ科学の研究は既存のコンピュータサイエンスのディシプリンでは難しいことを述べた。ことにコンピュータサイエンスの正しい教育を受けた研究者は正しくディシプリンを習得しているが故により難しいかもしれない。私はたまたまそういう人間でないだけに気づきやすかったのだろう。でも、気づけば意外に簡単かもしれない。また、コンテンツ側の人間、各分野の研究者のほうがより取り組みやすいともいえる。そういう研究者がどんどん参入するすることが、この分野を飛躍させることができると重要な鍵であろう。