Suche senden
Hochladen
Ruby with Hash
•
Als KEY, PDF herunterladen
•
3 gefällt mir
•
1,041 views
Jun Yokoyama
Folgen
Rubyのハッシュについて
Weniger lesen
Mehr lesen
Bildung
Melden
Teilen
Melden
Teilen
1 von 128
Jetzt herunterladen
Empfohlen
すごいHaskell読書会#10
すごいHaskell読書会#10
Shin Ise
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
First Step TDD
First Step TDD
Jun Yokoyama
Ruby on
Ruby on
Jun Yokoyama
社内LT資料
社内LT資料
Jun Yokoyama
Rails基礎講座 part.1
Rails基礎講座 part.1
Jun Yokoyama
Real world rails
Real world rails
Jun Yokoyama
Active support事始め
Active support事始め
Jun Yokoyama
Empfohlen
すごいHaskell読書会#10
すごいHaskell読書会#10
Shin Ise
Rails基礎講座 part.2
Rails基礎講座 part.2
Jun Yokoyama
First Step TDD
First Step TDD
Jun Yokoyama
Ruby on
Ruby on
Jun Yokoyama
社内LT資料
社内LT資料
Jun Yokoyama
Rails基礎講座 part.1
Rails基礎講座 part.1
Jun Yokoyama
Real world rails
Real world rails
Jun Yokoyama
Active support事始め
Active support事始め
Jun Yokoyama
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
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
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
Weitere ähnliche Inhalte
Kürzlich hochgeladen
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
Kürzlich hochgeladen
(6)
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
Empfohlen
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
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
Empfohlen
(20)
2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
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...
Ruby with Hash
1.
Ruby with Hash 2012/5/24
yoyogi.rb
2.
Rubyのハッシュについて
3.
自己紹介 フリーエンジニア twitter:@nysalor blog: http://blog.larus.jp/ 好きなメソッドはEnumerable#map
4.
前座 記号が色々出てきて混乱するという意見があったの で
5.
変数名まとめ
6.
変数名まとめ ローカル変数
7.
変数名まとめ ローカル変数 a hoge under_score camelCase ms06
8.
変数名まとめ ローカル変数 a hoge
英数と_のみ under_score 一文字目は小文字 camelCase ms06
9.
変数名まとめ
10.
変数名まとめ
11.
変数名まとめ インスタンス変数
12.
変数名まとめ インスタンス変数 @a @hoge @under_score @camelCase @ms06
13.
変数名まとめ インスタンス変数 @a @hoge
@で始まる @under_score @camelCase @ms06
14.
変数名まとめ
15.
変数名まとめ
16.
変数名まとめ クラス変数
17.
変数名まとめ クラス変数 @@a @@hoge @@under_score @@camelCase @@ms06
18.
変数名まとめ クラス変数 @@a @@hoge
@@で始まる @@under_score あまり使わない @@camelCase @@ms06
19.
変数名まとめ
20.
変数名まとめ
21.
変数名まとめ 定数
22.
変数名まとめ 定数 A Hoge Under_score CamelCase MS06
23.
変数名まとめ 定数 A Hoge
大文字で始まる Under_score 変更しようとすると警告 (変更できないわけではない) CamelCase MS06
24.
変数名まとめ
25.
ここから本題
26.
ハッシュ? いわゆる連想配列 Hashクラスで定義 {}でくくる 要素は何でもいい
27.
ハッシュの例 {“first” => 1,
“second” => 2, “third” => 3} {first:1, second:2, third:3} {“integer” => 1, “string” => ”text”, :array => [1, 2, 3]}
28.
ハッシュの例 {“first” => 1,
“second” => 2, “third” => 3} {first:1, second:2, third:3} Ruby1.9以降 {“integer” => 1, “string” => ”text”, :array => [1, 2, 3]}
29.
ハッシュの作り方
30.
ハッシュの作り方 空のハッシュ
31.
ハッシュの作り方 空のハッシュ a = {} a
= Hash.new
32.
ハッシュの作り方
33.
ハッシュの作り方 中身の入ったハッシュ
34.
ハッシュの作り方 中身の入ったハッシュ a = {“first”
=> 1, “second” => 2} a = Hash.new(1) #=> {} a = Hash[“first”, 1, “second”, 2] a = Hash[*array]
35.
シンボル
36.
シンボル シンボルをキーにすることが多い
37.
シンボル シンボルをキーにすることが多い {:first => 1,
:second => 2, :third => 3} {first:1, second:2, third:3}
38.
シンボル?
39.
シンボル? Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前'を 整数で管理しています。これは名前を直接文字列として処理するよりも 速度面 で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボ ルです。 シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、 両者を仲立ちするような存在です。
40.
シンボル? Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前'を 整数で管理しています。これは名前を直接文字列として処理するよりも 速度面 で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボ ルです。 シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、 両者を仲立ちするような存在です。
from Rubyリファレンスマニュアル
41.
シンボル?
42.
シンボル?
43.
シンボル? 文字列の前に:を付ける
44.
シンボル? 文字列の前に:を付ける :a :hoge :under_score :CamelCase :ms06
45.
シンボル? 文字列の前に:を付ける :a :hoge
読みやすい :under_score 書き換えられない ちょっと速い(かも知れない) :CamelCase :ms06
46.
シンボル?
47.
ハッシュの使い方
48.
ハッシュの使い方 # all
versions 1.9.x only a = {:alpha => "a", :bravo => "b", :charlie => "c"} # 1.9.x only a = {alpha: "a", bravo: "b", charlie: "c"}
49.
要素の取り出し
50.
要素の取り出し a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
51.
要素の取り出し
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a[:alpha] #=> “a” a.fetch(:bravo) #=> “b” a.values #=> [“a”, “b”, “c”]
52.
キーの取り出し
53.
キーの取り出し a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
54.
キーの取り出し
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a.keys #=> [:alpha, :bravo, :charlie]
55.
要素とキーの取り出し
56.
要素とキーの取り出し a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
57.
要素とキーの取り出し
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a.first #=> [:alpha, “a”] a.assoc(:bravo) #=> [:bravo, “b”] a.shift #=> [:alpha, “a”] a.to_a #=> [[:alpha, “a”], [:bravo, “b”], [:charlie, “c”]]
58.
要素とキーの取り出し
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a.first #=> [:alpha, “a”] a.assoc(:bravo) #=> [:bravo, “b”] a.shift #=> [:alpha, “a”] 要素が削除される a.to_a #=> [[:alpha, “a”], [:bravo, “b”], [:charlie, “c”]]
59.
要素の追加・更新
60.
要素の追加・更新 a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
61.
要素の追加・更新
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a[:delta] = “d”
62.
ハッシュの評価
63.
ハッシュの評価 a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
64.
ハッシュの評価
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a.has_key?(:bravo) #=> true a.empty? #=> false
65.
ハッシュの検索
66.
ハッシュの検索 a =
{:alpha => "a", :bravo => "b", :charlie => "c"}
67.
ハッシュの検索
a = {:alpha => "a", :bravo => "b", :charlie => "c"} a.select{|k, v| k == :alpha && v == “a”}
68.
ハッシュのマージ
69.
ハッシュのマージ a =
{:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}
70.
ハッシュのマージ
a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"} a.merge(b) a.merge!(b) a.update(b) a.merge({:charlie => “C”, :delta => “d”}) a.merge(b){|k, a, b| a + b}
71.
ハッシュのマージ
a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"} a.merge(b) a.merge!(b) 破壊的メソッド a.update(b) a.merge({:charlie => “C”, :delta => “d”}) a.merge(b){|k, a, b| a + b}
72.
ハッシュのマージ
a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"} a.merge(b) a.merge!(b) 破壊的メソッド a.update(b) 破壊的メソッド a.merge({:charlie => “C”, :delta => “d”}) a.merge(b){|k, a, b| a + b}
73.
イテレーション
74.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each do |k, v| p k p v end a.each_pair do |k, v| p k p v end
75.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each do |k, v| p k ブロック変数 p v end a.each_pair do |k, v| p k p v end
76.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each do |k, v| p k ブロック変数 p v end a.each_pair do |k, v| p k ブロック変数 p v end
77.
イテレーション
78.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each_key do |k| p k p a[k] end a.each_value do |v| p v end
79.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each_key do |k| p k ブロック変数 p a[k] end a.each_value do |v| p v end
80.
イテレーション a = {:alpha
=> "a", :bravo => "b", :charlie => "c"} a.each_key do |k| p k ブロック変数 p a[k] end a.each_value do |v| p v ブロック変数 end
81.
応用編
82.
応用編 無名ハッシュを返すメソッド
83.
応用編 無名ハッシュを返すメソッド def const_hash
{ eagle: 15, falcon: 16, hornet: 18, } end const_hash[:eagle] #=> 15
84.
応用編 無名ハッシュを返すメソッド def const_hash
初期設定などに便利 { eagle: 15, falcon: 16, hornet: 18, } end const_hash[:eagle] #=> 15
85.
応用編 無名ハッシュを返すメソッド
86.
応用編 無名ハッシュを返すメソッド
87.
応用編 無名ハッシュを返すメソッド const_hash[:eagle]
= “15E” const_hash[:eagle] #=> 15 const_hash[:cobra] = 17 const_hash[:cobra] #=> nil
88.
応用編 無名ハッシュを返すメソッド const_hash[:eagle]
= “15E” const_hash[:eagle] #=> 15 const_hash[:cobra] = 17 const_hash[:cobra] #=> nil 呼び出すたびに初期値が返る
89.
応用編
90.
応用編
91.
応用編 引数にハッシュを取るメソッド
92.
応用編 引数にハッシュを取るメソッド def args_by_hash(params =
{}) options = {:tiger => 88, :panther => 75}.merge! (params) p options end args_by_hash(mouse: 128) #=> {:tiger => 88, :panther => 75, :mouse => 128} args_by_hash(:tiger => 128, :panther => 88, :long => 75) #=> {:tiger => 128, :panther => 88, :lang => 75}
93.
Let’s Try!
94.
Let’s Try! ハッシュの値を全てStringにする
95.
Let’s Try! ハッシュの値を全てStringにする data =
{ showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, } # => {:showa => “1926”, :meiji => “1868”,...}
96.
Let’s Try!
97.
Let’s Try!
98.
Let’s Try! ハッシュの値を全てStringにする
99.
Let’s Try! ハッシュの値を全てStringにする data =
{ showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, } Hash[*data.to_a.map{|x| [x.first, x.last.to_s]}] # => {:showa => “1926”, :meiji => “1868”,...}
100.
Let’s Try!
101.
Let’s Try!
102.
Let’s Try! ハッシュを値でソートしてキーを返す
103.
Let’s Try! ハッシュを値でソートしてキーを返す data =
{ showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, } # => [:meiji, :taisho, :showa, :heisei]
104.
Let’s Try!
105.
Let’s Try!
106.
Let’s Try! ハッシュを値でソートしてキーを返す
107.
Let’s Try! ハッシュを値でソートしてキーを返す data =
{ showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, } data.invert.sort.map{|x| x.last} # => [:meiji, :taisho, :showa, :heisei]
108.
Let’s Try!
109.
Let’s Try!
110.
Let’s Try! 二つの配列からハッシュを作成する
111.
Let’s Try! 二つの配列からハッシュを作成する array_a =
[:meiji, :taisho, :showa, :heisei] array_b = [1868, 1912, 1926, 1989] # => {:meiji => 1868, :taisho => 1912,...}
112.
Let’s Try!
113.
Let’s Try!
114.
Let’s Try! 二つの配列からハッシュを作成する
115.
Let’s Try! 二つの配列からハッシュを作成する array_a =
[:meiji, :taisho, :showa, :heisei] array_b = [1868, 1912, 1926, 1989] Hash[*array_a.map{ |x| [x, array_b[array_a.index(x)]] }.flatten] # => {:meiji => 1868, :taisho => 1912,...}
116.
Let’s Try!
117.
Let’s Try!
118.
Let’s Try! 二つのハッシュをマージして値の大きい方だけを残す
119.
Let’s Try! 二つのハッシュをマージして値の大きい方だけを残す hash_a =
{meiji: 45, taisho: 1926, showa: 64, :heisei => 2012} hash_b = {meiji: 1912, taisho: 15, showa: 1989, :heisei => 24} # => {:meiji => 1912, :taisho => 1926,...}
120.
Let’s Try!
121.
Let’s Try!
122.
Let’s Try! 二つのハッシュをマージして値の大きい方だけを残す
123.
Let’s Try! 二つのハッシュをマージして値の大きい方だけを残す hash_a =
{meiji: 45, taisho: 1926, showa: 64, :heisei => 2012} hash_b = {meiji: 1912, taisho: 15, showa: 1989, :heisei => 24} hash_a.merge(hash_b){|k,a,b| [a,b].sort.last} # => {:meiji => 1912, :taisho => 1926,...}
124.
Let’s Try!
125.
まとめ ハッシュはちょっと扱いにくい 配列を返すメソッドが多い キーはシンボルが無難
126.
質疑応答
127.
質疑応答 if available? Question.all.map(&:answer!) end
128.
ご清聴ありがとうございました
Hinweis der Redaktion
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Jetzt herunterladen