casualにrubyをパースしてみたい

42
とちぎRuby会議05 casualにRubyを パースしてみたい Shinya Hayakawa 2013/09/21()

Upload: shinya-hayakawa

Post on 31-May-2015

736 views

Category:

Technology


3 download

DESCRIPTION

とちぎRuby会議05での発表資料 http://regional.rubykaigi.org/tochigi05

TRANSCRIPT

Page 1: casualにRubyをパースしてみたい

とちぎRuby会議05

casualにRubyをパースしてみたい

Shinya Hayakawa2013/09/21(土)

Page 2: casualにRubyをパースしてみたい

概要

•“思い遣りプログラミング”

•自然言語すごい

•Rubyをパースする試み

•新しいプログラミング言語

Page 3: casualにRubyをパースしてみたい

Pascal思いやりプログラミング

•‘77刊

Page 4: casualにRubyをパースしてみたい

思いやりとは?

•読みやすいプログラムを書くこと

•使いやすいプログラムを書くこと

Page 5: casualにRubyをパースしてみたい

誰を思いやる?

•プログラムを使う人

•プログラムを読む人

•自分

Page 6: casualにRubyをパースしてみたい

どうやって?•意味を表せ

•構造を表せ

•変数の目的はハッキリと

•メッセージは平易なことばで

・・・・・・

・・・

Page 7: casualにRubyをパースしてみたい

プログラマが知るべき97のこと

82 他者への思いやりを意識したコーディング

Page 8: casualにRubyをパースしてみたい

他人の存在を意識する

•必ずしも良いコード

クリーンなコード、だけとは限らない

Page 9: casualにRubyをパースしてみたい

他人の存在を意識する

•コードに触れた誰もが

触れる前より良い人間

良いプログラマになれる

Page 10: casualにRubyをパースしてみたい

コードに触れた誰もが触れる前より良い人間良いプログラマになれる

Page 11: casualにRubyをパースしてみたい

プログラミング言語とは

•コンピュータに命令を

伝えるための道具

Page 12: casualにRubyをパースしてみたい

プログラミング言語

•伝えることばかり意識すぎると、自己主張に偏ったコードになりがち

Page 13: casualにRubyをパースしてみたい

「思い遣る」

•思いを馳せる

•思いを相手の心に遣わす

•気持ちを察する

山下 景子著 『日本人の心を伝える 思いやりの日本語』より

Page 14: casualにRubyをパースしてみたい

なぜ思いやるか?

•プログラマは必ずしも、伝えたいことがあるからコードを書くわけでは無い

(code golf, quiz, puzzle, esolang, ...)

Page 15: casualにRubyをパースしてみたい

なぜ思いやるか?

•意味のないコードを交わして得る安心感、満足感

•ただ、つながっていたかっただけ…

Page 16: casualにRubyをパースしてみたい

なぜ思いやるか?

•何かを伝えようと書くことよりも、つながっていたいという気持ちが大切

Page 17: casualにRubyをパースしてみたい

誰とつながりたい?

•コンピュータ?

•e.g. 効率性

•顧客、ユーザ?

•e.g. 「直接的な写像」

•プログラマ?

Page 18: casualにRubyをパースしてみたい

より深くつながりたい

Page 19: casualにRubyをパースしてみたい

よりよいつながりを求めて

•情緒力

•人の喜びを自分の喜びとして体得できる心情

•人間の深みを表すコードの世界

Page 20: casualにRubyをパースしてみたい

参考

•大島 潔 著

『思い出して使ってみたい美しい日本語』

•岡潔 著 『春宵十話』

Page 21: casualにRubyをパースしてみたい

「命令を伝えるための道具」↓

「つながりを深めるための道具」

プログラミング言語

Page 22: casualにRubyをパースしてみたい

自然言語すごい

•結果目的語

•時間による空間叙述

•コンテキストの圧縮

Page 23: casualにRubyをパースしてみたい

結果目的語

•湯を沸かす

•ご飯を炊く

•彼女ほしい

Page 24: casualにRubyをパースしてみたい

挽く

•麦をひく

•臼をひく

•粉をひく

森田良行著 『日本語質問箱』より

Page 25: casualにRubyをパースしてみたい

時間による空間叙述

•空間表現

•「長い」「短い」…

•時間表現

•「始まる」「終わる」…山梨正明著 『認知文法論』より

Page 26: casualにRubyをパースしてみたい

時間による空間叙述

•空間表現と時間表現は、比喩的な拡張に基づいて交わる

Page 27: casualにRubyをパースしてみたい

時間による空間叙述

•雨の奥から松らしいものが、ちょくちょく顔を出す

『草枕』

•頻度の副詞により空間世界が叙述される

Page 28: casualにRubyをパースしてみたい

Rubyをパースする試み

•自然言語の表現力をプログラミングに取り入れたい

•パースは困難

•とりあえずRuby?

Page 29: casualにRubyをパースしてみたい

どうやって?

•Rubyコーパス

•教師なし学習

•コメント、予約語は知らない状態から

Page 30: casualにRubyをパースしてみたい

参考•入門 自然言語処理

•入門 機械学習

•形式言語の理論

•コーパス分析に基づく認知言語学的構文研究

Page 31: casualにRubyをパースしてみたい

新しいプログラミング言語を妄想する

•自然言語のような表現が可能なプログラミング言語

•高コンテキスト言語

Page 32: casualにRubyをパースしてみたい

省略のグラデーション

•「彼は女をゆさぶりました。呼びました。抱きました。徒労でした。彼はワッと泣きふしました。」坂口安吾『桜の森の満開の下』

中村 明著 『文学の名表現を味わう』より

Page 33: casualにRubyをパースしてみたい

省略のグラデーション

•「彼は女をゆさぶって、呼んだり抱いたりしましたが、徒労だったので、ワッと泣きふしました」

中村 明著 『文学の名表現を味わう』より

Page 34: casualにRubyをパースしてみたい

省略のグラデーション

•「彼は女をゆさぶりました。そして、呼びました。それから、抱きました。しかし、徒労でした。それで、ワッと泣きふしました。」

中村 明著 『文学の名表現を味わう』より

Page 35: casualにRubyをパースしてみたい

省略のグラデーション

•接続詞でつなぐと一連の流れが関連つく

•省略で緊迫感を出す

•省略されても構造は保たれている

Page 36: casualにRubyをパースしてみたい

妄想code

•例外は投げてくれるな的な表現?

cf. File.open

ファイルがありました。開きました。読みました。YAMLでした。…

Page 37: casualにRubyをパースしてみたい

「無名の質」

•自分が最も生き生きとする瞬間や状況を求める

•「言葉にできない何か」を実現する

•≒情緒力?

Page 38: casualにRubyをパースしてみたい

〈言語の本質〉

•言葉には“理想文”を作り出す力はない

•本質的に“意味確定度不十分”なもの

今井邦彦著 『語用論への招待』より

Page 39: casualにRubyをパースしてみたい

〈言語の本質〉

•他人の心が(ある程度)読めるからこそ思いやりを示せる

•聞き手の推論能力に依存

•言語は「不完全」でいられる今井邦彦著 『語用論への招待』より

Page 40: casualにRubyをパースしてみたい

まとめ

•「無名の質」を追い求めるのに最適なプログラミング言語をつくりたい

•「不完全さ」が必要

Page 41: casualにRubyをパースしてみたい

巨人の肩

•East Ventures Engineer Accelerator

http://engineer.east.vc

Page 42: casualにRubyをパースしてみたい

つづきは@tsurumau