Slide 1

Slide 1 text

͜ ͷ Ն ͷ ࠷ ৽ 5FYU)BUFOB Λ͓ಧ͚͠·͢ େ੢߁༟ JEPOJTIJ ͸ͯͳ

Slide 2

Slide 2 text

ࣗݾ঺հ w JEPOJTIJେ੢߁༟ w גࣜձࣾ͸ͯͳ ʙ w νʔϑΤϯδχΞ w ͸ͯͳϒϩάσΟϨΫλʔ w !ZBTVIJSP@POJTIJ w 1"64&0/*4)*%FWFM,:51SPG

Slide 3

Slide 3 text

5FYU)BUFOBͱ͸ ͸ ͯ ͳ ه ๏ Λ )5.-ʹม׵ ͢ΔϞδϡʔϧ

Slide 4

Slide 4 text

͸ͯͳه๏ͱ͸ w ͸ͯͳϒϩά΍͸ͯͳμΠΞϦʔ΍͸ͯͳά ϧʔϓͰ࢖͑Δॻࣜ w ͔ΜͨΜͳهड़Ͱ)5.-จॻߏ଄΍ࣗಈϦϯ Ϋ͕ॻ͚Δ w IBUFOBEJBSZHIBUFOBOFKQLFZXPSE ͸ͯͳه๏Ұཡ

Slide 5

Slide 5 text

ೖྗࢧԉʢϒϩοΫه๏ʣ

Slide 6

Slide 6 text

ࣗಈϦϯΫʢΠϯϥΠϯه๏ʣ

Slide 7

Slide 7 text

ͨ͘͞Μͷ5FYU)BUFOB w 5FYU)BUFOBʙ KLPOEP w IUUQTNFUBDQBOPSHSFMFBTF+,0/%05FYU)BUFOB w 5FYU)BUFOB KLPOEP w IUUQTNFUBDQBOPSHNPEVMF5FYU)BUFOB w 5FYU9BUFOB DIP w IUUQTNFUBDQBOPSHNPEVMF5FYU9BUFOB w 5FYU)BUFOB-JUF XBLBCBUBO w IUUQTHJUIVCDPNXBLBCBQFSMUFYUIBUFOBMJUF

Slide 8

Slide 8 text

5FYU)BUFOBʙ use  Text::Hatena;  #  0.16 my  $parser  =  Text::Hatena-­‐>new;      $parser-­‐>parse($text); my  $html  =  $parser-­‐>html;  

Slide 9

Slide 9 text

5FYU)BUFOB use  Text::Hatena;  #  0.20 my  $html  =  Text::Hatena-­‐>parse($text);  

Slide 10

Slide 10 text

5FYU9BUFOB use  Text::Xatena; my  $thx  =  Text::Xatena-­‐>new;      $thx-­‐>format($string);

Slide 11

Slide 11 text

5FYU)BUFOB-JUF use  Text::HatenaLite::Parser; my  $html  =  Text::HatenaLite::Parser -­‐>parse_string($string);

Slide 12

Slide 12 text

΋ͬͱͨ͘͞Μͷʜ •Hatena::Diary::HTMLParserBody •Hatena2::Group::HTMLParserBody •Hatena::Bookmark::TextFormat •Hatena::Haiku::Body

Slide 13

Slide 13 text

)BUFOB%JBSZ)5.-1BSTFS#PEZ w ࠷ॳͷ͸ͯͳه๏1BSTFS w ೥·Ͱςετͳ͔ͬͨ w ߦͷϝιου w·ͩ࢖ΘΕ͍ͯ·͢ʜ

Slide 14

Slide 14 text

)%)5.-1BSTFS#PEZNBLFMJOL

Slide 15

Slide 15 text

ه๏ల։ͷ೉͠͞ w ͸ͯͳه๏͸)5.-λά͕࢖͑Δ w ίϝϯτه๏ w εʔύʔ13&ه๏ ςΩετΛ)5.-ʹ͢Δ΋ͷ͚ͩͲ )5.-1BSTFSϕʔε

Slide 16

Slide 16 text

ه๏ల։ͷ೉͠͞ ͜͜͸ه๏ల։͠ͳ͍Α >|| ه๏ల։͠ͳ͍ͰPREʹͳΔΑ ||<

Slide 17

Slide 17 text

ه๏ల։ͷ೉͠͞ >|| ͜͜͸Ͳ͏ͳΔʁ ||<   >|| ||<

Slide 18

Slide 18 text

ه๏ల։ͷ೉͠͞ ه๏ͱ)5.-Λ ಉ࣌ʹղऍ͠ͳ ͚Ε͹͍͚ͳ͍

Slide 19

Slide 19 text

ه๏ల։ͷ೉͠͞ w ه๏ͷల։ w ΩʔϫʔυϦϯΫ w 944ରࡦ ϗϫΠτϦετʹΑΔTDSJQU੍ݶ ͭͷ͜ͱΛಉ࣌ʹ΍͍ͬͯΔ

