Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elasticsearch 日本語スキーマレス環境構築と、ついでに多言語対応
Search
Kunihiko Kido
September 16, 2014
Technology
7.9k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elasticsearch 日本語スキーマレス環境構築と、ついでに多言語対応
第6回elasticsearch勉強会「Elasticsearch 日本語スキーマレス環境構築と、ついでに多言語対応」資料
Kunihiko Kido
September 16, 2014
More Decks by Kunihiko Kido
See All by Kunihiko Kido
Elasticsearchで作るメディアサイト
kunihikokido
7
2.5k
emo.travel の紹介と Elasticsearch の活用について
kunihikokido
1
2.2k
VELTRA - Elastic{ON} Tour Tokyo 2017
kunihikokido
0
1.6k
Elasticsearch 勉強会 2/2
kunihikokido
1
1.6k
Elasticsearch 勉強会 1/2
kunihikokido
4
5.6k
Developers.IO 2016 C-2 「Elasticsearchで自由自在に検索・分析できるようになるためのヒント」
kunihikokido
7
2.3k
開発効率アップ!Elasticsearch Client Tool 作ってみた
kunihikokido
0
1.8k
はじめての Elasticsearch
kunihikokido
1
1.5k
Other Decks in Technology
See All in Technology
Claude Codeとハーネスについて考えてみる
oikon48
19
9.4k
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
290
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.1k
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.8k
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
210
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
100
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
250
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.4k
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.7k
あなたの『Site』はどこですか? — xREという考え方
miyamu
0
1.2k
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
A Tale of Four Properties
chriscoyier
163
24k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
830
30 Presentation Tips
portentint
PRO
1
350
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
Transcript
&MBTUJDTFBSDIຊޠεΩʔϚϨ εڥߏஙͱɺ͍ͭͰʹଟݴޠରԠ ୈճ ษڧձ
ࣗݾհ ށࠃ ,6/*)*,0,*%0 ! φϨοδϫʔΫεגࣜձࣾ φϨοδϫʔΫεגࣜձࣾͰݕࡧˍΫϥυࣄۀؔ࿈ͷϚωʔδϝϯτͯ͠·͢ɻ &MBTUJDTFBSDIؔ࿈Ͱɻɻ ϒϩάʮ)FMMP&MBTUJDTFBSDIʯͱ͔ &MBTUJDTFBSDIBTBTFSWJDFʮ4JCB γʔό
ʯͷ اըɾӡӦͯ͠·͢ɻ “Hello! Elasticsearch” “ݕࡧBaaS” ͖ͭͮ8FCͰˠ
Ϛοϐϯάఆٛ ΊΜͲ͘͘͞ͳ͍Ͱ͔͢ʁ Ϛοϐϯάఆٛͱత ͪΐͬͱͨ͠σʔλͰઃܭඞཁͩ͠ɺ ਓʹΑͬͯશવҧ͏ઃܭʹͳͬͪΌ͏͠ɻɻ
Ϛοϐϯάఆٛʹʮతʯ͕͋Δ ㅟ ㅟ Ϛοϐϯάఆٛͱత ͦΕΘ͔Δ͚Ͳɻɻ
Ϛοϐϯάఆٛͱత ̍ ̎ ̏ ̐ ̑ ̒ ద߹Λ ্͍ͨ͠ ࠶ݱΛ
্͍ͨ͠ ਖ਼֬ʹ ߜΓࠐΈ͍ͨ ूܭ͍ͨ͠ ද͍ࣔͨ͠ BOENPSF ͔͠ϑΟʔϧυຖʹɻɻɻ ߟ͑Δ͜ͱ͕͍ͬͺ͍ʂ
Ϛοϐϯάఆٛͱత ̍ ̎ ̏ ̐ ̑ ̒ શҰகͰ ݕࡧɾूܭ͍ͨ͠ ʮʯʮʯʮݝʯ
Λলུͯ͠ݕࡧ͍ͨ͠ ϤϛͰݕࡧ͍ͨ͠ ಓݝίʔυ ॱͰιʔτ͍ͨ͠ ʮؔ౦ʯͳͲ ผ໊Ͱݕࡧɾूܭ͍ͨ͠ BOENPSFʜ ྫ͑ɺಓݝ໊ϑΟʔϧυ̍ͭͱͬͯ
Ϛοϐϯάఆٛͱత ঢ়گʹΑͬͯมԽ͢Δʮతʯ తʹΑͬͯมԽ͢ΔʮϚοϐϯάఆٛʯ Ϛοϐϯάͷઃܭॏཁ͚ͩͲʜ ʮతʯͷมԽΛఆͨ͠ઃܭʮܦݧʯ ݕࡧΤϯδϯͷςΫϊϩδʔͷཧղʮεΩϧʯ ͕ඞཁͬͯ͜ͱͳ͔ʁ ! ຖճઃܭ͢ΔͷΊΜͲ͏ͩ͠ɺٕज़ऀҭͯΔͷେม
Ϛοϐϯάఆٛͱత ຖճϚοϐϯάͷઃܭ͠ͳͯ͘ ಉ͡ઃܭࢥͰࣗಈతʹϚοϐϯάఆ͍ٛͨ͠ʂ ಉ͡ࢥ͍ͷਓ͖ͬͱ͍Δͣʂ ຖճʮFMBTUJDTFBSDINBQQJOHʯͰ άάΔͷݮΒ͍ͨͬ͢͠ɻɻ
Ϛοϐϯάఆٛͱత ͦͷΈ ͢Ͱʹ&MBTUJDTFBSDIʹ͋Γ·͢ʂ
%FNP %FNP
%FNP DELETE /myindex! ! PUT /myindex/mytype/1! ! {! "title": "Elasticsearch
ಛ·ͱΊ",! "description": "Elasticsearch Features — ओʹγεςϜΛத৺ͱͨ͠ಛ·ͱΊ",! "author": "Kunihiko Kido",! "link": "https://medium.com/hello-elasticsearch/elasticsearch-500996e47c70",! "tags": ["Elasticsearch"],! "pubDate": "2014-03-12T11:09"! } ͍ͭ௨Γɺ͜Μͳײ͡Ͱσʔλొ͢Δ͚ͩͰɺ ϑΟʔϧυຖʹඞཁͳϚοϐϯάఆ͕ٛग़དྷ্͕Δ
%FNP {! ...! "title" : {! "type" : "string",! "fields"
: {! "keyword" : {! "type" : "string",! "analyzer" : "keyword_analyzer"! },! "raw" : {! "type" : "string",! "index" : "not_analyzed"! },! "substring" : {! "type" : "string",! "analyzer" : "cjk"! },! "yomi" : {! "type" : "string",! "analyzer" : "katakana"! }! }! }! ...! }! UJUMFϑΟʔϧυͷϚοϐϯάఆٛ ˞ಈతʹ࡞͞ΕͨϚοϐϯάఆٛ
%FNP {! ...! "description" : {! "type" : "string",! "fields"
: {! "substring" : {! "type" : "string",! "analyzer" : "cjk"! }! }! },! ...! } ˞ಈతʹ࡞͞ΕͨϚοϐϯάఆٛ EFTDSJQUJPOϑΟʔϧυͷϚοϐϯάఆٛ
%FNP {! ...! "author" : {! "type" : "string",! "fields"
: {! "keyword" : {! "type" : "string",! "analyzer" : "keyword_analyzer"! },! "raw" : {! "type" : "string",! "index" : "not_analyzed"! },! "substring" : {! "type" : "string",! "analyzer" : "cjk"! },! "yomi" : {! "type" : "string",! "analyzer" : "katakana"! }! }! }! ...! }! BVUIPSϑΟʔϧυͷϚοϐϯάఆٛ ˞ಈతʹ࡞͞ΕͨϚοϐϯάఆٛ
%FNP {! ...! "link" : {! "type" : "string",! "index"
: "not_analyzed",! "fields" : {! "domain" : {! "type" : "string",! "analyzer" : "domain_analyzer"! },! "keyword" : {! "type" : "string",! "analyzer" : "keyword_analyzer"! },! "substring" : {! "type" : "string",! "analyzer" : "standard"! }! }! },! ...! } ˞ಈతʹ࡞͞ΕͨϚοϐϯάఆٛ MJOLϑΟʔϧυͷϚοϐϯάఆٛ
%FNP {! ...! "tags" : {! "type" : "string",! "fields"
: {! "keyword" : {! "type" : "string",! "analyzer" : "keyword_analyzer"! },! "raw" : {! "type" : "string",! "index" : "not_analyzed"! },! "substring" : {! "type" : "string",! "analyzer" : "cjk"! }! }! },! ...! }! ˞ಈతʹ࡞͞ΕͨϚοϐϯάఆٛ UBHTϑΟʔϧυͷϚοϐϯάఆٛ
%FNP ϚοϐϯάఆٛͰ໌ࣔతʹΞφϥΠβʔΛࢦఆ͠ͳ͍ͱ͍͏ҙຯ ㅟ ㅟ ㅟ ㅟ ㅟ TUBOEBSEΛ͏ͱݴ͏ҙຯͰͳ͍ͷͰҙ ଟݴޠରԠʮσϑΥϧτͷΞφϥΠβʔʯΛ͏
PUT /myindex/mytype/1! ! {! "title": "Elasticsearch Overview",! "description": "Elasticsearch Features —
System Overview",! "author": "Kunihiko Kido",! "link": "https://medium.com/hello-elasticsearch/elasticsearch-500996e47c70",! "tags": ["Elasticsearch"],! "pubDate": “2014-03-12T11:09”,! "language": “en",! } %FNP ʮӳޠʯͷจষͱͯ͠ΠϯσοΫε͍ͨ͠߹ ͜Ε͚ͩ
PUT /myindex/mytype/1! ! {! "title": "Elasticsearch ѐਃ",! "description": "Elasticsearch Features —
दझమ ѐਃ",! "author": "Kunihiko Kido",! "link": "https://medium.com/hello-elasticsearch/elasticsearch-500996e47c70",! "tags": ["Elasticsearch"],! "pubDate": “2014-03-12T11:09”,! "language": “ko",! } %FNP ʮؖࠃޠʯͷจষͱͯ͠ΠϯσοΫε͍ͨ͠߹ ͍͕͍ͱ؆୯ʂ
PUT /myindex/mytype/1! ! {! "title": "Elasticsearch Überblick",! "description": "Elasticsearch Features —
Systemübersicht",! "author": "Kunihiko Kido",! "link": "https://medium.com/hello-elasticsearch/elasticsearch-500996e47c70",! "tags": ["Elasticsearch"],! "pubDate": “2014-03-12T11:09”,! "language": “de",! } %FNP ʮυΠπޠʯͷจষͱͯ͠ΠϯσοΫε͍ͨ͠߹ ศར͔ʂ
%FNP ͋ͱɺଞͷϝϯόʔʹ ʮਖ਼֬ʹߜΓࠐΈ͍ͨ࣌ɺ SBXϑΟʔϧυ͏ʯ ͱ͔ɺ ʮݕࡧ࿙ΕΛগͳ͍ͨ͘͠߹ɺ TVCTUSJOH͏ʯ ͱ͔ڞ༗͢Εྑ͍͔ͳʁ
ϧʔϧԽͱద༻ͷࣗಈԽ ϧʔϧԽͱద༻ͷࣗಈԽ
ϧʔϧԽͱద༻ͷࣗಈԽ EZOBNJDUFNQMBUFT ʮϧʔϧԽʯ ϑΟʔϧυ໊ͷύλʔϯܕͷछྨʹΑͬͯ ϑΟʔϧυͷఆٛΛϧʔϧԽ͢ΔΈ JOEFYUFNQMBUF ʮద༻ͷࣗಈԽʯ ΠϯσοΫε࡞࣌ʹద༻͢ΔϧʔϧΛఆٛ ͓͚ͯ͠ΔΈ %FNPͷ༰Λ࣮ݱ͍ͯ͠ΔओͳΈ
EZOBNJDUFNQMBUFT EZOBNJDUFNQMBUFT
EZOBNJDUFNQMBUFT ʲEZOBNJDUFNQMBUFTʳͱ ϑΟʔϧυ໊ͷύλʔϯɾܕຖʹϚοϐϯάఆٛͷς ϯϓϨʔτ༻ҙ͓͚ͯ͠ΔΈ
EZOBNJDUFNQMBUFT {! ...! "dynamic_templates": [! {! "my_field": {! "match": "*",
/* ᶃ ϑΟʔϧυ໊ͷύλʔϯ */! "match_pattern": "regex", /* ᶄ matchͷϚονϯάํࣜ ʢলུՄʣ*/! "match_mapping_type": "string", /* ᶅ JSONϑΥʔϚοτͷλΠϓ */! "mapping": {...} /* ᶆ Ϛοϐϯάఆٛ */! }! },! ...(ෳఆٛͰ͖Δ)! ],! ...! }! ! جຊతͳઃఆ
EZOBNJDUFNQMBUFT {! "url_fields": {! "match": ".*url|.*link",! "match_pattern": "regex",! "match_mapping_type": "string",!
"mapping": {! "type": "string",! "index": "not_analyzed",! "fields": {! "keyword": {! "type": "string",! "analyzer": "keyword_analyzer"! },! "substring": {! "type": "string",! "analyzer": "standard"! },! "domain": {! "type": "string",! "analyzer": "domain_analyzer"! }! }! }! }! }! ྫʣ63-ϑΟʔϧυ͚
EZOBNJDUFNQMBUFT {! "special_string_fields": {! "match": ".*title.*|.*name.*|.*author.*",! "match_pattern": "regex",! "match_mapping_type": "string",!
"mapping": {! "type": "string",! "fields": {! "raw": {! "type": "string",! "index": "not_analyzed"! },! "keyword": {! "type": "string",! "analyzer": "keyword_analyzer"! },! "substring": {! "type": "string",! "analyzer": "ja-substring"! },! "yomi": {! "type": "string",! "analyzer": "katakana"! }! }! }! }! } ྫʣ໊শॏཁͳϑΟʔϧυ
EZOBNJDUFNQMBUFT {! "long_string_fields": {! "match": ".*message.*|.*content.*|.*description.*| .*text.*|.*body.*|.*note.*|.*memo.*",! "match_pattern": "regex",! "match_mapping_type":
"string",! "mapping": {! "type": "string",! "fields": {! "substring": {! "type": "string",! "analyzer": "ja-substring"! }! }! }! }! } ྫʣจϑΟʔϧυ
EZOBNJDUFNQMBUFT {! "short_string_fields": {! "match": "*",! "match_mapping_type": "string",! "mapping": {!
"type": "string",! "fields": {! "raw": {! "type": "string",! "index": "not_analyzed"! },! "keyword": {! "type": "string",! "analyzer": "keyword_analyzer"! },! "substring": {! "type": "string",! "analyzer": "ja-substring"! }! }! }! }! } ྫʣͦͷଞϑΟʔϧυ
EZOBNJDUFNQMBUFT {! ...! "dynamic_templates": [! {! “url_field": {…}! },! {!
"special_string_fields": {…}! },! {! "long_string_fields": {…}! },! {! "short_string_fields": {…}! },! ],! ...! } ࠷ॳʹύλʔϯʹϚονͨ͠Ϛο ϐϯά͕ఆٛ͞ΕΔ
JOEFYUFNQMBUF JOEFYUFNQMBUF
JOEFYUFNQMBUF ʲJOEFYUFNQMBUFʳͱʁ ΠϯσοΫε໊ͷύλʔϯຖʹΠϯσοΫεఆٛͷς ϯϓϨʔτΛ༻ҙ͓͚ͯ͠ΔΈ
JOEFYUFNQMBUF DPOpHUFNQMBUFTԼʹอଘ͢Δ͚ͩͰ४උ0, ˝FMBTUJDTFBSDI ˝DPOpH ˝UFNQMBUFT CBTFKTPO DVTUPN@BOBMZ[FSTKTPO KBQBOFTF@BOBMZ[FSTKTPO MBOHVBHF@BOBMZ[FSTKTPO TUSJOH@pFMETKTPO
%FNPͰ͍ͬͯΔJOEFY UFNQMBUFϑΝΠϧͨͪ ˡ ɾϊʔυͷ࠶ىಈඞཁͳ͍ ɾ৽نͰ࡞ͨ͠ΠϯσοΫεͷΈʹద༻͞ΕΔ ɾςϯϓϨʔτෳ࡞ΕΔ ɾ"1*ͰઃఆͰ͖Δ ɾEZOBNJDUFNQMBUFTͷఆؚٛΊΒΕΔ
JOEFYUFNQMBUF {! "my_template":{ /* ςϯϓϨʔτͷ໊લ */! "template": "*", /* ςϯϓϨʔτΛద༻͢ΔΠϯσΫε໊ͷύλʔϯ
*/! "order": 0, /* ςϯϓϨʔτΛద༻͢Δ༏ઌॱҐ */! "settings": {...}, /* γϟʔυͷͱ͔ɺAnalysis ͷઃఆΠϯσοΫεఆٛʹؔΘΔઃఆ */! "mappings": {...} /* Ϛοϐϯάఆٛͷઃఆɻdynamic templates͜͜Ͱઃఆ */! . . .! }! }! ! ! ! ! ! ϑΝΠϧ໊ͱςϯϓϨʔτ໊ͱΓ͋͑ͣಉ͡ʹ͓͚ͯ͠ྑ͍͔ͳʁ جຊతͳઃఆ
JOEFYUFNQMBUF {! "base": {! "template": "*",! "order": 1,! "mappings": {!
"_default_": {! "_timestamp" : {! "enabled" : true,! "store" : true! },! "_analyzer": {! "path": "language"! },! "_id": {! "path": "id"! },! "_source": {! "excludes" : ["attachment_file"]! }! }! }! }! }! UFNQMBUFTCBTFKTPO σϑΥϧτͷΞφϥΠβʔมߋ͢ΔͨΊͷMBOHVBHFϑΟʔϧυͷఆٛͳͲ
JOEFYUFNQMBUF {! "language_analyzers": {! "template": "*",! "order": 2,! "settings": {!
"analysis": {! "filter": {! "arabic_stop": {! "type": "stop",! "stopwords": "_arabic_"! },! "arabic_stemmer": {! "type": "stemmer",! "language": "arabic"! },! "armenian_stop": {! "type": "stop",! "stopwords": "_armenian_"! },! "armenian_stemmer": {! "type": "stemmer",! "language": "armenian"! },! "basque_stop": {! "type": "stop",! "stopwords": "_basque_"! },! "basque_stemmer": {! "type": "stemmer",! "language": "basque"! },! "brazilian_stop": {! "type": "stop",! "stopwords": "_brazilian_"! },! "brazilian_stemmer": {! "type": "stemmer",! "language": "brazilian"! },! "bulgarian_stop": {! "type": "stop",! "stopwords": "_bulgarian_"! },! "bulgarian_stemmer": {! "type": "stemmer",! "language": "bulgarian"! },! "catalan_elision": {! UFNQMBUFTMBOHVBHF@BOBMZ[FSTKTPO ֤ࠃݴޠຖͷϑΟϧλʔΞφϥΠβʔͷఆٛͳͲ
JOEFYUFNQMBUF {! "japanese_analyzers": {! "template": "*",! "order": 2,! "settings": {!
"analysis": {! "char_filter": {! "japanese_normalization": {! "type": "kuromoji_iteration_mark",! "normalize_kanji": true,! "normalize_kana": true! }! },! "filter": {! "romaji_readingform": {! "type": "kuromoji_readingform",! "use_romaji": true! },! "katakana_readingform": {! "type": "kuromoji_readingform",! "use_romaji": false! },! "katakana_stemmer": {! "type": "kuromoji_stemmer",! "minimum_length": 4! },! "japanese_stop": {! "type": "kuromoji_part_of_speech"! }! },! "tokenizer": {! "japanese_tokenizer": {! "type": "kuromoji_tokenizer",! "mode": "search"! }! },! "analyzer": {! "default": {! "alias": ["japanese", "ja"],! "type": "custom",! "char_filter": [! "html_strip",! "japanese_normalization"! ],! "tokenizer": "japanese_tokenizer",! "filter": [! "cjk_width",! "lowercase",! UFNQMBUFTKBQBOFTF@BOBMZ[FSTKTPO ຊޠؔ࿈ͷϑΟϧλʔΞφϥΠβʔͷఆٛͳͲ
JOEFYUFNQMBUF {! "custom_analyzers": {! "template": "*",! "order": 2,! "settings": {!
"analysis": {! "filter": {! "domain_extractor" : {! "type" : "pattern_replace",! "preserve_original": false,! "pattern" : "https?://([^/]+).*",! "replacement": "$1"! }! },! "tokenizer": {! "comma_tokenizer": {! "type": "pattern",! "pattern":"[,ɺ]+"! }! },! "analyzer": {! "domain_analyzer" : {! "alias": ["domain"],! "tokenizer" : "uax_url_email",! "filter" : [ "domain_extractor", "lowercase", "unique" ]! },! "comma_analyzer":{! "alias": ["comma"],! "type": "custom",! "tokenizer": "comma_tokenizer",! "filter": ["cjk_width", "lowercase", "trim", "unique"]! },! "keyword_analyzer": {! "type": "custom",! "tokenizer": "keyword",! "filter": ["cjk_width", "lowercase", "trim"]! }! }! }! }! }! } UFNQMBUFTDVTUPN@BOBMZ[FSTKTPO 63-͔ΒυϝΠϯ໊Λநग़ͨ͠Γݴޠʹґଘ͠ͳ͍ΞφϥΠβʔͷఆٛ
JOEFYUFNQMBUF {! "string_fields": {! "template": "*",! "order": 10,! "mappings": {!
"_default_": {! "dynamic_templates": [! {! "not_analyzed_fields": {! "match": "method|charSet|mimeType| content_type|language",! "match_pattern": "regex",! "match_mapping_type": "string",! "mapping": {! "type": "string",! "index": "not_analyzed"! }! }! },! {! "url_fields": {! "match": ".*url|.*link",! "match_pattern": "regex",! "match_mapping_type": "string",! "mapping": {! "type": "string",! "index": "not_analyzed",! "fields": {! "keyword": {! "type": "string",! "analyzer": "keyword_analyzer"! },! "substring": {! "type": "string",! "analyzer": "standard"! },! "domain": {! "type": "string",! "analyzer": "domain_analyzer"! }! }! }! }! },! {! "comma_separated_fields": {! "match": "meta_keywords",! "match_pattern": "regex",! "match_mapping_type": "string",! "mapping": {! UFNQMBUFTTUSJOH@pFMETKTPO TUSJOHܕϑΟʔϧυͷμΠφϛοΫςϯϓϨʔτఆٛ
JOEFYUFNQMBUF ˝ΠϯσοΫε࡞ TFUUJOHTཁૉͷద༻ ˝λΠϓͷ࡞ NBQQJOHTཁૉͷద༻ ˝ϑΟʔϧυσʔλͷՃ EZOBNJDUFNQMBUFTͷద༻ γϟʔυͷઃఆͱ͔"OBMZTJTͷఆٛ ͳͲ͜ͷλΠϛϯάͰద༻ɻ ݻఆͷϑΟʔϧυͷఆٛͳͲ͜ͷλ
ΠϛϯάͰద༻ɻ EZOBNJDUFNQMBUFTͷఆٛ͜ͷλΠ ϛϯάͰద༻ɻ ˡ ˡ ˡ ద༻ͷྲྀΕ ✔️ ✔️ ✔️
JOEFYUFNQMBUF ͞Βʹ ΠϨΪϡϥʔͳରԠͰ͖Δ ॊೈੑ݉Ͷඋ͑ͯ·͢ʂ ㅟ ㅟ ㅟ ͓͓ɺͦΕಋೖ͍͢͠ɻ
JOEFYUFNQMBUF ˝ΠϯσοΫε࡞ TFUUJOHTཁૉͷద༻ NBQQJOHTཁૉͷద༻ ˝ϑΟʔϧυσʔλͷՃ EZOBNJDUFNQMBUFTͷద༻ ΠϨΪϡϥʔͳରԠ͍ͨ͠߹ ✔️ ✔️ ✔️
ରͷϑΟʔϧυఆ͕ٛଘࡏ͠ͳ͍ ㅟ ㅟ ㅟ ㅟ ㅟ ㅟ ߹ɺEZOBNJDUFNQMBUFTͷఆٛ͜ͷ ㅟ λΠϛϯάͰద༻ɻ ˡ ΠϨΪϡϥʔͳϚοϐϯάఆٛΛ͍ͨ͠ ߹͜ͷλΠϛϯάͰఆٛ͢Ε0, ˝λΠϓͷ࡞
࠷ޙʹ ࠷ޙʹ
࠷ޙʹ ͜ΕͰ୭Ͱ؆୯ʹ &MBTUJDTFBSDIΛ͍͜ͳͤΔʂ ʜͨͿΜɺ͓ͦΒ͘ɺ͖ͬͱ ! ˞%FNPͷΈ4JCB IUUQTJCBUPLZP ʹಋೖ͍ͯ͠·͢ɻ ڵຯͷ͋ΔํɺͥͻΞΧϯτొͯ͠ಈ࡞Λ֬ೝͯ͠Έ͍ͯͩ͘͞ɻ վળͷཁɺ!·Ͱ͓͖͕Δʹʂ
࠷ޙʹ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
φϨοδϫʔΫε͔Β େͳ͓Βͤ
ʮୈճ&MBTUJDTFBSDIษڧձʯࢀՃऀݶఆ 4JCBͷແྉΛ υΩϡϝϯτʹ֦େ͠·͢ʂ Ξϯέʔτʹ͝ڠྗ͍ͩ͘͞ɻ ˞Ξϯέʔτʹ͝ճ͍͔ͨͩͳͯ͘4JCB͍͍ͨʂͱݴ͏߹0, ! ! ͥͻ͜ͷػձʹ4JCBΛͬͯΈ͍ͯͩ͘͞N @@ N
http://siba.tokyo