SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾䛸 
MVVM䝟䝍䞊䞁䛻䛴䛔䛶 
2014/10/31 @taketin
ච㈐஦㡯 
䛂䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾䛃䛻⯆࿡䜢ᣢ䛳䛶㍍䛔Ẽᣢ䛱䛷ㄪ䜉 
ጞ䜑䜎䛧䛯䛜䚸᝿ീ௨ୖ䛻ዟ䛜῝䛔ᴫᛕ䛷䛒䛳䛯Ⅽ䚸⌮ゎ୙༑ 
ศ䛺䛸䛣䜝䛜䛒䜚䜎䛩䚹䛭䛾䛯䜑䚸ბ䜢ゝ䛳䛶䜛ྍ⬟ᛶ䜒䛒䜚䜎 
䛩䚹 
䜎䛯䚸௒ᅇ䛿ᴫᛕ䛾ㄝ᫂䛻䛺䜚䜎䛩䛾䛷䜅䜣䜟䜚䛧䛯䛚ヰ䛻䛺䜚 
䜎䛩䚹 
䛒䜙䛛䛨䜑䛤஢ᢎ䛟䛰䛥䛔䚹
FRP (FunctionalReactiveProgramming)
FRP (Functional Reactive Programming) 
䞉᭱㏆䜘䛟⪺䛟
FRP (Functional Reactive Programming) 
䞉᭱㏆䜘䛟⪺䛟 
䞉䝣䝻䞁䝖䜶䞁䝗㛤Ⓨ⪅䛿≉䛻▱䛳䛸䛔䛯᪉䛜Ⰻ䛥䛭 
䛖
FRP 䛸䛿 
䞉䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭䞁䜾䝟䝷䝎䜲 
䝮
FRP 䛸䛿 
䞉䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭䞁䜾䝟䝷䝎䜲 
䝮 
䞉㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸 
䛸䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛
FRP 䛸䛿 
䞉䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭䞁䜾䝟䝷䝎䜲 
䝮 
䞉㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸 
䛸䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾 http://www.reactivemanifesto.org/ 䛻㛵ᩘ 
ᆺゝㄒ䛾≉ᚩ䜢ຍ䛘䛯䜒䛾䛜 FRP䚹1997ᖺ䛻 䚷Functional 
Reactive Animation http://conal.net/papers/icfp97/ 䛸䛧䛶ᥦၐ䛥䜜 
䛯䜙䛧䛔䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
Ⓨ⏕䛩䜛䜲䝧䞁䝖䛻ᑐ䛧䛶ᐇ⾜䛩䜛࿨௧䜢᭩䛟䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
Ⓨ⏕䛩䜛䜲䝧䞁䝖䛻ᑐ䛧䛶ᐇ⾜䛩䜛࿨௧䜢᭩䛟䚹 
䞉FRP 䛾ୡ⏺ 
ධຊ䛸ฟຊ䛾㛵ಀᛶ䜢ᐃ⩏䛩䜛䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 2
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 2 
䞉FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 11
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 2 
䞉FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 11 
FRP䛿䛂᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್䛃䜢ᢅ䛖䚹 
b = a + 1 䛾䛂㛵ಀᛶ䛃䜢ಖᣢ䛩䜛䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 2 
䞉FRP䛾ୡ⏺ 
var a = 1; 
var b = a + 1; 
a = 10; 
console.log(b) // => 11 
FRP䛿䛂᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್䛃䜢ᢅ䛖䚹 
b = a + 1 䛾䛂㛵ಀᛶ䛃䜢ಖᣢ䛩䜛䚹 
Excel 䛷 A1䝉䝹䛻 =B2+C3䛸᭩䛟䛸䚸A1䝉䝹䛾ෆᐜ䛿B2䛸C3䛜ຍ⟬䛥䜜䛶䚸ື 
ⓗ䛻᭩䛝᥮䛘䜙䜜䜛䜘䛖䛺ື䛝䛾䜲䝯䞊䝆䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
$("#select").change(function(val){ 
console.log(val.currentTarget.value); 
}); 
// selectbox で値が “foo” を選択した 
> foo 
// selectbox で値が “bar” を選択した 
> bar 
䞉FRP䛾ୡ⏺ 
var select = $("#select").asEventStream("change"); 
select.onValue(function(val) { 
console.log(val.currentTarget.value) 
}); 
// selectbox で値が “foo” をチェックした 
> foo 
// selectbox で値が “bar” をチェックした 
> bar
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
$("#select").change(function(val){ 
console.log(val.currentTarget.value); 
}); 
䞉FRP䛾ୡ⏺ 
var select = $("#select").asEventStream("change"); 
select.onValue(function(val) { 
console.log(val.currentTarget.value) 
}); 
䛣䜜䜎䛷䛿ධຊ䛜ኚ໬䛧䛯䛸䛔䛖ฟ᮶஦䠄䜲䝧䞁䝖䠅䛻ᑐᛂ䛩䜛ฎ⌮䜢䝥䝻䜾䝷䝮䛷グ㏙䛧䛶 
䛔䛯䚹 
䛣䜜䛻ᑐ䛧䛶䚸䝸䜰䜽䝔䜱䝤䞉䝥䝻䜾䝷䝭䞁䜾䛷䛿䚸ධຊ䛸ฟຊ䛾㛵ಀᛶ䜢ᐃ⩏䛧䛶䛚䛡䜀⮬ 
ືⓗ䛻ฎ⌮䛜⾜䜟䜜䜛䚹
䝸䜰䝹䝍䜲䝮䜲䝧䞁䝖䜢㐺ษ䛻ᢅ䛖䛯䜑䛾䝥䝻䜾䝷䝭 
䞁䜾䝟䝷䝎䜲䝮 
䞉㠀FRP䛾ୡ⏺ 
$("#select").change(function(val){ 
console.log(val.currentTarget.value); 
}); 
䞉FRP䛾ୡ⏺ 
var select = $("#select").asEventStream("change"); 
select.onValue(function(val) { 
console.log(val.currentTarget.value) 
}); 
䜲䝧䞁䝖㥑ື䛾࿨௧ᆺ ᐃ⩏ᐉゝᆺ 
䛣䜜䜎䛷䛿ධຊ䛜ኚ໬䛧䛯䛸䛔䛖ฟ᮶஦䠄䜲䝧䞁䝖䠅䛻ᑐᛂ䛩䜛ฎ⌮䜢䝥䝻䜾䝷䝮䛷グ㏙䛧䛶 
䛔䛯䚹 
䛣䜜䛻ᑐ䛧䛶䚸䝸䜰䜽䝔䜱䝤䞉䝥䝻䜾䝷䝭䞁䜾䛷䛿䚸ධຊ䛸ฟຊ䛾㛵ಀᛶ䜢ᐃ⩏䛧䛶䛚䛡䜀⮬ 
ືⓗ䛻ฎ⌮䛜⾜䜟䜜䜛䚹
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉ᐃ⩏䜢ᐉゝ䛩䜛ᑐ㇟ == ᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉ᐃ⩏䜢ᐉゝ䛩䜛ᑐ㇟ == ᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್ 
ex) textField : ᩥᏐ䛾ධຊ䛸ඹ䛻ෆᐜ䛜ኚ䜟䜛 
button : 䜽䝸䝑䜽䛧䛶 on, off 䛜ኚ䜟䜛
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉ᐃ⩏䜢ᐉゝ䛩䜛ᑐ㇟ == ᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್ 
ex) textField : ᩥᏐ䛾ධຊ䛸ඹ䛻ෆᐜ䛜ኚ䜟䜛 
button : 䜽䝸䝑䜽䛧䛶 on, off 䛜ኚ䜟䜛 
FRP 䛷䛿䚸䛣䜜䜙䛾䛂᫬㛫䛸䛸䜒䛻ኚ໬䛩䜛್䛃䜢 
䛂䝇䝖䝸䞊䝮䛃䛸࿧䜀䜜䜛➨1⣭䜸䝤䝆䜵䜽䝖䛸䛧䛶ᢅ䛘䜛䜘䛖䛻䛩䜛 
஦䛷䚸ᐃ⩏ᐉゝᆺ䛾䝥䝻䜾䝷䝭䞁䜾䜢⾜䛘䜛ᵝ䛻䛧䛯䚹
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉᣺䜛⯙䛔
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉᣺䜛⯙䛔 
ex) ධຊ್ : 1, 2, 3, 4 
᣺䜛⯙䛔 : ධຊ䛥䜜䛯್䜢ಸ䛻䛩䜛 -> 2, 4, 6, 8 
᣺䜛⯙䛔 : 4 䛾ಸᩘ䛰䛡㏉䛩 -> 4, 8
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉᣺䜛⯙䛔 
ex) ධຊ್ : 1, 2, 3, 4 
᣺䜛⯙䛔 : ධຊ䛥䜜䛯್䜢ಸ䛻䛩䜛 -> 2, 4, 6, 8 
᣺䜛⯙䛔 : 4 䛾ಸᩘ䛰䛡㏉䛩 -> 4, 8 
䛣䛾᣺䜛⯙䛔䠍䛴䠍䛴䛜䝇䝖䝸䞊䝮䛸䛧䛶ᢅ䛘䜛䚹
㠀ྠᮇ䝕䞊䝍䝇䝖䝸䞊䝮䜢⏝䛔䜛䝥䝻䜾䝷䝭䞁䜾䛷䛒䜚䚸䛂᫬㛫䛸䛸 
䜒䛻ኚ໬䛩䜛್䛃䛸䛂᣺䜛⯙䛔䛃ྠኈ䛾㛵ಀᛶ䜢グ㏙䛩䜛 
䞉᣺䜛⯙䛔 
ex) ධຊ್ : 1, 2, 3, 4 
᣺䜛⯙䛔 : ධຊ䛥䜜䛯್䜢2ಸ䛻䛩䜛 -> 2, 4, 6, 8 
∟ ᣺䜛⯙䛔 : 4 䛾ಸᩘ䛰䛡㏉䛩 -> 4, 8 
∟ ᣺䜛⯙䛔䠖5 ௨ୖ䛰䛡㏉䛩 -> 6, 8 
䛣䛾᣺䜛⯙䛔䠍䛴䠍䛴䛜䝇䝖䝸䞊䝮䛸䛧䛶ᢅ䛘䜛䚹 
䝇䝖䝸䞊䝮䜢䝧䞊䝇䛻᣺䜛⯙䛔䜢㔜䛽䛶䛔䛟஦䛜䛷䛝䜛䚹
Reactive programming䛸䛿... 
䞉᫬㛫䜔እ㒊ධຊ䛸ඹ䛻ኚ໬䛩䜛್䜔ィ⟬䜢䚸࿨௧ⓗ䛻グ㏙䛩 
䜛䛾䛷䛿䛺䛟䚸ᐉゝⓗ䛻ᐃ⩏䛩䜛䚹
Reactive programming䛸䛿... 
䞉᫬㛫䜔እ㒊ධຊ䛸ඹ䛻ኚ໬䛩䜛್䜔ィ⟬䜢䚸࿨௧ⓗ䛻グ㏙䛩 
䜛䛾䛷䛿䛺䛟䚸ᐉゝⓗ䛻ᐃ⩏䛩䜛䚹 
䞉ධຊ䛸ฟຊ䛾㛵ಀᛶ䜢ᐃ⩏䛧䛶䛚䛡䜀⮬ືⓗ䛻᭦᪂ฎ⌮䛜 
⾜䜟䜜䜛Ⅽ䚸䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ䛾ᐇ⿦䛻㐺䛧䛶䛔䜛䚹
Reactive programming䛸䛿... 
䞉᫬㛫䜔እ㒊ධຊ䛸ඹ䛻ኚ໬䛩䜛್䜔ィ⟬䜢䚸࿨௧ⓗ䛻グ㏙䛩 
䜛䛾䛷䛿䛺䛟䚸ᐉゝⓗ䛻ᐃ⩏䛩䜛䚹 
䞉ධຊ䛸ฟຊ䛾㛵ಀᛶ䜢ᐃ⩏䛧䛶䛚䛡䜀⮬ືⓗ䛻᭦᪂ฎ⌮䛜 
⾜䜟䜜䜛Ⅽ䚸䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ䛾ᐇ⿦䛻㐺䛧䛶䛔䜛䚹 
䞉MVVM 䝟䝍䞊䞁䛾ᐇ⿦䛻౑䜟䜜䛶䛔䜛䚹
MVVM (Model View ViewModel)
MVVM (Model View ViewModel) 
䞉2005ᖺ䚸Microsoft 䛾 WPF 䜔 Silverlight Ⓨ⚈ 䛾䜰䞊䜻䝔䜽 
䝏䝱 via: http://ja.wikipedia.org/wiki/Model_View_ViewModel 
䞉୺䛻 GUI 䜰䝥䝸䜿䞊䝅䝵䞁䛷᥇⏝䚹
MVVM (Model View ViewModel) 
䞉2005ᖺ䚸Microsoft 䛾 WPF 䜔 Silverlight Ⓨ⚈ 䛾䜰䞊䜻䝔䜽 
䝏䝱 via: http://ja.wikipedia.org/wiki/Model_View_ViewModel 
䞉୺䛻 GUI 䜰䝥䝸䜿䞊䝅䝵䞁䛷᥇⏝䚹 
䞉View䛿ViewModel䛻౫Ꮡ䛧䚸ViewModel䛿Model䛻౫Ꮡ䚹㏫ 
᪉ྥ䛾౫Ꮡ䛿↓䛔䚹 
image: http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_02/greatblogentry_02_01.html
MVVM (Model View ViewModel) 
䞉Model - 䝗䝯䜲䞁䠄ၥ㢟㡿ᇦ䠅 
䞉View - UI䜈䛾ฟຊ䛸UI䛛䜙䛾ධຊ 
䞉ViewModel - View䛸Model䛾㛫䛾᝟ሗ䛾ఏ㐩䠄View䛛䜙ཷ䛡ྲྀ䛳䛯ධຊ䜢㐺 
ษ䛺ᙧ䛻ኚ᥮䛧䛶Ώ䛩䠅䛸䚸View䛾䛯䜑䛾≧ែಖᣢ䛾䜏䜢ᙺ๭䛸䛩䜛せ⣲䚹View䛸䛾 
㏻ಙ䛿䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ䛾䜘䛖䛺௙⤌䜏䜢㏻䛨䛶⾜䛖䛾䛜๓ᥦ䚹
MVVM (Model View ViewModel) 
View䛸ViewModel䛾㛫䛾᝟ሗ䜢㛤Ⓨ⪅䛜ᡭື䛷ྠᮇ䛧䛺䛡䜜䜀䛺䜙䛺䛔䜘䛖䛺䝥 
䝷䝑䝖䝣䜷䞊䝮䛷䛿㠀ᖖ䛻㛤Ⓨ⪅䛾㈇ᢸ䛜኱䛝䛟䛺䜚䚸䝯䝸䝑䝖䛜Ⓨ᥹䛧䛻䛟䛔䚹 
䛭䛾䛯䜑䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ䛾䜘䛖䛺௙⤌䜏䜢ᣢ䛴䝥䝷䝑䝖䝣䜷䞊䝮䛛䚸᪤Ꮡ䛾 
䝥䝷䝑䝖䝣䜷䞊䝮䛻䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ䛾䜘䛖䛺௙⤌䜏䜢ᣑᙇ䛧䛯䝥䝷䝑䝖䝣䜷䞊 
䝮䛷᥇⏝䛥䜜䛶䛔䜛䚹
MVVM (Model View ViewModel) 
ᚲせ䛺䜒䛾 
䞉ᐉゝⓗ䛺 View䝔䞁䝥䝺䞊䝖 
䞉䝕䞊䝍䝞䜲䞁䝕䜱䞁䜾ᶵᵓ
MVVM (Model View ViewModel) 
ReactiveCocoa (Objective-C) 
䞉FRP䝟䝷䝎䜲䝮䜢᥇⏝䛧䛯ゝㄒෆDSL䚹 
䞉GitHub♫䛾ே㐩䜢䝯䜲䞁䛻㛤Ⓨ䚹GitHub䛾Mac䜰䝥䝸䛷᥇⏝䛥䜜䛶䛔䜛䚹 
䞉ኚ᭦䜢䝅䜾䝘䝹䛸࿧䜀䜜䜛䜸䝤䝆䜵䜽䝖䛷⾲⌧䛧䚸ู㏵⏝ព䛩䜛 VM 䛻䝥䝺䝊䞁䝔䞊 
䝅䝵䞁䝻䝆䝑䜽䜢᭩䛟஦䛷䚸ViewController 䛛䜙 View 䛸䝻䝆䝑䜽䜢ศ㞳䛩䜛䚹 
䚷䈜 ViewController 䛿 MVC 䛾 C 䛷䛿↓䛔䚹MVVM 䛾 V ┦ᙜ䚹
MVVM (Model View ViewModel) 
ReactiveCocoa (Objective-C) 
䝯䝸䝑䝖 
䞉䝔䝇䝖䛾グ㏙䛜ᐜ᫆䛻䛺䜚䚸䝁䞊䝗䛾෌฼⏝ᛶ䛜㧗䜎䜛䚹
MVVM (Model View ViewModel) 
ReactiveCocoa (Objective-C) 
䝯䝸䝑䝖 
䞉䝔䝇䝖䛾グ㏙䛜ᐜ᫆䛻䛺䜚䚸䝁䞊䝗䛾෌฼⏝ᛶ䛜㧗䜎䜛䚹 
䝕䝯䝸䝑䝖 
䞉グ㏙㔞䛜ቑ䛘䜛䚹 
䞉DSL 䛸 FRP 䛾Ꮫ⩦䝁䝇䝖䚹
MVVM (Model View ViewModel) 
ReactiveCocoa (Objective-C) 
ḟᮇ䝯䝆䝱䞊䝞䞊䝆䝵䞁 3⣔䛷 Swift ᑐᛂ䚹 
Swift ⏝䝷䜲䝤䝷䝸䛿௚䛻 https://github.com/ReactKit/ReactKit 䛜䛒䜛䚹 
䛸䜚䛒䛘䛪ヨ䛧䛶䜏䛯䛔䚹
FRP䛻䛴䛔䛶ㄪ䜉䛶䜏䛯ឤ᝿ 
䞉ᐇ⿦䛻䜘䛳䛶ゝⴥ䛾ᐃ⩏䛜᭕᫕䛺Ẽ䛜䛩䜛䛾䛷䚸኱ኚΰ஘䛧䛯䚹 
䝇䝖䝸䞊䝮 
䝅䜾䝘䝹
FRP䛻䛴䛔䛶ㄪ䜉䛶䜏䛯ឤ᝿ 
䞉ᐇ⿦䛻䜘䛳䛶ゝⴥ䛾ᐃ⩏䛜᭕᫕䛺Ẽ䛜䛩䜛䛾䛷䚸኱ኚΰ஘䛧䛯䚹 
䝇䝖䝸䞊䝮 
䝅䜾䝘䝹 
䞉㛵ᩘᆺゝㄒ䜈䛾㛵ᚰ䛜῝䜎䛳䛯䚹 
ཧ↷㏱㐣ᛶ䠄㛵ᩘ䛾࿧䜃ฟ䛧䜢䛭䛾䜎䜎್䛻⨨䛝᥮䛘䛶䜒඲䛟ྠ䛨ືస䜢䛩䜛䚹 
㛵ᩘ䛻๪స⏝䛜↓䛔≧ែ䠅
FRP䛻䛴䛔䛶ㄪ䜉䛶䜏䛯ឤ᝿ 
䞉ᐇ⿦䛻䜘䛳䛶ゝⴥ䛾ᐃ⩏䛜᭕᫕䛺Ẽ䛜䛩䜛䛾䛷䚸኱ኚΰ஘䛧䛯䚹 
䝇䝖䝸䞊䝮 
䝅䜾䝘䝹 
䞉㛵ᩘᆺゝㄒ䜈䛾㛵ᚰ䛜῝䜎䛳䛯䚹 
ཧ↷㏱㐣ᛶ䠄㛵ᩘ䛾࿧䜃ฟ䛧䜢䛭䛾䜎䜎್䛻⨨䛝᥮䛘䛶䜒඲䛟ྠ䛨ືస䜢䛩䜛䚹 
㛵ᩘ䛻๪స⏝䛜↓䛔≧ែ䠅 
䞉ᐇ㝿䛻䜰䝥䝸䜿䞊䝅䝵䞁᭩䛝䛺䛜䜙䛨䜓䛺䛔䛸⌮ゎ䛜㐍䜎䛺䛭䛖䚹
Library 
FRP: Javascript 
䞉https://github.com/Reactive-Extensions/RxJS 
䞉https://github.com/baconjs/bacon.js 
䞉https://github.com/facebook/react 
MVVM: Javascript 
䞉https://github.com/knockout/knockout 
䞉https://github.com/jashkenas/backbone 
䞉https://github.com/angular/angular.js 
䞉https://github.com/ractivejs/ractive 
䞉https://github.com/yyx990803/vue
ཧ⪃䝸䞁䜽 
䞉䛆⩻ヂ䛇䛒䛺䛯䛜ồ䜑䛶䛔䛯䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾ධ㛛 
http://ninjinkun.hatenablog.com/entry/introrxja 
䞉䛺䛬䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾䛿㔜せ䛛䚹 
http://d.hatena.ne.jp/pokarim/20101226 
䞉䝇䝖䝸䞊䝮⾲⌧䛸䛭䛾ኚ᥮ 
http://r7kamura.hatenablog.com/entry/2014/08/21/113654 
䞉FRP䛾ヰ 
http://maoe.hatenadiary.jp/entry/2012/12/24/011414 
䞉Web䝣䝻䞁䝖䜶䞁䝗䛷䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾 
http://www.ediplex.com/blog/?p=830 
䞉䜖䜛䜔䛛䛺 ReactiveCocoa 䛾ᑟධ 
https://speakerdeck.com/ninjinkun/yuruyakanareactivecocoafalsedao-ru 
䞉MVVM for iOS 
https://speakerdeck.com/laiso/mvvm-for-ios 
䞉ReactiveCocoa䛷iOS䛷䜒MVVM 
http://ios.caph.jp/articles/mvvm-using-reactivecocoa 
䞉AngularJS䛷ጞ䜑䜛䝸䜰䜽䝔䜱䝤䝥䝻䜾䝷䝭䞁䜾 
http://zoetrope.hatenablog.jp/entry/2014/02/15/175040 
䞉Bacon.js䛷═䜑䜛Functional reactive programming 
http://gan.hatenablog.jp/entry/2013/11/10/152720

