Slide 1

Slide 1 text

$ whoami • @nasa9084 • Hakodate - Sapporo - Asaka - Sapporo • Go/Kubernetes • builderscon 2024 Organizer • Kubernetes SIG Docs Localization Subproject (Japanese)

Slide 2

Slide 2 text

Context:

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Can't we share a single account? • ALL contents will be shared • Sometimes I don't want to share some • Reading state will be shared • Everyone can buy any on Amazon

Slide 8

Slide 8 text

MEH.

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Amazon Kids • can create multiple pro fi les • can share contents YOU WANT TO for each pro fi le • each pro fi le can have each reading state

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Meh.

Slide 13

Slide 13 text

"'&8 .*/65&4 -"5&3

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

e-book title Normalization @nasa9084 2024.10.06 YAPC::Hakodate

Slide 16

Slide 16 text

ະདྷ೔ه(1) (֯઒ίϛοΫεɾΤʔε)

Slide 17

Slide 17 text

ະདྷ೔ه(1) (֯઒ίϛοΫεɾΤʔε) γϦʔζ ר਺ Ϩʔϕϧ

Slide 18

Slide 18 text

.+\(\d+\) \(.*コミックス?.*\) γϦʔζ ר਺ Ϩʔϕϧ

Slide 19

Slide 19 text

໊୳ఁίφϯʢ̔̑ʣ (গ೥αϯσʔίϛοΫε)

Slide 20

Slide 20 text

໊୳ఁίφϯʢ̔̑ʣ (গ೥αϯσʔίϛοΫε) શ֯

Slide 21

Slide 21 text

໊୳ఁίφϯʢ̔̑ʣ (গ೥αϯσʔίϛοΫε) ൒֯ ൒֯

Slide 22

Slide 22 text

.+[((][0-90-9]+[))] \(.*コミックス?.*\)

Slide 23

Slide 23 text

ϘϘϘʔϘɾϘʔϘϘ 8 (δϟϯϓίϛοΫεDIGITAL)

Slide 24

Slide 24 text

.+[((]?[0-90-9]+[))]? \(.*コミックス?.*\)

Slide 25

Slide 25 text

̼̾̽̾ɹ̎ר (·Μ͕λΠϜKRίϛοΫε)

Slide 26

Slide 26 text

.+[((]?[0-90-9]+巻?[))]? \(.*コミックス?.*\)

Slide 27

Slide 27 text

̼̾̽̾ɹ̍רʲAmazon.co.jpݶఆඳ͖ԼΖ͠ಛయ෇͖ʳ (·Μ͕λΠϜKRίϛοΫε)

Slide 28

Slide 28 text

.+[((]?[0-90-9]+巻?[))]?(【Amazon\.co\.jp限定描 き下ろし特典付き】)? \(.*コミックス?.*\)

Slide 29

Slide 29 text

ΞϦεͱଂ࿡(6)ʲಛయϖʔύʔ෇͖ʳ (RYU COMICS) ΞϦεͱଂ࿡(9)ʲిࢠݶఆಛయϖʔύʔ෇͖ʳ (RYU COMICS)

Slide 30

Slide 30 text

.+[((]?[0-90-9]+巻?[))]?(【(Amazon\.co\.jp|電子)? 限定描き下ろし)?特典(ペーパー)?付き】)? \(.*コミック ス?.*\)

Slide 31

Slide 31 text

Q: Can't we use "any" for the special o ff ers like ʲ.+ʳ?

Slide 32

Slide 32 text

A: NO. e.g. ʲਪ͠ͷࢠʳ

Slide 33

Slide 33 text

͓͔͠ͳసੜXVI ӄ๳͸ࠇͯ͘΄Ζۤ͘ʲిࢠॻ੶ݶఆॻ͖ԼΖ͠SS෇͖ʳ (TOϒοΫεϥϊϕ) ר਺͕ϩʔϚ਺ࣈ ר਺ͷޙʹ෭୊ ৽͍͠ಛయͷύλʔϯ

Slide 34

Slide 34 text

.+[((]?[0-90-9IVX]+巻?[))]?( [^ 【]+)?(【(Amazon\.co\.jp|電子(書籍)?)?限定[書描]き下 ろし)?(SS|特典(ペーパー)?)付き】)? \(.*コミック ス?.*\)

Slide 35

Slide 35 text

͓લɺλψΩʹͳΒͶʔ͔ʁ: 6ʲΠϥετಛయ෇ʳ (comic POOL) ίϩϯ༗Γ ৽ಛయ ӳޠͰcomic

Slide 36

Slide 36 text

MONOQLO (ϞϊΫϩ) 2024೥ 02݄߸ [ࡶࢽ]

Slide 37

Slide 37 text

.+[((]?([0-90-9IVX]+巻?|\d{4}年 ?\d{1,2}月 号)[))]?( [^【]+)?(【(Amazon\.co\.jp|電子(書籍)?)?(限 定)?([書描]き下ろし)?(SS|(イラスト)?特典(ペーパー)?) 付き】)? \(.*(コミックス?|comics?).*\)\[雑誌\]

Slide 38

Slide 38 text

GetNavi 2024೥3.5݄߸[ࡶࢽ]

Slide 39

Slide 39 text

