増井俊之の「界面潮流」

「界面」=「インタフェース」。ユーザインタフェース研究の第一人者が、ユビキタス社会やインターフェース技術の動向を読み解く。

第20回 日本語でおk

2008年3月 3日

(これまでの増井俊之の「界面潮流」はこちら)

DOS(プロンプト)でもWindowsでもUnixでも英語のコマンドラインが利用されていますし、ほとんどの計算機プログラムやコマンドで“print”のような英単語や英語的な語順が使われています。たとえば、ある値の平方根を計算して表示するプログラムをRubyで書くと

print sqrt(X)

のようになります。Rubyに限らずJavaでもCでも数式や表示の指示に関しては似たような形式が使われることが多いですが、これは

“display the square root of X”

のような英文をそのままの語順で計算機言語に変換した形式になっていますし、“print”や“square”のような英単語がほぼそのままプログラミング言語で利用されていますから、この例では英語表現とプログラム表現はかなり類似しているといえます。

DOSやUnixのコマンドラインでもやはり同様の語順が利用されています。たとえばabc.txtというテキストファイルの中身を並び替えて表示したい場合、Unixではsortというコマンドを使って

% sort abc.txt

のようなコマンドを発行します。この表現も、

“sort (the contents of) abc.txt”

のような英文表記と似た語順と用語が使われていますから、このコマンドは英語的思考にもとづいているといえるでしょう。

一方、このような処理を日本語で表現する場合は

“xの平方根を表示する”
“abc.txtの内容をソートする”

のように全く逆の語順になってしまうわけですが、英語的発想にもとづいたシステム上でプログラムを作成するときはこの順番で考えず、英語の場合と同じように、目的語より先に動詞を持ってくる思考を行なう必要があります。

■連続した処理の表現

単純な計算や処理を行なう場合はこのような素直な英語的発想でプログラムを書けばいいのですが、いくつかの処理が連続する場合は英語的な語順だとうまくいかない場合があります。前述の式をもう少し複雑にして、平方根の逆数を計算して表示したい場合は

print inv(sqrt(x))

のような式を使うのが普通ですが、処理がさらに連続する場合、後で実行する処理ほど前に記述しなければならないという問題が理解を困難にしてしまうことがあります。平方根を計算してからその逆数を計算して表示するという順番なのに、全く逆の順番でプログラムを書かなければならないというのは、英語的かもしれませんが合理的ではありません。

一方、Unixでは処理をする順番にコマンドを右に並べていくことによって連続的な処理を実行させることが可能です。たとえば、あるテキストファイルのコメント行を削除してから並び替えたい場合、ファイルの中身を出力する“cat”コマンド及びパタンにマッチする部分だけを抽出する“grep”コマンドを利用して

% cat abc.txt | grep -v '^#' | sort

のように、処理をひとつずつ“|”で区切って右に並べられるようになっています。この表現法の場合、処理の順番とコマンド並びの順番は完全に一致しているので、実行の順番について混乱することはありません。

Rubyのようなプログラム言語でも、前述のような関数表記を利用するかわりに、処理をピリオド記号で連結する表記を使うことによって、Unixのコマンドラインと同様に、処理を順番に並べたプログラムを書くことができます。たとえば前述のプログラムの場合は

X.sqrt.inv.print

のように表現することが可能です。実行内容は全く同じですが、このように表記する場合は処理の順番とプログラムの並びが一致するので、print inv(sqrt(x))のような表現よりは理解しやすいと思われます。

■日本語によるプログラム表現

このように、処理の順番とプログラム要素の並びはなるべく一致していることが望ましいと思われますが、前述のような式は英語では簡単に表現することができません。あえて順番通りに記述しようとすると

calculate the square root of x, calculate the reciprocal of the result, and print the result

のようになってしまいますが、これはあまり明解な文章とはいえないでしょう。一方、日本語であれば

Xの平方根の逆数を印刷する

という具合に、処理の流れとプログラムの形式と日本語表現を同じ順番で簡潔に記述することができます。このように、実は日本語は計算機処理の記述にかなり適した言語であるということができそうです。

■日本語で本棚演算

第11回の記事で、本棚.orgに投稿されたデータを利用した「本棚演算」というデータマイニング手法について紹介しました。記事中では例として

  • 増井の本棚に含まれる本のリストを計算
  • その本リストに近い本を持つ本棚のリストを計算
  • そのような本棚の中に含まれている本を計算する

のような演算を紹介していますが、これは本棚や本の集合に対する演算を並べたものですから、日本語表記をほとんどそのまま計算機表現に変換することができます。たとえばRubyで表現すると、最初の例は

"増井".bookshelf.books

のような表記を使うことができますし、3行目まで連結したものは

"増井".shelves.books.similarbooks.shelves.books

