SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
コンピュータのための
新たな表現の追求
Vol.01 Nov/28/2014
Satoshi Egi (江木 聡志)
Rakuten Institute of Technology
http://rit.rakuten.co.jp/
- プログラミング言語Egison開発史-
2
自己紹介	
Name	
 江木 聡志
Association	
 楽天株式会社 楽天技術研究所	
Education	
 東京大学大学院情報理工学系研究科コンピュータサ
イエンス専攻修士	
Interests	
 プログラミング言語・自動推論	
Website	
 http://www.egison.org/~egi/
3
1. Egison を作った経緯
2. Egison 概要
3. Egison 開発の歴史
目次
4
1. Egison を作った経緯
2. Egison 概要
3. Egison 開発の歴史
目次
5
プログラミング言語とは?
単純な命令列しか理解できないコンピュータに
対する要求を、人間が形式的に記述するための
言語
例. C, Java, Ruby, Lisp, Haskell, Egison, …
6
表現を考えるのは難しい
人間の考えをコンピュータ向けに翻訳して記述
せねばならない場面は未だにある
7
Egisonを作った理由
人間の頭の中の認識 (直感) をより直接的に表現す
る方法を見つけた!
人間の考えをコンピュータ向けに翻訳して記述せねばなら
ない場面は未だにあります。そのような場面を見つけ、自
身の直感を分析し、その直接的な表現を見出すことにより、
私は新しいプログラミング言語Egisonを作るに至りました。
CodeIQ MAGAZINEへの寄稿記事より
8
重要な事実
「直感的」という言葉は「わかりやすい」という意味で使われ
ることが多いですが、直感自体は全く「直感的」なものでは
ありません。それゆえに、直感の直接的な表現は多くの人
にとって、最初はわかりやすくありません。
習得が容易な
プログラミング言語
直感をより直接的に表現できる
プログラミング言語
CodeIQ MAGAZINEへの寄稿記事より
9
1. Egison を作った経緯
2. Egison 概要
3. Egison 開発の歴史
目次
10
Egison紹介	
Egisonはオープンソースのプログラミング言語です。
https://github.com/egison/egison
パラダイム	
 パターンマッチ指向、
純粋関数型
作者	
 江木 聡志	
ライセンス	
 MIT	
バージョン	
 3.3.12 (2014/10/24)	
最初のリリース	
 2011/5/24	
拡張子	
 .egi	
実装言語	
 Haskell (3,800行くらい)