Más contenido relacionado

La actualidad más candente

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
自宅サーバラックの勧め ~In osc nagoya~
自宅サーバラックの勧め ~In osc nagoya~自宅サーバラックの勧め ~In osc nagoya~
自宅サーバラックの勧め ~In osc nagoya~h-otter
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門Kota Mizushima
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?takezoe
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)Masatoshi Tada
 
エンジニアが成長のエンジンになる日 #devsumi #natsumiC7
エンジニアが成長のエンジンになる日 #devsumi  #natsumiC7エンジニアが成長のエンジンになる日 #devsumi  #natsumiC7
エンジニアが成長のエンジンになる日 #devsumi #natsumiC7Itsuki Kuroda
 
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
Cesiumを動かしてみよう
Cesiumを動かしてみようCesiumを動かしてみよう
Cesiumを動かしてみようKazutaka ishizaki
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語RShuyo Nakatani
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
ブラウザ自動化ツール カオスマップ風 - STAC2018 LT
ブラウザ自動化ツール カオスマップ風 - STAC2018 LTブラウザ自動化ツール カオスマップ風 - STAC2018 LT
ブラウザ自動化ツール カオスマップ風 - STAC2018 LThnisiji
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?Yoshitaka Kawashima
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門Momoko Hayamizu
 

