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
8k
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
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.1k
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
520
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.1k
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
220
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
3
1.4k
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
少人数データチームのDevin活用実践事例
runandy16
2
430
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
230
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
560
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
240
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.5k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Raft: Consensus for Rubyists
vanstee
141
7.7k
So, you think you're a good person
axbom
PRO
2
2.1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Facilitating Awesome Meetings
lara
57
7.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Test your architecture with Archunit
thirion
2
2.4k
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