11
Egisonとは?	
Egison は1つの定まった標準形を持たないデータに対
しても柔軟なパターンマッチが表現可能なプログラミン
グ言語です。
(match-all xs (multiset integer)!
[<cons $x <cons ,x _>> x])!
Egison
コレクション‘xs’の要素で2回以上
現れる要素を列挙します。
pairs = []!
(1..n).each do |i|!
(i..n).each do |j|!
if xs[i] == xs[j]!
pairs = pairs +!
xs[i]!
end!
end!
end!
Ruby
12
デモ: ポーカーの役判定
13
デモ: ポーカーの役判定	
Pattern for straight flash
14
デモ: ポーカーの役判定	
Pattern for straight flash
Match as a set of cards
15
Straight Flush のパターン
16
Straight Flush のパターン
Same suit with $s
17
Straight Flush のパターン
Same suit with $s
Numbers are serial from $n
18
Straight Flush のパターン
Same suit with $s
Numbers are serial from $n
バリューパターン(‘,’の後)には任意の式を
記述できます
19
デモ: ポーカーの役判定	
Pattern for two pair
20
Two Pair のパターン
21
Two Pair のパターン
Matches with any suit
Matches with any card
22
Two Pair のパターン
Matches with any suit
Matches with any card
Same number with $m
Same number with $n
23
Two Pair のパターン
Matches with any suit
Matches with any card
Same number with $m
Same number with $n
非線形パターンの表現力は非常に強力です
24
デモ: ポーカーの役判定	
全ての役が1つのパターンで表現できます
25
デモ: 麻雀の上がり判定
26
デモ: 麻雀の上がり判定
Two same tiles
Three consecutive tiles
Three same tiles
27
デモ: 麻雀の上がり判定
Two same tiles
Three consecutive tiles
Three same tiles
Seven twins or one twin + four shuntsu or kohtsu
28
デモ: 麻雀の上がり判定
Two same tiles
Three consecutive tiles
Three same tiles
Seven twins or one twin + four shuntsu or kohtsu
パターンのモジュール化も非常に
強力な機能です
29
デモ: 素数の無限列に対するパターンマッチ
30
デモ: 素数の無限列に対するパターンマッチ
31
プログラミング言語理論の中でのEgison
Egison has been pioneering
a new field of the theory of
programming language.
32
Egison 公式ウェブサイト
33
1. Egison を作った経緯
2. Egison 概要
3. Egison 開発の歴史
目次
34
発端
2010年3月、卒業研究のために数学の定理を自動で
予想するプログラムを書いている時にEgisonのアイデ
アを得た
35
発端
2010年3月、卒業研究のために数学の定理を自動で
予想するプログラムを書いている時にEgisonのアイデ
アを得た
数学の理論の自動生成という大問題の部分問題として
新しいアイデアを得た
36
構想期間
修士1年の期間すべてを使って構想を練る
2011年3月、実装を開始する
2011年5月24日、Egison version 0.1をリリース
37
構想期間
修士1年の期間すべてを使って構想を練る
2011年3月、実装を開始する
2011年5月24日、Egison version 0.1をリリース
素早く実装できる能力は非常に重要
38
歴史的瞬間!?
2011年5月、初めてEgisonのパターンマッチ
式のコンピュータ上での実行に成功
39
コミュニティの誕生
研究室の先輩、後輩4人が理解し、使い始めてくれた
40
コミュニティの誕生
研究室の先輩、後輩4人が理解し、使い始めてくれた
先輩・後輩に恵まれていた
新しい理論の普及のためには、環境と周りのひとの優
しさは非常に重要
41
初めての社会的評価
2011年12月、Egisonが「未踏IT人材発掘・育成事業」
に採択される
42
初めての社会的評価
2011年12月、Egisonが「未踏IT人材発掘・育成事業」
に採択される
初めて社会的に評価されて安心した
行動力は非常に重要
発表したり、公募に応募するなど、できることは何でもし
たほうがよい
43
大学院卒業
就職できなかったので、研究室でアルバイト
タイムリミットが半年延びた
44
第1回 Egison ワークショップ
2012年7月、未踏プロジェクトを主催しているIPAに、
第1回Egisonワークショップを開催させて頂いた
発表者4名、参加者30名ほどで、新たな出会いがあっ
た
45
第1回 Egison ワークショップ
2012年7月、未踏プロジェクトを主催しているIPAに、
第1回Egisonワークショップを開催させて頂いた
発表者4名、参加者30名ほどで、新たな出会いがあっ
た
多くの方々に強力して頂くと色々なアイデアが出てくる
46
初めての就職と Egison チーム
チームでのEgison開発など、有り難い経験を沢山させ
て頂いた
47
Egison チーム
2013年3月、チームでEgisonをフルスクラッチから再
設計・再開発して新たなバージョンのリリース
48
Egison チーム解散
2013年6月、会社を辞め、就職活動を再開する
49
楽天技術研究所に入所
2013年11月15日、4ヶ月以上の就職活動期間を経て、
楽天技術研究所に入所
50
楽天技術研究所に入所
2013年11月15日、4ヶ月以上の就職活動期間を経て、
楽天技術研究所に入所
執念と行動力は非常に重要
51
情報発信の重要さを認識
より多くのひとにEgisonについて知ってもらい、
理解して頂くことが、この先の成長には必要
52
情報発信の重要さを認識
より多くのひとにEgisonについて知ってもらい、
理解して頂くことが、この先の成長には必要
多くの方々に理解して頂くために必要なのは、
サービス精神
53
ウェブサイトを更新
54
ウェブサイトを更新
55
オンラインデモを実装
56
正月休みにオンラインチュートリアルを実装
57
ウェブサイト大改装の結果
•  2014年3月、Reddit上で話題になる
•  http://www.reddit.com/domain/egison.org/
•  2014年4月、InfoWorldで取り上げられる
•  http://www.infoworld.com/article/2606823/
application-development/146094-Ten-useful-
programming-languages-you-might-not-know-
about.html
•  2014年6月、7月、Hacker News上で立て続け
に話題になる
•  https://hn.algolia.com/?q=egison#!/story/forever/
prefix/0/egison%20-edison%20-elison%20-
egibson 
58
半年間のアクセスマップ (2014/4/23 – 2014/10/23)
Total session is 15,228
59
コミュニティの成長 (2013/11/15 – 2014/11/28)
•  メーリングリスト
•  Before: 12 – 作者の友人のみ
•  Current: 27 – 世界中の人々
•  Stargazers on GitHub
•  Before: 12 – 作者の友人のみ
•  Current: 250 – 世界中の人々
60
他の言語の Egison 拡張
61
ポーカーの役判定 (Rubyバージョン)
62
RubyKaigi 2014
RubyKaigi 2014で
発表しました!
63
萩谷先生から東京大学でEgisonについて授業で取り上げ
て頂く約束を得る
64
2014年10月、メディアへの記事の初寄稿
65
まとめ
• プログラミング言語を考えることは面白い
• 新しい理論を考えることは面白い
• 新しい理論を普及させることは大変
•  この情報化社会でも非常に大変
•  理論を作る以上の行動力と執念が必要
•  新しい理論の普及には周りの方々の優しさが必須
66
是非ウェブサイト見に来てください!
http://www.egison.org
Twitterもしています! @Egison_Lang

Mais conteúdo relacionado

Mais de Rakuten Group, Inc.

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話Rakuten Group, Inc.
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のりRakuten Group, Inc.
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Rakuten Group, Inc.
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みRakuten Group, Inc.
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開Rakuten Group, Inc.
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用Rakuten Group, Inc.
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャーRakuten Group, Inc.
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割Rakuten Group, Inc.
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Group, Inc.
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfRakuten Group, Inc.
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfRakuten Group, Inc.
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfRakuten Group, Inc.
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technologyRakuten Group, Inc.
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情Rakuten Group, Inc.
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャーRakuten Group, Inc.
 

Mais de Rakuten Group, Inc. (20)

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

コンピュータのための新たな表現の追及―プログラミング言語Egison開発史