のようなプログラムで表現できます。

このような性質を利用すると、本棚演算のようなちょっと面倒な計算についても、日本語文を作るのと同じ要領で計算式を作ることができるようになります。下の例では、「増井の本棚に内容が近い本棚に含まれる本のリストを計算する」という作業を日本語で表現することにより、それをダイレクトに計算機プログラムに変換して本棚演算を実行しています。

日本語表現では、計算結果を表現する名詞や計算実行を表現する動詞を自然に文末に配置することができるので、こういった連続処理をうまく連結して、常に日本語として正しい計算式を作ることができます。以下の例では、「増井の本棚」に類似する本棚(似た本を多く含む本棚)に登録されている本を集めて登録の多いものから順に表示するというプログラムを、日本語表現を並べることにことによって作成しています。

enzan1.png

日本語で簡単にプログラムを作れたらいいなぁと思うのは日本人としては自然なことであり、これまで様々な「日本語プログラミング」が提案されてきましたが、広く使われているものはほとんど無いようです。

日本語プログラミングといっても、“print”のようなキーワードを日本語にしただけではあまりメリットが感じられませんが、文の構造と計算機処理の流れを一致させやすいといった日本語特有の性質を充分活用すれば、普通の英語的なプログラミングよりも良い結果が得られる可能性があるでしょう。汎用プログラミング言語として日本語を使うことができなくても、本棚演算のような特定領域での利用には明らかに有用ですから、活用法を検討する価値はありそうです。

フィードを登録する

前の記事

次の記事

増井俊之の「界面潮流」

プロフィール

1959年生まれ。ユーザインタフェース研究。POBox、QuickML、本棚.orgなどのシステムを開発。ソニーコンピュータサイエンス研究所、産業技術総合研究所、Apple Inc.など勤務を経て現在慶應義塾大学教授。著書に『インターフェイスの街角』などがある。

過去の記事

月間アーカイブ

ブログ一覧

  • Autopia
  • Compiler
  • Cut up Mac
  • Danger Room
  • Epicenter
  • from Wired Blogs
  • Gadget Lab
  • Intel International Science and Engineering Fair (Intel ISEF)
  • IPTVビジネスはどのようにデザインされるか
  • Listening Post
  • Web2.0時代の情報発信を考える
  • Wired Science
  • yah-manの「イマ、ウェブ、デザイン、セカイ」
  • yomoyomoの「情報共有の未来」
  • それは現場で起きている。
  • ガリレオの「Wired翻訳裏話」
  • サービス工学で未来を創る
  • デザイン・テクノロジーによるサステナビリティの実現
  • デザイン・ビジュアライゼーションが変えるマーケティング・ワークフロー
  • マイケル・カネロスの「海外グリーンテック事情」
  • 佐々木俊尚の「ウィキノミクスモデルを追う」
  • 佐々木俊尚の「電脳ダイバーシティ」
  • 合原亮一の「科学と技術の将来展望」
  • 合原亮一の「電脳自然生活」
  • 増井俊之×LogMeIn
  • 増井俊之の「界面潮流」
  • 大谷和利の「General Gadgets」
  • 小山敦史の「食と人のチカラ」
  • 小島寛之の「環境と経済と幸福の関係」
  • 小田中直樹の「バック・トゥ・ザ・フューチャー」
  • 小田切博の「キャラクターのランドスケープ」
  • 山路達也の「エコ技術研究者に訊く」
  • 後藤和貴の「ウェブモンキーウォッチ」
  • 携帯大学 web分校
  • 木暮祐一の「ケータイ開国論II」
  • 木暮祐一の「ケータイ開国論」
  • 松浦晋也の「モビリティ・ビジョン」
  • 歌田明弘の「ネットと広告経済の行方」
  • 清田辰明の「Weekly image from flickr」
  • 渡辺保史の「コミュニケーションデザインの未来」
  • 濱野智史の「情報環境研究ノート」
  • 白田秀彰の「現実デバッグ」
  • 白田秀彰の「網言録」
  • 石井孝明の「温暖化とケイザイをめぐって」
  • 竹田茂の「構成的アプローチ」
  • 織田浩一の「ソーシャルメディアと広告テクノロジー」
  • 荒川曜子の「それはWeb調査から始まった」
  • 藤井敏彦の「CSRの本質」
  • 藤倉良の「冷静に考える環境問題」
  • 藤元健太郎の「フロントライン・ビズ」
  • 藤田郁雄の「サバイバル・インベストメント」
  • 西堀弥恵の「テクノロジーがもたらす快適な暮らし」
  • 関裕司の「サーチ・リテラシー」
  • 飯田泰之の「ソーシャル・サイエンス・ハック!」
  • 高森郁哉の「ArtとTechの明日が見たい」