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
MW WP Form について語り尽くす
Search
Takashi Kitajima
May 21, 2017
Technology
0
3k
MW WP Form について語り尽くす
WordBench Fest.山口 -Spring WP Fever- 2017/05/20
Takashi Kitajima
May 21, 2017
Tweet
Share
More Decks by Takashi Kitajima
See All by Takashi Kitajima
Snow Monkey&unitone から見た WordPress エディターの変遷
inc2734
0
140
Snow Monkey CM
inc2734
0
83
メンテナンス性を考慮した CSS 設計
inc2734
0
330
Snow Monkey とは
inc2734
0
1.2k
WordPress_テーマのつくりかた.pdf
inc2734
4
540
受託開発者だった僕が WordPress の有料テーマ開発者になって学んだこと
inc2734
1
1k
Snow Monkey(WordPress) による web コンテンツ制作の新しいカタチ【ビジネスパーソン向け】
inc2734
0
100
Snow Monkey とコミュニティ
inc2734
0
620
Snow Monkey における私の技術的偏愛
inc2734
0
570
Other Decks in Technology
See All in Technology
フィンテック養成勉強会#56
finengine
0
140
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.6k
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.1k
Skrub: machine-learning with dataframes
gaelvaroquaux
0
120
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
Kiroと学ぶコンテキストエンジニアリング
oikon48
6
9.9k
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
150
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
280
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
340
S3アクセス制御の設計ポイント
tommy0124
3
190
KotlinConf 2025_イベントレポート
sony
1
110
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
9.7k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
A better future with KSS
kneath
239
17k
Agile that works and the tools we love
rasmusluckow
330
21k
How to Ace a Technical Interview
jacobian
279
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fireside Chat
paigeccino
39
3.6k
Music & Morning Musume
bryan
46
6.8k
We Have a Design System, Now What?
morganepeng
53
7.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
.881'PSNʹ͍ͭͯޠΓਚ͘͢ 8PSE#FODI'FTUࢁޱ4QSJOH81'FWFS
ϞϯΩʔϨϯν IUUQTJODPSH ΩλδϚλΧγ !JOD ϑϦʔϥϯε 8FCσβΠφʔϓϩάϥϚʔ
8PSE1SFTTϓϥάΠϯ .881'PSNɺ4NBSU$VTUPN'JFMET 8PSE1SFTTςʔϚ )BCBLJSJɺ.JNJ[VLV 4BTT$44ϑϨʔϜϫʔΫ #BTJT
8PSE1SFTTίϛϡχςΟͱͷؔΘΓ 8PSE$BNQ5PLZP࣮ߦҕһ 8PSE$BNQ5PLZP-5 8PSE$BNQ,BOTBJ࣮ߦҕһϋϯζΦϯ 8PSE$BNQ,BOTBJ࣮ߦҕһεϐʔΧʔ
8PSE$BNQ5PLZPεϐʔΧʔ FUD
ຊʹ͑ΔςʔϚͱͲͷΑ͏ͳ ͷ͔Λߟ͑ଓ͚ͨ݁Ռ ΩλδϚλΧγ!JOD IUUQTHJUIVCDPNJODNJNJ[VLV
.881'PSNͱ
.881'PSNͱ w ͓͍߹ΘͤϑΥʔϜ࡞ϓϥάΠϯ w ֬ೝը໘Λ͞Ή͜ͱ͕Ͱ͖Δ w μϯϩʔυɿ w
ΞΫςΟϒΠϯετʔϧɿ
$POUBDU'PSN w μϯϩʔυɿ w ΞΫςΟϒΠϯετʔϧɿ
https://nondesu.jp/
IUUQTXQEPSH
IUUQTXQEPSH
.881'PSNͷجຊػೳ
ೖྗը໘c֬ೝը໘cྃը໘ 63-ͷઃఆ ͍߹Θͤͷσʔλϕʔεอଘ ͍߹Θͤσʔλͷάϥϑදࣔ ๛ͳόϦσʔγϣϯϧʔϧ
.881'PSNͷ࣮ߦϓϩηε
༁ϑΝΠϧͷಡΈࠐΈ ֤ೖྗϑΟʔϧυͷಡΈࠐΈ ֤όϦσʔγϣϯϧʔϧͷಡΈࠐΈ .881'PSNΛཧ͢ΔΧελϜߘλΠϓΛొ ϝΠϯίϯτϩʔϥʔಡΈࠐΈ
ςϯϓϨʔτͷಡΈࠐΈલ UFNQMBUF@JODMVEF ߘσʔλɾςϯϓϨʔτʹ.881'PSNΛ࣮ߦ͢ΔͨΊͷγϣʔτίʔυ <NXGPSN@GPSNLFZ>ɺ<NXGPSN> ͕ଘࡏ͢Δ͔νΣοΫ ଘࡏ͠ͳ͔ͬͨΒ͜͜Ͱ.881'PSNʹؔ͢Δॲཧऴྃ γϣʔτίʔυΛͱʹͦͷϑΥʔϜͷઃఆΛऔಘ ૹ৴σʔλΛ%#ʹҰ࣌తʹอଘ 5SBOTJFOU"1* $PPLJF ϖʔδΩϟογϡΛແޮʹ͢ΔͨΊͷ)551ϔομʔΛग़ྗ ૹ৴σʔλ͕ਖ਼͍͔͠νΣοΫ $43'ରࡦͱͯ͠ૹ৴σʔλʹؚ·ΕΔτʔΫϯΛνΣοΫ ૹ৴σʔλʹର͠όϦσʔγϣϯνΣοΫΛ࣮ߦ ૹ৴σʔλɺόϦσʔγϣϯ݁ՌΛݩʹͲͷը໘Λදࣔ ϦμΠϨΫτ ͢Δ͔Λܾఆ 1045࣌ɺ͘͠ϦμΠϨΫτઌ͕ݱࡏͷ63-ͱҟͳΕϦμΠϨΫτΛ࣮ߦ ॳظԽɾجຊॲཧ ը໘දࣔͷͨͼʹ࣮ߦ Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ ࠷ॳʹදࣔ͢Δ͖ը໘ೖྗը໘ͳͷͰϦμΠϨΫτߦΘΕͳ͍ ֤ೖྗϑΟʔϧυͷγϣʔτίʔυΛొ BEE@TIPSUDPEF ϖʔδදࣔ
UIF@DPOUFOU 8PSE1SFTTͷը໘ද͕࣮ࣔߦɺ.881'PSNͷγϣʔτίʔυͷ࣮ߦ͕ߦΘΕɺ ϑΥʔϜ͕දࣔ͞ΕΔ ֬ೝϘλϯԡԼ ݱࡏදࣔதͷը໘ʹ1045 ૹ৴ϘλϯԡԼ ݱࡏදࣔதͷը໘ʹ1045 ೖྗը໘ 1045 Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ @1045ʹ8PSE1SFTTͷϦΫΤετ RVFSZ@WBST ͱಉ໊ͷΩʔؚ͕·Ε͍ͯΔ߹ɺ ͦͷRVFSZ@WBSTΛআ ϑΝΠϧͷΞοϓϩʔυ͕͋Δ߹ɺϦμΠϨΫτͷલʹҰ࣌σΟϨΫτϦʹอଘ
όϦσʔγϣϯΤϥʔͳ͠ ֬ೝը໘ϦμΠϨΫτ όϦσʔγϣϯΤϥʔ͋Γ όϦσʔγϣϯΤϥʔը໘ϦμΠϨΫτ ೖྗը໘⒌ ϦμΠϨΫτ IUUQFYBNQMFDPN OBNFࢁాଠ ໊͓લɿ<NXGPSN@UFYUOBNFlOBNFz> Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ όϦσʔγϣϯΤϥʔͳ͠ ͦͷ··֬ೝը໘Λදࣔ όϦσʔγϣϯΤϥʔ͋Γ όϦσʔγϣϯΤϥʔը໘ϦμΠϨΫτ
֤ೖྗϑΟʔϧυͷγϣʔτίʔυΛొ BEE@TIPSUDPEF ϖʔδදࣔ UIF@DPOUFOU 8PSE1SFTTͷը໘ද͕࣮ࣔߦɺ.881'PSNͷγϣʔτίʔυͷ࣮ߦ͕ߦΘΕɺ ϑΥʔϜ͕දࣔ͞ΕΔ %#ʹҰ࣌తʹอଘͨ͠ૹ৴σʔλΛআ XQ@GPPUFS ΔϘλϯԡԼ ݱࡏදࣔதͷը໘ʹ1045 ૹ৴ϘλϯԡԼ ݱࡏදࣔதͷը໘ʹ1045 ֬ೝը໘ 1045 Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ @1045ʹ8PSE1SFTTͷϦΫΤετ RVFSZ@WBST ͱಉ໊ͷΩʔؚ͕·Ε͍ͯΔ ߹ɺͦͷRVFSZ@WBSTΛআ όϦσʔγϣϯΤϥʔͳ͠
ϝʔϧͷૹ৴ॲཧΛ࣮ߦ ྃը໘ϦμΠϨΫτ όϦσʔγϣϯΤϥʔ͋Γ όϦσʔγϣϯΤϥʔը໘ϦμΠϨΫτ ֬ೝը໘⒌ ϦμΠϨΫτ Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ όϦσʔγϣϯΤϥʔͳ͠ ͦͷ··ྃը໘Λදࣔ όϦσʔγϣϯΤϥʔ͋Γ όϦσʔγϣϯΤϥʔը໘ϦμΠϨΫτ
֤ೖྗϑΟʔϧυͷγϣʔτίʔυΛొ BEE@TIPSUDPEF ϖʔδදࣔ UIF@DPOUFOU 8PSE1SFTTͷը໘ද͕࣮ࣔߦɺ.881'PSNͷγϣʔτίʔυͷ࣮ߦ͕ߦΘΕɺ ྃը໘ϝοηʔδ͕දࣔ͞ΕΔ %#ʹҰ࣌తʹอଘͨ͠ૹ৴σʔλΛআ XQ@GPPUFS ྃը໘ Wݱࡏ
લड़ͷॳظԽॲཧΛ࣮ߦ όϦσʔγϣϯΤϥʔ͋Γ ͦͷ··όϦσʔγϣϯΤϥʔը໘Λදࣔ ֤ೖྗϑΟʔϧυͷγϣʔτίʔυΛొ BEE@TIPSUDPEF
ϖʔδදࣔ UIF@DPOUFOU 8PSE1SFTTͷը໘ද͕࣮ࣔߦɺ.881'PSNͷγϣʔτίʔυͷ࣮ߦ͕ߦΘΕ ϑΥʔϜ͕දࣔ͞ΕΔ %#ʹҰ࣌తʹอଘͨ͠ૹ৴σʔλΛআ XQ@GPPUFS όϦσʔγϣϯΤϥʔը໘ Wݱࡏ
ͳΜͰ@4&44*0/ΛΘͳ͍ͷʁ $PMVNO
w ϑΥʔϜͷૹ৴σʔλΛ࣋ͪճΔํ๏ओʹͭ ೖྗը໘ͰೖྗϑΟʔϧυɺ֬ೝը໘Ͱ IJEEFOϑΟʔϧυ͍1045Ͱ࣋ͪճΔ ૹ৴͞ΕͨσʔλΛ@4&44*0/ʹอଘͯ͠ ࣋ͪճΔ
w 1045Ͱ࣋ͪճΔํ๏ը໘ભҠͷίϯτϩʔϧ͕໘ͳͷ ͱɺϦϩʔυͨ͠ͱ͖ʹʮ࠶ૹ৴͠·͔͢ʁʯతͳϒϥβΞ ϥʔτ͕ग़Δͷ͕͏ͬͱ͏͍͠ w @4&44*0/Λ͏ͷ͕Ұൠతͳํ๏ͩͱࢥ͏͕ɺڥʹΑͬͯ ಈ͔ͳ͍͜ͱ͕͋ͬͨΓɺεέʔϧΞτ͢Δͱ͖ʹ໘ w ͪͳΈʹ8PSE1SFTTຊମ@4&44*0/Λ͍ͬͯͳ͍ w
.881'PSNͱͱ@4&44*0/Λ͍͕ͬͯͨɺ্هͷ Α͏ͳ͜ͱ͕ؾʹͳΓɺ5SBOTJFOU"1* Ұ࣌తͳσʔλΛ%# ʹΩϟογϡ͢Δػೳ ͰٖࣅతʹηογϣϯػೳతͳͷΛ ࡞ΓɺͦΕΛ͏Α͏ʹมߋ
ϝʔϧૹ৴ॲཧͲ͏Δͷʁ $PMVNO
w ͱͱࣗ࡞͍ͯͨ͠ɻNC@TFOE@NBJM w Ͱࣗલڥͱ͔ΊΜͲ͍͘͞͠ةݥ w 8PSE1SFTTͷXQ@NBJM Λ͏ͷ͕٢
XQ@NBJM UP TVCKFDU NFTTBHF IFBEFST BUUBDINFOUT
ϑοΫΛͬͨ .881'PSNͷΧελϚΠζ
ϝʔϧૹ৴࣌ͷϑΟϧλʔϑοΫ w NXGPSN@BVUP@NBJM@SBX@NXXQGPSNYYY \OBNF^มલͷࣗಈฦ৴ϝʔϧΛॻ͖͑ΔϑοΫ w NXGPSN@BVUP@NBJM@NXXQGPSNYYY \OBNF^มޙͷࣗಈฦ৴ϝʔϧΛॻ͖͑ΔϑοΫ w NXGPSN@BENJO@NBJM@SBX@NXXQGPSNYYY \OBNF^มલͷཧऀѼϝʔϧΛॻ͖͑ΔϑοΫ
w NXGPSN@BENJO@NBJM@NXXQGPSNYYY \OBNF^มޙͷཧऀѼϝʔϧΛॻ͖͑ΔϑοΫ
ϝʔϧૹ৴࣌ͷΞΫγϣϯϑοΫ w NXGPSN@CFGPSF@TFOE@BENJO@NBJM@NXXQGPSNYYY ཧऀѼϝʔϧૹ৴લͷϑοΫ w NXGPSN@CFGPSF@TFOE@SFQMZ@NBJM@NXXQGPSNYYY ࣗಈฦ৴ϝʔϧૹ৴લͷϑοΫ w NXGPSN@BGUFS@TFOE@NXXQGPSNYYY ཧऀѼϝʔϧɺࣗಈฦ৴ϝʔϧૹ৴ޙͷϑοΫ
ಠࣗόϦσʔγϣϯϧʔϧͷՃ w ຊจϨϕϧ w ຊจϨϕϧ w ຊจϨϕϧ w ຊจϨϕϧ w
ຊจϨϕϧ class MW_Validation_Rule_Foo extends MW_Validation_Rule { protected $name = ‘foo’; public function rule( $key, array $options = array() ) { if ( ΤϥʔʹͳΔ݅ ) { return ‘Τϥʔϝοηʔδ’; } } public function admin( $key, $value ) { ?> <label> <input type="checkbox" <?php checked( $value[$this->getName()], 1 ); ?> name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>]" value="1" /> όϦσʔγϣϯϧʔϧ໊ </label> <?php } } // ͜Εকདྷతʹෆཁʹ͢Δ༧ఆ add_filter( 'mwform_validation_rules', function( $validation_rules ) { $validation_rules[‘foo’] = new MW_Validation_Rule_Foo(); return $validation_rules; } );
ಠࣗೖྗϑΟʔϧυͷՃ w ͪ͜ΒϑοΫෆཁͰɺ .8@81@'PSN@"CTUSBDU@'PSN@'JFMEΫϥεΛܧঝ͠ ͨΫϥεΛ࡞ΓJODMVEF͢Δ͚ͩͰՃ͞Ε·͢ w ίʔυ͕ͯ͘αϯϓϧ͕ࡌͤΒΕͳ͍ͷͰ͜͜Λ͝ࢀ র͍ͩ͘͞ʜ IUUQTHJUIVCDPNJODNXXQGPSNCMPC NBTUFSDMBTTFTGPSNpFMET
ΧελϜϝʔϧλάͷՃ w ϝʔϧૹ৴࣌ʹΦϦδφϧͷʮϝʔϧλάʯΛఆٛ͢Δػೳ w ྫ͑ϝʔϧ༰ͷઃఆͰ\TFOE@EBUFUJNF^ͱͨ͠ͱ͖ʹૹ ৴࣌ʹม͞Εͯϝʔϧૹ৴ͤ͞Δͱ͍͏͜ͱ͕Մೳ add_filter( 'mwform_custom_mail_tag', function( $value,
$key, $inserted_inquiry_id ) { if ( $key === 'send_datetime' ) { return date( 'Y/m/d l H:i:s' ); } return $value; }, 10, 3 );
ϑΥʔϜ༰ͷܗΛఆٛ͢Δ w $POUBDU'PSNϑΥʔϜ࡞࣌ʹϑΥʔϜͷܗ͕ೖྗ͞ Ε͍ͯ·͕͢.881'PSNͦ͏ͳ͍ͬͯ·ͤΜ w ඞཁͳํϑοΫͰՃͰ͖·͢ /** * ςʔϚ inc/mw-wp-form-default-content.php
Λܗͱͯ͠ར༻͢Δαϯϓϧ */ add_filter( 'mwform_default_content', function( $content ) { ob_start(); get_template_part( 'inc/mw-wp-form-default-content' ); return ob_get_clean(); } );
ϚωλΠζ
ΞυΦϯൢച .881'PSNʹؔ͢Δػೳ։ൃґཔ
ΞυΦϯൢച
͍·ൢച͍ͯ͠Δͷ w .881'PSN(FOFSBUPS ϑΥʔϜ࡞ΛΤσΟλܗࣜͰͳ͘(6*ܗࣜʹมߋ͢Δ σβΠϯͷఏڙɻεΩϯػೳͰସՄೳ ԁ ੫ൈ w
.881'PSN$"15$)" ΩϟϓνϟೝূϑΟʔϧυΛՃ͢Δ ԁ ੫ൈ
ͱͱൢച͍ͯͨ͠ͷ w .881'PSN4UBOEBSE ϑΥʔϜ࡞࣌ʹϑΥʔϜͷܗ͕ೖྗ͞ΕΔΑ͏ʹͳΔ σβΠϯͷఏڙɻεΩϯػೳͰସՄೳ ԁ ੫ൈ
w )5.-ܗࣜͷܗΛఏڙ͢Δܗͩͱ)5.-ߏΛม͑ Δ͜ͱ͕Ͱ͖ͳ͍ͷͰσβΠϯεΩϯͷ࡞ʹ੍ݶ͕ Ͱ͖ͯ͠·͏ w .881'PSN4UBOEBSEΛΊͯɺϢʔβʔ͕)5.- Λҙࣝ͠ͳ͍ܗͰϑΥʔϜ࡞εΩϯͷબ͕Ͱ͖ Δ.881'PSN(FOFSBUPSΛൢച
w ػೳ͕ҧ͏ͷͷɺ࠷ऴతʹϢʔβʔʹఏڙ͢ΔՁ )5.-$44͕ॻ͚ͳͯͬͨ͘ϑΥʔϜ͕࡞Ͱ ͖Δ ΄΅ಉ͡ w ֹ͕ۚഒʹͳΔͷͰൢചݸݮΔͷͰʜ
w ൢചݸʹӨڹͳ͘ɺՁ֨ͷΞοϓʹൺྫͯ͠ച Γ্͛Ξοϓ w (6*ػೳͷఏڙͱ͍͏৽͍͠ՃՁͷՃ͋ͬͨ ͷͷ ಛผ҆͘͠ͳͯ͘ചΕΔͷചΕΔ w ͨͱ͑҆ͨ͘͠΄͏͕ൢചݸ͕૿͑Δͷͩͱͯ͠ɺ ಉ͡ചΓ্͛Λ͋͛Δʹֹۚʹൺྫͨ͠ݸΛചΒͳ
͍ͱ͍͚ͳ͍ͷͰ҆͘͢Ε͍͍ͱ͍͏ͷͰͳ͍ ԁചΓ্͛Δʹ ԁͳΒݸͰ͍͍͕ ԁͳΒݸͷൢച͕ඞཁ
.881'PSNʹؔ͢Δػೳ։ൃґཔ
w ࣄۀചΓ্͛ͷ͍͍ͩͨʙ͘Β͍ .881'PSNΛؚΊαΠτશମͷ։ൃͱ͔͖͋ͬͯͬͪΓΘ͚Εͳ͍ ͷ͋ΔͷͰ͓͓Αͦ w .881'PSNʹؔ͢ΔґཔίϛϡχςΟͳͲͰͱ ͱΓ߹͍ͷํ͔Βͷґཔׂ͕͍͍ͩͨɺશવ໘ࣝ ͷͳ͍ํ͔Βͷґཔׂ͕͍͍ͩͨ w
໘ࣝͷͳ͍ํ͔Βͷґཔ୯ൃɾ୯ػೳͷ߹͕ଟ͍ɻ ͦͷͨΊ͔ґཔ͔Βೲ·Ͱϝʔϧ͚ͩͰ݁͢Δ͜ ͱ͕΄ͱΜͲ
ࠓޙͷల։
ΞυΦϯൢച w ചΓ্্͕͛ΓͤͣԼ͕Γͤͣͳঢ়ଶ͕ଓ͍͍ͯΔ w ݱঢ়ϚʔέςΟϯάͷྨҰ͍ͯ͠ͳ͍ͷͰϦεςΟϯά ࠂͷӡ༻͘Β͍ͯ͠Έ͍ͨͷͰ͕͋͢ͱԿΛ͢Εྑ͍ͷ Ͱ͠ΐ͏ʜʢ࣮ w ෛۀʹൺΔͱ΄΅ख͕͔͔Βׂ͕ͣྑ͍ͷͰ৳͍ͯ͠ ͖͍ͨ
ࠓߟ͍͑ͯΔͷ(FOFSBUPSͷεΩϯՃ*NQPSUFSɾ&YQPSUFSͷ։ൃ w ෛ͕ࣄۀͷओମͳͷͰͳ͔ͳׂ͔͕͚࣌ؒͳ͍ͷ͕
.881'PSNຊମ w ίʔυ͕͋·Γ͔͚ͳ͍ͱ͖͔Βʙ͘Β͍։ൃ͠ଓ͚͍ͯΔ ͨΊٕज़తෛ࠴͕݁ߏ͋ΔɻͰޙํޓੑͷ͜ͱΛߟ͑Δͱม ߋ͕͔ͬͨ͠Γɺ͏ϜϦͳ෦ଟ͍ w ࠓճ࣮ߦϓϩηεΛจࣈىͯ͜͠͠ɺॲཧ͕ൿͷλϨతʹ݁ߏ ෳࡶԽͯ͠ΔͳͱࢥͬͨͷͰɺ͏গ͠γϯϓϧͳํͰϦϑΝΫ λϦϯάΛ͡Ί͍ͯ·͢ɻͰޙํޓੑʜ IUUQTHJUIVCDPNJODNXXQGPSNUSFFGFBUVSF
SFGBDUPSJOH w (JU)VCͰެ։͍ͯ͠ΔͷͰɺJTTVFɾϓϧϦΫେܴͰ͢ʂ IUUQTHJUIVCDPNJODNXXQGPSN