Enviar pesquisa
Carregar
あなたにとってのクロージャとは?
•
0 gostou
•
705 visualizações
MORITA Hideyuki
Seguir
Tecnologia
Educação
Esportes
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 35
Baixar agora
Baixar para ler offline
Recomendados
できるBGP! IHANet Meeting 11@うどん県(小豆島)でVyOSでpeerしてみた~初心者向け~
できるBGP! IHANet Meeting 11@うどん県(小豆島)でVyOSでpeerしてみた~初心者向け~
Yoshitake Takata
Lisp創世に見るプログラマの価値
Lisp創世に見るプログラマの価値
MORITA Hideyuki
ビジョン駆動プロダクトオーナー
ビジョン駆動プロダクトオーナー
MORITA Hideyuki
Good Software
Good Software
MORITA Hideyuki
2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
Recomendados
できるBGP! IHANet Meeting 11@うどん県(小豆島)でVyOSでpeerしてみた~初心者向け~
できるBGP! IHANet Meeting 11@うどん県(小豆島)でVyOSでpeerしてみた~初心者向け~
Yoshitake Takata
Lisp創世に見るプログラマの価値
Lisp創世に見るプログラマの価値
MORITA Hideyuki
ビジョン駆動プロダクトオーナー
ビジョン駆動プロダクトオーナー
MORITA Hideyuki
Good Software
Good Software
MORITA Hideyuki
2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
Skeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
Introduction to Data Science
Introduction to Data Science
Christy Abraham Joy
Mais conteúdo relacionado
Último
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Último
(9)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Destaque
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
Skeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
Introduction to Data Science
Introduction to Data Science
Christy Abraham Joy
Time Management & Productivity - Best Practices
Time Management & Productivity - Best Practices
Vit Horky
The six step guide to practical project management
The six step guide to practical project management
MindGenius
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
ChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking
Destaque
(20)
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
Skeleton Culture Code
Skeleton Culture Code
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
How to have difficult conversations
How to have difficult conversations
Introduction to Data Science
Introduction to Data Science
Time Management & Productivity - Best Practices
Time Management & Productivity - Best Practices
The six step guide to practical project management
The six step guide to practical project management
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
ChatGPT webinar slides
ChatGPT webinar slides
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
あなたにとってのクロージャとは?
1.
あなたにとって クロージャとは? 2009年7月7日 オブラブ2009夏 ファンクション倶楽部 森田秀幸(emeitch) http://emeitch.com/ 2009年7月8日水曜日
2.
緊急アンケート: クロージャって知ってますか? 1. そんなの聞いたことないよ。 2. 聞いたことぐらいはあるよ。 3.
なーんとなくなら知ってるよ。 4. 知ってるよ。便利だよねアレ。 5. 任せて。詳細に説明できるよ。 2009年7月8日水曜日
3.
おことわり •今発表はある程度クロージャを知って いる方向けに構成しています。 •なるべくクロージャを知らない人への フォローも入れるつもりですが、10分 間しかないので、振り切られたとして もお許しください。 2009年7月8日水曜日
4.
今回の話のきっかけ •「檜山正幸のキマイラ飼育記」の7/1 のエントリー「ラムダ式とクロージャ は同義だ、と主張してみる」のコメン ト欄での議論がきっかけ。(http://d.hatena.ne.jp/ m-hiyama/20090701/1246416600) •その中での「クロージャとは何か」と いう議論がおもしろかった。 2009年7月8日水曜日
5.
今回の話のきっかけ •世間で言う「クロージャ」は、ある程 度同じ意味を指しつつも、微妙な違い がありそうだということが分かった。 •皆さんの認識はどうなんだろう?という のを聞いてみたくなった。 2009年7月8日水曜日
6.
学術的なクロージャの定義 「一級関数を実装するための データ構造の一つ」 http://d.hatena.ne.jp/m-hiyama/20090701/1246416600 のsumiiさんのコメントより 2009年7月8日水曜日
7.
学術的なクロージャの定義 •私たちが普段よく使う用法とは明らか に意味が異なる。(例: 「Hoge言語に はクロージャが搭載されている。」) •今回問いたいのは、こういった学術的 定義ではなく、私たち現場プログラマ がよく使う「クロージャ」の意味につ いてコンセンサスが取りたい。 2009年7月8日水曜日
8.
ということで... 皆さんが思う「クロージャ」というのはど んなものか?というのを聞かせて下さい。 2009年7月8日水曜日
9.
ちなみに 私のクロージャの理解は、学術的定義と 同じで、処理系における一級関数の実装 方式だと思ってた、という方はいます か? 2009年7月8日水曜日
10.
前提 •学術的な定義をもとにすると、世間的 用法の「クロージャ」は誤りですが、 そこを責める気は毛頭ありません。 •住む世界が違えば、違う意味も生まれ ますし、間違った用法も、普及してし まえば正しくなるのが、言葉のルール です。 2009年7月8日水曜日
11.
前提 •世間一般にちゃんとコンセンサスが取 れた「クロージャ」という用語はない ので、ある意味それぞれの思い受かべ る「クロージャ」はすべて正しい。 •なので、「間違っているかも」という のを恐れず、自分が思う素直なご意見 を聞かせてください。 2009年7月8日水曜日
12.
(1)第一級関数 [ JavaScript ] js>
var f = function() { return 3; } js> f() 3 ポイントは、匿名のオブジェクト生成や変数への代入が可能なこと。 2009年7月8日水曜日
13.
(2)レキシカルスコープ [ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var a = 3 js> var adder4 = makeAdder(4) js> adder4(2) 6 ポイントは、「a + b」の「a」は「var a = 3」の「a」ではな く、functionの引数「a」を参照していること。 2009年7月8日水曜日
14.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 2009年7月8日水曜日
15.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 4」という 環境を生成 2009年7月8日水曜日
16.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 4」という 環境を生成 「a = 4」という 環境とfunctionが 結びつく 2009年7月8日水曜日
17.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 4」という 環境を生成 「a = 4」という 環境とfunctionが 結びつく 「a = 4」「b=2」とし て「a + b」を実行 2009年7月8日水曜日
18.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 2009年7月8日水曜日
19.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 7」という 環境を生成 2009年7月8日水曜日
20.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 7」という 環境とfunctionが 結びつく 「a = 7」という 環境を生成 2009年7月8日水曜日
21.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 7」という 環境とfunctionが 結びつく 「a = 7」という 環境を生成 「a = 7」「b = 2」とし て「a + b」を実行 2009年7月8日水曜日
22.
[ JavaScript ] js>
var makeAdder = function(a){ return function(b) { return a + b; } } js> var adder4 = makeAdder(4) js> adder4(2) 6 js> var adder7 = makeAdder(7) js> adder7(2) 9 「a = 7」という 環境を生成 (3)環境を閉じこめる ポイントは、adder4とadder7は互いに別の環境を生成し、function に閉じ込めていること。 「a = 4」という 環境を生成 2009年7月8日水曜日
23.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 2009年7月8日水曜日
24.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 「a = 4」という 環境を生成 2009年7月8日水曜日
25.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 2009年7月8日水曜日
26.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 function実行 2009年7月8日水曜日
27.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 function実行 a(=4)にb(=2)を累算 させて、aを返す。 2009年7月8日水曜日
28.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 2009年7月8日水曜日
29.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 function実行 2009年7月8日水曜日
30.
(4)環境に対する副作用 [ JavaScript ] js>
var makeAccum = function(a){ return function(b) { a += b; return a; } } js> var accum = makeAccum(4) js> accum(2) 6 js> accum(3) 9 ポイントは、accumを呼び出す度にaの値が変更されていること。 function実行 a(=6)にb(=2)を累算 させて、aを返す。 2009年7月8日水曜日
31.
私の主張 世間的用法としては、(1)∼(4)まで全て の性質を含めて「クロージャ」と呼ぶべ き。 2009年7月8日水曜日
32.
私の主張 •(1)第1級関数や(2)レキシカルスコープが 無いとクロージャと呼べる気がしない。 •しかし、それらだけでは「クロージャ」は 成立しない。もし、それらしか特性が無い なら、第1級関数やレキシカルスコープの 関数と呼べばよく、わざわざ「クロー ジャ」と呼ぶ必要性を見出せない。 2009年7月8日水曜日
33.
私の主張 •(3)環境を閉じ込めるは(4)の副作用が 無いなら、実はわざわざ作る必要が無 い。なぜなら値をコピーすれば実現で きてしまうから。 •よって、副作用がなければ環境は必要 ないし、環境がなければ、やはりク ロージャと呼ぶ必然性がない。 2009年7月8日水曜日
34.
まとめ • 世間一般に言う「クロージャ」という概 念にはいろんな意味が込められている。 • 環境に副作用を与えることができる、レ キシカルスコープの第1級関数の事を 「クロージャ」と呼んでみない? 2009年7月8日水曜日
35.
ご清聴ありがとう ございました。 2009年7月8日水曜日
Baixar agora