ΫϏΩϦαΠΫϧ ੨৭αϰΝϯͱٔݴݣ͍ ΫϏγϝϩϚϯνετ ਓࣦؒ֨ɾྵ࡚ਓࣝ ΫϏπϦϋΠεΫʔϧ ٔݴݣ͍ͷఋࢠ (ߨஊࣾจݿ) αΠίϩδΧϧʢ্ʣ 㙽௻໦ᆇีͷٔݴࡴ͠ (ߨஊࣾจݿ) αΠίϩδΧϧʢԼʣɹӪ͔ΕऀͷখӖ (ߨஊࣾจݿ) ώτΫΠϚδΧϧɹࡴፋحज़ͷ೏ٶܑຓ (ߨஊࣾจݿ) ωίιΪϥδΧϧʢதʣɹ੺͖੐ࡋ͂ͅɽᒵͳΔछ (ߨஊࣾจݿ) ωίιΪϥδΧϧʢԼʣɹ੨৭αϰΝϯͱٔݴݣ͍ (ߨஊࣾจݿ) ωίιΪϥδΧϧʢ্ʣɹेࡾ֊ஈ (ߨஊࣾจݿ) ΩυφϓΩσΟϯάɹ੨৭αϰΝϯͱٔݴݣ͍ͷ່ (ߨஊࣾϊϕϧε)

Slide 40

Slide 40 text

5)064"/%4 :&"34-"5&3

Slide 41

Slide 41 text

Normalize replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(re placeAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(repl aceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replac eAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(prop("Name"), "̍", "1"), "̎", "2"), "̏", "3"), "̐", "4"), "̑", "5"), "̒", "6"), "̓", "7"), "̔", "8"), "̕", "9"), "̌", "0"), "ᶃ", "1"), "ᶄ", "2"), "ᶅ", "3"), "ᶆ", "4"), "ᶇ", "5"), "ᶈ", "6"), "ᶉ", "7"), "ᶊ", "8"), "ᶋ", "9"), "ᶌ", "10"), "ʢ", "("), "ʣ", ")"), "ɹ", " "), "ୈҰू", "ୈ1ू"), "ୈೋू", "ୈ2ू"), "ୈࡾू", "ୈ3ू"), "ୈ࢛ू", "ୈ4ू"), "ୈޒू", "ୈ5ू"), "ୈ࿡ू", "ୈ6ू"), "ୈࣣू", "ୈ7ू"), "ୈീू", "ୈ8ू"), "ୈ۝ू", "ୈ9ू"), "ୈेू", "ୈ10ू"), "ˌ", "#")

Slide 42

Slide 42 text

Remove special part replaceAll(replaceAll(prop("normalized"), "ʲ(((((ిࢠ(ॻ੶)?|σδλϧ)൛?|Amazon\.co\.jp)(ݶఆ)?)?((((Π ϥετ)?ಛయ)?(ίϥϘ)?(ϖʔύʔ)?)|[ॻ|ඳ]͖ԼΖ͠(SS)?|͓·͚|ΧϥʔϨγϐ)(ಛయ)?෇͖? ?)|(୯࿩|Χϥʔϖʔδ૿ྔ) ൛|ిࢠ(୯ߦຊ|൛)|ແྉ)(ʗڞ௨ϖʔύʔ෇͖)?ʳ|\[(ిࢠॻ੶൛|ࡶࢽ)\]|(௨ৗ|ಛ૷)൛", ""), "^ +| +$", "")

Slide 43

Slide 43 text

Extract Brand match(prop("rmSpecial"), "\(([^()]*(จݿ|৽ॻ|ίϛοΫε?|[Cc]omics?|COMICS?|ϒοΫε|ϊϕϧζ|BOOKS?|ΧυΧ ϫ|֯઒|ߨஊࣾ|ίϧΫ|ΞεΩʔυϫϯΰ|MFC|GANMA!|ΪλʔɾϚΨδϯ)[^()]*)\)")

Slide 44

Slide 44 text

Extract Episode Number match(prop("rmBrand"), "(^\d+ )|(^\d+: ([^ ]+)?)|(^#\d+)|(^\dרʮ[^ʮʯ]+ʯ)|(\([্தԼ]\))|([্தԼ]$)| (ୈ?\d+[רू]:?(( ʮ[^ʯ]+ʯଞ?)|( ʮ[^ʯ]+ ଞʯ)|( ʰ[^ʱ]+ ଞʱ))?)|(\(\d+\) ? ~ .+$|(\(\d+\))|(ʲ\d+ʳ)| (:? ?(Vol\.)?\d+ *$)|(\d{4}೥ ?(\d\.)?\d{1,2}݄߸(\(vol.\d+\))?$)|(ୈ.෦ ?ʮ[^ʮʯ]+[0-9IVX]+ʯ( ?ຊ޷͖ ͷԼႥ্ ୈ[Ұೋࡾ࢛ޒ࿡ࣣീ۝े]෦)?$)|([IVX]+[ ~ ].+$)|( [^ ]+ฤ( \d+)?)$)")

Slide 45

Slide 45 text

Grouping... let(src, prop("rmEpisode"), ifs(test(src, "(ଓɾ)?.෺ޠ(\(.\))?"), "෺ޠγϦʔζ", test(src, "ΫϏΩϦαΠ Ϋϧ|ΫϏγϝϩϚϯνετ|ΫϏπϦϋΠεΫʔϧ|αΠίϩδΧϧ|ώτΫΠϚδΧϧ|ωίιΪϥδΧϧ|ΩυφϓΩσΟϯά"), " ٔݴγϦʔζ", test(src, "^ྵ࡚..ͷਓؒ.+"), "ਓؒγϦʔζ")

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

- fi n-