La actualidad más candente (20)

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
自宅サーバラックの勧め ~In osc nagoya~
自宅サーバラックの勧め ~In osc nagoya~自宅サーバラックの勧め ~In osc nagoya~
自宅サーバラックの勧め ~In osc nagoya~
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
エンジニアが成長のエンジンになる日 #devsumi #natsumiC7
エンジニアが成長のエンジンになる日 #devsumi  #natsumiC7エンジニアが成長のエンジンになる日 #devsumi  #natsumiC7
エンジニアが成長のエンジンになる日 #devsumi #natsumiC7
 
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ひと漕ぎで二度おいしい!? Flutterを使ったモバイルアプリ開発への期待と実態と付き合い方(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Cesiumを動かしてみよう
Cesiumを動かしてみようCesiumを動かしてみよう
Cesiumを動かしてみよう
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
ブラウザ自動化ツール カオスマップ風 - STAC2018 LT
ブラウザ自動化ツール カオスマップ風 - STAC2018 LTブラウザ自動化ツール カオスマップ風 - STAC2018 LT
ブラウザ自動化ツール カオスマップ風 - STAC2018 LT
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門
 

Similar a Understanding Functional Reactive Programming (FRP) concepts and examples

第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会Shou Takenaka
 
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜Kenichi Inoue
 
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告VirtualTech Japan Inc.
 
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版hiroshi sano
 
CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++Seiya Ishibashi
 
ごみカレンダー
ごみカレンダーごみカレンダー
ごみカレンダーrarere
 
第4回WordBenchしずおか
第4回WordBenchしずおか第4回WordBenchしずおか
第4回WordBenchしずおかEndoh Shingo
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングYuichi Ito
 
IaaS業界激変の背景
IaaS業界激変の背景IaaS業界激変の背景
IaaS業界激変の背景知礼 八子
 
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014Satoshi Kitajima
 
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinar
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinarSalesforce API シリーズ: バルクAPIを使った高速並列データロードWebinar
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinarSalesforce Developers Japan
 
日本語:開発者向けのMongo dbオペレーションガイド
日本語:開発者向けのMongo dbオペレーションガイド日本語:開発者向けのMongo dbオペレーションガイド
日本語:開発者向けのMongo dbオペレーションガイドippei_suzuki
 
Grnxx 2014-11-29
Grnxx 2014-11-29Grnxx 2014-11-29
Grnxx 2014-11-29s5yata
 
Angular js活用事例:filydoc
Angular js活用事例:filydocAngular js活用事例:filydoc
Angular js活用事例:filydocKeiichi Kobayashi
 
[Android]Fragmentとのつきあい方を考える
[Android]Fragmentとのつきあい方を考える[Android]Fragmentとのつきあい方を考える
[Android]Fragmentとのつきあい方を考えるichigotake .
 
自分でロジックを考えてプログラムしてみよう
自分でロジックを考えてプログラムしてみよう自分でロジックを考えてプログラムしてみよう
自分でロジックを考えてプログラムしてみようKenichi Inoue
 
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせTomohiro Kumagai
 
Reactive Programming In JavaScript
Reactive Programming In JavaScriptReactive Programming In JavaScript
Reactive Programming In JavaScriptCrafity
 

Similar a Understanding Functional Reactive Programming (FRP) concepts and examples (20)

第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会
 
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
 
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告
SUSE Open Forum講演 - OpenStack Summit 2014 Paris 報告
 
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版
Shizuoka.py #4 pythonで設定ファイルを使う 質疑と資料について追記版
 
CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++
 
ごみカレンダー
ごみカレンダーごみカレンダー
ごみカレンダー
 
EMNLP2014_reading
EMNLP2014_readingEMNLP2014_reading
EMNLP2014_reading
 
第4回WordBenchしずおか
第4回WordBenchしずおか第4回WordBenchしずおか
第4回WordBenchしずおか
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
 
IaaS業界激変の背景
IaaS業界激変の背景IaaS業界激変の背景
IaaS業界激変の背景
 
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014
分析革命がもたらすビッグデータの世界@Cloudera World Tokyo 2014
 
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinar
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinarSalesforce API シリーズ: バルクAPIを使った高速並列データロードWebinar
Salesforce API シリーズ: バルクAPIを使った高速並列データロードWebinar
 
日本語:開発者向けのMongo dbオペレーションガイド
日本語:開発者向けのMongo dbオペレーションガイド日本語:開発者向けのMongo dbオペレーションガイド
日本語:開発者向けのMongo dbオペレーションガイド
 
Grnxx 2014-11-29
Grnxx 2014-11-29Grnxx 2014-11-29
Grnxx 2014-11-29
 
Angular js活用事例:filydoc
Angular js活用事例:filydocAngular js活用事例:filydoc
Angular js活用事例:filydoc
 
[Android]Fragmentとのつきあい方を考える
[Android]Fragmentとのつきあい方を考える[Android]Fragmentとのつきあい方を考える
[Android]Fragmentとのつきあい方を考える
 
自分でロジックを考えてプログラムしてみよう
自分でロジックを考えてプログラムしてみよう自分でロジックを考えてプログラムしてみよう
自分でロジックを考えてプログラムしてみよう
 
About dexcs2014of
About dexcs2014ofAbout dexcs2014of
About dexcs2014of
 
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせ
 
Reactive Programming In JavaScript
Reactive Programming In JavaScriptReactive Programming In JavaScript
Reactive Programming In JavaScript
 

Último

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Understanding Functional Reactive Programming (FRP) concepts and examples