Slide 20

Slide 20 text

ه๏ల։ͷ೉͠͞ w ه๏ͱΩʔϫʔυϦϯΫ͕ີ݁߹͍ͯ͠Δ w <>ΩʔϫʔυϦϯΫ͠ͳ͍ه๏<> w ه๏ల։͢ΔͱҙຯΛࣦ͏ Ͳ͏ͯ͜͠͏ͳͬͨ

Slide 21

Slide 21 text

ه๏ల։ͷ೉͠͞ ه๏ల։ͱΩʔϫʔ υϦϯΫΛಉ࣌ʹߦ Θͳ͚Ε͹ͳΒͳ͍

Slide 22

Slide 22 text

͜ͷͨΊ ه๏ల։ͱΩʔϫʔυϦϯΫ͕ີ݁ ߹Ͱ͋ΔͨΊɺ5FYU)BUFOB ͳ Ͳͷه๏ల։͚ͩͷϞδϡʔϧΛ ࡞ͬͯ΋ɺ࣮ࡍͷϓϩμΫτʢ͸ͯ ͳμΠΞϦʔʣͰར༻Ͱ͖ͳ͔ͬͨ

Slide 23

Slide 23 text

Ͳ͏͠Α͏

Slide 24

Slide 24 text

ϝλσʔλʹΑΔૄ݁߹Խ ه๏ల։࣌ʹ ʮ͜ΕҎ্ϦϯΫ͠ͳ͍ʯͱ͍͏ ΧελϜσʔλଐੑΛ෇༩ ͜͜͸͜ΕҎ্ϦϯΫ͠ͳ͍

Slide 25

Slide 25 text

ϝλσʔλʹΑΔૄ݁߹Խ wه๏ύʔα w EBUBVOMJOLଐੑΛ෇༩ wΩʔϫʔυϦϯΧ w EBUBVOMJOLଐੑΛݟͯϦϯΫΛ൑அ ૄ݁߹Խ }

Slide 26

Slide 26 text

The new Text::Hatena w 5FYU9BUFOB ˜DIP Λϕʔεʹ w ΧελϜσʔλଐੑΛ࢖ͬͯه๏ల։ͱΩʔ ϫʔυϦϯΫΛૄ݁߹Խ w աڈʢ΍ྨࣅʣͷΠϯλʔϑΣʔεޓ׵ w ଟ͘ͷ͸ͯͳه๏ʹରԠ w࣮ࡍʹ͸ͯͳϒϩάͰར༻͍ͯ͠Δ

Slide 27

Slide 27 text

ΠϯλʔϑΣʔεޙํޓ׵ use Text::Hatena; my $parser = Text::Hatena->new; my $html = $parser->parse($string); # Text::Hatena 0.16 style my $html = $parser->html; # Text::Hatena 0.20 style my $html = Text::Hatena->parse($string); # Text::Xatena style my $html = $parser->format($string);

Slide 28

Slide 28 text

୯ମͰ΋࢖͑ΔศརϞδϡʔϧ •Text::Hatena::Keyword w ΩʔϫʔυϦϯΧ •Text::Hatena::Embed w 63-ຒΊࠐΈࢧԉ ه๏

Slide 29

Slide 29 text

5FYU)BUFOB,FZXPSE EBUBVOMJOLଐੑΛߟྀͯ͠ΩʔϫʔυϦϯΫ my $parser = Text::Hatena::Keyword->new( rules => [ qr/hoge|fuga/ => sub { sprintf '/keyword/%s', uri_escape($_) }, [qw/foo bar/] => sub { sprintf '/other/%s', uri_escape($_) }, ], ); my $words = $parser->extract($html); # நग़ my $formatted_html = $parser->format($html); # ϦϯΫ

Slide 30

Slide 30 text

5FYU)BUFOB&NCFE 63-Λ౉͢ͱ͍͍ײ͡ʹFNCFE my $embed = Text::Hatena::Embed->new; my $html = $embed->render($url); XXXTMJEFTIBSFOFUPOJTIJPFNCFEUFYUIBUFOB

Slide 31

Slide 31 text

ຊ೔ެ։͠·ͨ͠ HJUIVCDPNPOJTIJ5FYU)BUFOB Ͳ͏ͧ͝ར༻͍ͩ͘͞ QVMMSFRVFTU͍ͩ͘͞

Slide 32

Slide 32 text

͸ͯͳϒϩά ि࿈ଓ৽ػೳϦϦʔεத ೔ຊҰ։ൃ͕ϗοτͳϒϩά hatenablog.com

Slide 33

Slide 33 text

ਓࡐืू wגࣜձࣾ͸ͯͳͰ͸ΤϯδχΞͦͷଞ શ৬छΛืू͍ͯ͠·͢ wҰॹʹϒϩάΛ࡞Γ·͠ΐ͏ʂ www.hatena.ne.jp/company/staff

Slide 34

Slide 34 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