ẴắẟᾼᾸᾺῄῃῃᾴ῁ᴾ
ẺỉẲẪềấẪủợạὲᴾ
PLNXWWHU भුःম਑੿੻৩ভ ౣ

PLNXWWHU भුःম YRO َघओः 0 মُ
WZLWWHU ॡছॖ॔থॺ‫ؚ‬PLNXWWHU पणःथभँैोुऩःਵ Learn You the mikutter for Great TEOKURE!
Price: 1000 favs to @toshi_a
Release: 4 August 2012

chief : @brsywe , @ch_print

What is “ࡍࡈ࠸ M ᮏ”?
㹼mikutter ࢆධࢀࡓࡇ࡜࡞࠸ேࠊே⏕᜼࠸ᨵࡵ࡚ࠋ㹼@brsywe す➃ࡢᨺ㏦ᒁෆႚⲔᐊ㛗1.ࡍࡈ࠸ M ᮏ࡟࡞ࡗࡓ⤒⦋ ㄞ⪅ㅖྩ࡛࠶ࢀࡤࠊᒧᗘᛮ࠺➻ࡔࠋࠗࡍࡈ࠸ Haskell ࡓࡢࡋࡃᏛࡰ࠺࠘ࡢࣃࢡ࡛ࣜࡣ࡞࠸࠿࡜ࠋࡑ
ࢀࡣṇࡋࡃࡶ࠶ࡾࠊㄗࡗ࡚ࡶ࠸ࡿࠋ☜࠿࡟ࠗࡍࡈ࠸ mikutter ࡓࡢࡋࡃ࡚࠾ࡃࢀࡼ࠺࠘ࢆ␎ࡋ”ࡍࡈ࠸ M ᮏ”࡜࡞ࡗࡓࡢࡔࠋణࡋ඼ࢀ࡟⮳ࡿ࡟ࡣ௚ࡢせᅉࡀ࠶ࡗࡓࡇ࡜ࡀྰᐃ࡛ࡁ࡞࠸ࠋ
ࡇࡢⷧ࠸ᮏࡢ௻⏬ࠊᡭ㐜ಀ࡛࠶ࡿࢃࡓࡋࡣࠊࡑ࠺ࠊM ࡛࠶ࡿࠋྍឡ࠸ዪࡢᏊ࡟㋃ࡲࢀࡓ࠸࡜࠿ࡑ࠺
࠸࠺(௨ୗ⦅⪅࡟ࡼࡾ๐㝖)ࠋⱸⓒྜᵝࡀ㋃ࢇ࡛࠸ࡿ⤮ࢆᕸᅋࡢୖ 1m ࡄࡽ࠸࡟㓄⨨ࡉࢀࡿࡼ࠺࡟ࡘࡿ
ࡋ࡚࠾࠸ࡓ࡜ࡇࢁࠊⰍࢇ࡞ே࠿ࡽኚែᢅ࠸ࡉࢀࡓࠋྍឡ࠸ዪࡢᏊ࡟㋃ࡲࢀࡓࡾ⶜ࡲࢀࡿࡢࡗ࡚⏨ࡢክ࡛ࡍ࠿ࡽ௙᪉࡞࠸࡛ࡍࡼࡡࠋ

2.ᮏ᭩࡟᪊ࡅࡿࢃࡓࡋࡢᙺ๭࡜ព⩏ ࡚࠾ࡃࢀࡉࢇࡓࡕ࡟ཎ✏ࢆദಁࡍࡿಀࢆົࡵࡓࡔࡅ࡛࠶ࡿࠋ௒ᅇᰯṇసᴗࡣ @ch_print ࡀࡸࡗ࡚ࡃࢀࡿࡋࡡࠋ

3.ࡘ࠸ࡇ࡞࠸ࡔฟࡋࡓ vol.1 ࡟ࡘ࠸࡚࡜཰ᨭሗ࿌ ๓ᅇࠊࠗ㝔ヨཷ࠿ࡗࡓࡽ mikutter ࡢⷧ࠸ᮏฟࡍ࠘࡜Ⓨゝࡋࡓࡇ࡜ࡀ⅏࠸ࡋ௒ᖺࡢ 1 ᭶࡟ࡇࡳࢺࣞ
19㸦኱㜰㸧࡟࡚ ࠊ
ࠕmikutter ࡢⷧ࠸ᮏ vol.1ࠖࢆⓎ⾜ࡋࡓࠋ෉Ꮚ∧ࡇࡑ஧༑వ㒊ࡋ࠿‽ഛࡋ࡚࠸࡞
࠿ࡗࡓࡶࡢࡢࠊpdf ∧࡬ࡣ⣼ィ 1000 ࡯࡝ࡢ࢔ࢡࢭࢫࡀ࠶ࡗࡓࠋ୍ே࡛ᩘᅇࡣ࢔ࢡࢭࢫࡋࡓࡾࡍࡿࡔ
ࢁ࠺ࡋᐇ㝿ࡢ࡜ࡇࢁࡣᩘⓒே࡛࠶ࢁ࠺ࠋᗄవྡ࠿ࡽ࠾ࡶࢁ࠿ࡗࡓ࡛࣮࡞࡝ࡢឤ᝿࡜ඹ࡟ࠊ࠶࡜ฟᒎ
㈝⏝ࡢ୍㒊ࡀฟࡓࡽ᭷ࡾ㞴࠸࡞࡜ப࠺ࡇ࡜࡛ Amazon ࢠࣇࢺๆࡢᐤ㝃ࢆເࡗࡓ࡜ࡇࢁࠊ4165 ෇㞟ࡲࡗࡓࠋࡇࡢࢠࣇࢺๆࢆ౑ࡗ࡚ࠗ㟁ᧁⴌ⋤ 2012 ᖺ 02 ᭶ྕ࠘࡜࡛ࠗࡾࡤࡽࡗ࡜‫࠘࡜ࢇ࠶࠷࡛࠸ࢀۼ‬㸦ዲࡁ࡞⤮ࡢ⨾ᑡዪࢤ࣮࣒ࡢࣅࢪࣗ࢔ࣝࣇ࢓ࣥࣈࢵࢡ㸧➼ࡢ㉎ධ㈝⏝࡟඘ᙜࡋࡓࠋᐤ㝃ࢆࡋ࡚ࡃࡔࡉࡗ
ࡓྛ఩࡟ࡣࡇࡢሙ࡛ឤㅰࡢពࢆ⾲ࡋࠊ⏝㏵ࡀࡑࢇ࡞ࡶࡢ࡛࠶ࡗࡓࡇ࡜࡟ࡘ࠸࡚῝ࡃ࠾ルࡧ⏦ࡋୖࡆࡿḟ➨࡛࠶ࡿࠋ࡞࠾ࠊᐤ㝃ࢆເࡿࡇ࡜ࡀၥ㢟࡜ࡢᣦ᦬ࡶ࠶ࡾ࠼ࡿࡀࠊᮏ᭩ࡣぢ࡚ࡢ㏻ࡾ฼┈ࡀ┠ⓗ࡛ࡣ࡞࠸ࠋvol.1 ࡟ࡘ࠸࡚࠸࠼ࡤⓎห࡜ฟᒎ࡟せࡋࡓ㈝⏝ࡀ 2 ୓෇ࢆ㍍ࡃ㉸࠼࡚࠾ࡾࠊ฼┈࡞ࢇࡒฟࡿࢃࡅࡀ࡞࠸ࠋ
࡞࠾ࠊvol.1 ࡟᪊ࡅࡿㄗ᳜ࡢᣦ᦬ࢆ twitter ࡛ᣠ࠸㞟ࡵ࡚ᒃ࡞ࡀࡽ༙ᖺ⤒㐣ࡋࡓ௒⌧ᅾ⿵ゞ∧࡟ᕪࡋ᭰࠼࡚࠸࡞࠸ࡢࡣࢃࡓࡋࡢᛰ៏࡛࠶ࡿࠋෆᐃ࡛ࡓࡽᕪࡋ᭰࠼ࡿࡢ࡛ࢃࡓࡋ࡟ෆᐃୗࡉ࠸ࠋ

4.࡞ࢇ࡛ vol.2 ฟࡍࢇࡔ ࡜ࡢኌ࡟ᑐࡋ࡚ ࡇࡳࢺࣞ 19 ࡟ @toshi_a ࢆ࿧ࡧฟࡋࠊ㦫វࡉࡏࠊࡑࡢᚋ㞴Ἴࡢ↓༳ⰋရࡢႚⲔࢫ࣮࣌ࢫ࡟᪊࠸࡚
཯┬఍ࢆ⾜ࡗࡓࠋࡑࡇ࡛ࡣ⥾ษ㥑ື㛤Ⓨࡢព⩏ࠊ஦๓ࡢィ⏬࣭࿘▱㸦⩈᜝ࡌࡷ࡞࠸ࡼ㸟㸧ࡢᚲせᛶࠊᐃᮇห⾜࡟ࡼࡿ᝟ሗࡢ෌ᵓᡂ࡬ࡢ㈉⊩➼ࡀᣲࡆࡽࢀࡓࠋ࠶࡜᭩ࡁ㊊ࡾ࡞࠸ఱ࠿ࡀ࠶ࡗࡓ࡜࠿ࡑ࠺࠸

2࠺ࡇ࡜ࠋ⌧࡟௒ᅇࡣ vol.1 ࡼࡾ㐭࠿࡟ศ㔞ࡀቑ࠼࡚࠸ࡿࠋࡑࡋ࡚ࠊ
ࠕmikutter ࡢⷧ࠸ᮏไసጤဨ఍ࠖ
ࡀࢥ࣑ࢣ࡟ⴠࡕࡓࡢࡣᮏᙜ࡟⏦ࡋヂ࡞࠿ࡗࡓ࣯(‘Ȱ’)㺧୕࣯(‘Ȱ’)㺧ࠋⴠ㑅ࡣྲྀࡾᩒ࠼ࡎ᭩㢮୙ഛ࡟ࡼࡿ
ࡶࡢ࡛ࡣ࡞࠸ࡢ࡛ࢃࡓࡋࢆ㈐ࡵ࡞࠸࡛ࡃࡔࡉ࠸ࠋㅰ⨥఍ぢ࡞ࡽࡶ࠺ࡋࡲࡋࡓ࠿ࡽ࣯(‘Ȱ’)㺧୕࣯(‘Ȱ’)㺧ࠋ

5.ࡍࡈ࠸ M ᮏࡢ┠ᣦࡍ࡜ࡇࢁ
 mikutter ࡀࣇ࣮ࣜࢯࣇࢺ࡛࠶ࡿ௨ୖࠊ
ᵝࠎ࡞ฎ࡟᝟ሗࡀᩓᅾࡋ࡚࠸ࡿࡢ࡛ࡣ࡞࠸࠿࡜⪃࠼ࡽࢀࡿࠋ
ࡑࢀࡽࢆ㐺ᐅᣠ࠸ୖࡆࠊ෌ᵓ⠏ࡋࠊࡲࡓ᪂ࡓ࡟௜ຍࡍࡿࡇ࡜࡛ mikutter ࣮ࣘࢨ࣮࡜ࠊࡑࢀ࡟ຍࢃࢁ
࠺࡜ࡍࡿணഛ㌷ࡢཧ⪃᭩࡜࡞ࡿࡇ࡜ࢆᮇᚅࡋ࡚࠸ࡿࠋ௻⏬⪅࣭⦅㞟⪅ࡀࣃࢯࢥࣥ࡟᫂ࡿࡃ࡞࠸Ⅽࡑࡾࡷ࠵୙ഛ࡜㊊ࡽࡠ࡜ࡇࢁࡀ࠶ࡿࡔࢁ࠺ࠋ㈼᫂࡞ㄞ⪅ㅖྩࡀࡇࢀࢆ࡝࠺࡟࠿ࡇ࠺࡟࠿ά⏝ࡋ࡚ୗࡉ࠸㺓㺣㺚㺊㺛ࠋ ᭱ᚋ࡟ࠊᐃᮇⓗ࡟ኚືࢆࡲ࡜ࡵࡿࡇ࡜࡟ࡣព⩏ࡀ࠶ࡿࡢ࡛ࡣ࡞࠸࠿࡜ப࠺ヰࡀ࠶ࡾࡲࡋࡓࡢ࡛ࠊ
ࡶࡋࡼ࠿ࡗࡓࡽ vol.3 (௬)࡟ྥࡅ࡚グ஦ࢆ㡬ࡅࡿ࡜႐ࡧࡲࡍࠋ2 ྡ௨ୖ࠿ࡽཎ✏ࡶࡽ࠼ࡓࡽฟࡍࢇࡌ
ࡷ࡞࠸࠿࡞㸦௚ே஦㸧ࠋ௜㘓ࢥ࣑ࢣ࡟ᛂເࡋࡓ࡜ࡁࡢࢧ࣮ࢡࣝ࢝ࢵࢺ㸦ࡑࡽࡲࡵࡉࢇ
@soramame_bscl ࡢ⤮ࢆࢃࡓࡋࡀࢧ࣮ࢡࣝ࢝ࢵࢺ⏝࡟ៃ࡚࡚⦅㞟ࡋ࡞࠾ࡋࡓࡶࡢ࡛ࡍࠋ
㸧㸦⾲⣬⤮:@soramame_bscl , @shijin_cmpb㸧

<<┠ḟ>>
㡫㻌

㢟┠㻌

ⴭ⪅㻌

㼙㼕㼗㼡㼠㼠㼑㼞 䛷ᗈ䛜䜛ே䛸䛾䛴䛺䛜䜚㻌㻮㼍㼞㼐㼕㼏㼔㼑㼋㻭㻌㻠㻌䝇䝬䞊䝖䝣䜷䞁䛷䛚ᡭ㍍ 㼙㼕㼗㼡㼠㼠㼑㼞㻌㻱㼕㻹㼋㻳㼀㻼㻱㼋㻌㻤㻌㼄㻼 䛻 㼙㼕㼗㼡㼠㼠㼑㼞 䜢ධ䜜䛶䜏䜘䛖䚹㻌㼏㼍㼠㼕㼚㼍㻜㻝㻟㻌㻝㻜㻌㼙㼕㼗㼡㼠㼠㼑㼞 䛸 㻺㼑㼠㻮㻿㻰 䛾䛶䛚䛟䜜䛺㛵ಀ㻌㼠㼟㼡㼠㼟㼡㼕㼕㻌㻝㻝㻌㼙㼕㼗㼡㼠㼠㼑㼞㻌㻯㼛㼐㼑㻌㻾㼑㼍㼐㼕㼚㼓㻌㼛㼟㼍㼋㼗㻌

㻞㻜㻌㼙㼕㼗㼡㼠㼠㼑㼞 䛷 㻸㼕㼒㼑㼘㼛㼓㻌㼗㼍㼠㼟㼥㼛㼟㼔㼕㻌㻞㻤㻌㼙㼕㼗㼡㼠㼠㼑㼞 䛻౽฼ᶵ⬟䜢䟿㻌㼏㼛㼟㼙㼛㼋㼋㻌

㻟㻜㻌䛯䛾䛧䛔 㼙㼕㼗㼡㼠㼠㼑㼞 䜲䞁䝇䝖䞊䝹㻌㻼㼔㼑㼚㼛㼙㼑㼞㻌㻟㻣㻌䝥䝷䜾䜲䞁㛤Ⓨ䛾䝧䝇䝖䝥䝷䜽䝔䜱䝇㻌㼠㼛㼟㼔㼕㼋㼍㻌

㻠㻥㻌ᕳᮎ㻌㼎㼞㼟㼥㼣㼑㻌

㻢㻜㻌3



mikutter ࡛ᗈࡀࡿே࡜ࡢࡘ࡞ࡀࡾ
@Bardiche_A佘 Contents
1

2

3

4

5

6
7

㸸

࠶ࡽࡍࡌ
1.1 mikutter
1.2 ౑࠺ࡇ࡜࡟࡞ࡗࡓ⤒⦋
mikutter ฼⏝ᚋ
2.1 TL ୖࡢኚ໬2.2 㛤Ⓨ⪅(@toshi_a)࡜ࡢ஺ὶ
toshi_a ㅮ₇఍ in 㤶ᕝ
3.1 ࠸ࡁࡉࡘ
3.2 ㅮ₇ෆᐜ
3.3 ᚋグ
mikutter ࡢᐉఏ
4.1 άື⠊ᅖ
4.2 ᡂᯝ
௒ᚋ
5.1 ᐉఏάື
5.2 ࣉࣛࢢ࢖ࣥ㛤Ⓨ
ࡲ࡜ࡵ
ཧ⪃ᩥ⊩

1 ࠶ࡽࡍࡌ
1.1 mikutter PLNXWWHU ࡜ࡣ#WRVKLBD ࡟ࡼࡗ࡚㛤Ⓨࡉࢀࡓ࡚࠾ࡃࢀ 7ZLWWHU ࢡࣛ࢖࢔ࣥࢺ࡛࠶ࡿࠋ7ZHHQࠊ
7ZHHW'HFNࠊ6DH]XUL ࡞࡝ࡢከࡃࡢࢡࣛ࢖࢔ࣥࢺࡀ :LQGRZV ࢆ୰ᚰ࡟ᑐᛂࡋ࡚࠸ࡿࠋ
0DF ࡞ࡽ <RUX)XNXURX ࡔࢁ࠺ࠋࡋ࠿ࡋࠊ/LQX[ ୖ࡛ືసࡍࡿࢡࣛ࢖࢔ࣥࢺࡣ࡞࠿࡞࠿ぢࡘࡅࡿࡇ࡜ࡀฟ᮶࡞࠸ࠋࡑࢇ࡞≧ἣࢆ៧࠼ࡓ#WRVKLBD ࡣ PLNXWWHU ࢆ㛤Ⓨࡍࡿࡇ࡜࡟ࡋࡓࠋ

1.2 mikutter ࢆ౑࠺ࡇ࡜࡟࡞ࡗࡓ⤒⦋⚾ࡀ PLNXWWHU ࡜ฟ఍ࡗࡓࡢࡣ௒࠿ࡽ  ᖺ༙࡯࡝㐳ࡿࡇ࡜࡟࡞ࡿࠋᙜ᫬ࡣࠊ)HGRUD ࢆ౑࠺ࡼ࠺࡟࡞ࡾࠊ7ZLWWHU ࢡࣛ࢖࢔ࣥࢺࢆ᥈ࡋ࡚࠸ࡓࠋࡋ࠿ࡋࠊୖグࡢ㏻ࡾ࡞࠿࡞࠿ࡇࢀ࡜࠸ࡗ
ࡓࡶࡢࡀ࡞࠿ࡗࡓࠋࡑࢇ࡞ᢡࠊኌࢆ࠿ࡅࡽࢀࡓࠋ

ࠕmikutter ࡘ࠿ࡗࡓࡽ࠼࠼ࡸࢇࠖ
࡞ࢇ࡜ࠊ㌟㏆࡟ PLNXWWHU ࢆ▱ࡗ࡚࠸ࡿே㛫ࡀ࠸ࡓࡢࡔࠋࡑࢀ࠿ࡽࠊ័ࢀ࡞࠸࡞ࡀࡽࡶᚲ
せ࡞⎔ቃࢆᩚ࠼࡚ PLNXWWHU ࡀືసࡍࡿࡼ࠺࡟ࡋࡓࠋࡑࡢ᫬Ⅼ࡛ࠊPLNXWWHU ࡢ୺࡞ືస⎔ቃࡣ
8EXQWX ࡔࡗࡓࠋࡋ࠿ࡋࠊ≉࡟ⱞປࡍࡿࡇ࡜ࡶ࡞ࡃືస࡟ࡇࡂࡘࡅࡿࡇ࡜ࡀ࡛ࡁࡓࠋࡑࢀ࠿ࡽࡣࠊPLNXWWHU ࢆ୰ᚰ࡟ 7ZLWWHU ࢆ฼⏝ࡍࡿࡼ࠺࡟࡞ࡗࡓࠋ



2 mikutter ฼⏝ᚋ
2.1 TL ୖࡢኚ໬
 PLNXWWHU ࢆ౑࠺ࡲ࡛ࡣ 6DH]XUL ࡸ 7ZHHQ ࢆ౑ࡗ࡚࠸ࡓࠋ7/ ࡣ㌟㏆࡞཭ேࡸࠊ㧗ᰯࡢྠᮇ࡞࡝ࡀ୰ᚰࡔࡗࡓࠋࡋ࠿ࡋࠊPLNXWWHU ࢆ౑࠺ࡼ࠺࡟࡞ࡗ࡚࠿ࡽࡣࠊ#WRVKLBD ࢆጞࡵ࡜ࡍࡿ
࡚࠾ࡃࢀ⣲ᬕࡽࡋ࠸ே㐩࡟ᕠࡾ࠶࠺஦ࡀ࡛ࡁࡓࠋ
໚ㄽࠊ⚾ࡢ 7/ ࡣ࡚࠾ࡃࢀάẼࡀ࠶ࡩࢀࡓࠋ

2.2 㛤Ⓨ⪅(@toshi_a)࡜ࡢ஺ὶ
  PLNXWWHU ࡢ㛤Ⓨ⪅࡛࠶ࡿ#WRVKLBDࠊᙼࡣึ㡢࣑ࢡࢆឡࡋ࡚࠾ࡾࠊ᎑࡜ゝࡗ࡚ࡣࡤ࠿ࡽ࡞࠸ࠋ
ᙼࡢ࢔࢖ࢥࣥ࠿ࡽࡣ࣑ࢡ࡬ࡢឡࡀ࠶ࡩࢀ࡚࠸ࡿࡼ࠺ࡔࠋ࠶ࡿ᪥ࠊ⚾ࡣ PLNXWWHU ࢆูࡢ⎔ቃ࡛ື࠿ࡑ࠺࡜ࡋ࡚࠸ࡓࠋࡋ࠿ࡋࠊ࡝࠺࡟ࡶ࠺ࡲࡃ࠸࠿࡞࠸ࠋࡑࡇ࡛ࠊ୎ᗘ⏕ᨺ㏦࡛㛤Ⓨࢆ⾜࡞ࡗ࡚࠸ࡓ#WRVKLBD ࡟ࣜࣉࣛ࢖ࢆ㏦ࡗ࡚ࡳࡓࠋࡍࡿ࡜ᙼࡣẼࡉࡃ࡟┦ㄯ࡟஌ࡗ࡚ࡃࢀࡓࠋ
㛤Ⓨ⪅࡜ࡢ㊥㞳ࡀ࠸࠿࡟㏆࠸ࡢ࠿ࢆᐇឤࡋࡓ▐㛫ࡔࡗࡓࠋ

3 @toshi_a ㅮ₇఍ in 㤶ᕝ
3.1 ࠸ࡁࡉࡘ  ⚾ࡣ࡜࠶ࡿᅜࡢ኱Ꮫ⏕ࡔࠋ᝟ሗ⣔ࡢศ㔝ࢆᑓᨷࡋ࡚࠸ࡿࠋཷㅮࡋ࡚࠸ࡿㅮ⩏ࡢ୍ࡘ࡟ࠊ
እ㒊࠿ࡽㅮᖌࢆ࿧ࢇ࡛ㅮ₇ࢆࡋ࡚ࡶࡽ࠺࡜࠸࠺ࡶࡢࡀ࠶ࡗࡓࠋ⚾ࡣࠊᢸᙜᩍဨࡢඖ࡬ᛴ࠸
ࡔࠋࡑࡋ࡚ࠊ#WRVKLBD ࡢ஦ࢆ⤂௓ࡋ࡚ࡳࡓࠋㅮ₇࡟࿧ࢇ࡛ࡣࡶࡽ࠼࡞࠸࠿ࠊ࡜ࠋᩍဨࡣᛌ
ㅙࡋࠊ᪩㏿ 7ZLWWHU ࡛#WRVKLBD ࡟ኌࢆ࠿ࡅ࡚ࡳࡓࠋ౫㢗ࡀ࠶ࡿ࡜ఏ࠼ࡓᚋࡢᙼࡢ᭱ึࡢ㏉஦ࡣࠊࠕẼࢆ☜࠿࡟࠺࠻࠸ࠖ
ࠋࡑࡢᚋࠊ⤒⦋ࡸࡽࢆヰࡋࡘࡘ஺΅ࡋࡓ࡜ࡇࢁࠊᛌㅙ 㸽 ࡋ࡚ࡶࡽ࠼ࡓࠋỴࡵᡭࡣ࠺࡝ࢇࡔࡗࡓ࡜ᛮ࠺ࠋᙼ⮬㌟ࡢணᐃ࡜↷ࡽࡋྜࢃࡏ࡚᪥⛬ࢆㄪᩚࡋࡓࠋ⤖ᯝⓗ࡟ࠊㅮ⩏࡛ࡣ࡞ࡃᢸᙜᩍဨࡀ㢳ၥࢆࡋ࡚࠸ࡿࢧ࣮ࢡࣝ୺ദࡢㅮ₇఍࡜࠸࠺ᙧ࡛ദࡍࡇ
࡜࡟࡞ࡗࡓࠋ࡞࠾ࡇࡢ᫬Ⅼ࡛ᙼ࡜ᐇ㝿࡟఍ࡗࡓࡇ࡜ࡣ࡞࠿ࡗࡓࠋ

3.2 ㅮ₇  ㅮ₇ࡢ㛤ദࡀỴࡲࡾࠊ᪥⛬ࡸෆᐜࡢㄪᩚࡶ⾜ࡗࡓࠋ㛤ദつᶍࡸෆᐜ࡞࡝࠿ࡽ $71' ࢆ❧࡚ࡿࡇ࡜࡟ࡋࡓࠋࡋ࠿ࡋࠊᆅ⌮ⓗ࡟㐲࠸ࡇ࡜࡜ࠊ᪥⛬ⓗ࡟ࢠࣜࢠࣜࡔࡗࡓࡓࡵእ㒊࠿ࡽࡢ⫈ㅮ⪅ࢆ㞟ࡵࡿࡇ࡜ࡣฟ᮶࡞࠿ࡗࡓࠋ  ㅮ₇࡛ࡣࠊPLNXWWHU ࢆ㢟ᮦ࡜ࡋࡓ 266 ࡢ❧ࡕୖࡆ࡟ࡘ࠸࡚ヰࡋ࡚ࡶࡽࡗࡓࠋ
⚾⮬㌟ࡣ 26& ࡞࡝࡟ཧຍࡍࡿ࡞࡝ࡋ࡚ 266 ࡜ഹ࠿࡞ࡀࡽࡶ㛵ࢃࡾࢆᣢࡘࡼ࠺࡟ࡋ࡚࠸ࡓࠋ
ࡋ࠿ࡋࠊ୍⯡ࡢᏛ⏕࠿ࡽࡍࡿ࡜ࠊ266 ࡀ࡝ࡢࡼ࠺࡞ࡶࡢ࡛࠶ࡾࠊసࡽࢀ࡚࠸ࡿ㐣⛬࡞࡝▱ࡿ⏤ࡶ࡞࠸ࡢࡀᐇ᝟࡛ࡶ࠶ࡿࠋࡑࢇ࡞Ꮫ⏕࡬ྥࡅ࡚ࠊPLNXWWHU ࡀ࡝ࢇ࡞㐨ࢆࡓ࡝ࡗ࡚ࡁࡓࡢ
࠿ࢆ♧ࡋࠊ266 ࡣᩜᒃࡀ㧗ࡃཧຍࡋ࡟ࡃ࠸ࡶࡢ࡛ࡣ࡞࠸࡜࠸࠺ࡇ࡜ࢆᩍ࠼࡚ࡃࢀࡓࠋ

3.3 ᚋグ  ࡇࡢㅮ₇ࡣࠊ7ZLWWHU ࡀ࡞ࡅࢀࡤᐇ⌧ࡍࡿࡇ࡜ࡣ࡞࠿ࡗࡓࠋࡲࡓࠊPLNXWWHU ࡀ࡞ࡃ࡚ࡶᐇ
⌧ࡣᡂࡋᚓ࡞࠿ࡗࡓࡔࢁ࠺ࠋ7ZLWWHU ࡜ PLNXWWHU ࡜࠸࠺അ↛࠿ࡽࠊㅮ₇఍ࡲ࡛ࡇࡂࡘࡅࡿࡇ
࡜ࡀ࡛ࡁࡓࡢࡣṇ┤࡞࡜ࡇࢁ൒ೀ࡛࠶ࡗࡓ࡜ࡋ࠿ゝ࠸ࡼ࠺ࡀ࡞࠸ࠋᩍဨ࡟せᮃࢆ㏻ࡋࠊ௻⏬࣭஺΅࣭㐠Ⴀࢆ⾜࠺ࡇ࡜ࡀ࡛ࡁࡓࡢࡣࠊ
࿘ᅖࡢຓࡅࡶ࠶ࡗ࡚ࡇࡑࡔࡗࡓࠋ

ྑᅗ  ᐇ㝿࡟❧࡚ࡓ $71'

4 mikutter ࡢᐉఏ
4.1 άື⠊ᅖ  ⚾ࡣࠊ$71' ࡢᅗ࠿ࡽࡶࢃ࠿ࡿࡼ࠺࡟ࠊ࠺࡝ࢇ┴ࡢ኱Ꮫ࡟ᅾ⡠ࡋ࡚࠸ࡿࠋᚑࡗ࡚άື⠊ᅖࡶ࠺࡝ࢇ┴ࡀ୰ᚰ࡜࡞ࡗ࡚࠸ࡿࠋᐉఏ࡜࠸ࡗ࡚ࡶࠊ㌟㏆࡞ே࡟ࠕࡇࢇ࡞ 7ZLWWHU ࢡࣛ࢖࢔ࣥ
ࢺࡶ࠶ࡿࡼࠖ࡜࠸ࡗࡓ㑅ᢥ⫥ࡢ୍ࡘ࡜ࡋ࡚ᥦ᱌ࡍࡿᙧࡀ࡯࡜ࢇ࡝ࡔࠋ࡜࠸࠺ࡢࡶࠊ⚾ࡀ౑࠺ࡼ࠺࡟࡞ࡗࡓࡢࡶࠊྠࡌࡼ࠺࡞⤂௓ࡀ࠶ࡗࡓ࠿ࡽࡔࠋࠕᮏᙜ࡟౑࠸ࡓ࠸ேࡀ౑࠼ࡤ࠸࠸ࠖ
࡜࠸࠺ࡢࡀ⚾ࡢ⪃࠼ࡔࠋ

4.2 ᡂᯝ  ⚾ࡀᅾ⡠ࡍࡿ኱Ꮫ࡛ࡣࠊ:LQGRZV ࡀࢩ࢙࢔ࡢ኱༙࡛࠶ࡾ /LQX[ ࣮ࣘࢨࢆぢࡘࡅࡿࡇ࡜ࡣ
㞴ࡋ࠸ࠋࡋ࠿ࡋࠊࢧ࣮ࢡࣝࡢᚋ㍮ࡀ࡝ࡇ࠿ࡽ࠿⪺ࡁࡘࡅ࡚⚾࡟᥋ゐࡋ࡚ࡁࡓࠋ⚾ࡣᑟධࢆᡭఏ࠺ࡇ࡜࡟ࡋࡓࠋࡉࡽ࡟ࠊ௒ᖺධᏛࡋࡓ᪂ධ⏕࡟ࡶ PLNXWWHU ࡟⯆࿡ࢆᣢࡗ࡚࠸ࡿ 0DF ࣮ࣘࢨࡀ࠸ࡓࠋᙼࡶᑟධࢆ㡹ᙇࡗ࡚࠸ࡿࠋ

5 ௒ᚋ
5.1 ᐉఏάື  ᐉఏάືࡣ௒ᚋࡶៅࡲࡋࡸ࠿࡟⾜࠺ࠋ኱ࠎⓗ࡟ᐉఏࡋࡼ࠺࡟ࡶࠊ7ZLWWHU ࣮ࣘࢨ࠿ࡘ /LQX[࣮ࣘࢨ࡛࠶ࡿᏛ⏕ࢆぢࡘࡅࡿࡇ࡜ࡣᅔ㞴ࡔࠋ࡞ࡢ࡛ࠊᇶᮏⓗ࡞᪉㔪࡜ࡋ࡚ࡣࠊ7ZLWWHU ୖ࡛PLNXWWHU ࢆ౑ࡗ࡚࠸ࡿࡇ࡜ࢆ࢔ࣆ࣮ࣝࡋࠊྠࡌᏛᰯࡢᏛ⏕࡛࠶ࢀࡤࡑࢀ࡜࡞ࡃ࢔ࣉ࣮ࣟࢳࢆ
᥃ࡅ࡚ࡳࡿ஦࡟࡞ࡿࡔࢁ࠺ࠋࡋ࠿ࡋࠊ⧞ࡾ㏉ࡍࡼ࠺ࡔࡀᙉไࡣࡍࡿࡘࡶࡾࡣ࡞࠸ࠋ࠶ࡃࡲ
࡛ࠊᮏேࡀỴࡵࡿࡇ࡜ࡔࠋ

5.2 ࣉࣛࢢ࢖ࣥ
  PLNXWWHU ࡣࣉࣛࢢ࢖ࣥࢆ⏝࠸ࡿࡇ࡜࡛᫖᪥ࢆᣑᙇࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋ᪤࡟Ⰽࠎ࡞࣮ࣘࢨࡀ
㛤Ⓨࡋ࡚࠾ࡾ฼⏝ࡶ࡛ࡁࡿࠋ⚾ࡣ⌧ᅾࠕVKLQGDQPDNHUࠖࢆ฼⏝ࡋ࡚࠸ࡿࠋࡇࢀࡣࠊPLNXWWHUୖ࠿ࡽデ᩿࣓࣮࣮࢝ࢆ฼⏝ࡋࠊ⤖ᯝࢆ SRVW ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋᑟධᡭ㡰ࡣୗᅗࡢ㏻ࡾࡔࠋືస☜ㄆࡣࠊ'HELDQ ࡜ PLNXWWHU ⣔࡛⾜ࡗࡓࠋ  ௒ᚋࡣࠊ⮬సࡢࣉࣛࢢ࢖ࣥࢆ
సᡂࡋ࡚ JLWKXE ࡟බ㛤ࡍࡿࡇ࡜ࢆ
┠ᶆ࡜ࡋ࡚࠸ࡿࠋ⌧ᅾࡣ࡝ࢇ࡞ෆᐜ
ࡢࣉࣛࢢ࢖ࣥ࡟ࡍࡿ࠿ࢿࢱࢆ
⪃࠼࡚࠸ࡿࠋ

$ cd mikutter/plugin/$ git clone https://github.com/toshia/shindanmaker$ sudo apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8$ sudo apt-get install libreadline-ruby1.8 libruby1.8 libopenssl-ruby$ sudo apt-get install libxslt-dev libxml2-dev$ sudo gem install nokogiri

6 ࡲ࡜ࡵᅗᑟධᡭ㡰  ௒ᅇࡣࠊᢏ⾡ⓗ࡞ෆᐜ࡛ࡣ࡞ࡃ⚾ࡀ PLNXWWHU ࢆ౑ࡗ࡚ࡁ࡚࡝࠺ࡔࡗࡓ࠿ࠋఱࢆࡋ࡚ࡁࡓ
ࡢ࠿࡜࠸࠺ࡇ࡜ࢆࡲ࡜ࡵࡿࡇ࡜࡟ࡋࡓࠋ࡜࠸࠺ࡢࡶࠊ㛤Ⓨ⪅ࢆㅮ₇࡟ᣍᚅࡋࡓࡇ࡜ࢆࡶࡗ
࡜እ㒊࡟ᗈࡵࡓ࠿ࡗࡓ࡜࠸࠺ࡇ࡜ࡀ࠶ࡿࠋᆅ᪉ࡢ኱Ꮫ࡛ࡣࠊ࡞࠿࡞࠿እ㒊࡜ࡢࡘ࡞ࡀࡾࢆ
ᣢࡘࡇ࡜ࡀ㞴ࡋ࠸ࠋࡑࡢࡓࡵࠊព㆑ࡢ㧗࠸ ➗ Ꮫ⏕࡜୍⯡ࡢᏛ⏕࡛ຊ㔞ᕪࡀ⏕ࡌ࡚ࡋࡲ࠺ࡇ
࡜ࡶ࠶ࡿࠋ໚ㄽࠊ୍⯡ࡢᏛ⏕࡛ࡶඃ⚽࡞ேᮦࡣ࠸ࡃࡽ࡛ࡶ࠸ࡿࠋࡑࢇ࡞୰࡛ࠊព㆑ࡢ㧗࠸ ➗
Ꮫ⏕࡟࡞ࡿࡓࡵࡢ୍ࡘࡢࡁࡗ࠿ࡅ࡟࡞ࢀࡤ࡜ᛮ࠸ࠊ௒ᅇࡢグ஦ࢆ᭩ࡃ࡟⮳ࡗࡓࠋ௒ᅇࡢグ஦ࢆ᭩ࡃ࡟࠶ࡓࡾࠊ⦅㞟࣭ห⾜࡞࡝ࢆ⾜ࡗࡓ#EUV\ZH ࡸ#FKBSULQW ࡟ឤㅰࡋࡘࡘࠊ࠾⑂ࢀ
ᵝ࡛ࡋࡓ࡜࠸࠺ゝⴥࢆ㏙࡭ࡓ࠸ࠋࡲࡓࠊPLNXWWHU ࡟㛵ࢃࡗ࡚ࡁࡓࡍ࡭࡚ࡢே࡟ឤㅰࡋࡘࡘ࡜
࡚࠾ࡃࢀ࡚࠸ࡲࡍࡡ௒ᚋࡶ࡝࠺ࡒࡼࢁࡋࡃ࠾㢪࠸ࡋࡲࡍࠋ᭱ᚋ࡟ࠊ⛶ᣋ࡞ᩥ❶࡟࠾௜ࡁྜ
࠸ୗࡉࡗࡓ࠶࡞ࡓ࡟ឤㅰࡋࡲࡍࠋ

7 ཧ⪃ᩥ⊩- mikutter࣭ http://mikutter.hachune.net/- mikutter ࡢⷧ࠸ᮏ〇సጤဨ఍(ATND)
࣭ http://atnd.org/events/24999- toshia - GitHub
࣭ https://github.com/toshia- す➃ࡢᨺ㏦ᒁࠊbrsywe-mikutter
࣭http://home1.tigers-net.com/brsywe/mikutter2.html- ⊧Ẽ㉁ࡢᛀഛ㘓࣭ http://d.hatena.ne.jp/Bardiche_A/



+7
6E5/

!"#$

%&'(

89:;<<=>?@,A,)

B,A .C)* + +,-./01!2 3456

DEFG(HI$JG,5K7LM,CNG

ON !
PQ
R
S T(UP?@F+ONON?#V.C1W?X
Y6-./ Z[\] .
^[ N 1W _`]ab?@F+89:;<<=> cdecde6 5G6Af!ghij
kOj$l$NG6+C$fm,n op
q$,qrGstuAvw ./

xy$7
z

?'

T6A{_R
|

z

}~$•€

!"
#
#

$

%&''

#

'( '

!

"

#

''

%%

#
% &''%

v {_R
‰

6

1

#

%)

#

$%&

+

'(%' %%'

*
6

'

#

* %%

%&''

•••

$

#

6

+

'

' %% '#,- ,,' ./$012/3 4

4 5#?ƒ„6 :…†G#‡ˆ6-./Nu PQŠ)‹[ @ -.

R

S T

#



7

?
C 5 $ -6A/75

Œ•Ž•,•4 /‘G’“”• F•G -.–53
8 5( 9‚1?ƒ„.u;"<=>?7@ABCDEFGHEFIJKLMNFOCFPNQRST>UVWXI@YZ[\]^ _`@YSa@bc`defZRgh]iKjLMNFOCFPNQkalDLAfmfmKnopLqrN>stua@vwIxy@z]{|@Yu}~@•€>•‚_ƒA„…ZRgh]†‡dˆ‰cgŠK‹>KRŒ•\aŽBNF@••‘NF’“C@
efSfK”•Š–u„—A˜™š]›œ•J]•‘NF’“C@
deŠ–u„—AžI›Ÿ— S`z¡>¢£m] ¤Ki¥
ZRSI¦b`‰d§‰¨ha©_a@ª>[«efZRgh]b‡@Aj¦¬@-•‘®@¯f°B’d±²³´a ?µ¶ >—f–a ·µ ON¸

%&''

#

'( '

%&''

%%

'(%' %%'

'

#

%)

¹¹¹¹9

#

,- ,

,

' ./$012/3 453¹¹¹¹9.

% &''%

6

6'' %% '

8 5(¹¹¹¹¹¹¹¹¹¹¹¹¹¹



5

#

#

7

Windows XP SP3 ࡛ mikutter ࢆ࠸ࢀ࡚ࡳࡼ࠺ࠋ

author: @catina013

!" #$%
123456789:; <=> ?@AOB

4PQ>JK F

WWX ?YZ5 [> \&'() *( + ,-.

/0

B(C4DEF>%GH%IJK L AM N>I

RSTU4>%I M>I VM/IHJI? ? A]I^

FI_24`K%F%abc?de fI%gI%hi_FjIk

F

l

m

F8pdeq(rsk7/XnXnF/?

Fj6c tnI AFjIk

A FI_lAMo$JIFjIk
X\/uv

w xbkk gb]I^FI_\F yz{b| I

}}(

!"

~( €(• ‚H%IJƒ„…†,.(‡/ˆ‰ i_?n#$%

LJ\F ?IŠ/‹
”• –—

!"##

]I^
$

%&

'

Œ4•…Ž>%••‘ ’“4Li_
#( )

#

˜



>J

Ž…)€(•P™
\F/

¡ ¢£

/š }}(\\ ¤¥aI%n›œ(+( ~( €(• •žPŸF?H%I*& +¦§/‹8%

Œ /?b‹8%* &+ FA ŒF?H%I \F‹FAŒ¨\\ ©ª\ ‹FAŒFI_«/ * & + ˆ¬
6¯ / Kk²³´ µ¶k7 , &-

fI%

, &-

4UA

/ »FIHJ¼I½(•¾ 4¿HJn¹^º

kJ . '

ÅÆ?ÇÈFjIk
Ç

FÏÐ

4±>%I

Àb ÁÂ½(•¾ 4X kkUA
n. '\cM ¢£AM , &-

HJK>k

°. '

FI_l/IbfA·¸Mc%/I n

FI_l/É]I^Ž(CtË ÌÍ c%/I n
bcJ

Xc/ , &-

4-®>%I 6¯( €(•Ê°IbfA

/

°. '

\F/ÃÄ

4UA²%I?IFI_%a‹* & + FAŒ [ÎFI_ /ÅÆ>Ñ_/ ‹FAŒ Ò4±>%I AFIÐÓ \\ /‹* & +Œ4±>%I FÖÐ»|‹ * & + ˆ¬×Ø/?I¯cš * & + ÔrI6Õ

0 12 »| ÞßàÔŠá•„ C i_ â ã.
n\ ‹* & + ˆ¬

0 12 »

ŒFI_O Ù(ÚÛÜÝ ?H%>kIk

0 12 »

ÜÝ4o$ F\ ä¢ ^åèé êÐ ?M‹* & + Fë%ì?

Œ _æ çf

ŒFjH%nMÐÓíIk²‹* & + ˆ¬/îïðñ(Ž §?I¯cšn 3 () |AM¹^ºFI_jI4‹* & + FAŒFI_Ïò ó$%bcJF\ô, &ýF 0 12 »»÷I/ÔrÆ» þÿ ÷I/Ôrùûÿ
AIl
‹/67

ù

?Kk

ŒFI_

çŠ ´ iH%0

F»êÐ FX ?ör ÷I°4J* & +/

}(Ù

Ž(½C‡

[>

[ÎF>%

þ

4Ir i_?0/?IAFjIk



X

55

cJ

þ n

F4

/ * & + FÔ
#

/øù

4ü

FÏÐ An>ck²>J'() *(
»

?MÓ

a¯

(

n K \cM'() *( ?
(™( ÀAHJ

÷I ø

ùû÷I

»
4

Gõ örMck÷I øù I_ú»ùûFÆ»ùû ÷I

F* & +

0 12 »?MUb/7Œ

McJn

( FI_

aI%/

»

4

X

/67

»
4

|

AM

>J C() _æ I6Õçt¶$J$%°£&4©'>%0[>% * & + / :

+67

8

x

!²7 8 ˆ¬ "(>%0#(B¾ ?š ðñ(Ž4ü|PŸ Ž}()(B¾Î* c(™( ¿I³´ d6 û+ ©' c%

IJi_ jIk

m, i_
¬ :

/‹

"(

!>?I$%ŒFI_j-AMokH%I J$ Ø#AM 8 ˆ¶

769 . ' &#(B¾ 4o$ #.H%Ik>J kJ
3I4

4ðñ(Ž
ç5

*FÏÐ

'() *( + ,-.
(: &/0½1CŒFnÏ_¦§/01(

F?H%Ik\ ‹ N>IOB 4üý Iô ?OB

a¯

1(

;

HJ*C( "(
ãkJ™(

6^«œ(}
UI%I,%>;3 / ?š I6Õ ?•@…Ž4œ

E>JP½
4•®

/

Q½ C<=?š

!" / yØ;' ž

½C ?

;,

#(B¾

, &-

7 c%I

X þ n9æ

; OB ° B„()

8 <™

&®>%Ik

"(

#(B¾

M

&

*0 < 565"(/ D49æóh ÂJ

#(B¾
U

BF X

>%I

4&®>k>J0123 iH%/I2JK ;L TU(&®nHH%Ik

1(/‹yÌÍŒFI_\F ‹_Þ M)Ž °H%I 6¯?

\ ‹&®ŒFI_n*/m, i_ ‹Iô ?OBUbŒFI_\F

4/0

ŒFI_

0

UI%I OB 4&®>k£/ìN O>IFI_5å
?¥º ?K æ
HJK§JMXYŒ>%>kHJK Zšb? F‹+(WC2Uœ…M(•

I_ÇÈ [H%>kI ‰´4

F2>

ã>B #



ŒFI
Kk

\FAM‹P+ ´ P+ w .H

C4Qbi_?FI_A •(R4SH% 8 4P+ Týi_?U>hWC 2U>%ž

} Ž4

UI%I ã}( ƒ„ Ž (•)=CœQ}ŒFI_PQnH6ck>J \ i_

JOBUbŒFI_

4&®>%Ik½° 2 ð(½(4ü$JÁÂ½(•¾F¼G /‹
? OB

/7

2§

>Ñ_

óh ´: AAM?IÆ;

A

ðñ(Ž

/‹

4þ8 ?H%‹Iô ?OB Œ>C ° 8=276 / ?šn°B„()

MUI%I?b%nž

Xc/Xc •‡
X 2V/‹+ (J|¯ XYŒF
§J|¯ \+XY

>%>kHJK>k>A> ç](™( FH% Þ ^)( (FI_n /)}à(B¾ °=)}`( F? PK * & +°cc [ÎMhi c?IFI_5å

%

i_?2

ÔŠá

•

§k

I?A?Ayz\\kŒ ¥ŒPd/e ‰ f9æº!g >A?b $%k>%° m, i_ 0

ˆ¬

PjXY 3IEk4š_°H

ô_FoFúp4qIJ‹^ŒFI_rs td4Í>%F Ab´ u H

IA ²

Kk ´

&® /OBM7 {24vw|¯ fx§%>kt ¥4|bJ$ OB Pd LJ¥• Ž }M~ 4&®PQ •Ò

ƒc
iK

UA )ž

FI_n 4h¡>%nM_A ‚å >J

1(

†

€}â

¦§AFI_ /lk>I5å

€?IFI_ÇÈ [K ækKkcÓ š ?mn°Ek%nM_\F[Î ? =

Ž…)abFIHJ I6Õ ‹ (™(â

i_?‹

/!g

i_ ï_`¥4„¯Mc%>kHJÆ;/]…FörMc AF/jI
1(

M %abc%IHJ

fI%gI%I§JIF

jIk

Àb

* & + PŸ Ž}()(B¾ FÔ‡nˆv

GRç‰ /+(WCF¹^º? (™(½ Ù} h ükc%I% >@11 >™°6^«.f?š ð(ã•(#Ÿ(=)}à(B¾ /^d GRF/Š •…à(•B # 4¿H%

Ž(C c i_ ?H%Ik

qIMc%I •…à(•B # / ! $ ' •…à(•*(|¯ ?b * & + °F‹Óc n$ &4 )

nðñ(Ž[Î >%I%?š /ˆv •…à(•B # F>%Œq c%Ik
• X

! $ '

œ(}

} Ž ˆ‰ i_?Þß…Žž

ƒck>J&' ( ))*' +, -&.

2& *33* 4 33 &5(*':/ 0/ *)

1") ) 6 )) )& & 8 )& 7

8 )& 6 *5 38 5*5 7* 4 9 " 5&8 6 33 *-+11 * 3. 4

"
*)

73
78

& '1- ') 7.7:* ' )1/ 001



7 33

8

1 ;1 )' ; 0 ; : 3! $ '/FÔ‡kŽI :÷H%X kkŠ F\ô ƒc%IH%>kHJi_?\• Ž \c4LJ•¬ ŠJæ/š_jHJ |ô_AFI_F\ô/ %a§ \c4Þß…Ž>J ! $ ' 0( '•b0 12 » ¿Ð= Ž4‘>%I% IIör|HJ
3;< .;

ž œ…M(• úp/¿Io$J•…à(• >J/ HJ/7? |¯š

L F?I?

F \F >J
3;< .;

H¥/

n’H%I‹8% ß “ X>%ô_\F/+AKk

þ”

X ˜ ™b

I¡ \F/ §k²

H/

•

–—

g’H%I š½(•¾\ Þß…Žœ…M(•4LJ

c%IJ\FAM #3;< .;\ ž œ…M(•• Ž öž ? 4Ÿ¯%A/¡ ;n Kk²= ŽŒ=(+ 1AM/_A‹ c› gIJäœ

ŒFÞœ Ž

/•A \ ÌÍú !g>%IJn Fj6ck?bFn¡

4¿Io$J(™( šc|¯IJ/\ ž œ…M(•4¥ >?¯cÓ4¿Io$ \F/?AHJ >Ñ_\_>%A_U§nçû
P

nA•

/œ

OB

¢

/

Û
4<@

HJ

>k>J Øp? M‹
. ˆ

‹œQ}/

4

OB

X_F_£_AM¤¥>F¯ŒFgI% HJK ¡!" OB &® x¯%´ç¦|HJK>JJ$ >ÓMb :/# /67 |¯FI_ÇÈ >J

X ²I

X_>%

#(B¾ &®nÅ¢ ¬6Kç-fIJ A •¬6K †,%>;3 /

d/ ! $ ' 4¿ÐÓ?IŒFI_½¡?

?

! & C 4.c? MP½… 4

¦bŽ

+(WC4
±L

>J

&®W ®¯F

4o$k>J

5å/Ø

HJ\F >J

FH% 3 () ° B 9 /kHJb°¡,%>;3 / =ãâ

B(C4ªM²JK>%>kIk>J «œ Ùð

4UA
ç

4UA

{%bcJ

¨©4>%<„

!" "(

1

1(

X_Fw§A7

I_\F

UAX_ŒFI

Ž(CP/‹,C+ (ˆ¬ ab /2U>
Ir ˆ¬ ž
Xc

n?¯?>

)ž
²

ß
$$

4>%I?I>ff#ƒŽ($k>J

2U>X_ 2U>?I}( B¾…Ž4



8'¸JK>? MN

>X_?F\ô4f°I%IJF\ô Xc

7(!! ?

¶ c¥ n³kK X_\_

,Ÿ… ab/X_I_%abcJOB
22

i_ ?Kk>J \ 6/´>bni¶¶¶ŒF·¸¹+ Ï6c%IJ&?šUbIô ?OBF/‹ C '

OB

4UA

tËŒ4qÃ>i_ FI_W

FI_ÀhF/Š‹0œQ} g§ó

X\AM1(Ž*$ Pd fI%/Å

/‹%abc *‹%abc *

1
1

1

%abc *

nHFn

1

$ Œ

cÓXc?K ab

ñ(Ž>J

’Æ°

kJ
E &

°b

1

$ FI_ /

PŸ

œ(•Œ
É

F

%abcÌx4®

n F>%‹/ D

ðñ(Ž¦§|ŒFÏ_ÓAK £¿Ð AM%¹+bMI^Ø:ŒFI_Ïò

¦§Æ- $%F£&4¥±nÊ(™( /%abc%>kH%I Š ìN Àb Xc

ŒFI_ÍÎ

Kk

nFnF

K * & +°4

Ðc X A6K£&/ÑÒ c%I

IæÏbðFI_¢ê ÓIf \ôAMAAf% ŽI Ö× æHFnokM7Ifk

H%n£

:ŒF‹

c?I FI_¢ê ØL

i_ ?H%>kHJ

ÛÜcÓ\c/š_L%n‹%abcŒ
/¼bAM(™( ÀI¿H%I =)}n%abc FI_Ìx(

4UA>%f$ Œ ÊÊH%nM_F>% ?@‹%abcŒ? A FI_\F4ÜÝ>JIFjIkc i_ ?Kk>J ÙAMFn?b\c4PÚº ‹'ÕAM/Ç•È nÌÍ>%IÅ Àb Kk>J XcPd/%abc /?bÔÕ n HJ
6c ‹\_

4UA*

2U

M %abcJŠJæ4? FA>JI FI_jI ó$Mc%IJK:4A¯% n88 B . 'œQ}Ä

abcŒFI_6¯ /Ë>%?b XnXn

/‹

>

WW

$ Œ Ò %abc? AFI_F ‹2U>%ž

Á3

ž(? iô>b‹nHFÁÂ

\ ‹*\/?IAFjH%Ik

'

§k>J

6?

&® ¾¿¯

I6Õ

\F

0

a¯

o$J

§J
ŒFI_

\F

8pœQ} YK?AHJK £q ? AFI_ /Š5å

2U

6 ‹•…†b| I 6µ

&

4UA

1(

n

,%>;3 / 4¼½K

ŒFÏ6 ÓAK

\c Ik

Jb

/ºI).» Ž^d 5å Åb?cÓ
‹ C'

¥ µ

_æ 5å 23n

) |HJKF' |HJK

Ik|¿H%I Š IJK>kKkm OB nÝs ðñ(Ž>%>k_J$ ÞpºOãƒ 6^«.fFÏÐÓ ( &(™( þ / ,&&E &!

6¯PŽ…) fI%n * & +B&Œq c%I°&& 4

A / A ß$%IJK

4

°C

à¥

4¿H%I Š áw IJK>kŽänåw c7 Â>b.H%§J

X ?Çâ / Oãƒ ab4íã

(™(n%abcJkkæ

FI_5ån

ãƒ)œ
>%Ik>

J
\ i_?¡P 4üý

%abcçV4èé> çAM Âê

ab4îùïFI_Ãnnü$%ÀHðñ>? M HJ

1

H%hi_ FI_P+P

$ ?

XnXn

X\òóŒFI_ƒ (=)}

OB ° *

1

FI_‹FK Ð7æÑHF>JOB
HJ\F %abc4Lï

$ F/8pŠ l ?Kk

Ž(C

ëìí

Oãƒ

\ %abc *UA²cÓP+ˆ¬ Š nX\

ø§?§HA¯

HJ\F/:÷I Kk²

† ?@A

1(

GH%I

B(

C fI%g§JIFjIk‹

1(

B(C4G ŒFI_\FPd/ Åž«B(C4

H%GHJ

I_jI FK Ð7ôb

okK

!"

8 â 1. ð ‡ G

F Ab

H G

Fm4¡H%nM_\FnÞª|i? F

c n 4Lf¯%qÃ>J£õ

H%GH%h F

tnöq4

kKw ²7Gc > nM_tnw÷ ªc

FI_\F jI ÃAø IB(C ùú|HJ

X ?6¯ B(C

§%IJ

4

Jçÿ
% X

¤Pd/û>ü>}( B¾…Ž

}( B¾…Ž

!''>J 1; 4¥

½Ù(’“? %Ýs)

#7!+ +G£õ ¯ÿ/= Þ ¯ÿO Þ…Ž n, ( ×Û

>ffÁ¾
Š ¯ÿ

>

Ð¯ÿ þ çfFI_\F i_ >J

X

#…+(

I_ör

k

FhbHJ(\F ?K X 6 •
H% G

ÿ

B(C

¤4A¯%>kHJ

þŸ„H%½m6FI_>J



L%IJ|bF>‹hbHJ(æs Œb

HJMII?(ŒFjHJ|¯|HJ¯ÿFB(C l 9æ

(

ýþ>

¶

FH%

Ð AMÃn?IiqŒFI_n M>b X hbH

J(æs ½Ù(/ >
/‹

8'

LA¯J

H%IJ /

4 >MHJ½Ù(’“ ?
/‹

!"##

>J

pn H%

•
( '

6JkJ

¯P( 4
HFB(C

¯

þP( 4

!"##

\\

HJ

ÿ _æ

•

ÿ3b4GH%>k_
):

(™(
/l4

B(C4

#6

6 !

ø+ GR>JF\ôjH%IJˆ

kF?Kk>J X ˜‹

D

§f¯J

!''

¯4

(™(nÀbI8

E c FI_

HJ GùúªKJIŒFI_ÃL [>%M>In K /•!

kKB(C4çw 4

ÿnGH%>k_FI_%abcJ

1( FIÐÓ

ŒFI_%abc?de ¶

kF

?Kk>J
\ i_ >% If>A‹
J

>J

\ i_?
?

>%>kH

OB

PQ°

B(CGR iK1(

k nJM ck>J¢ê

4A¯%bc
4&®
¢ê

1

(: &

&®

ˆm/

1( &®
/

Ç•È
?OB

&®4>% |¯|F

AM°H% ŠÓAK|HJ¯cš
i_ ?H%AM/˜

IŠ

5>%bc i_ ?HJMßÙ(#Oóh !"? Aib6A ?AHJ¯š

B(CnMHJ¶

MßÙ( l4Þœ ŽI%#p$n49æk>J



t yÃL

/ˆ‰ i_

¢ê /F¼G {%bcJ & $˜6¸R (ŽFAd8 ÅIŠ %&Ò>%J'H%l ?H%
HH%JH%ÏHJMØp‹H%Ò'ŒFFK Ð7 , ( L²%hJMÁ˜

AcJ

æs B(C è(>%‹'() *( H%=Cœ? 'ŒFA) cJ
Ž *+f4jI¡M cJ
B(Ck/FnAbF>% &®

t U>, PjXYnXc?K ø¢|¯cšn:4uH%L {%bcnM_\Fnø¢ FI_\F4w§A ck>J!"#$1( &® h?M7/6^9ÿ a¯

/00

n ?AM7-.4/

Ð%IkÂêOB 0 /0 fI%/ m¹ nÜÝ>Ji_ ‹+(WC 2U>JMXYŒ‹ž§JMXYŒ ¬6H%>kI

1(

nOB

#ƒ Ž¯1 )ž )Ž •® c%I |¯ FI_\F À… Kk>J >A> Á3 ‹Iô ?OB0×ŒFI_ƒc çû‹§ff KkÁ3 / B„()#&UIJ 2¶ŒFI_Œ -.4Ÿ¯ ‹Ubk/0 aI%0a¯U

2 ð(½(4UA Þª

J$ X

/

!"##

¯ÿ

!''

#5G ACýþ c%Ik
4UA
ø§?U
=)}F

/Þpº

„¯F?H%I ÃA/ 3 () F B 9 EFI_ëìº1 } íE c%I J$(Cã >°

aI%

4(Cã

2 ð(½(4£&° 80!>?I¹^

IFI_\Fn\ ƒc4˜5>>%Ik

kJ ! $ 'F B 9 E° B* (' 4de

3 () ˆ¬c?K ê6 =)}n(Cã c J$ 276 / ?š O Ù(?OB
½

34

8

° 8)

& FIHJXa¯ 78?9:;<À²F>%> n=>>%Ik%&
F Ab ‹&®ŒFI_n[>%ÀHðñ>%IJ

FI_=)} X>%
4ÏIJIFjIk^Ø

1(4nJM>%bcJFI_Õ/IbMö?4>%nYKk²

K F_y~Ik>J\ 24`K%a@

PLNXWWHU &RGH 5HDGLQJ#RVDBN⎿⎉⎍⎎⏀⎫⎖⏔ろPLNXWWHU‫⎌⎚⎿⎧⎤ޡ‬を‫⎮⏉⎚⎿⎧⎤ޡ‬ゎ
PLNXWWHU⎰⎠⎡‫ࡒ⏃⎨⎒⎡⎇ޡ‬ഇള๭⎫⏫␥⏠⏞␯␄⎨⎚⎍ろ⏹⍬⏵⏯⍬␅⏃ಒ࣢⎬෣ళ⎅⏞␓␦⎨⎚ゎ PLNXWWHU⏓҉ਏ⎘⎠⎅⎒⎪ۚਏ⎍⏉⎐ഇ⎌⏊⎫⎅ろPLNXWWHU⎯֘ஓ⎍⎋⎌⎘⎅⎯⎨૥⎘⎠⎅ろ঍Һ266⎡⎘஬⏀⎠⎅ゎ ඕۣ⎨⎰⎞⏔⎫⎃⎫⎠⎯⎠⏂⎬ろPLNXWWHU⎯⏯⍬␅⏓ѽ঑⎘⎧⎅⎎⎿⎚ゎ⎫⎋ろ⎔⎯Ւߏ⎯⏯⍬␅⎰␦␏⏴␣␯ߗ୅⎯⏃⎯⎫⎯⎨ろ⎔⎯ඕ⎍ࡥ⏌‫⎯⎌⏊⎐⎅⎰⎬ܝ‬ബۖ୅⎍⎃⏌⎌⏃⎘⏍⎫⎅⎔⎩⏓⎕ຎࢨ⎐⎡⎖⎅ゎ௔Φ୞ゐ⏀⎐⏀⎐

⎿⎛⎰7ZHHWࠟண⎌⏊ೞ૳⎯⏞␓␦⎫⏊⏤␯␄␦␙⏠␯␄⎌⏊૖⏂⎧⎅⎐⎯⎍⏷⏦␦⍬⎨⎚⎍ろPLNXWWHU⎰ߢঽ⎯⏠␕␯␄␋␯␅␦␯⏬⏓ۚત⎘⎧⎞⎯λೱ⎩⎘⎧7ZHHWࠟண⏅*8,१ढ़⏓⎘⎧⎅⏌⎯⎨ろ ⏤␯␄␦␙⏠␯␄⎨⎃⏌ PLNXWWHUUE ⎌⏊஬⏔⎨⏃ুਹਉ⎰⎫⎌⎫⎌٪⎉⎧⎎⎿⎜⏔ゎ⎞⎔⎨ろ‫ܞ‬Ѿ⎰7ZHHW⏓ࠟண⎚⏌⎩⎔⏎⏓ਘӆ⏋⎬⎘⎧஬⏔⎨⎅⎐⎔⎩⎬⎘⎿⎚ゎ ๲ѽ⎚⏌⎠⏂⎬⎰PLNXWWHU⎯␓␥⏬
⏠␯Նۚ⎬ԟ⎚⏌ગߨ⎍಩์⎩⎫⏋⎿⎚⎍ろ಩์⎬⎫⎤⎠⏊⎞⎯୙୞঑෗⎘⎧⎅⎐⎯⎨अజ⎃⏋⎿⎜⏔ゎ ⎿⎠ろ#WRVKLBD⎖⏔⎍␓␥⏬⏠␯⎯ࢆ⎎൘⏓ധ⎬Ւߏ⎩⎘⎧ࢆ⎅⎧⎅⏌⎩ް⎇⎯⎨⎞⎢⏊⏃‫⎅⎖⎡⎐⎧⎘⎬۪ދ‬ゎ
PLNXWWHU⎯7ZHHWࠟண⎬⎰ॽ⎫⎍⏊⎯5(67 $3,⎬⏉⏌⏃⎯⎩8VHU6WUHDP⎬⏉⏌⏃⎯⎯ࠦຳ⎍⎃⏋⎿⎚⎍ろ5(67 $3,⎯൘⎍੺ࡸ⎨ѽ঑⎘⏅⎚⎅⎯⎨⎔⎤⎢⏓ਘӆ⏋⎬ѽ঑⎘⎧⎅⎎⎿⎚ゎ ␑⏝⏠␧⎰ FRUHDGGRQUHVWUHVWUE ⎨⎚ゎ␦⏵␄  FRUHDGGRQUHVWUHVWUE



















   FRGLQJ  XWI   
 5HVW $3, ࡎ ၿ ᙎ ᷔ ࡒ ࢤ ࢉ ࣅ ࣎ ࢉ ࣘ ࡹ ᘯ ᕿ ࡀ ࡲ ࢼ ࣎ ࢕ ࢉ ࣘ
3OXJLQ  FUHDWH  UHVW GR
GHI VHOI  GHILQHBSHULRGLFDOBH[HFXWHU DSL  LQWHUYDO  FRXQW  VXFFHVVFRXQWHU
8VHU&RQILJ > LQWHUYDO @ODPEGD ^ _ VHUYLFH _FRXQWHU  
LI FRXQWHU ! 8VHU&RQILJ > LQWHUYDO @FRXQWHUVHUYLFH  FDOOBDSL DSL  FRXQW  8VHU&RQILJ > FRXQW @ ^ _ PHVVDJHV _VXFFHVV  FDOO VHUYLFH  PHVVDJHV LI PHVVDJHV DQG QRW PHVVDJHV  HPSW\ " ` HQG` HQG#FUDZOHUV> ODPEGD ^ _ VHUYLFH _ 3OXJLQ  FDOO  SHULRG  VHUYLFH `@#FUDZOHUV  GHILQHBSHULRGLFDOBH[HFXWHU  IULHQGVBWLPHOLQH  
UHWULHYHBLQWHUYDOBIULHQGWO   UHWULHYHBFRXQWBIULHQGWO GR _ VHUYLFH  PHVVDJHV _3OXJLQ  FDOO  XSGDWH  VHUYLFH  PHVVDJHV
3OXJLQ  FDOO  PHQWLRQ  VHUYLFH  PHVVDJHV  VHOHFW ^ _ P _ P  WRBPH " `



















3OXJLQ  FDOO  P\SRVW  VHUYLFH  PHVVDJHV  VHOHFW ^ _ P _ P  IURPBPH " ` HQG#FUDZOHUV  GHILQHBSHULRGLFDOBH[HFXWHU  UHSOLHV   UHWULHYHBLQWHUYDOBPHQWLRQ  UHWULHYHBFRXQWBPHQWLRQ GR _ VHUYLFH  PHVVDJHV _3OXJLQ  FDOO  XSGDWH  VHUYLFH  PHVVDJHV
3OXJLQ  FDOO  PHQWLRQ  VHUYLFH  PHVVDJHV
3OXJLQ  FDOO  P\SRVW  VHUYLFH  PHVVDJHV  VHOHFW ^ _ P _ P  IURPBPH " ` HQG
GHI VWDUW VHUYLFHQRWLFH  ERRW SHULRG #FUDZOHUV  HDFK ^ _ V _ V  FDOO VHUYLFH
5HVHUYHU  QHZ  ^VWDUW VHUYLFH ` HQG`

RQERRW GR _ VHUYLFH _VWDUW VHUYLFH HQG
HQG઄⎅⎨⎚⎮ゎ ⎞⏍⎨⎰ろࡼ౵⎬஬⏔⎨⎅⎎⎿⎘⏈⎇ゎ۱ෳ⎨⎰ 3OXJLQFUHDWH UHVW ⎩⎘⎧ UHVW ⎩⎅⎇෕ঽ⎯␓␥⏬⏠␯⏓‫ݩ‬ढ़⎘⎧⎅⎿⎚ゎ ⎔⎔⎨␒␩⏿⏫⏓୔⎘⎧⎅⎿⎚⎍ろ⎔⎯␒␩⏿⏫⎰ਓܽ⎬಻ь⎖⏍ろ␒␩⏿⏫௅⎨␔␧␍␝⏹⏿␅⏓‫⏋⎠⎘ࡥ⎴څ‬ろ಩์⎫ബॅ⎫⎪⏓଑զ⎘⎠⏋⎘⎧⏠␕␯␄␋␯␅␥⎯୕໰‫⏓׋ݩ‬۱⎫⎅⎿⎚ゎ゚۱ෳ⎯ GHILQHBSHULRGLFDOBH[HFXWHU ⎰௅ೱ⎨‫⎨⎯⎫␅⏿⏹␝⏌⎅⎧⎤ޡ‬ろ⎩⏋⎃⎉⎛௅฻⎰ટ⎅⎧⎋⎅⎧
஬⏀छ⏂⎿⎚ゎ ⎚⏌⎩ろ۱ෳろ۱ෳ⎨⎞⏍⎟⏍⎔⎯␝⏹⏿␅⎍‫⎮⎚⎿⎅⎧⏍⎖ࡥ⎴څ‬ゎ ⎫⎬⏅⏊ #FUDZOHUV ⎬⎔⎯␝⏹⏿␅⎯റ⏋ખ⏓௡⏍⎧⎅⎿⎚ゎ߹⎰ GHILQHBSHULRGLFDOBH[HFXWHU ⎰ろキ LQWHUYDO ഇ⎕⎩⎬ DSL ⏓‫⎴څ‬ろढ़‫ٌ⏊⎠⎘ڸ‬ї⏓ωॅ⎬⎘⎧ VXFFHVV⏓‫⎷څ‬ギ⎩⎅⎇␥␜⏼ߧ⏓റ⎚␝⏹⏿␅⎨ろ ۱ෳろ۱ෳ⎨⎰⎔⎯␝⏹⏿␅⎍റ⎚␥␜⏼ߧ⏓జໆ⎬ҳ௽⎘⎧⎅⎿⎚ゎ ␥␜⏼ߧ⎰۱ෳ⎨ VHUYLFH ⎩⎅⎇ωॅ⏓ࠟ⎤⎧⎅⎧ろ۱ෳ⎨ VHUYLFHFDOOBDSL ⏓‫⎫ࠞ⎍⎯⎇⎅⎩⎚ࡥ⎴څ‬Ն௾⎨⎚ゎ ⎔⏍⎬⎥⎅⎧⎰‫⎚⎿⎘ࡧڤ‬ゎ ⎞⎘⎧⎔⎔⎨ҳ௽⎖⏍⎠␥␜⏼ߧ⎰ろ۱ෳ⎯ VWDUW ⎯ય⎨‫⎚⎿⎅⎧⏍⎖ࡥ⎴څ‬ゎ ⎔⎯␝⏹⏿␅⏓⏉⎐٪⏌⎩ろ݂‫ ⎬ڤ‬5HVHUYHUQHZ  ⎩⎅⎇⎯⎍⎃⏋⎿⎚⎮ゎ ⎔⏍⎰PLNXWWHU⎯␥⏠␒␥␦⎨ろ‫ޱ‬଑⎘⎠ೀॅ⎍‫ر‬Ѭ⎘⎠‫߹⏓⏫⏿␩␒⎨ڤ‬۱⎚⏌⏃⎯⎨⎚ゎ ⎥⎿⏋ろ VWDUW ⎍‫ ⎩⏌⏍⎖ࡥ⎴څ‬#FUDZOHUV ⎯␥␜⏼ߧ⏓߹۱⎘⎠‫ڤ‬ろೀ‫ ⎠⎿⎬ڤ‬VWDUW ⏓‫⎇⏉⎚ࡥ⎴څ‬าช⎘⎧⎅⏌⎯⎨ろٌї⎩⎘⎧ഇ⎕⎩⎬ #FUDZOHUV ⎯␥␜⏼ߧ⎍‫⎬ߏ⏌⏍⎱څ‬⎫⏋⎿⎚ゎ⎠⎡⎘ろ⎔⏍⏓߹‫⎬ࡾ݂⎰⎬⏂⎠⏌⎚ټ‬Ѿ VWDUW ⏓‫⏔⎜⎿⎒⎅⎱⏍⎒⎫⏊⏅⎨⏔څ‬ゎ ⎔⎯ฉෳ⏓੽⎇⎯⎍゚۱ෳ⎯ RQERRW ⎨⎚ゎ PLNXWWHU⎯␓␥⏬⏠␯⎨⎰ろ⎔⎯⏉⎇⎫ࢆ⎎൘⏓⎚⏌⎩ ERRW ⏠␕␯␄⎬਻⎘⎧␒␩⏿⏫⏓⏠␕␯␄␋␯␅␥⎩⎘⎧୕໰⎚⏌⎔⎩⎍⎨⎎⎿⎚ゎ ERRW ⏠␕␯␄⎰PLNXWWHU⎯Քஓߗ⎬λ୞⎡⎒౎१⎚⏌⎯⎨ろ⎔⏍⎨ VWDUW⎯݂ࡾ⎯Ѿ⎍‫⎚⎿⎜ࡥ⎴څ‬ゎ⎔⎔⎨ ERRW ⏠␕␯␄⎯ωॅ⎩⎘⎧ VHUYLFH ⎍୔⎖⏍⎧⎅⎿⎚⎍ろ⎔⏍⎰⎫⏔⎨⎘⏈⎇⎌ゎ VHUYLFH ⎩⎅⎇⎯⎰ PLNXWWHU ⏳ ⏵ ␂ ␜ ⎍ ଚ ֤ ⎘ ⎧ ⎅ ⏌ろ 7ZLWWHU ⎯ $3, ‫ ⏓ ⎘ ࡥ ⎴ څ‬ળ ࣐ ш ⎚ ⏌ ⎠ ⏂ ⎯ ⏦ ␒ ⏴ ⏣ ⏫ ␄ ⎨ろ ⎠ ⎩ ⎉ ⎱IULHQGVBWLPHOLQH ⏓੓ωॅ⎬⎘⎧ VHUYLFHFDOOBDSL ⏓‫⎩⎷څ‬7ZHHW⎯௅ೱ಺‫ ⏌⎃⎨ټ‬0HVVDJH ⏫␥⏵⎯⏠␯⏵⏻␯⏵ ⎯జໆ ⎍റ⎤⎧⎎⎿⎚ゎ ⎖⎤⎎ GHILQHBSHULRGLFDOBH[HFXWHU ⎨٪⎠૳⏋⎨⎚⎮ゎ#FUDZOHUV ⎯યङ⏓٪⎧⎅⎎⎿⎘⏈⎇ゎ ۱ෳ⎯ࡾՃшߗ⎬ろ 3OXJLQFDOO SHULRG VHUYLFH ⎚⏌⎡⎒⎯␥␜⏼ߧ⏓௡⏍⎧⎅⎿⎚ゎ ⎔⏍⎰⏠␕␯␄⏓౎१⎖⎜⏌Ւ൚⎨ろ キ SHULRG ⏠␕␯␄⏓ωॅ VHUYLFH ⎨౎१⎖⎜⏌ギ⎩⎅⎇Τය⎨⎚ゎ ⎢⎫⏀⎬ SHULRG ⏠␕␯␄⎰ろೀ⎕⎩⎬Ѿ౎१⎚⏌⎔⎩⎍സ࣍⎖⏍⎧⎅⏌⏠␕␯␄⎨⎚ゎ ⎔⎯⏠␕␯␄⎰٠‫ٌݲ‬ї⏅␑⏥␩␫⍬ろ␦⏵␄⎯଑ߗҷ௨⎫⎪⎬‫⎍⎚⎨⎯⏌⎅⎧⏍⏐ޡ‬ろ⎔⎇⎅⎇⏳⏵␂␜৕⏀‫␥␓⏃␄␯␕⏠⎅⎾⎤⏀ܛ‬⏬⏠␯⎯λೱ⎩⎘⎧߹ਂ⎖⏍⎧⎅⏌⎯⎰෣ళ⎅⎨⎚⎮ゎ⎖⎧ろ #FUDZOHUV ⎬⎰⎃⎩‫⎚⎿⎅⎧⎤ࣛ⎍ߧ⏼␜␥⎯ڃ‬ゎ ゚۱ෳ⎨଑զ⎖⏍⎧⎅⏌⏃⎯⎰ DSL ωॅ⏓٪⏌⎩
IULHQGVBWLPHOLQH ⎩⎫⎤⎧⎅⎿⎚ゎ ⎥⎿⏋⎔⏍⎰ろ⎅⏐⏇⏌キ␗⍬␜⏻⏠␜␥⏠␯ギ⏓ࠟண⎚⏌ࡽ๲⎯⏉⎇⎨⎚ゎ ⎔⎯‫څ‬⎴ࡥ⎘⎍ढ़‫⏊⎠⎘ڸ‬ਞ⎐␒␩⏿⏫⎍‫⎍⎚⎿⏍⎱څ‬ろ⎔⎯⎩⎎⎬ࠟண⎘⎠7ZHHW⎯జໆ⎍ PHVVDJHV ⎬୔⎖⏍⏌⎯⎨ろ ␒␩⏿⏫௅⎨⎰⎔⏍⏊⎯␝⏿⏷⍬⏴⏓ωॅ⎩⎘⎧ XSGDWH ろ PHQWLRQ ろ P\SRVW ⏠␕␯␄⏓౎१⎖⎜⎧⎅⎿⎚ゎ ⎉ろ⎔⏍⎡⎒を಺ߟ⎰⎪⎇⎚⏌⎯を⎩ް⎇⎌⏃⎘⏍⎿⎜⏔⎍अజ⎕෌ๆゎ PLNXWWHU⎯*8,⏯⍬␅⎨⎰⎔⏍⏊⎯⏠␕␯␄⎬਻⎘⎧⏠␕␯␄␋␯␅␥⏓୕໰⎘⎧⎋⏋ろ⏠␕␯␄⎍ಓ⏔⎨⎎⎠⏊ωॅ⎩⎘⎧୔⎤⎧⎎⎠7ZHHW⏓಺ߟ⎚⏌⏉⎇⎬⎫⎤⎧⎅⏌⎯⎨ろ ࠟண⎘⎠7ZHHW⎰෌਷⎬⎫⏊⎛⎢⏄⏔⎩ѳ෣⎬಺ߟ⎖⏍⎿⎚ゎ ⎔⎯⏉⎇⎬ろ⎫⏔⎨⏃⏠␕␯␄⎨ߖ⎤⎧⎅⎐⎯⎍PLNXWWHU⎯஦૎⎨⎚ゎ ⎅⎌⎬⏃⏦␒⏴⏣⏫␄‫⎮⎚⎨⎅⎾⎤ڽޱ‬ゎ゚۱ෳ⎰ߢഇ·⎯␦␓␥⏠⎬਻⎘⎧ஔ⎙ࡽ๲⏓⎘⎧⎅⏌⎡⎒⎫⎯⎨Ӎ͵⎘⎿⎚ゎ⎩⎔⏎⎨ろ⎔⎯⏯⍬␅⏓٪⎧ъ⎌β໳ӽ⏓ӽ⎙⎫⎅⎨⎘⏈⎇⎌ゎ ⎞⎇ろ HQG ⎡⎒⎯۱⎍⎼⎩⏔⎪⎫⎐ろ␒␩⏿⏫⎯݂‫⎯ڤ‬ഓ⎯૥‫⎧⎅⎧⏍⎌ࢆ⎬ڤ‬ろ஦⎬۱ෳ⎫⎪⎨⎰໓ਞ⎚⏌ HQG ⏅ ` ⎍۱⎬⎿⎩⏂⏊⏍⎧⎅⎿⎚ゎ ⎔⎯ࢆ⎎൘⎨␐␯⎩๝⏌ञ⏃⎅⏌⎩ް⎅⎿⎚⎍ろ⎔⏍⎰⎪⎇٪⎧⏃/LVS⎯ࢆ⎎൘⎨⎚⎮ゎ #WRVKLBD⎖⏔⎰/LVSHU⎫⎯⎨ろ໓ਞ⎚⏌ HQG ⏓۱⎬⎿⎩⏂⎠⎐⎫⏌ƧƧ⏊⎘⎅⎨⎚ゎ ⎔⎯λ٪ബ⎫‫⎎ࢆ⎯آ‬൘⏃ろPLNXWWHU⎯⏯⍬␅⏓‫⎰⎨ࣘ⏌ګ‬ҙ⎜⎫⎅ය⏐⎅⎨⎚⎮⎢⎫⏀⎬5XE\⎨⎰ HQG ⎬۱‫⏯⎩⎇ޡ‬⍬␅⎍࡙ૠ⎬⎫⎤⎧⎘⎿⎇⎯⎨ろ໓ਞ⎚⏌ HQG ⏓⎿⎩⏂⏌⎯⎰߄௨ड़⏓ࣘ⎓⏌⎩⎅⎇‫ڹ‬ї⏃⎃⏋⎿⎚ ゎ⏠␕␯␄⏓૰⎤⎧
UHVWUE ⎨ XSGDWH ⏠␕␯␄⎬⏉⎤⎧୯⎓⏊⏍⎠7ZHHW੬⎰⎪⎔⎹۱⎐⎯⎨⎘⏈⎇⎌ゎ XSGDWH ⎨JUHS⎚⏌⎩⎅⎐⎥⎌␎⏿␄⎘⎿⎚⎍ろ⎔⎔⎨⎰ FRUHDGGRQIULHQGBWLPHOLQHUE ⏓٪⎧⏀⎿⎘⏈⎇ゎ␦⏵␄  FRUHDGGRQIULHQGBWLPHOLQHUE













   FRGLQJ  XWI   
0RGXOH  QHZ GRPDLQ*WN  7LPH/LQH  QHZ
SOXJLQ
3OXJLQ  FUHDWH  IULHQGBWLPHOLQH
SOXJLQ  DGGBHYHQW  ERRW ^ _ VHUYLFH _3OXJLQ  FDOO  PXLBWDEBUHJLVW  PDLQ  +RPH 7LPHOLQH  08,  6NLQ  JHW  WLPHOLQH  SQJ `
SOXJLQ  DGGBHYHQW  XSGDWH ^ _ VHUYLFH  PHVVDJHV _PDLQ  DGG PHVVDJHV `HQG⎔⏍⎰␗⍬␜⏻⏠␜␥⏠␯⏓಺ߟ⎚⏌⎠⏂⎯␓␥⏬⏠␯⎨⎚ゎ ⎔⎯␓␥⏬⏠␯⎰⎢⏈⎤⎩ࢆ⎎൘⎍‫ ⎧⎐ڄ‬3OX
JLQFUHDWH ⎬␒␩⏿⏫⏓୔⎚⎯⎨⎰⎫⎐ 3OXJLQDGGBHYHQW ⎫⎪⎨⏠␕␯␄␋␯␅␥⏓୕໰⎘⎧⎅⎿⎚⎍ろԷඕ⎰
UHVWUE ⎩ஔ⎙⎨⎚ゎ゚۱ෳ⎨⎰ ERRW ⏠␕␯␄⎯␋␯␅␥⏓୕໰⎘⎧⎅⎿⎚ゎ PXLBWDEBUHJLVW ⎰⏻␒⏓୕໰⎚⏌⏠␕␯␄⎨ろ۱ෳ⎨१ढ़⎘⎧⎅⏌ *WN7LPH/LQH ⎯⏠␯⏵⏻␯⏵⏓୔⎘⎧⎅⎿⎚ゎ゚۱ෳ⎍ XSGDWH ⏠␕␯␄⎯␋␯␅␥⎨⎚ゎ ੺ࡸ⎬ PDLQ ろ⎚⎫⏐⎢␗⍬␜⏻⏠␜␥⏠␯⎬਻⎘⎧୔⎖⏍⎠7ZHHW⏓ωॅ⎬⎘⎧ DGG ⏓‫⎚⎨⎒⎡⏌⎅⎧⎘ࡥ⎴څ‬ゎԑ੺⎨⎚⎮ゎ ⎡⎒⎪⎔⏍⎡⎒⎡⎩ъ⎍Ք⎎⎧⎅⏌⎌ഇ⎌⏋⎿⎜⏔ゎ⎖⏊⎬ধ⎤⎧⏀⎿⎘⏈⎇ゎ⏻⏠␜␥⏠␯
PLNXWWHU⎯␗⍬␜⏻⏠␜␥⏠␯⏻␒⎰ *WN7LPH/LQH ⎯⏠␯⏵⏻␯⏵⎨ろচ‫ ⎰ٿ‬FRUHPXLFDLURBWLPHOLQHUE ⎬⎃⏋⎿⎚ゎ FRUHPXLJWNBWLPHOLQHUE ⎨⎰⎫⎅⎯⎨શΤ⎘⎧⎐⎡⎖⎅ゎ␦⏵␄  FRUHPXLFDLURBWLPHOLQHUE








   FRGLQJ  XWI   
UHTXLUHUHTXLUH

JWN
FDLUR

FODVV *WN  7LPH/LQH  *WN  9%R[
HQG



























PLTXLUHPLTXLUHPLTXLUHPLTXLUHPLTXLUHPLTXLUH PXL 
 PXL 
 PXL 
 PXL 
 PXL 
 PXL FUXGFHOOBUHQGHUHUBPHVVDJHWLPHOLQHBXWLOVSVHXGRBPHVVDJHBZLGJHWSRVWER[
LQQHUBWOPLTXLUH  FRUH 
PLTXLUH  FRUH 

PHVVDJH
XVHU

PLTXLUH  OLE 

UHVHUYHU

EHJLQ UGRF
ࢤࢉࣅ࣎ࢉࣘࡕ *WNࢋ࢈࢝ࢌࢨࢭࠀHQG
FODVV *WN  7LPH/LQH)5$0(B3(5B6(&21')5$0(B06
 WRBI  )5$0(B3(5B6(&21'
LQFOXGH *WN  7LPH/LQH8WLOV  VQLS ۱ෳΙ‫⎬ۼ‬ബ⎫␝⏹⏿␅‫⎍⎘ࡥ⎴څ‬٪⎉⎿⎚⎮ゎ UHTXLUH ⎙⏄⎫⎐⎧ PLTXLUH を⎔⏍⎰⎅⎤⎠⎅を⎔⏍⎰PLNXWWHU⎍஫ߢұૌ⎘⎠ UHTXLUH ⎨⎚ゎ ੓λωॅ⎨஬⏀‫␡⏴␞⏁ܛ‬⍬␧⎯ࠦຳ⏓‫ޱ‬଑⎚⏌Ιҙ⎰ೞ૳⎯
UHTXLUH ⎩ബ⏐⏋⎿⎜⏔ゎ ⎢⏈⎤⎩Ժ⏋ஞ⏓⎘⎧ PLTXLUH ⎯଑զ⏓٪⎧⏀⎿⎘⏈⎇ゎ

UHTXLUH ⏃⏀⎤⎐⏀⎐PLTXLUH ⎯଑զ⎰ FRUHPLTXLUHUE ⎬⎃⏋⎿⎚ゎ␦⏵␄  FRUHPLTXLUHUE















   FRGLQJ  XWI    ེ࠶ࡕ੝ࡒᘺళࡒᾓࡊ⣶ࡥࡳࡲࣆࢢࢨࢮࡹၿ∄ࡀࡲ
UHTXLUH

VHW ࣄ࢔ࡊࡍ࠲ࡶࠫࠫ࡯ࡔ࠮ࠀ ࢩࢉࣘࢫ࣐࣡ࠫࠫ࡯ࡔ࣡ࠀ ࡐ࠭⛆ࠫࡕ࠲ࡹᘲ࠶ࡏ࢘࣡ࢮ࡯ࡱ⬱࠶ࡑࡱࡄ࠭ࡇ࠲ࡰ✆࠾࠶ࡖᘲ࠲ࡑࠫ࠸ࡐࠫࠫ࡯ࡔ࠮ࠀ ࡜ࡆࡱࡎ႞ࠫᗐࡏ࠲ࡒᢔࠫࡍࡆࡰⴄࡒࡥࠫࡍ࠶ࡳࡲࡺࡇ࡯࣡ࠀ Ꮢࡑ࠳ࡰࡑࡺࡍࡶ࠲ࡱ࡫ࡀࠫ✠ᖱࡑࡺࡇࡴ࠭ࠀ ⛠ 0LTXLUH  PLTXLUH ࡕ ࢍ ࢉ ࣏ ࢇ ࢞
GHI PLTXLUH DUJV0LTXLUH  PLTXLUH DUJVHQG#WRVKLBD⎖⏔⎯␛⏫͵⎍୆⏐⎤⎧⎎⎿⎚⎮ゎ ⏹⍬⏵⏯⍬␅⎿⎨⏀⎤⎐⏀⎐⎨⎚ゎ⎞⏍⎰⎖⎧⎋⎎ろ PLTXLUH ⎯ඕਹ⎰␞⏴␡⍬␧␝⏹⏿␅⎬ࡽ๲⏓Ϋ࣬⎘⎧⎅⏌⎡⎒⎯⏉⎇⎨⎚ゎ ඕਹ⏓٪⎧⏀⎿⎘⏈⎇ゎ␦⏵␄  FRUHPLTXLUHUE











PRGXOH 0LTXLUH
FODVV  VHOI
3$7+B.,1'B&219(57(5+DVK  QHZ ^ _K  N _ K > N @N  WRBV   ` 3$7+B.,1'B&219(57(5 > PXL @PXL  JWNB
3$7+B.,1'B&219(57(5 > PXL @&ODVV  QHZ ^GHILQHBPHWKRG  ^ _ RWKHU _UHQGHUODPEGD ^ _ U _ )LOH  MRLQ PXL   ^ U ` B   RWKHU `LI RWKHU
RU )LOH7HVW  H[LVW " UHQGHU > FDLUR @   UE
UHQGHU > FDLUR @




























































HOVH
UHQGHU > JWN @ HQG ` ` QHZ
3$7+B.,1'B&219(57(5 > FRUH @3$7+B.,1'B&219(57(5 > XVHUBSOXJLQ @ SOXJLQ  &+,ࡕ࢘ࢇࢢ࣡࢞࢘࣡ࢮࢺࢆࢉ࣐ࡹ✡ࡦ⣶ࡧࠀ BNLQGB ࡖ ࢺ ࢆ ࢉ ࣐ ࡕ ὥ ⲙ ߿ BILOHB ࡖ ࢺ ࢆ ࢉ ࣐ ു ⿏ ᑆ ቍ ၏ ࡹ ⮏ ࠶ ⿐ ࠀ
 BILOHB ࡹ ḗ ᴯ ࡀ ࡲ ࡏ ߿ ࡄ ࡕ ࢬ ࢈ ࣑ ࢔ ࢭ ࣏ ৽ ࡕ U X E \ ࢺ ࢆ ࢉ ࣐ ࡹ ௃ ࡍ ✡ ࡦ ⣶ ࡧ ࠀ ࡄࡕ⮭߿ࡄࡕࢬ࢈࣑࢔ࢭ࣏৽ࡒࢬ࢈࣑࢔ࢭ࣏࠳ࠩࡳࡗ߿ࡄࡕࢬ࢈࣑࢔ࢭ࣏௕ࡒ ࡄࡕࢬ࢈࣑࢔ࢭ࣏ࡏീ࠿ു౉ࡕ 5XE\ࢺࢆࢉ࣐࠳ࠩࡲࡏ੾ၿ࠾ࡍ✡ࡦ⣶ࡩ࠭ࡏࡀࡲࠀ([DPSOH
 PLTXLUH  SOXJLQ'LUHFWRU\ KLHUDUFK\ SOXJLQV   D UE
 C E 5($'0( E UEC F UE D UEࡏE  U E ࠳ ✡ ࡦ ⣶ ࡥ ࡳ ࡲ F U E ࡫ 5 ( $ ' 0 ( ࡖ ✡ ࡦ ⣶ ࡥ ࡳ ࡑ ࠫ
GHI PLTXLUH NLQG  ILOHV
NLQG
NLQG  WRBV\PLI ILOHV  HPSW\ "PLTXLUHBDOOBILOHV NLQG
HOVH
LI NLQG OLE'LU  FKGLU 3$7+B.,1'B&219(57(5 > NLQG @ ^ILOHV  HDFK ^ _ ILOH _PLTXLUHBRULJLQDOBUHTXLUH ILOH  WRBV ` `HOVH
ILOHV  HDFK ^ _ ILOH _ILOHBRUBGLUHFWRU\BUHTXLUH 3$7+B.,1'B&219(57(5 > NLQG @  ILOH  WRBV ` HQG
HQG HQG PLTXLUHࡏീ࠿ࡇ࠳߿௃ࡍࡕࢺࢆࢉ࣐࠳Ⴚ➯ࡒࡑࡲ
GHI PLTXLUHBDOOBILOHV NLQG
NLQG
NLQG  WRBV\P'LU  JORE 3$7+B.,1'B&219(57(5 > NLQG @  VHOHFW ^ _ [ _ )LOH7HVW  GLUHFWRU\ " [RU ? UE [ ` VRUW  HDFK ^ _ UE _ILOHBRUBGLUHFWRU\BUHTXLUH UE ` HQG
GHI ILOHBRUBGLUHFWRU\BUHTXLUH UE
LI PDWFKUE  PDWFK A  ? UE 
UE
PDWFK >@ HQG
FDVH
ZKHQ )LOH7HVW  GLUHFWRU\ " )LOH  MRLQ UE
SOXJLQ)LOH  MRLQ UE  )LOH  EDVHQDPH UE
LI )LOH7HVW  H[LVW " SOXJLQ RU )LOH7HVW  H[LVW "  ^ SOXJLQ ` UE 
PLTXLUHBRULJLQDOBUHTXLUH SOXJLQ
HOVH
PLTXLUHBRULJLQDOBUHTXLUH UE HQG
HOVH
PLTXLUHBRULJLQDOBUHTXLUH UE HQG HQG
GHI PLTXLUHBRULJLQDOBUHTXLUH ILOH
UHTXLUH ILOH HQG
HQG۱ෳ⎍ PLTXLUH ⎯ඕਹ⎨⎚ゎ ૥ঽ⎯UGRF⎬⏃঑෗⎰ࢆ⎅⎧⎃⏋⎿⎚⎍ろ⎩⏋⎃⎉⎛஬⏔⎨⏀⎿⎘⏈⎇ゎ ⎖⎤⎎٪⎠⎩⎎⎰ ILOHV ⎬␞⏴␡⍬␧෕⎍‫ޱ‬଑⎖⏍⎧⎅⎠⎯⎨۱ෳ⎌⏊஬⏀ި⏂⎿⎚ゎ NLQG ⎍ OLE ⎌⎪⎇⎌⎨ഇԻ⎘⎧⎅⎿⎚⎍ろ⏉⎐٪⏌⎩⎪⎤⎢⏃ 3$7+B.,1'B&219(57(5>NLQG@ ⎯␃⏟␨⏫␄␦ч⎌⏊␞⏴␡⍬␧⏓஬⏀‫⎿⎅⎨⏔ܛ‬⎚ゎ 3$7+B.,1'B&219(57(5 ⎰゚۱ෳ⎨଑զ⎖⏍⎧⎅⏌␋⏿⏳␡⎨ろ۱ෳ⎬⎃⏌⏉⎇⎬ろ஦ധ⎬‫ޱ‬଑⎘⎫⎒⏍⎱NLQG ⎯‫⏓⎬ڤ‬೒ю⎘⎠ഓߓໆ⎩⎫⏋⎿⎚ゎ࡚์⎫⎯⎰⎞⎯‫ ⎯ڤ‬3$7+B.,1'B&219(57(5>PXL@ ⎯଑զ⎨⎚ゎ ⎔⎔⎬⎰෌෕⏫␥⏵⎯⏠␯⏵⏻␯⏵⎍ҳ௽⎖⏍⎧⎅⎧ろ⎔⎯⏫␥⏵⎰۱ෳ⎨  ⎍⏦⍬␌⍬␩⍬␅⎖⏍⎧⎅⎧ય⎨ъ⏅⏊ࡽ๲⏓⎘⎧⎅⎿⎚ゎ ์⎚⏌⎬⎔⎯‫⎬ڤ‬ਞ⎐ഓߓໆ⎬⏉⎤⎧ࡽ๲⏓ബ⎉⎠⎅⎩⎅⎇⎔⎩⎨⎚⎮ゎ ඕਹ⏓٪⎧⏀⏌⎩ろPXL␃⏟␨⏫␄␦Ιч⎨‫ڤ‬ਞ⎯␞⏴␡⍬␧෕⎯ঽ⎬FDLURB ⏓೒⎒⎠␑⏝⏠␧⎍ਣ‫⏓⎌⎇⎪⎌⏌⎅⎧⎘ݚ‬౜଑⎘ろ ⎞⎯⏉⎇⎫␑⏝⏠␧⎍⎫⎒⏍⎱੐⏐⏋⎬ JWNB ⏓೒⎒⎠␑⏝⏠␧෕⎬⎘⎧⎅⎿⎚ ゎ⎫⎝⎔⎯⏉⎇⎬⎫⎤⎧⎅⏌⎌⎩‫⎩⎇ٿ‬ろPXL␃⏟␨⏫␄␦⎬⎰PLNXWWHU⎯8,ԟ‫⎍␧⏠⏝␑⎯ؙ‬௡⎤⎧⎅⏌⎯⎨⎚⎍ろ‫ٴ‬ゖ⎯PLNXWWHU⎰*7.⎯/LVW9LHZ⎯Ն௾⎡⎒⎨7ZHHW⏓಺ߟ⎘⎧⎅⎠⎠⏂ FDLURB ⎯೒⎅⎠␑⏝⏠␧⎰⎫⎐ろু⎧ JWNB ⎨⎘⎠ゎ ⎩⎔⏎⎍/LVW9LHZ⎬ুೱ௥⎜⏌⎩੒ബಾѳਙ୞⎍ઢ⎅⎠⏂ろ⎃⏌ߗՃ⎌⏊ѳਉಾѳ␥⏠␒␥␦⎯
FDLUR⏓‫⎧⎤ޡ‬7ZHHW⏓ಾѳ⎚⏌Ն௾⎍߹‫ٲ‬ଯ⎬೒ю⎖⏍⏌⏉⎇⎬⎫⏋⎿⎘⎠ ゎ ⎔⎯঎଑⏓Քஓ⏦␓⏳␣␯⎨ஓଯ⎬উ⏋Ԁ⎉⏌⎠⏂ろ JWNB ⎯೒⎅⎠֑๝⎯␑⏝⏠␧⎩ FDLURB ⎯೒⎅⎠ई⎘⎅␑⏝⏠␧⏓ຑ൘ߖ⎤⎧⎋⎅⎧஬⏀‫⏠⏝␑⏁ܛ‬␧⏓ஓଯ⎬ബш⎖⎜⏌⎩⎅⎇൘൚⏓ࠟ⎤⎠⎯⎍ ⎔⎯ 3$7+B.,1'B&219(57(5>PXL@ ⎯ศ๝⎩ް⏐⏍⎿⎚ゎ PLTXLUH ߢਹ⎰⎔⎯ബۖΙঽ⎌⏊⎃⏋⎿⎘⎠⎍ろஓଯ⎬␩⍬␅␍⏵⏓ബۖ⎚⏌⎩⎅⎇ PLTXLUH ⎯๭୅⎍݂⏃౎Կ⎖⏍⎧⎅⏌⎯⎰⎔⎯ೱഇ⎬β⎅⎃⏋⎿⎜⏔ゎ⎃⎩⎰ ۱ෳ⎯ PLTXLUHBRULJLQDOBUHTXLUH ⎩ ۱ෳ⎯ ILOHBRUBGLUHFWRU\BUHTXLUH ⎨⎚⎍ろঽࠋ⎰ඕ๝⎯
UHTXLUH ⏓‫⎨⎒⎡⎷څ‬ろ ‫⎯⏵␍⎰ࠋڤ‬දಗ⎍␃⏟␨⏫␄␦⎡⎤⎠⏊⎞⎯ય⎬⎃⏌ஔ෕⎯␑⏝⏠␧⏓ UHTXLUH ⎚⏌⎡⎒⎨⎚ ゎ⏻⏠␜␥⏠␯ ݁⎞⏍⎨⎰ *WN7LPH/LQH ⎬෸⏋⎿⎘⏈⎇ゎ⎔⎯␑⏝⏠␧௅⎨٠‫⎩⏌⎒⎌⏓ݲ‬ഇ⎌⏋⎿⎚⎍ろ DGG ⎫⏔⎧␝⏹⏿␅⎰⎔⎯␑⏝⏠␧⎬⎰⎃⏋⎿⎜⏔ゎ ⎘⎌⎘গଟ⎯
FDLURBWLPHOLQHUE ⏓٪⎧⏀⏌⎩ろ۱ෳ⎨ *WN7LPH/LQH8WLOV ⏓ LQFOXGH ⎘⎧⎅⎿⎚ゎ ෕ঽଯ⎬⏃⎅⎌⎬⏃҃⎘⎅⎯⎨ FRUHPXLJWNBWLPHOLQHBXWLOVUE ⏓٪⎧⏀⎿⎘⏈⎇ゎ␦⏵␄  FRUHPXLJWNBWLPHOLQHBXWLOVUE









 BPHVVDJHB ࡹ ⤚ ౳ ࡀ ࡲ ࠀ ⧋ ల ࡎ ♣ ᕝ ࡕ 0 H V V D J H ࢏ ࢻ ࢝ ࢌ ࢔ ࢭ ࡹ ᧲ ࡀ ࠺ ࡏ ࡩ ࡎ ࠴ ࡲ ࠀ
GHI DGG PHVVDJH
LI PHVVDJH  LVBD " (QXPHUDEOH WKHQVHOI  EORFNBDGGBDOO 3OXJLQ  ILOWHULQJ  VKRZBILOWHU  PHVVDJH  ILUVW
HOVH
P
3OXJLQ  ILOWHULQJ  VKRZBILOWHU  > PHVVDJH @  ILUVW  ILUVWVHOI  EORFNBDGG P LI P LVBD " 0HVVDJH HQG
VHOI HQG

DGG ⎯଑զ⎍⎃⏋⎿⎘⎠ゎ⎩⏋⎃⎉⎛ PHVVDJH ⎰జໆ⎍റ⎤⎧⎐⏌⏃⎯⎩⎚⏌⎩ $UUD\ ⎰ (QXPHUDEOH ⎫⎯⎨۱ෳ⎯ LI ⎬ω⎤⎌⎌⏋⎿⎚ゎ⎔⎔⎨⎰ 3OXJLQILOWHULQJ ⎬ PHVVDJH ⏓୔⎘⎧ろ⎞⎯ٌї⎯গஏ์৔⏓ EORFNBDGGBDOO ⎬୯⎓⎧⎅⎿⎚ゎ
3OXJLQILOWHULQJ ⎰PLNXWWHU⎯␓␥⏬⏠␯Ն௾⎯࡚์⎫⏃⎯⎨ろ⏠␕␯␄⎩ஔโ⎬⎘⎧␑⏟␧⏻⏓୕໰⎘⎧⎋⎐⎔⎩⎨⏦␒⏴⏣⏫␄⏓‫ߢ⏊⎌ڤ‬ศ⎬৭‫⎚⎿⎎⎨⎍⎩⎔⏌⎚ݩ‬ゎ ⎔⎔⎨⎰ PHVVDJH ⏓ VKRZBILOWHU ␑⏟␧⏻⎬૳⎘⎧⎅⎿⎚⎍ろ⎔⎯␑⏟␧⏻⎰ 0HVVDJH ⎯జໆ⎌⏊಺ߟ⎚⏌⏃⎯⎡⎒‫⎧⎘ޝ‬਩⏓‫⎚⎨⏻␧⏟␑⎯⏂⎠⏌⎚࢑ݪ‬ゎ ⎠⎩⎉⎱␛␡⍬␄⎘⎧⎅⏌␢⍬⏲⎯7ZHHW⎰$3,⎌⏊ࠟண⎘⎠ٌї⎬ԥ⎿⏍⎧⎅⎿⎚⎍ろ7/⎬಺ߟ⎘⎧⎰⎅⎒⎫⎅⎯⎨⎔⎯␑⏟␧⏻⎨‫ݪ‬࢑⎖⏍⎿⎚ ゎ ⎿⎠ろ␑⏟␧⏻⏓૳⎘⎠ٌї⎬਻⎘⎧ ILUVW ⏓ࠟ⎤⎧⎅⏌⎯⎰ろ 3OXJLQILOWHULQJ ⎍яബૠ⎯ωॅ⏓ࠟ⏌⎠⏂ろറ⏋ખ⎰์৔⎨⎃⎤⎧⏃జໆ⏓റ⎚⎔⎩⎬⎫⎤⎧⎅⏌⎠⏂⎨⎚ ゎ⎞⏍⎨⎰ EORFNBDGGBDOO ⏓٪⎧⏀⎿⎘⏈⎇ゎ JWNBWLPHOLQHBXWLOVUE ⎬⏃⎔⎯␝⏹⏿␅⎰⎃⏋⎿⎚⎍ろ LQFOXGH ‫⎯ٴ‬
FDLURBWLPHOLQHUE ⎨݁଑զ⎖⏍⎧⎅⏌⎯⎨⎞⎢⏊⎍‫ ⎚⎿⏍⎱څ‬ゎ UHQGHU>FDLUR@ ⎰ 3URFFDOO FDLUR⎩ஔ⎙⎨⎚ゎ5XE\ವࡵ⎯Ւ൚⎨⎚⎍ろ⎅⎿⎅⎢૥ӽଯ⎨⎰⎫⎅Չ⎍⎘⎿⎚ゎ ␦␏⏴␣␯⎌⏊⎰FDLUR⎬⏉⏌ಾѳ⎍␃␑⏥␧␄⎬⎫⎤⎧⎅⎿⎚ゎ ำક⎨⎚⎍Ιঽ␓␥⏬⏠␯⏓‫⎎⎩⎠⎅⎧⎤ݩ‬ろ␃⏟␨⏫␄␦⎯ч⎬ PDLQUE ⎩⎅⎇෕ঽ⎨ඕਹ⏓ટ⎅⎧⎘⎿⎅ろ␩⍬␅⎖⏍⎫⎐⎧௻⏔⎡⎔⎩⎍⎃⏋⎿⎘⎠ゎ ‫״‬ਹଯ⎫ࡽ๲⎰ FRUHDGGRQSURILOHUE ⎬⎃⏋⎿⎚ゎ ωॅ⏓ GHI I DUJV ⎯⏉⎇⎬⎘⎧ࠬ⎒⏌⎩ろ I  ⎯‫ ⏃⎨⎘ࡥ⎴څ‬DUJV>@ ⎩⎫⏋⎿⎚⎮ゎ ⎠⎡⎘યङ⎰⎿⎤⎠⎐ஔ⎙⎫⎯⎨ろ␦␑⏝⏫⏻␦␯⏬⎖⏍⎧⎫⎅⏃⎯⎩ް⏐⏍⎿⎚ゎ␦⏵␄  FRUHPXLFDLURBWLPHOLQHUE


















 ᕿ ࠾ ࠫ ࡩ ࡕ ࠲ ࡰ Ⱨ ᴳ ࡒ SDFN࠾ࡍࠫ࠶ࠀ
GHI EORFNBDGGBDOO PHVVDJHVUHPRYHV  DSSHQGV
PHVVDJHV  SDUWLWLRQ ^ _ P _ P > UXOH @ GHVWUR\ `UHPRYHBLIBH[LVWVBDOO UHPRYHVUHWZHHWV  DSSHQGV
PHVVDJHV  SDUWLWLRQ ^ _ P _ P > UHWZHHW @ `DGGBUHWZHHWV UHWZHHWVDSSHQGV  VRUWBE\ ^ _ P _  P  PRGLILHG  WRBL ` GHDFK PHWKRG  EORFNBDGG
HQG ࣏ ࢩ ࢉ ࣡ ࢭ ࡹ ⤚ ౳ ࡀ ࡲ ࠀ BPHVVDJHVB ࡒ ࡖ 0HVVDJH ࡕ ⧋ ల ࡹ ᑗ ၿ ࠾ ߿ ࡄ ࡳ ࡰ ࡖ
UHWZHHWࡎࡑ࠸ࡳࡗࡑࡰࡑࠫ
GHI DGGBUHWZHHWV PHVVDJHVPHVVDJHV  HDFK ^ _ PHVVDJH _LI QRW LQFOXGH " PHVVDJH  UHWZHHWBVRXUFH
EORFNBDGG PHVVDJH  UHWZHHWBVRXUFH
HQG
`
HQG

゚۱ෳ⎨⎰ GHVWUR\ ␝⏿⏷⍬⏴⎯ࡽ๲⏓⎘⎧⎅⎿⎚ゎ ⎔⏍⎰7ZHHW⏓‫⎬⎎⎩⎅⎠⎘࢑ݪ‬௅ೱଯ⎬१ढ़⎖⏍⏌␝⏿⏷⍬⏴⎨ろ P>UXOH@
GHVWUR\ ⎯⎩⎎⎰ң୻⎚⏌,'⎯7ZHHW⏓‫⎚⎿⎘࢑ݪ‬ゎ 8VHU6WUHDP⎬ঋਞ⎘⎧⎅⏌⎩⎎⏃ GHOHWH ⏠␕␯␄⎍ಓ⏔⎨⎎⎿⎚⎍ろPLNXWWHU⎨⎰⎔⎯⏠␕␯␄⎰ࡽ๲⎘⎧⎅⎫⎅⏉⎇⎨⎚ ‫׀‬ය⎯⎃⏌ञ⎰ FRUHDGGRQVWUHDPLQJVWUHDPHUUE ⏓஬⏔⎨⏀⎧⎐⎡⎖⎅ ゎ゚۱ෳ⎰␦␀⏠⍬␄⎯ࡽ๲⎨⎚ゎ ␑⏥␩⍬⎘⎧⎫⎅ञ⏅ॽ⎯7ZHHW⎍␦␀⏠⍬␄⎖⏍⎧⎎⎠⏊ろ⎞⎯7ZHHW⏓
7/⎬಺ߟ⎘⎫⎅⎩⎅⎒⎫⎅⎯⎨ࡽ๲⎘⎧⎅⎿⎚ゎ۱ෳ⎰⎞⎯਩ろ⎥⎿⏋ೞ૳⎯7ZHHW⎯ࡽ๲⎨⎚ゎ 7ZHHW⏓ۖईߗԝ⎯ई⎘⎅ࡼ⎬⏹⍬␄⎘⎧⎌⏊ү 0HVVDJH ⏓EORFNBDGG ⎯ωॅ⎬⎘⎧‫ ⎚⎿⎅⎧⎘ࡥ⎴څ‬ゎ GHDFK ⎩⎅⎇⎯⎰٪Ӿ⏍⎫⎅␝⏹⏿␅⎨⎚⎍ろ⎔⏍⎰ HDFK ⎯ઢБ౦⎨ろਓܽ⎬ু⎧⎯์৔⎬਻⎘⎧␧⍬␓⎚⏌⎯⎨⎰⎫⎐ろі⎫‫⏓⎅܄ܝ‬٪‫ ⎥⎛⎘ࢢ⎧⎤⏊ظ‬HDFK ⎯ࡽ๲⏓⎘⎧⎅⎐␝⏹⏿␅⎨⎚ゎ ⎔⎯߹ਂ⎬⎰ 'HIHUUHG ⎩⎅⎇⏫␥⏵ FRUHOLEGHIHUUHGGHIHUUHGUE ⎍‫ ⎚⎿⎅⎧⏍⏐ޡ‬ゎ
EORFNBDGG ⎰ࢢ⎘๸⏍⎠⎩⎔⏎⎨চ‫⎚⎿⎅⎧⏍⎖ٿ‬ゎ␦⏵␄  FRUHPXLFDLURBWLPHOLQHUE















 BPHVVDJHB ࡹ 7 / ࡒ ⤚ ౳ ࡀ ࡲ
GHI EORFNBDGG PHVVDJH
W\SHBVWULFW PHVVDJH ! 0HVVDJH
LI QRW #WO  GHVWUR\HG "UDLVH  LG PXVW WKDQ  EXW VSHFLILHG ^ PHVVDJH > LG @ LQVSHFW `  LI PHVVDJH > LG @ 
LI  DQ\ "^ _ P _ P > LG @PHVVDJH > LG @ `FDVH
ZKHQ PHVVDJH > UXOH @ GHVWUR\UHPRYHBLIBH[LVWVBDOO > PHVVDJH @ZKHQ PHVVDJH  UHWZHHW "DGGBUHWZHHWV > PHVVDJH @HOVH
BDGG PHVVDJH HQG HQG HQG
VHOI HQG

۱ෳ⎯ W\SHBVWULFW ⎰ωॅ⎯‫⎨␅⏿⏹␝⏌⎚⏫⏿⏣⏽⏓ؠ‬ろ⎔⎔⎨⎰ 0HVVDJH Ιҙ⎯‫ຶ⎩⏌⏍⎖୔⎍ؠ‬ҙ⏓୯⎓⏌⏉⎇⎬⎘⎧⎅⎿⎚ゎ ⎔⎯␝⏹⏿␅⎰ FRUHXWLOVUE ⎨চ‫⎚⎿⎅⎧⏍⎖ٿ‬ゎ⎔⎔⎨⎯ࡽ๲⎯ඕਹ⎰゚۱ෳ⎨⎚ゎ ۱ෳ⎩۱ෳ⎯ ZKHQ ঐ⎰ EORFNBDGGBDOO ⎌⏊๝⎠⎩⎎⎬⎰
ࡽ๲‫⎨⎯⎫⏀݌‬ろ߹߸ଯ⎬⎰ BDGG PHVVDJH ⏓‫⎚⎿⏋⎫⎩⎒⎡⎷څ‬ゎBDGG PHVVDJH ⏓٪⎧⏀⎿⎘⏈⎇ゎ 7/⎯⏹⍬␄⎰7UHH9LHZ⎍⏅⎤⎧⏌⎯⎨⎔⎯⏹⍬␄⎰⎅⏊⎫⎅Չ⎍⎚⏌⎘ろ⎞⏃⎞⏃պࡼ⎯⏉⎇⎫Չ⏃⎘⎿⎚ゎ M4XHU\⎯'HIHUUHG⎩ஔ⎙⏉⎇⎫ӽ⎙⎨⎚ゎ␦⏵␄  FRUHPXLFDLURBWLPHOLQHUE













GHI BDGG PHVVDJHVFUROOBWRB]HURBODWRU  LI #WO  UHDOL]HG " DQG #WO  YDGMXVWPHQW  YDOXHPLUDFOHBSDLQWHU#WO  FHOOBUHQGHUHUBPHVVDJH  FUHDWHBPLUDFOHBSDLQWHU PHVVDJH
LWHU#WO  PRGHO  DSSHQG
LWHU > *WN  7LPH/LQH  ,QQHU7/  0(66$*(B,' @PHVVDJH > LG @ WRBVLWHU > *WN  7LPH/LQH  ,QQHU7/  0(66$*( @PHVVDJH
LWHU > *WN  7LPH/LQH  ,QQHU7/  &5($7(' @PHVVDJH  PRGLILHG  WRBL
LWHU > *WN  7LPH/LQH  ,QQHU7/  0,5$&/(B3$,17(5 @PLUDFOHBSDLQWHU#WO  VHWBLGBGLFW LWHU#UHPRYHUBTXHXH  SXVK PHVVDJH LI #WO  UHDOL]HG "
VHOI
HQG

BDGG ⎍߹‫⎹␯⏠␥␜⏠⏻⎬ݘ‬7ZHHW⏓૰ю⎚⏌ࡽ๲⎩⎫⏋⎿⎚ゎ ⎔⎔⎨⎯ࡽ๲⎰⎥ろ7ZHHW⏓ಾѳ⎚⏌⎠⏂⎯⏦␒⏴⏣⏫␄⏓१ढ़⎚⏌⎔⎩⎩ろ⎔⎯⏦␒⏴⏣⏫␄⏓*7.⎯ 7UHH9LHZ ⎬௡⏍⏌⎔⎩⎨⎚ゎ۱ෳ⎨⎰7ZHHW⏓ಾѳ⎚⏌⎠⏂⎯⏦␒⏴⏣⏫␄⎨⎃⏌ 0LUDFOH3DLQWHU ⏓१ढ़⎘⎧⎅⎿⎚ゎ ⎪⎔⎌⎨ഔ⎅⎠෕ঽ⎨⎚⎮ゎ ␛⏫⎍⎞⏔⎫෕ঽ⎯љ⏓љ⎤⎧⎅⎠⏉⎇⎫ƧƧゎ޿෣⎯୙‫ ࣘ܄‬0LUDFOH3DLQWHU ⎯⏯⍬␅⎰Ӎ͵⎘⎿⎚⎍ろ⎔⏍⎰PLNXWWHU⏻⏠␜␥⏠␯⎯⏧␥␜ഇ⎯ࡽ๲⏓੽୻⎚⏌⏦␒⏴⏣⏫␄⎨⎚ゎ 7ZHHW⏓ѳ෣⎬ಾѳ⎘⎠⏋ろ⏫␦⏿⏫⎘⎠⎩⎎⎬ࣸ⏓೒⎒⎠⏋85/⎯গ⎬ಓ⏔⎡⏋⎩⎅⎇ࡽ๲⎰ু⎧
0LUDFOH3DLQWHU ⎍੽୻⎘⎧⎅⎿⎚ゎ ‫׀‬ය⎯⎃⏌ञ⎰ FRUHPXLFDLURBPLUDFOHBSDLQWHUUE ⏓஬⏔⎨⏀⎧⎐⎡⎖⎅ゎ゚۱ෳ⎨⎰ろ*7.⎯ 7UHH9LHZ ⎬୔⎚␃⍬⏻‫* ߧآ‬WN&58' ⎬ PLUDFOHBSDLQWHU ⏅7ZHHW⎯೒юࣣൎ⏓‫⎚⎿⎅⎧⎜ݗ‬ゎ 7UHH9LHZ ⎨⎰⎔⎯ࣣൎ⏓‫⎧⎘⎬ٴ‬ѳ෣⏓ಾѳ⎚⏌⎯⎨⎚⎍ろ*7.⎯ѽ঑⎰ඕۣ⎯౮Ξ⏓૝⎉⏌⎯⎨Ӎ͵⎘⎿⎚ゎ #WO ⎩⎅⎇⎯⎍ *WN&58' ⏓‫* ⎠⎘ࢨز‬WN7LPH/LQH,QQHU7/ ⎨ろ 7UHH9LHZ ⎍␃⍬⏻⏓଱উ⎬ࡽ๲⎨⎎⏌⏉⎇⎬⏧␥␜⎯঎଑⎫⎪⏓സߖ⎘⎧⎅⎿⎚ゎ۱ෳ⎰⏻⏠␜␥⏠␯⎬ກ⏍⏌7ZHHWॅ⎍ਪ⎐⎫⏋⎚⎏⎠⎩⎎ろ‫΄⏓␦␞␝⎧⎤⎅⎧⎘࢑ݪ⏊⎌⎯⏃⎅ڄ‬స⎘⎫⎅⏉⎇⎬⎚⏌⎠⏂⎯৉ટ⎨⎚ゎ⎃⎩⎍⎎
7ZHHW⎯ࠟண⎌⏊⏠␕␯␄⎬⏉⏌⎠⏊⎅Ѿ⎘ろ⏻⏠␜␥⏠␯⎹⎯૰ю⎿⎨⏓٪⎧⎅⎎⎿⎘⎠⎍ろ⎅⎌⎍⎡⎤⎠⎨⎘⏈⎇⎌ゎ
0LUDFOH3DLQWHU ⏅⏤␯␂⏟␂⏟⎯ࡽ๲ろ 'HIHUUHG ⎯߹ਂ⏃⎫⎌⎫⎌෣ళ⎅⎯⎨⎚⎍ろ޿෣⎯୙‫ࣅ⎰⎨⎔⎔ࣘ܄‬ѻ⎨⎎⎿⎜⏔⎨⎘⎠ゎ ⎔⎯Ւߏ⏓஬⏔⎨‫׀‬ය⎍⏐⎅⎠ञ⎰ॖಒ⎔⏍⏊⎯⏯⍬␅⏃஬⏔⎨⏀⎧⎐⎡⎖⎅ゎ ⎞⎘⎧҉ຜ⎨⎎⏌୅⏅␌⏬⏓٪⎥⎒⎠⏊ KWWSGHYPLNXWWHUKDFKXQHQHWSURMHFWVPLNXWWHU ⎬⏽⏭⏿␄⏓উ⎤⎠⏋␍⏿⏽⏓਄⎤⎠⏋⎘⎧⏀⎧⎐⎡⎖⎅ゎ
⎞⏍⎨⎰ゎ



mikutter で Lifelog@katsyoshi

1 はじめに3 mikutter-fluentd

twitter の日々流れてくるツイートを保存したく

mikutter-fluentd は mikutter のイベントを直接ないですか？ mikutter なら比較的楽にツイートをDatabase に挿入するのではなく，一度 fluentd に保存して，保存したツイートを見ることができま

投げ，fluentd で受け fluentd が各サービスに保存しす．また，日々のツイート数をグラフ化したりするます．保存するサービスには，Redis, MongoDB,ことができます．そんな方法をちょっとだけ説明し

Amazon S3 などがあります．今回は fluent-plugin-ます．

mongo を用いて，MongoDB に保存します．
3.1 mikutter-fluentd の設定
まず，mikutter-fluentd の設定を行ないます．参考文献 [4] から mikutter の plugin をダウンロード
します．ダウンロードしたら，mikutter の plugin
ディレクトリに mikutter-fluentd.rb を置きます．
ファイルを plugin ディレクトリに置いたら，fluentlogger-ruby を Gem でインストールします．

2 保存方法mikutter で timeline の保存するツールとしてい
くつか plugin が提供されてます．

• mikutter-sqlite[2]• mikutter-mongodb[3]$ git clone \git://github.com/katsyoshi/mikutter-fluentd.git$ cd mikutter-fluentd$ cp mikutter-fluentd.rb ~/.mikutter/plugin/.
$ gem install fluent-logger• mikutter-fluentd[4]mikutter-sqlite は，SQLite3 で mikutter で起きるイベント (update, mention 等) を保存します．
この plugin の特徴として，保存されたイベントは

これで mikutter 側の設定は終了です．

mikutter に反映させることができます．
mikutter-mongodb は，mikutte-sqlite の mon-fluentd のインストールは，gem でインストール

godb クローンとしての開発をはじめました．保存

しますが，fluent-logger-ruby のインストール時に対象として，home の timeline，mention などです．

同時にインストールされてると思います．されて保存されたイベントは mikutter に反映させることない場合は，gem コマンドでインストールします．

ができない．めんどうくさくなったので開発がとつぎに，mongodb のインストールと fluent-plugin-

まってる．ヽ (’ω’) ノ三ヽ (’ω’) ノもうしわけねぇ

mongo のインストールを行います．こちらも同様

もうしわけねぇに gem コマンドでインストールします．

最近話題のロギングツールの fluetd[5] を利用し，$ gem install fluentd # インストールされてない場

開発しているのが mikutter-fluentd です．くわし合

くは 3 章で説明します．

$ gem install fluent-plugin-mongo mongo bson_ext

つぎに fluentd 側の設定を行ないます．fluentdの設定としては，mikutter から投げられたデータを各サービスに投げるだけです．設定が終ったら，

ま ず ，MongoDB に 保 存 し た デ ー タ を 取 出 て

fluentd を起動し，mikutter を立ちあげるとロギングが開始します．fluentd の起動は，-c オプショ
ンで設定ファイルの指定，-p オプションで plugin
ディレクトリを指定します．gem 化されていない
fluent-plugin がある場合は-p オプションを指定します．

JSON 形式のテキストファイルとして保存します．
保存したテキストファイルのデータを読み込み，

jqplot で表示させると以下の図のようになります．

<source>type forward</source><match mikutter.timeline>
type mongo
database fluentd_mikutter
collection timeline
buffer_chunk_limit 3m</match><match mikutter.favorited>
type mongo
database fluentd_mikutter
collection favorite
buffer_chunk_limit 3m</match>

図1

日毎のツイート数

ここでは，jqplot の BarRederer.js を利用して表示させています．ほかにも線グラフなど様々なプラ
グインが提供されています．

5 おわり
みくったーを使って，twitter のログをとり，そ$ fluentd --setup ~/.fluent.d # fluentd の初期のログを可視化することを行いました．mikutter-

化

fluentd を利用することで簡単にログを残すことが$ emacs ~/.fluent.d/fluent.conf # 前出の設定フでき，更にそのログから日々のツイート数などを見ァイルの編集ることができました．みなさんもログを残してみて$ fluentd -c ~/.fluent.d/fluent.conf \-p ~/.fluent.d/plugin -vv & # 一行で$ cd ~/mikutter$ ruby mikutter

どんなことが起きたかを可視化すると楽しいと思いますよ．

これで mikutter から fluentd に投げられて，flu-

参考文献

entd から mongodb に保存されるようになります．

[1] toshi a,

つぎに mongodb 保存したツイートを可視化しま

mikutter,“http://mikutter.hachune.net,” Jun., 2012

しょう．

[2] toshi a,mikutter-sqlite,“https://github.com/toshia/mikutter-sqlite,”

4 可視化しよう

Jun., 2012

本章では，fluentd で集めたツイートを可視化し[3] katsyoshi,

mikutter-mongodb,てみようと思います．可視化する対象としては，ツ“https://github.com/katsyoshi/mikutter-

イート数とします．可視化方法としてグラフを用い

mongodb,” Jun., 2012

ます．グラフ化するために利用するライブラリと[4] katsyoshi,

mikutter-fluentd,

して，jquery プラグインの jqplot と Google Chart“https://github.com/katsyoshi/mikutter-

API があります．どちらも利用しやすいグラフ化

fluentd,”Jun., 2012

ツールです．今回はとりあえず jqplot での作成方[5] Treasure法について解説します．

Data

Inc.,

“http://fluentd.org,” Jun., 2012

fluentd,

!"

#$%!"

&

&'()(*+,-./0(0'1234256(067

89

65:23

(;<&=>)3?@&ABCBDE*+,
FGDH4)I*J06(0

6

&KL

MNO+,

,

P Q

6

RST06(0UVW?56X(*+,

Y3)J3>
d4)e3_`

6Z[>)(*+&7\]
f

PgQ

!

t67P

Q

abc

Q&dh>)(*+,

fi j&klmn>)(2E7o
y

^4)_`

pq

^4)_`

rst

uv

w

x>2

z{|}pqO~€n>)(*+,

•

²

#

*

(

#(

‚‚

0

(

(*

/

0-

•

D?Y0

1?/6Œ3P

/

„…O

Q

65(0V

10 †+?‡O+,ˆ

•1?Ž•{•‘’“”(V

VD?{2(O+&KL/>YE”(6/T³>*´R,

ƒ

„…

O

pq

C6R‰Š

‹

DE*+,

•–O,

—‡˜™,

š™›
œ•

‡
t

žE*IŸ0,

¡¢

+,/>

£¤
¥)

y

®I)

J¯*E

" #$

!
%

d4)(*+,

6(05B¦lI2§¨©
•°U

•

£±

Y0

ª()«¬

-0V O+,•3/6&O°*+›

!
&'

(



) !! &)*( +! !,

d(*

- ./

"
#$

( +! !
&'
(
.# &'

%

(
&'

( )*

) !! &)*( ) ,"

.+ !

!

/
/
&

)

//O7 £±O§¨©
6‹1)(*+,
4)(2C0&µ¶O+&7
6/> ¸Lk¹9 I 3)Vºl&»¼n>2½ 7}Y0 I)(?5BO+,¾FY0 $%§¨©

0O+·7£±

Y0

?

!
%

!

" #$
"
#$

+?V

z

V•1)I*(*+·,

¿O+›

&'

) !! &)*( +! !
&'
.#
*

%
(

4)(*+·,) !! &)*( +! !,

.+ !

- ./

!

/
/
&

)
(7/

À

`E,

ºlÁÂ HE*IŸ0,

VATR

fi

j&ªÃn>)()72!"
22§¨© +?ÄÅÆÇ32
24 '
2$%24 '

/

ºl+?È

>

d0/6

ÉÊI2

I*+,
9°*´R2

®I)

(

1

Y0

yg

*6Ë)5

EÌÍ

•3/6&ÎÏ?

5$6 5B+?/6&ÎÏ?Y06(0fi j&ªÃn>)(*+,+?67ºlV
E*+,
/ P Q

- '00

Ð¼Ñ

(

0(

7

0

0

0

0

OÒÓn>)(*+,

Ô(7*2Õ h5B
/AB
Þß V

(P

Q

O+·,

/)J3>65Öh (

% i×
Ø Ù
Ú))I*4)tÛ
OÜ(){Y06(0Ý{,
8 (6(0V &àán>)(? Od4){*IŸ0,vVd4)(*+,>Bd4)•(2oj&£±›9 :;: (':< :;:
=
> ( >
(
' (
?
9âãL
äÊ+?2Ë âãi×
@
"8
5
@
+
? " % 8 ?
- #A7A7*#?

(( - *!(

9É1æ42çè Ü3Y?( ( 6CD
26CD
2
(

`Ê®åØ

Ù

6+?

!

#'

"B 29+(

/2*

(

/
/0

E*I2,J#é:ê>

!#

(

! &D

E*+·,
/> ëì R

OIŸ05,
P

\
Vð>

(ñ ò

Q

6šì

&D*E

í/>Všì6

n>)(

( O/

yg

ÖîP

Q

ëÅ6Ö4)ï(5

«36

&¹9I

3

E

*+ó
ô*E7

P

Q

àá+?÷©øvù

}°ÎI
jvù

Œõ©

P

ö>)

jPgQ

!

QÛú©

(1

!#

0O+·7
/> YE vù

j

Œõ©

P

üý+?/6&O°7°AR6

5ô % i×þAÿ1?/6&ÎÏ?Y0(h1O+,

ûªI)(*+,! yg

O+,
VÚAƒ&E7

E*I2,ÿÿI){?
% i×>?Ø Ù &•12 B
V•(){*IŸ0,% i×&þAÉ1)(?
% A7A7 O+,/> ÿÿI -°*+," #9,0 0 0=> ( >" % 8 (
- #2 (
24 A7A7*
"
"" 22
(
(

# *



2Ë

J

JI*(, (O+·7n+&,$$
À %EE d4){*IŸ0,%EE `ÊO°?
y tOI5V÷©øP
RO+,‚ 07‚‚‚‚ B·,

9 (
9 (

B

F
F
#

0

--B

(4 (

;;

§

V

R)D?

54)é\

D?

?*

+
- (
-'' (-G
''
G

''

G

+
?(
(-''
(-''
(-''
(-''

?( G
? # ? ( *G=
# (-''?H#*4 2 (( # ? ( *G
#;
?
? #=

?
? ''=
(
-

''(
FF 2(
''( BBGE" >3 >G00
(
(
( #
# ( 4
/
( ( #
+
''(
/

(

&2 FF

-

J *

FF

#* FF

**G

FF 2) 2 FF

% 8 (
*G
#
**G

'' I( -

24 2A7A72*G

-o

''

jOv

''

G

t

I)?é

G

G
/
''
EE ‰Oo
\-

Ù

•1?6

,

7:

‰

'1?6

-o

jO

©+?

I

†

&t

9

I2

FG

3

O

v

t

I

÷E*I2,

I)(?

OIŸ05óé'1

%
V

#

K

S4)\ª

-

L
8
8

n>7

•t& €O°*+,

% 8 (

D67
(6

BI542,//*Oµ¶4)*+&7/EG

Ö%V0•()I*42

RO+,

6C
6C D
#( ( *'' 8:B 6C #*



S5BŽU

(,

"
8 (
M N
8 O
L O
F: (
(
2
2#
L
8 D (
<
8 O
O
8
( ( # 5*
#3 :B ( ( DC C D*
BB" - 8%

A7A7*

: 542/6 I):: DC D( ( DC C D'' 6CD:B 6C &% )( ( DC C D
I"
DC D
I
#* BB
2
D
I BB
26C
ã ø
::
( (
P
( (
P
! ""
! H F
!
"

"
(

'' &%
"- 8
"- 8

- 8
F:
(

26 -

2
2

) :B 6C #*
2
2 ?

(
H (

( ,2
(
,,2

'2

P

J#éÃ 6n43E6•1*+·,K

OV

-

L

&ÎÏ?{2(O+·,/EG2* 2, 8 D ((: H £¤O
B (5Vð>*´R,+?6 % `Ê# $M `Ê

<

±E

(:

HO

OI2,

&
V0(( !

%9&Q

I

(6,i

v&"3

E+#?

Ov

OHE*I2,/>AGR6Ü1?5B'°,



t

–¢

O$%I)3Sn(,

ô*E-

I)(?RO+é

•' % A7A7' % A7A7

% 8 (
/R

ÍF

f

(

¡O+,

'()() i×6`ÊO°>[‰R Ö%O•5>)()V(( O+,A7A7 ² ÿÿ( \]I)( ( O)F2*+Odª+?/6 ,-I*+,. P*+Odª+?6ÿÿ
/4æB>?
/>B

o

I

w&D?

(3È

Ã•I

(ÿÿ

n>?

w&DE7

O0ÃI)3Sn(,

- '00

j Ð¼Ñ

(

0(

7

0

% %

(

ÒÓn>)(*

$6S

d4)

v

+?VïI7+,1‘•1?Š&I*+,C R:% 6 C8

ˆ V

M ?

T

U ?

ƒ

d4) v

ÎÏ?Y0

I){?

V((OIŸ0,D6&°<

25Bd4)°)7Ð3

Ö4)(2 ¿ 4&/?6(0RS57X8

(

5

E

0

46(Y0

AŸ46

Š&+?

?Y0

»¼

/ „… çè

¥)B4dª

*275

CDçO

% %

P

Q

O1R

KLI2ƒOÀL*2D?

B-55

•()(
Q

%9
((1‰7"(Y· %9,

\

YE?3

?

(

w&DE*+,

8E

H?

…&O°)I*0

O…È

MöI2C0&((ªÃI65

S42EI*

@

„…•

VDE*+

0
(

F+?/6&O°*+,I7 F+?/6V 5

ƒO

Q
P

$ 5BP Q@A g jI)3Sn(,' - '00
( 0(
7 0
0
0
% %
( ' - '00
( 0(
7 0
% %

/>B

P

(6

O,

+,o j X(ô(2=5B>–>–•1?

?5O-ÎÏ?5q5B

65zRO{2(O+·,1‘65 Oë;@<&554)(?

&£±

Q

ÍF&I*+,

65

9:
KL

Y0

P

(6 O,



G

vHI

i

v

N5O+,

YEJ

z{7‰

n>*+,
Y0

9H&-h>

PQ
@

nR

-

=

JROk¹97 Oºl&STn>?Y0

ÍP,

'U
V WX

‰

Jd(3Sn(,



E*I2,

たのしい mikutter install@Phenomer
2012-07-10

はじめに

1

一部界隈で何故か導入が難しいと思われているらしい mikutter。本稿ではその導入方法
等を複数解説し、「難しい」というイメージの払拭を試みる。

2

Arch Linux で最新の mikutter を使おう

2.1

概要

最近流行りの Linux ディストリビューション、Arch Linux1 に mikutter を導入する手順を紹介する。

2.2

AUR の (不) 安定版のパッケージを利用する

Arch Linux には既に Arch User Repository(AUR) に mikutter のパッケージが存在する。
AUR は、yaourt2 を用いると簡単に利用できる。残念ながら yaourt は公式リポジトリには存在しない。そこで、yaourt の配布リポジトリである repo.archlinux.fr を/etc/pacman.confに追加し、yaourt を利用可能にする。

✓

✏

✒

✑

✓

✏

✒

✑

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

yaourt のインストールは、いつも通り pacman を用いる。

miku@negi% sudo pacman -Sy
miku@negi% sudo pacman -S yaourt

後は mikutter を AUR からビルドしインストールして、mikutter を実行するだけである。build の際にウィザード形式でいろいろ聞かれるが、それとなく答えておけば問題ない。自動的に ruby 等の依存関係も yaourt が解決してくれる。

1
Arch Linux http://www.archlinux.org/ 現在は mikutter の開発も Arch Linux で行われている。パッ
ケージの更新が非常に早く、ローリングリリースが行われている点が特徴であり、ユーザの環境は常に最先端に保たれる。
2
pacman の フ ロ ン ト エ ン ド。 AUR を 用 い た パッケ ー ジ の ビ ル ド 等 も 一 括 し て 行 え る 。
http://archlinux.fr/yaourt-en

1



✓

✏

miku@negi% yaourt -S mikutter...
==> Edit PKGBUILD ? [Y/n] ("A" to abort)
==> n
...
==> Continue building mikutter ? [Y/n]==> ymiku@negi% mikutter

✒

2.3

✑

開発リポジトリを利用する

mikutter の最新機能を使いたい、またプラグイン開発等を行いたい場合など、最新の
mikutter を使いたくなることが多々あると思われる。(mikutter の trunk 追い掛けユーザの割合はかなり高いというウワサもあったりなかったり)
mikutter の開発は、(一応)Subversion にて行われている。3 そのため、リポジトリから
最新のリビジョンを取得する場合は、subversion が必要になる。また、subversion にてソースを入手する場合、依存関係の解決は行われないため、mikutter に必要なライブラリのイ
ンストールも行う。4
✓

✏

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

miku@negi% sudo pacman -S subversion ruby-gtk2 libnotify

subversion をインストールできれば後は簡単。mikutter のリポジトリをチェックアウト
するだけである。
miku@negi% sudo pacman -S subversion
miku@negi% svn co svn://mikutter.hachune.net/mikutter/trunk mikutter
miku@negi% ruby mikutter/mikutter.rb

リポジトリの更新は、svn の update コマンドを用いる。

miku@negi% cd mikutter && svn up

2.4

開発バージョンのパッケージを作って利用する

Arch Linux で mikutter を動かしているホストが何台もある場合、いちいち手動で subversion で更新するのは面倒な上に、mikutter.hachune.net への負荷も大きくなる。そこ
で、mikutter の trunk 版パッケージを作成しプライベートリポジトリに登録することで、それを自宅ネットワーク内のホストにて共有可能にする。

筆者は mikutter 開発者の toshi_a 氏に「subversion はオワコン、git 使ってるよ」と言われふぇぇした
記憶がある。
4
ruby-gtk2 と libnotify の二つをインストールすれば他の依存関係は自動的に解決される。
3

2



2.4.1

Web サーバの作成

Web サーバの構築は、ruby が入っているのであれば webrick が最も手っ取り早い。以
下は、/var/repo を http://10.39.39.39:3939/ として公開する Web サーバのワンライナー
である。5

✓

✏

✒

✑

miku@negi% sudo mkdir /var/repo
miku@negi% sudo chown miku:miku /var/repo
miku@negi% ruby -r webrick -e "WEBrick::HTTPServer.new(:Port=>3939,:DocumentRoot=>’/var/repo’).tap{|s| trap(:INT){s.stop}}.start"

NGINX 等の Web サーバを利用したほうがよい場合が多いが、ここでは解説の単純さを
優先する。

2.4.2

mikutter-svn パッケージの作成

今回は mikutter の subversion パッケージを作成するため、AUR に公開されている mikutter の PKGBUILD はそのまま利用できない。そこで新たに mikutter-svn の PKGBUILD
スクリプトを作成する。作成した PKGBUILD スクリプトは以下のようになった。

:DocumentRoot=>Dir.pwd とすればカレントディレクトリを公開する簡易 HTTP サーバとして使える。
shell の alias に登録しておくと何かと便利。
5

3



✓

# Maintainer: Phenomer <phenomer@g.hachune.net>
pkgname=mikutter-svn
pkgver=20120710
pkgrel=1
pkgdesc="a moest twitter client"arch=(’i686’ ’x86_64’)
url="http://mikutter.hachune.net/"
license=(’GPL v3’)
depends=(’ruby’ ’ruby-gtk2’ ’ruby-cairo’)
makedepends=(’subversion’)optdepends=(’libnotify’)conflicts=(’mikutter’)provides=(’mikutter’)install=_svntrunk=svn://mikutter.hachune.net/mikutter/trunk_svnmod=mikutter✏

build() {cd "${srcdir}"if [ -d "${_svnmod}/.svn" ]; then
cd "${_svnmod}" && svn up
else
svn co "${_svntrunk}" "${_svnmod}"fi}
package() {mkdir -p "$pkgdir/usr/bin"mkdir -p "${pkgdir}/usr/lib"
cp -r "${srcdir}/${_svnmod}" "${pkgdir}/usr/lib/mikutter"rm -rf "${pkgdir}/usr/lib/mikutter/.svn"
cat <<EOF > "$pkgdir/usr/bin/mikutter"#!/bin/sh
ruby /usr/lib/mikutter/mikutter.rb $0
EOF
chmod a+x "$pkgdir/usr/bin/mikutter"
}

✒

✑

✓

✏

✒

✑

これを用いて makepkg を行えば、最新の mikutter-svn パッケージを作成できる。ビル
ド前には、subversion での利用時同様に依存関係を事前に解決しておく。
miku@negi% sudo pacman -S subversion ruby-gtk2 libnotify
miku@negi% ls
PKGBUILD
miku@negi% makepkg...
==> Finished making: mikutter-svn 811-1 (2012 年 7 月 9 日 月曜日 02:52:48 JST)

2.4.3

プライベートリポジトリの作成とパッケージの追加

プライベートリポジトリの作成とパッケージ追加は、repo-add コマンドを用いて簡単に行うことができる。このコマンドにより、自動的にパッケージのデータベースが作成され、クライアントの pacman がリポジトリの状態を参照可能になる。

4



✓

✏

✒

✑

miku@negi% cp mikutter-svn-811-1-x86_64.pkg.tar.xz /var/repo
miku@negi% cd /var/repo
miku@negi% repo-add mikutter.db.tar.xz \> mikutter-svn-811-1-x86_64.pkg.tar.xz==> Adding package ’mikutter-svn-811-1-x86_64.pkg.tar.xz’-> Computing checksums...
-> Creating ’desc’ db entry...
-> Creating ’depends’ db entry...
==> Creating updated database file ’mikutter.db.tar.xz’

2.4.4

リポジトリを利用

yaourt を導入した際と同様に、/etc/pacman.conf に今回作成したリポジトリを追加する。

✓

✏

✒

✑

✓

✏

✒

✑

[mikutter]
Server = http://10.39.39.100:3939/

これで pacman にて mikutter-svn を利用可能になった。

miku@negi% pacman -Sy
miku@negi% pacman -Si mikutter-svn
Repository: mikutterName: mikutter-svn
Version: 811-1
URL: http://mikutter.hachune.net/
Licenses: GPL v3
Groups: NoneProvides: mikutter
Depends On: ruby ruby-gtk2 ruby-cairo
Optional Deps : libnotify
Conflicts With : mikutter
Replaces: NoneDownload Size : 1539.11 KiBInstalled Size : 8188.00 KiB
Packager: Unknown Packager
Architecture: x86_64
Build Date
: 2012 年 07 月 09 日 02 時 52 分 44 秒
MD5 Sum: 1813728ee6e9b1c34731854c371477cc
SHA256 Sum: 4d9c49b4c1a54f17b1407614b8b6ae62
10e56a20c2143c7d76b6753c8107b252
Signatures: NoneDescription: a moest twitter client

2.5

ソースから野良ビルド

mikutter が最新でも、ruby や ruby-gtk2 が古くては面白くない。6 そこで、ruby と rubygtk2 をソースからビルドする手順も紹介しておく。これは Arch Linux だけではなく Debian
等でも、パッケージ名を読み替えつつ同様の手順を踏むことで行える。

6

Arch Linux では最新の安定版が利用できることが多い。

5

2.5.1ruby のビルド

以下が ruby の trunk7 のビルド手順であるが、早速失敗する。

✓

✏

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

miku@negi% svn co http://svn.ruby-lang.org/repos/ruby/trunk rubymiku@negi% cd rubymiku@negi% autoconf
miku@negi% ./configure --prefix=/usr/ruby --enable-shared
miku@negi% make...
executable host ruby is required. use --with-baseruby option.

「trunk の ruby をビルドする際は、ruby が必要」らしい。仕方がないので ruby をインストールしやり直す。
miku@negi% sudo pacman -S rubymiku@negi% ./configure --prefix=/usr/ruby --enable-shared
miku@negi% make...
make: exec(bison) failed (No such file or directory)

今度は bison が実行できないと怒られる。これまた仕方がないのでインストールする。

miku@negi% sudo pacman -S bison
miku@negi% make && sudo make install
miku@negi% /usr/miku/bin/ruby -v
ruby 2.0.0dev (2012-07-08 trunk 36337) [x86_64-linux]

環境によっては、ruby の拡張ライブラリの利用に必要なライブラリやヘッダファイルが不足している場合がある。今回は、openssl と zlib が必須となるが、その他に gdbm や
libyaml、readline、ncursesw、tk 等も必要に応じて導入する。

2.5.2

ruby-gtk2 のビルド

ruby-gtk2 のビルドの前に、pkg-config と gtk2 の導入が必要である。8

✓

✏

✒

✑

✓

✏

✒

✑

miku@negi% pacman -S pkg-config gtk2

また、ruby の pkg-config ライブラリも必要になる。これは rubygems を用いてインストールする。9miku@negi% /usr/miku/bin/gem install pkg-config

ruby-gtk2 のリポジトリ10 からチェックアウトし、コンフィグを実行する。

Ruby - レポジトリガイドhttp://www.ruby-lang.org/ja/documentation/repository-guideArch Linux なら gtk2、Debian 系なら libgtk2.0-dev である。
9
pkg-config のリポジトリ (https://github.com/rcairo/pkg-config/) からソースを入手しインストールを試みたが失敗するようなので今回は見送った。
10
SourceForge.net - Ruby-GNOME2 http://sourceforge.net/scm/?type=svn&group_id=53614
7
8

6



✓

✏

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

miku@negi% svn co \https://ruby-gnome2.svn.sourceforge.net/svnroot/ruby-gnome2/
ruby-gnome2/trunk ruby-gnome2
miku@negi% cd ruby-gnome2
miku@negi% /usr/miku/bin/ruby extconf.rb...
----Target libraries: glib2, gio2, gdk_pixbuf2, pango, atk, gtk2
Ignored libraries: gstreamer, gtksourceview2, rsvg2, poppler,
goocanvas, vte----Done.

いくつかのパッケージの config に失敗するが、ruby-gtk2 としての動作に支障は無いため今回は無視して make。
miku@negi% make...
エラー: expected expression before ’/’ token

が、いきなりエラー多発。なにやら C++ライクなコメント (//) が全て不正扱いされエラーになっている模様。
% vi glib2/ext/glib2/rbgobj_valuetypes.c% vi glib2/ext/glib2/rbgobj_param.c% vi glib2/ext/glib2/rbgobj_type.c% vi glib2/ext/glib2/rbglib_keyfile.c% vi glib2/ext/glib2/glib-enum-types.c% vi glib2/ext/glib2/rbgobj_signal.c% vi glib2/ext/glib2/rbgobj_object.c% vi gdk_pixbuf2/ext/gdk_pixbuf2/rbgdk-pixdata.c% vi gdk_pixbuf2/ext/gdk_pixbuf2/rbgdk-pixbuf.c% vi gtk2/ext/gtk2/rbgtkaccellabel.c% vi gtk2/ext/gtk2/rbgtkwidget.c% vi gtk2/ext/gtk2/rbgtkcontainer.c

その他にも glib.h のインクルードのエラー等、細かな修正が必要な箇所があった。

% vi glib2/ext/glib2/rbglib_win32.c/* #include <glib/gwin32.h> */#include<glib.h>% vi glib2/ext/glib2/rbglib_int64.c/* #include <glib/gtypes.h>*/#include <glib.h>

何十回と make を繰り返し、ようやく全てのビルドが完了した。

miku@negi% sudo make install----SUCCEEDED: glib2 gio2 gdk_pixbuf2 pango atk gtk2
FAILED: NONE----Done.

2.5.3

rcairo のビルド

最後にもうひとつ、rcairo が必要である。

7



✓

✏

✒

✑

miku@negi% git clone https://github.com/rcairo/rcairo
miku@negi% cd rcairo
miku@negi% /usr/miku/bin/ruby extconf.rb
miku@negi% make && sudo make install

これで、mikutter の動作に必要なライブラリは全て揃った。

2.5.4

動作確認

今回作成した環境では、mikutter は AOuth 認証画面まで正しく行うことができたものの、残念ながら gdk と rcairo のエラーにより、タイムラインの表示を行うことができな
かった。ruby の trunk は比較的普通に利用できるが、ruby-gtk2 の trunk を利用するのは、
gtk2 との関係もあるためかなかなか難しいようだ。113

LTSP を用いた mikutter 環境展開システムの構築

3.1

概要

大学の研究室等で mikutter を広めたい、しかし学生は皆 Windows ユーザー。そんな状況を打破するべく、LTSP12 を用いた mikutter 環境展開システムの構築方法を紹介する。

3.2

クライアント環境

PXE boot に対応したネットワークインターフェースを持ち、Debian wheezy(i386)13 が正常に動作するコンピュータを想定する。BIOS のブート順の設定にて、PXEboot(ネットワークブート) を最優先にしておく必要がある。

3.3

サーバ環境

物理ネットワークインターフェースが 2 ポート利用できるサーバを準備する。今回は、ネットワークインターフェース (RTL8169、いわゆる蟹) が 3 ポート存在するはつねサー
バを利用し、その上に Xen DOMU を作成し Debian wheezy(x86_64) をインストールした。勿論仮想化を行わず直接 Debian をインストールしてもよい。また、サーバは Debianに限らず Ubuntu 等でも同様の手順にて構築できる。14

筆者は ruby と mikutter は Subversion にて取得したものを用い、ruby-gtk2 と rcairo は rubygems にてインストールしたものを用いている。ruby-gtk2 と rcairo の gem パッケージ (gtk2, cairo) はディストリ
ビューションに依存しないため、常に最新安定版を利用できる。
12
LTSP(Linux Terminal Server Project) とは、Linux を用いた容易に利用できるシンクライアントシス
テムのサポートを目指したプロジェクトである。
13
Debian http://www.debian.org/
14
Ubuntu の 場 合 、イ ン ス ト ー ラ の 時 点 で LTSP の 設 定 を 行 う こ と が 可 能 で あ る 。
https://help.ubuntu.com/community/UbuntuLTSP/LTSPQuickInstall
11

8



✓

✏

✒

✑

name="mikan"
vcpus=2
memory=1024
vif=[’mac=00:16:3e:39:13:30,bridge=bridge0’,’mac=00:16:3e:39:13:31,bridge=bridge1’]
disk=[’phy:/dev/mapper/hvg0-Mikan,sda,w’]kernel="/home/miku/vm/bzImage"root=’/dev/xvda ro’

ネットワークインターフェースは、eth0 が外向け、eth1 が内部向け (クライアント側)になる。また、eth0 には 10.39.39.100/24、eth1 には 192.168.67.1/24 がそれぞれ割り当て
られる。

3.4

サーバ環境構築LTSP サーバ上にて、クライアントが mikutter を起動できる状態になるまでの設定を
行う。

3.4.1

ネットワークの設定

初めに、今回の環境に合わせネットワークインターフェースの設定を行う。Debian では/etc/network/interfaces にネットワーク設定を記入する。
✓✏

auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 10.39.39.102
netmask 255.255.255.0
gateway 10.39.39.1
dns-domain k.hachune.net
dns-nameservers 10.39.39.1
iface eth1 inet static
address 192.168.67.1
netmask 255.255.255.0✒✑

networking の restart は deprecated となっているので、一旦 reboot を行う。また、iptables 等の設定は ltsp-server-standalone のインストール時に既に行われる。

3.5

LTSP パッケージの導入

次に LTSP サーバをインストールする。この際、クライアントが利用するデスクトップ
環境も同時にインストールを行う。デフォルトは gnome であるが、今回は軽量さを重視して awesome を利用する。
✓

✏

✒

✑

miku@mikan% sudo aptitude install ltsp-server-standalone awesome

93.5.1dhcpd の設定

クライアントは PXE boot と NFS root で起動される。まず、/etc/ltsp/dhcpd.conf を編集する。/etc/dhcp/dhcpd.conf ではないので注意が必要である。
✓✏

authoritative;
subnet 192.168.67.0 netmask 255.255.255.0 {range 192.168.67.20 192.168.67.250;
option domain-name "ltsp.k.hachune.net";
option domain-name-servers 192.168.67.1;
option broadcast-address 192.168.67.255;
option routers 192.168.67.1;
next-server 192.168.67.1;#
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {filename "/ltsp/i386/pxelinux.0";} else {filename "/ltsp/i386/nbi.img";
}
}

✒

✑

✓

✏

✒

✑

✓

✏

✒

✑

また、/etc/default/isc-dhcp-server の設定も必要である。ここでは、DHCPD_CONFと INTERFACES の行を環境に合わせ修正する。
DHCPD_CONF=/etc/ltsp/dhcpd.conf
INTERFACES="eth1"

設定が完了したら、dhcpd の再起動を行う。

miku@mikan% sudo service isc-dhcp-server restart

3.5.2

NFS の設定

次に、NFS の設定を行う。今回は/opt/ltsp をクライアントのルートディレクトリとして 192.168.67/24 のネットワークに公開するため、/etc/exports に以下の行を追加する。

✓

✏

✒

✑

✓

✏

✒

✑

/opt/ltsp 192.168.67.0/24(ro,no_root_squash,async,no_subtree_check)

設定が完了したら、NFS 関連サービスを再起動する。

miku@mikan% sudo service nfs-common restart
miku@mikan% sudo service nfs-kernel-server restart

3.5.3

tftpd の設定

クライアントの起動に必要なカーネルや初期イメージは、dhcp により指定され tftp により転送される。tftp の設定は、LTSP インストール時に既に行われている為必要ないが、もし修正が必要になった場合は/etc/defaults/tftpd-hpa を参照する。

10



3.5.4

クライアントブート環境の作成/opt/ltsp 以下に展開される、クライアントブート環境を作成する。ltsp-build-client コ
マンドを用いると、指定したアーキテクチャのイメージを自動的に作成できる。クライア
ントのアーキテクチャに x86_64 を指定することもできるが、ここでは設定ファイルにデフォルトで記入されている i386 を用いる。
✓

✏

✒

✑

miku@mikan% sudo ltsp-build-client --arch=i386

ディストリビューションを一から構築する為かなり時間がかかる場合があるが、じっくり
待つ。

3.5.5

クライアントの起動

クライアント側となる PC の PXE boot 機能を BIOS にて有効にし、eth1 側のネット
ワークに接続、起動する。PXE boot が一番最初になるよう Boot 順に注意する。

3.5.6

デスクトップ環境と mikutter の設定

クライアント環境 (/opt/ltsp 以下) は、クライアントを動作させるための限られた用途に用いられる。一見クライアント環境はクライアント上で動いているように見えるが、実体はサーバ上にあり、サーバのリソースを各クライアントにて共有する。そのため、クライアントでユーザが利用するソフトウェアパッケージはサーバ側に導入する。
mikutter を利用するには、サーバ側に最低限以下のパッケージを導入する必要がある。

• ruby• ruby-gtk2• libnotify-bin
また、以下のパッケージを導入することでより華麗に mikutter を利用できる。

• 日本語フォント (fonts-vlgothic 等)• 日本語インプットメソッド (ibus-mozc 等)• subversion (trunk 追い掛け用)• 仮想端末 (sakura 等)
その他にも、いくつかの設定が必要になるかもしれない。

• locales の再設定
• tzdata の再設定

11



4

あとがき

本稿ではひたすらに mikutter を利用できる環境の構築について解説を行った。本稿作成の作業を元に、近いうちに mikutter 用の Arch リポジトリを hachune.net にて公開したいと考えている。しかし、諸事情により hachune.net のサーバをリプレースが必要で、少々時間が掛かりそうだ。

5

参考文献• PKGBUILD - ArchWiki
https://wiki.archlinux.org/index.php/PKGBUILD• VCS PKGBUILD Guidelines - ArchWiki
https://wiki.archlinux.org/index.php/VCS_PKGBUILD_Guidelines• AUR(en) - mikutter
http://aur.archlinux.org/packages.php?ID=47755• LTSP Manualhttps://sourceforge.net/projects/ltsp/files/Docs-Admin-Guide/LTSPManual.pdf

12

#WRVKLBDࠉࠉࠉ

1 ‫؀ֱֽ׶פ‬ェỺս‫׆ְדּ׶פו׆צ‬mikutter‫݅֡؀ֱֽ׶פ‬ղյ֎ծՓՠոԧոՕ֓ղյ᷋ണ֚֡݅ս՚Ԩ‫׀‬؉‫ז‬դ՗ᘈՠ֛
տՓՓսնԧܾ֑⩺֛֞չ՞յ֑⬆ֈ֛տկՓծՓ֎֢չն՜֚սնը՛ԧ۠పվェỺ‫ڂ‬նՑղծ֙‫ৣו؀׮ײֺז‬դ֛յՓչՓ⇔սᵪḙնչ՚չ՚⨿ճՠմ֘ՓェỺḒսᠷ┣֓‫ב‬؉‫֡׸‬Փ՞ճ՚⌓ۡզծՓշᆪՓ֍ըԨ

1.1 mikutter▬ܼսᠷ┣
mikutterպվࢶỾ٨սㅅզᠷ┣՛Ց֚շ⩺֛֞յՓ֍ը՛ԧェỺḒսㅅզᠷ┣֑Փ՞ճ՚
Ց֙֍ըԨ
1.1.1 Ruby‫׊؀׀‬؉‫׸‬
Rubyս☇Փշբ֜սցշճշզյԧֱ‫׌׷פ׌؀‬պ᤯ⴟպ‫׀‬؉‫ࢱ֡ז‬঄զյໜ⥽ն՜֚բշ՛Ꭵա֛֘֍ըԨզ՚զլս‫׀‬؉‫ז‬՛‫ݷ‬຦ը֚‫׷׶ףֱ׶‬՛Ցղծ֘ԧᄙᯤ‫׺‬؉‫ז‬զյՙ՚չՠ֛տՓՠ֍ժ֢Ԩmikutterնլ֛֡ը֚սվᯝ⚍նզ֖ՕԨլբնGUI‫؀ֱֽ׶פ‬վ≚⌃նվՑ֙֍ը՛Ruby‫׊؀׀‬؉‫֡׸‬ᐖ‫ݶ‬զյՓ֍ըԨALT+X֡፥զյ֎յ՞կդ
ՓԨ఺ս֗Օպԧ‫ד׆‬؉‫ם׆׌‬؉սը՟٫պ‫ֱב‬؉‫ࢱו‬঄ḡ㇁ս֗Օչ֑ս՛जյ՜֍ըԨբբ
պRuby‫׀‬؉‫ࢱ֡ז‬঄ը֚շԧլսໜ⥽⌧ᙸ՛ּ֯‫ְדנְד‬պ⦓₄դ֛֍ըԨ
≚ਚչ‫؀ֱֽ׶פ‬վԧmikutter֡࣋ⱈযժթշ֑բբպ‫קס׀‬զյፒK‫֡؀׌ש‬፥ժտ‫פ‬‫ו׆؀ֱ֡؀ֱֽ׶‬؉‫׸‬ն՜յզ֍Փ֍ըԨ౧ૐչᠷ┣նը՛ԧῖղյՓ֚շmikutterսェỺচᴠ՛٫՛֚բշվギⷹՓᯝՓնըԨ
1.1.2 ‫ׯֽאםה‬؉‫ז‬
mikutter‫֡؀ֱֽ׶פ‬ᘈՓյ٢ṇ֗՞Ց֚սվԧmikutter▬ּܼ֡‫ײׄא׶‬դժ֚շՓ
ՕբշնըԨբսᖐԧֵ‫׶‬؉վ‫׊؀׀‬؉‫׸‬պज঄դ֛թԧᢜపⱈযᖐպ‫ֽם‬೷ઽ֡զ֗Օշ
զ֍ըԨբսᎥযվԧ‫֡؀ֱֽ׶פ‬ェỺը֚շ՜պվ⸶㏟պչ֚սնԧ۶٬ս֗Օչ‫؀׫׀‬‫ז‬նmikutter֡ⱈযզ֍զ֖Օ
WZG^RNPZYYJWWGIJGZL−−​d ebug ַ‫֡؀״ׄפ‬ճՠյⱈযը֚շԧmikutterվ‫ׯֽאםה‬؉‫ז‬նⱈযզ֍ըԨ‫׌‬؉‫׸ח׬‬պվඋ⻪ս‫׈א׮‬؉‫ׅ‬՛⦓₄դ֛յՓ֚շᆪՓ֍ըԨբ֛վ‫֯׀‬պۧⶇ֍֛յՓ֚
᲌໘ս‫֡זא׊׮‬૖ւजզծᖐպज঄դ֛֑֚սնըԨࢽܼἃպ‫ׯֽאםה‬؉‫ז‬նվոՕՓ

ղծⷹՓ՛Ց֚ս՚֡⨿յՓ՜ծՓշᆪՓ֍ըԨ
ּ‫ײׄא׶‬ᖐպ‫׹וּאם‬؉‫⦓֡׆‬₄ը֚ᵣౠվּ‫ײׄא׶‬զծշ՜պ‫׹וּאם‬؉‫⦓֡׆‬₄զ֍ժ֢՛ԧ‫ׯֽאםה‬؉‫ז‬նվլ֛֡⦓₄զ֍ըԨ
noticeԦ⭲ઽ؈ֵ‫׶‬؉‫׈א׮‬؉‫⦓ׅ֡‬₄
print‫ֽאםה‬վԧ֗՞‫ֽאםה֛֚֞ݝ‬ጤᦢս٢ճնըԨRubyնվ p ‫זא׊׮‬չո՛֗՞‫֍֛֞ݝ‬ըԨmikutterն֑ᄙᯤբ֛֡हḒը֚բշվն՜֍ը՛ԧ
mikutter▬ܼ՛ notice, warn, error շՓՕ‫֡זא׊׮‬ᐖ‫ݶ‬զյՓ֚սնԧլհ
֘֡‫ݝ‬Օբշ֑ն՜֍ըԨ
STYNHJሚ೷
\FWS⭲ઽ
JWWTWֵ‫׶‬؉լ֛խ֛‫זא׊׮‬કսⷊ֙ԧnotice՛٢◠ἃչሚ೷ԧwarnվ⭲ઽԧerrorվֵ‫׶‬؉‫׈א׮‬؉‫⦓ׅ֡‬₄ը֚ծ֐պ‫ݝ‬Փ֍ըԨբ֛֘ս p շսհ՛Փվԧըֈյ᠉᪘ֵ‫׶‬؉ज঄պ‫׈א׮‬؉‫ׅ‬՛ज঄դ֛֚բշԧ‫ׯֽאםה‬؉‫ז‬նչՓշໜㅁս⦓₄՛դ֛չՓ
սնԧṋၚ⋥պվज঄֡ࢱ֛ծ֍֍ն‫׷׷‬؉‫׆‬ը֚բշ՛ն՜֚շՓՕ᮸նըԨ٢
ᔰԧ⇁٢ცᔂ֡ᔎລऱշզյլս֍֍⦓₄զյզ֍Օսնԧᔎລऱպ൵ᐞն՜չՓַ
‫וִּׅף‬պվઙ՜֍ժ֢Ԩ‫ݧ‬ൿշզյԧExceptionսׂ‫׆׶ּף‬սֱ‫׆؀׌׆؀‬՛ᩘդ֛ծ೹ઐվԧ‫׹וּאם‬؉‫⦓֡׆‬₄զ֍ըԨ‫ݧ‬՗տԧ۶٬ս‫׀‬؉‫׊؀׀֡ז‬؉‫׸‬պࢱ঄զյໜ⥽զյ֎֍զ֖ՕԨGJLNS
WFNXJJWWTWYJXYWJXHZJ"#J
JWWTWJ
JSI۶٬ս֗Օչज঄՛ᅐ֛֚֘վթնըԨ
JWWTW J[FQNSEWJXHZJNSUTXY JWWTWYJXY
KWTR J[FQNSEUTXYKWTR`2.0:99*7D).7bHTWJUQZLNSLZNWGNSEJ[FQKWTR`2.0:99*7D).7bHTWJUQZLNSLZNWGNSEUTXYKWTR`2.0:99*7D).7bHTWJRZNLYPDUTXYGT]WGNSEUTXYDNY
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEHFQQ
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEGQTHPNSHFQQDPJ^UWJXXDJ[JSYKWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEJFHM
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEHFQQDPJ^UWJXXDJ[JSYKWTR`2.0:99*7D).7bHTWJRZNLYPDUTXYGT]WGNSEGQTHPNS\NILJYDUTXY
KWTR`2.0:99*7D).7bHTWJRZNLYPDJ]YJSXNTSWGNSEHFQQ
KWTR`2.0:99*7D).7bHTWJRZNLYPDJ]YJSXNTSWGNSEGQTHPNSDDYWFHP
KWTRRNPZYYJWWGNSEHFQQ
KWTRRNPZYYJWWGNSERFNSKWTRRNPZYYJWWGNSEGTTYKWTRRNPZYYJWWGNSE!RFNS#1.1.3 pryպּ֚֗‫ײׄא׶‬ᖐսַ‫וִּׅף‬ੜ᯾֍ծּ֑֓‫ײׄא׶‬զծᖐսՙ⫌նըԨּ‫ײׄא׶‬զծᖐպએ൵ᔂ՛ոՕՓղծߗ֡‫ޢ‬᎕զյՓ֚՚ԧַ‫וִּׅף‬՛ոս֗ՕչᲩቻպչղյՓ֚՚֡ῖ֚ᅮ⨸՛Ց֙֍ըԨբՕՓղ
ծḒⷄպվ‫ݝֹ֡אםה‬Օսնը՛ԧᘐ⌛‫ו׆ד‬՛յ֘Twitter֡կ֘կ֘ឱզ֎ծՓᖐպ
‫ⱈֹ֡אםה‬যզյզ֍Օշԧয݅՛ⷫ՞չղյզ֍Փ᧡֛պ‫֛ⷫ֙ڝ‬ԧքՐ֋֡⶷ըં┣ᆱ՛Ց֙֍ըԨ
pryշվ
irbս֗Օչֱ‫׌׷פ׌؀‬նըԨgemնֱ‫ו׆؀‬؉‫׸‬ն՜֍ըԨ
LJRNSXYFQQUW^UW^@BUW^ RFNS#pry‫ז؀׫׀‬նֱ‫׌׷פ׌؀‬՛ↁհ٫՛֙֍ըԨ೗ᘬἃպվirbշઔէ֗Օպ‫ݝ‬՗֚սնը՛ԧբբն‫ݧ‬՗տlsշ՚ࢱ঄ը֚շ
@BUW^ RFNS#QX
XJQKRJYMTIXNSHQZIJUWN[FYJUZGQNHYTDX
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^D[JWXNTS@BUW^ RFNS#F"@B"#@B@BUW^ RFNS#QX
XJQKRJYMTIXNSHQZIJUWN[FYJUZGQNHYTDX
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^DF[JWXNTS@BUW^ RFNS#շԧunixսls‫ז؀׫׀‬ս֗Օպԧᵣౠս‫׀׆‬؉‫פ‬՚֘⨿՗֚൵ᔂշ‫זא׊׮‬՛٢⩑ն՜֍ըԨ֍ծcd‫ז؀׫׀‬նոսַ‫וִּׅף‬ս‫׀׆‬؉‫פ‬ն‫׀‬؉‫֡ז‬ໜ⥽ը֚՚᎙໘ն
՜֍ըԨ‫ݧ‬՗տ൵ᔂaպࢱղյ֚⺑ऱս‫ڂ‬պࢱղյ֎֍զ֖ՕԨ
@BUW^ RFNS#HIF@BUW^ !&WWF^##QX*SZRJWFGQJRJYMTIXFQQ$FS^$HMZSPHTQQJHYDHTSHFYIJYJHYJFHMDHTSXJFHMDJSYW^
JFHMDXQNHJJFHMD\NYMDNSIJ]JFHMD\NYMDTGOJHYJSYWNJXKNSIKNSIDFQQKQFYDRFULWJULWTZUDG^NSOJHYRF]RF]DG^RJRGJW$RNSRNSDG^RNSRF]RNSRF]DG^STSJ$TSJ$
UFWYNYNTSWJIZHJXQNHJDGJKTWJXTWYDG^&WWF^RJYMTIX !!!"#""@B@B"FXXTHFYHQJFWHTQQJHYHTQQJHYHTRGNSFYNTSHTRUFHYHTRUFHYHTSHFYHTZSYH^HQJIJQJYJIJQJYJDFYIJQJYJDNKIWTUIWTUD\MNQJJFHMJFHMDNSIJ]JRUY^$JVQ$KJYHMKNQQKNSIDNSIJ]KNWXYKQFYYJSKQFYYJSKWT_JS$MFXMNSHQZIJ$NSIJ]NSXJWYNSXUJHYOTNSPJJUDNKQFXYQJSLYMRFURFUUFHPUJWRZYFYNTSUTUUWJYY^DUWNSYUWJYY^DUWNSYDH^HQJUWTIZHYUZXMWFXXTHWJOJHYWJOJHYWJUJFYJIDHTRGNSFYNTSWJUJFYJIDUJWRZYFYNTSWJUQFHJWJ[JWXJWJ[JWXJWJ[JWXJDJFHMWNSIJ]WTYFYJWTYFYJXFRUQJXJQJHYXJQJHYXMJQQOTNSXMNKYXMZKKQJXMZKKQJXN_JXQNHJXQNHJXTWYXTWYXTWYDG^YFPJYFPJD\MNQJYTDFYTDFW^YTDXYWFSXUTXJZSNVZSNVZSXMNKY[FQZJXDFY_NUa
XJQKRJYMTIXDDGNSINSLDNRUQDD
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^D@BUW^ !&WWF^##շԧ‫זא׊׮‬շլս‫׀׆‬؉‫פ‬ս൵ᔂ՛⨿՗֍ըԨբ֛՛mikutterշܾսジ‫ތ‬՛Ց֚՚շՓՕշԧໜվmikutterվ‫ׯֽאםה‬؉‫ז‬ᖐպּ‫ײׄא׶‬ը֚շԧ֑զՑ֛տּ‫א׶‬ׄ‫ײ‬ը֚ॐպpry֡ↁհ٫ա֚֗ՕպչղյՓ֍ըԨ֍ծ‫؀ֱֽ׶פ‬՚֘
into_debug_mode‫֡זא׊׮‬૖ւजժտԧՓճն֑pry՛㙇Ց֛տ㙈ⱈযն՜֍
ըԨնվԧໜㅁպ‫ݝ‬ղյ֎֍զ֖ՕԨ۶٬ս֗Օչ‫֡؀ֱֽ׶פ‬ᘈՓծշզ֍ըԨ
5QZLNSHWJFYJHWFXMITTSZUIFYJITaRJXXFLJXa
RJXXFLJXJFHMITaRaSTYNHJRYTDXJSI
JSI
JSI٢◠ሚ೷շզյ‫ר‬؉‫؀ֱ׶׭ֱ׌׭‬ս‫ֱב‬؉‫ࣅו‬໱֡ਪລը֚‫؀ֱֽ׶פ‬պ⨿՗֍ըԨໜ⥽զյ֎֍զ֖ՕԨ
JWWTW`2.0:99*7D).7bHTWJUQZLNSWGNSEWJXHZJNSGQTHPNSJ[JSYD\WFU ZSIJKNSJI
RJYMTIEJFHM KTW!2NPZ9\NYYJW]#
KWTR`2.0:99*7D).7bHTWJXJW[NHJWGNSERJYMTIDRNXXNSLKWTRMTRJYTXMNRNPZYYJWUQZLNSHWFXMWGNSEGQTHP QJ[JQXNS!YTU WJVZNWJI#KWTR`2.0:99*7D).7bHTWJUQZLNSWGNSEHFQQ‫ڂ‬ṃKWTRRNPZYYJWWGNSE!RFNS#+WTRMTRJYTXMN)THZRJSYXMTGG^XHWNUYXRNPZYYJWYWZSPHTWJUQZLNSWG%QNSJ
5QZLNSJ[JSYD\WFUIJKJ[JSYD\WFU HFQQGFHPQFRGIF`aFWLXaGJLNSHFQQGFHPHFQQ FWLX %UQZLNSDJ]NYWJXHZJ*]HJUYNTS"#J
"#NSYTDIJGZLDRTIJ JGNSINSLWFNXJJJSIbJSI@BUW^ 5QZLNS#ּ‫ײׄא׶‬զյ‫׹וּאם‬؉‫׆‬՛⦓₄դ֛֍զծԨ٢⥽Ὁպֵ‫׶‬؉ս੃బ՛जյՓ֍
ը՛ԧ٢ܼܾ՛ሊՓ֢նզ֖Օ՚Ԩբսᖐԧ٢ṇ٬֡⨿֚շPry‫ופ؀׺פ‬՛ↁհ٫՛ղյ֍ըռԨհ֖ղշ៥ຟ֡⨿յ֎֍զ֖ՕԨ
@BUW^ 5QZLNS#QX
HTSXYFSYX&HYN[NY^)NWJHY2JXXFLJ*]JHZYJ'T]*]JHZYJW,:.8JYYNSL8YWJFRNSL
4GOJHYRJYMTIXIJKZS^FRQDYFL
5QZLNSRJYMTIXFGTWYDTSDJ]HJUYNTS$FHYN[NY^FIIDJ[JSYFIIDJ[JSYDKNQYJWFIIDJ[JSYDMTTPGTTYDUQZLNSHFQQ㙇ṃ㙈
5QZLNSRJYMTIXFHYN[JFHYN[J$FIIDJ[JSYFIIDJ[JSYDKNQYJWFIIDJ[JSYDMTTPFY
HWJFYJIJYFHM㙇ṃ㙈

HQFXX[FWNFGQJX%%FIIDJ[JSYDMTTP%%J[JSY%%J[JSYDKNQYJW%%J[JSYVZJZJ%%UQZLNSXQTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^DFWLXHFQQGFHPJ@BUW^ 5QZLNS#XJQK"#5QZLNS@BUW^ 5QZLNS#բբվPluginּ‫Ⳳ▬׆׶‬նըռԨᣟᆑչ՛ֱ֘‫ו؀צ‬ս‫׀‬؉‫ּאם׸‬ս‫׀׆‬؉‫פ‬նվչՓնըԨໜվֱ‫ו؀צ‬ս‫׀‬؉‫ּאם׸‬նֵ‫׶‬؉՛ⱈբ֚շᅮթբբնPry՛૖ւजդ֛֍ըԨ‫׀‬؉‫⨿֡ז‬յ֑ᕨ֘՚չⷊ֙ԧ㙒ճս൵ᔂ՛໘⑝դ֛յՓ֍ըռԨ
൵ᔂ
args

ቐૐ
ֱ‫׀ו؀צ‬؉‫ּאם׸‬սცᔂ(⺑ऱ)

callback ‫׀‬؉‫(Ⳳ▬ּאם׸‬Proc)e‫ݧ‬ൿַ‫וִּׅף‬onupdateպᩘդ֛֚ცᔂ֡⨿յ֎֍ըԨ
@BUW^ 5QZLNS#FWLX"#@!8JW[NHJYTXMNDF#@ ‫ֱב‬؉‫ו‬BB@BUW^ 5QZLNS#ՑՑԧonupdateվԧ⇁٢ცᔂ՛Serviceԧ⇁‫ڸ‬ცᔂպ‫ֱב‬؉‫ו‬՛ࢱղյ՞֢֚նը
ռԨCtrl-D֡ࢱ঄զյmikutter֡٢ႛ⌛‫ڳ‬զյԧonupdateսცᔂ֡Ὅզյ۶٬ս
֗Օպުᣄզյ࣋ⱈযը֚շԧ‫׌‬؉‫׸ח׬‬պ‫ֱב‬؉‫ו‬՛ᢜԫշ⦓₄դ֛֚շᆪՓ֍ըԨ
5QZLNSHWJFYJHWFXMITTSZUIFYJITaXJW[NHJRJXXFLJXa
RJXXFLJXJFHMITaRaSTYNHJRYTDXJSI
JSI
JSI

Pryվࢱ֛յՙ՞կՠնmikutter՚֘हḒն՜֚սնԧ‫֡؀ֱֽ׶פ‬ェỺը֚չ֘ࢱ
֛յՙՓյᐳվչՓնզ֖ՕԨ
1.1.4 ‫؀ֱֽ׶פ‬ェỺḒսmikutter֚֡݅mikutterվԧն՜֚կՠᠷ┣֡‫؀ֱֽ׶פ‬շզյໜ⧅ը֚ծ֐պԧ᠉᪘ᠷ┣֑֊շ֢ո՛
‫؀ֱֽ׶פ‬նն՜յՓ֍ըԨ‫ݧ‬՗տԧGUI⹙थնդ՗‫؀ֱֽ׶פ‬պչղյՓ֚֊ոնԧ‫֯׀‬՛ໜㅁպ֓ղյՓ֚բշն‫׳‬؉‫׃‬՛ቐ⭪ը֚֗ՕչբշվԧTwitterAPIս∌ᵪ՞֘Փչ֑
սնըԨծկզԧᤌथTwitterAPIּ֡‫׺‬؉‫׸‬ը֚սվrest‫؀ֱֽ׶פ‬ԧUserStreamվ
streaming‫؀ֱֽ׶פ‬՛፫ᄙզյՙ֙ԧՑ՞֍նAPIսּ֯‫׆׈‬ጤ᣹֡ᐖ‫ݶ‬ը֚֍նպḸ֐֛֘յՓ֍ըԨmikutter‫֡؀ֱֽ׶פ‬ェỺը֚շչ֚շԧܾႛ֑mikutter֡ⱈযը֚
բշպչ֚շᆪՓ֍ը՛ԧmikutter֡ᤌపⱈযը֚սվ՚չ֙ս⯞፫պչ֙֍ըզԧAPIս‫׹‬؉‫וא׬׷ו‬պცղ՚՚֚೹ઐ֑Ց֙֍ըԨզ՚զԧェỺ‫ڂ‬ս‫؀ֱֽ׶פ‬շվὍᏻジ‫ތ‬՛չՓ‫ࢳ֡؀ֱֽ׶פ֯׀‬յ्ㄘը֛տԧェỺḒսⴟ⻪չ᷋ണ֡ጤⴟպ֚݅բշ՛ն՜֍

ըԨ‫؀ֱֽ׶פ֯׀‬նվԧໜㅁպ‫⨿֡؀ֱֽ׶פ֯׀‬յ֎֍զ֖ՕԨ‫؀ֱֽ׶פ‬ս֊շ֢ովԧ
/core/addon ս‫ڂ‬պࢱղյՓ֍ըԨծկզԧgui‫؀ֱֽ׶פ‬կՠվ /core/pluginպࢱղյՓ֍ըԨբ֛վ༪ᙒս‫ם‬؉‫؀״ׅ‬նࢳյ*/core/plugin* պ⌼٢դ֛֚‫ڴ‬໘նըԨնվaddon‫⨿֡׷וּ׹ְה‬յ֎֍զ֖ՕԨ
চᙸ‫؀ֱֽ׶פ‬ક
activityּ֯‫ְדנְד‬alsaⷊῖֳׂ‫ז؀‬api_request_file_cache TwitterAPIֺ‫ײׄאװ‬aspectframe

㙞㙞㙞

bitly

URL῜⎿ׂ؉‫׆נ‬bit.lyսURLའェ

bugreport‫ֽם‬೷ઽ

change_accountֳָ֯‫ו؀‬൵ᘅ

contextmenu‫⨸ڌ‬չmikutter‫ז؀׫׀‬directmessage

DMジⷒ

extract፦ज‫ף׌‬

followingcontrol‫ֱ׺ֶע‬؉㙎‫׼׺ֶע‬؉ジⷒ

friend_timeline‫ר‬؉‫׭‬TL

image_file_cacheḡࡅ‫ײׄאװֺ׸ֱ֮ע‬libnotify

ⷊῖ֡libnotifyն⦓₄ը֚

list

‫ו׆׷‬

mentions‫؀״ׄ؀׮‬؈‫ֱ׶פ׷‬notifyⷊῖ

openimgḡࡅ‫ײנ׹פ‬؉

profile‫׳‬؉‫׃‬ս‫ְע׺פ‬؉‫׸‬proxy‫ֺׄ׺פ‬

rest

REST APIԨᤌथսTLᘅᔫ⇔

search᝴⌅ᠷ┣

set_input⪛໘սԲࢱ঄Գ

set_view⪛໘սԲ⦓₄Գ

settings⪛໘‫ף׌‬

shortcutkeyׄ‫״‬؉‫ֺואָו‬؉ᠷ┣smartthread‫זא׹׆⫌ܚ‬

streaming

UserStreamշ‫ו׆׷‬Streamingᠷ┣tco῜⎿URLԧt.coའェշԧໜպ29߀ս‫؀ֱֽ׶פ‬՛ᘐळ՚֘ࢱղյՓ֍ըԨ֍ծԧplugin‫׷וּ׹ְה‬պվ۶٬ս‫؀ֱֽ׶פ‬՛ࢱղյՓ֍ըԨ
‫؀ֱֽ׶פ‬કচᙸcore‫֯׀‬ᠷ┣Ԩ्ㄘըֈ՜նվչՓ

guiְֳ‫⦓ֳ֡ז؀‬₄‫؀ֱֽ׶פ֯׀‬շվՓ՗ԧጛ⫊‫؀ֱֽ׶פ‬նըԨ੫֙ൿզյ֑য՜֍ըԨໜㅁպ֓ղ
յ֎֍զ֖ՕԨ
‫्֡؀ֱֽ׶פ‬ㄘզ֗Օ/core/addonն rm -rf * զծ՞չ֚շՙ֑Փ֍ը՛ԧᦰቐըֈ՜բշ՛٢ճᘕ֙֍
ըԨaddon.rbշՓՕ‫्֡׸ֱ֮ע‬ㄘը֚շ٢⹙‫؀ֱֽ׶פ‬՛য՚չ՞չ֙֍ըԨՑ
շԧਚ⋸պ्ㄘը֚շԧቐൿշᠷ┣՛᧾՗֚սն‫݅؀ֱֽ׶פ‬ዺոբ֜նվչ՞չ֚
բշ՛֊շ֢ոնըԨඕղյळ֐յ֞՚֚բշ֑Ց֚սնըԨշՓՕ֞ՠնԧaddon‫ך׷֡׷וּ׹ְה‬؉‫׭‬զԧᔫզ՞addon֡݅ዺզԧլս‫ڂ‬պaddon/addon.rb֡‫ס׀‬؉զյ՞կդՓԨբ֛֑ԧᵣౠェỺ‫ڂ‬ս‫ם‬؉‫؀״ׅ‬նվaddon.rb्֡ㄘը֚բ
շպչղյՓ֚սնԧaddon.rb՛⨿ᄙծ֘չՓ೹ઐվ⌎՚Փբշվ⒐՗թպ٢ᆪՓ
պ᧾զյզ֍ղյ୐㉜չՓնըԨ
ܾ֑չՓmikutterս‫ٵ‬ḯնվᕐⷎⱈযզյ֎֍զ֖ՕԨ

‫ֱב‬؉‫ו‬ፒK‫ק׆‬؉‫׆‬՛Ց֚կՠսᣟᆑչְֳ‫ֳז؀‬՛⦓₄դ֛֍ըԨբբ՚֘޳ծ
հսTwitterּ‫ו؀ֱ֯׶‬վ෷֍֚…ԨՓճ՚ᅮթNo1սTwitterּ‫݅֡ו؀ֱ֯׶‬ղյԧTwitter₈պ40ࡪ‫׸ז‬ն⯰੥դ֛֢֚կԨլ֢չᥧቐպ᪑հ᪟֛֚ḡ㇁նըԨⱈযվᄙᯤᕐ՞չղյՓ֚զԧAPI֑ං՞յ٢ႛզ՚‫ו׆ֵּ׷‬զ֍ժ֢Ԩծկԧբ
֛նվᘬᄙպܾ֑ն՜չՓսնԧ्ㄘզծ‫؀ֱֽ׶פ‬ս‫ڂ‬՚֘ friend_timeline շ
rest ‫࢘֡؀ֱֽ׶פ‬սaddon‫׷וּ׹ְה‬պጘզյ֑Օ٢ႛⱈযզյ֎յ՞կդ
ՓԨ‫ר‬؉‫؀ֱ׶׭ֱ׌׭‬՛⦓₄դ֛ԧᔂथպ٢ႛ‫؀ֱ׶׭ֱ׌‬՛ᘅᔫդ֛֚շՓՕԧ
2008ၾ֡ᄵᄼշդժ֚Twitterּ‫ו؀ֱ֯׶‬պչ֚շᆪՓ֍ըԨ
▬थս‫֛֚ࢱ֡؀ֱֽ׶פ‬բբ֍ն՜ծ֘Ցշվ▬थն݅ղծ‫~ ֡؀ֱֽ׶פ‬/.mikutter/plugin ۶٬պᘈՓ
յ՞կՠնըԨբՕՓղծ᷋ണ֚֡݅‫וא׷׮‬վԧ࢝պⶨֈծ֗Օպⴟ⻪պչ֚սն
‫ו׆ד‬զ֓ըՓշՓՕբշշԧジ‫ތ‬սչՓ‫؀ֱֽ׶פ‬՛չՓբշն‫ֽם‬ս᲌໘՛໱ᕬ
պչ֚շՓՕբշ՛Ց֙֍ըԨբս‫ּאטּד‬վԧ▬थ՛ᖱ᣹‫ݝ‬Օmikutter՚֘‫⨸ٮ‬չ‫֯׀‬ᠷ┣्֡ㄘզծՓ೹ઐպ֑‫ݝ‬՗֍ըԨ

1.2 mikutter-mode‫׀‬؉‫֡ז‬ᘈ՞պվֵ‫֑׌ְה‬උ‫ڷ‬նըԨmikutter‫؀ֱֽ׶פ‬վRubyս‫׀‬؉‫ז‬չսնጤ኉
֛ծֵ‫ݝ֡׌ְה‬Օբշ՛ն՜֍ըԨզ՚զᘐⶕԧmikutterս‫׀‬؉‫ז‬՛ᔄᵪդ֛յ՜յԧ
ֵ‫׌ְה‬պmikutter֡ᘈ՞ծ֐սᓙᐪᠷ┣֡ճՠ֚բշ՛ં┣պչղյᙒ֍զծԨբբն
վ‫֯׀‬սェỺպ‫ڌ‬պ‫֛֞ݝ‬յՓֵ֚‫׌ְה‬ԧEmacsսծ֐պᘈ՚֛ծmikutter-mode֡≚ਚպ⌓ۡզ֍ըԨ
https://github.com/toshia/mikutter-mode
1.2.1 i-menui-menuվԧ٢◠ἃչIDEս֗Օչּ‫֓׆׶‬ジᔂս‫⦓֡ו׆׷‬₄ը֚ծ֐սelispնըԨ
mikutter-modeվԧ‫؀ֱֽ׶פ‬ս໘⑝ェ෷ܶ␶ֱ‫ו؀צ‬ԧ‫׌׸ְע‬ս‫ּאע‬
֡ԧi-menuպ⦓₄ը֚ᠷ┣՛Ց֙֍ըԨծ՞դ֢սֱ‫ּאע֡ו؀צ‬ը֚շ՜վԧimenu՚֘⸔ፘզյ‫פ؀װׅ‬ն՜֚սն⻨໛ը֚նզ֖ՕԨ
1.2.2 yasnippet
yasnippetվԧ᲌໘ս‫ׯ‬؉‫ז‬սᖐպ᲌໘սਚ⫮սᅈ֜ն⪛໘դ֛ծֺ؉֡੼՞շ‫אקט׆‬‫ו‬՛འェդ֛֚շՓՕ֑սնըԨmikutter-modeպվԧլ֛՛ᘕচչշ՜պկՠয݅ը֚
‫ואקט׆‬՛Փ՞ճ՚ᐖ‫ݶ‬դ֛յՓ֍ըԨ‫ݧ‬՗տԧ‫׷וּ׹ְה؀ֱֽ׶פ‬պ⅐ս‫׸ֱ֮ע‬֡݅ዺզյ۶٬ս֗Օպ‫פֱ׌‬զԧ
UYQlսᅈ֜նའェֺ؉֡፥ըշ
5QZLNSHWJFYJIT
JSI

շԧ‫؀ֱֽ׶פ‬ս‫؀ו׸־׆‬պའェդ֛֍ըԨ‫؀׺׀‬սᅈ֜պָ؉‫׸׊‬՛⃾যը֚սնԧ‫׆‬‫ࢱֽ֡א׶‬঄զյ‫ֺף׌‬؉֡፥ըշ‫⥽ڸ‬Ὁպָ؉‫׸׊‬՛㊏ւԧའェ⌛‫ڳ‬նըԨբՕՓղծ‫׆‬‫ואקט‬վԧඋ⻪պᐖ‫ݶ‬դ֛յՓ֚շ⩉՗֚֊Օ՛උ൵չսնԧmikutter-modeպ੥⿛դ֛յՓ֚սվգ՞࠾՚նըԨ֎չդ֢֑֗՞Ց֚‫׌מ‬؉‫ৣואקט׆֡؀‬զյ֎յվՓ՚՛
նզ֖Օ՚Ԩ
1.2.3 mikutter_mode.rbᘐᅈպԧໜ㌶ἃչ֑սնվՑ֙֍ը՛ԧmikutter_mode.rbս⌓ۡնըԨmikuttermodeպ۪ཤը֚‫؀ֱֽ׶פ‬նԧmikutter‫؀ֱֽ׶פ‬սໜ⥽֡mikutterᘬܼս࣋ⱈযᯝզ
նໜᵣզ֗ՕշՓՕ֑սնըԨ
ֱ‫ו׆؀‬؉‫׸‬
mikutter-modeս‫׷וׅת׷‬ս plugin/ ۶٬պՑ֚ mikutter_mode ‫וּ׹ְה‬‫~ ֡׷‬/.mikutter/plugin պ‫ס׀‬؉զ֍ըԨ֍ծԧdbus-ruby֡gemնֱ‫ו׆؀‬؉‫׸‬զյ՞կդՓԨ
LJRNSXYFQQIGZXWZG^‫ݝ‬ղյ֎֚
֍թԧmikutter_mode.rbֱ֡‫ו׆؀‬؉‫׸‬զծmikutter֡‫ׯֽאםה‬؉‫ז‬նⱈযզ֍ըԨլզյ ~/.mikutter/plugin/ պԧ⸉ᄙչ‫׸ֱ֮ע‬㙇բբնվԧtest.rb㙈֡݅ዺզ֍ըԨᣄၚպmikutter-mode՛ֱ‫ו׆؀‬؉‫׸‬դ֛յՓ֚չ֘ԧ۶٬սࣖὨս֗
Օպԧ‫ׯ‬؉‫؀ֱ׶ז‬պ Mikutter շ⦓₄դ֛յՓ֚վթնըԨ

դյԧբս‫؀ֱֽ׶פ‬վ test շՓՕֱ‫ו؀צ‬՛ỺḊը֚շԧԲ‫ו׆ד‬ԳշՓՕ
notice‫׈א׮‬؉‫⦓ׅ֡‬₄զ֍ըԨໜㅁպ֓ղյ֎֚պվ࣋ⱈয՚‫׊؀׀֡؀ֱֽ׶פ‬؉‫׸‬պ‫קס׀‬չսնը՛ԧEmacsշmikutterպᣄၚպmikutter-mode՛ֱ‫ו׆؀‬؉‫׸‬դ֛յՓ֛տԧ‫֮עאם‬նC-c C-c շ‫פֱ׌‬ը֚կՠնբս‫׆؀ֱ֡؀ֱֽ׶פ‬‫ו‬؉‫׸‬ը֚բշ՛ն՜֍ըԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP 
QJ[JQXNS!HQFXX8JW[JW# WZG^HTIJJ]JHZYJTWLRNPZYYJWJ[FQ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP 
QJ[JQXNS!HQFXX8JW[JW# WJYZWSXYJXY
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP 
QJ[JQXNS!HQFXX8JW[JW# WZG^HTIJJ]JHZYJMTRJYTXMNRNPZYYJWUQZLNSYJXYWG
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP 
QJ[JQXNS!HQFXX8JW[JW# WJYZWSX
YJXY٫⪍ս֗Օչ‫׈א׮‬؉‫ׅ‬՛‫׌‬؉‫׸ח׬‬պ⦓₄դ֛֚շᆪՓ֍ըԨᢜպໜㅁպtestֱ‫צ‬‫֡ו؀‬ỺḊդժ֍ըԨ‫׊؀׀‬؉‫׸‬՚֘۶٬ս‫׀‬؉‫֡ז‬ໜ⥽զ֍զ֖ՕԨ
5QZLNSHFQQ YJXY۶٬ս֗Օչज঄՛ᅐ֛֘֍ըԨ࣋ⱈযᯝզպmikutter‫ו׆؀ֱ֡؀ֱֽ׶פ‬؉‫׸‬ն՜֍զծԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSYJXYWGNSEGQTHP QJ[JQXNS!HQFXX8JW[JW# ‫ו׆ד‬նը‫؀ֱֽ׶פ‬ս▬য࣋‫׺‬؉‫ז‬
test.rb պՑղծ onunload պճՓյ⫹ᕨզյՙ՜֍ըԨmikutter-mode֡‫ݝ‬ղյ‫׺֡؀ֱֽ׶פ‬؉‫ז‬ը֚ᖐԧընպլս‫؀ֱֽ׶פ‬՛‫׺‬؉‫ז‬դ֛յՓ֚ᖐ՛Ց֙֍
ըԨլս೹ઐԧ٢ႛ‫؀ֱֽ׶פ‬՛੫֙ൿդ֛ԧᔫզՓ‫؀ֱֽ׶פ‬՛‫׺‬؉‫ז‬դ֛֍ըԨ
բՕՓՕԧmikutterս⌛‫ڳ‬۶ൿս⨸బն‫؀ֱֽ׶פ‬՛੫֙ൿդ֛֚ᖐպ onunload‫ּא׺ף‬՛૖տ֛֚սնըԨծ֐զպ֑Օ٢ႛ C-c C-c շ‫פֱ׌‬զյ֎֍զ֖ՕԨ۶

٬ս֗Օպज঄դ֛֚շᆪՓ֍ըԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSYJXYWGNSEGQTHP QJ[JQXNS!HQFXX8JW[JW# ֯‫׺؀‬؉‫ז‬onunload ս‫ڌ‬չ‫ݝ‬ՓⷷվԧThread֓Gtk⇔ԧ‫؀ֱֽ׶פ‬՛੫֙ൿդ֛յ֑⩫ᓥդ֛չՓַ‫⩫֡וִּׅף‬ᓥը֚ԧ‫׌ּ׶ו׆ה‬ἃչऋᵪ֡ᘈ՞ծ֐նըԨ
mikutter_mode.rbս۠ᅈ
mikutter_modeվᘐⶕ֓ղշᘬᛘἃպェỺպώጤդ֛ճճՑ֚֍կỺའⷄ٫սᠷ┣նը՛ԧEmacs٫նEmacs Lisp֡ᘈ՞֗Օպmikutter‫؀ֱֽ׶פ‬՛ᘈՠ֚֗Օպ
չ֚‫֐⃩֡׸װׄ؀דת‬ծ‫؀ֱֽ׶פ‬նըԨᘐᔫսሚ೷վԧ٫պᘈՓծgithubս‫ק‬؉‫⨿ׅ֡‬յ՞կդՓԨᵣౠվEmacsսᎄᄄᠷ┣ս֎⺑ြզյՓ֍ը՛ԧDBus՛‫ݝ‬՗֚չ֘ۨսֵ‫׌ְה‬؈IDEն֑ઔ៥սբշ՛ն՜֚վթնըԨ

2 ֍շ֐ॐపԧmikutterս⟗Փᘬvol.1պԲWriting mikutter pluginԳ֡໹KդժյՓծկ՜ԧ
Web٫ն֑ࢷェզ֍զծԨሹ໘զծ⫺⒒վmikutterպհ֖ղշᠷ┣֡ⱟզծՓۘնզծԨ
բս⫄֎վՑ֚ℇႛዺআզԧ‫֚ۘ݅֡؀ֱֽ׶פ‬սࢱゟշզյ⫺֍֛֚֗Օպչ֙֍զծԨ
٢ᔰԧՑ֚ℇႛ‫֡؀ֱֽ׶פ‬ᘈ՞բշ՛ᕌၚἃպչղյ՞֚շԧmikutterాᘕս‫ֽאםה‬սᔰᦢ՛֍շ֍ղյࢷェդ֛յՓչՓծ֐ԧ٢ᣈⲗ֎ⶇ֢կ‫֡؀ֱֽ׶פ‬ᘈբՕշզծᖐպ
⯞፫պչղյՓ֚‫־‬؉‫׆‬՛ᓽ⨿դ֛֍զծԨլս֗Օչ⌣⎚՚֘‫؀ֱֽ׶פ‬ェỺս‫פו׆צ‬‫ۡ⌓֡׆ְדּ׶‬ը֚‫ו؀׮ײֺז‬սᅮ⨸ᆱ֡቞էԧ۠పբս‫֡ו؀׮ײֺז‬ᘈ՞պ△֙֍զծԨἅդ֢՛mikutter֡▬थ☉պ᚜֐֚٢঍պչ֛տႁՓնըԨ

ᕳᮎ ࡜ ࠶࡜ࡀࡁ @brsywe๓ᅇ 24 ࣮࣌ࢪ࡛௒ᅇ 60 ࣮࣌ࢪ࡟࡞ࡗࡓ mikutter ࡢⷧ࠸ᮏࠋ࠾ࡓࡢ
ࡋࡳ㡬ࡅࡲࡋࡓ࡛ࡋࡻ࠺࠿ࠋ ๓ᅇࡣᵝᏊぢࡔࡗࡓேࡀἑᒣ᭩࠸࡚ୗࡉ
ࡗࡓࡇ࡜ࡶ࠶ࡾࠊ࣮࣌ࢪᩘࡀ୍Ẽ࡟ቑ࠼ࡲࡋࡓࡡࠋ
ᛮ࠼ࡤ༙ᖺ๓ࠋࡇࡳࢺ࡛ࣞ㡺ᕸࡋࡓ࡜ࡁ࡟ࡣ mikutter ࢆ඲ࡃ▱ࡽ࡞࠸ࡅࢀ࡝ཷࡅྲྀࡗࡓ࡜ப࠺ேࡶᒃࡲࡋࡓࠋ࠸ࡲࡈࢁ twitter ᗈ࠸ᾏࡢ࡝
ࡇ࠿࡛࡚࠾ࡃࢀ࡚࠸ࡿࡢ࠿ࡋࡽࠋ
࠶࡞ࡓࡀࡓࡢ࡚࠾ࡃࢀࣛ࢖ࣇࡢ୍ຓ࡜࡞ࡿࡇ࡜ࢆᮇᚅࡋࡘࡘࠋ

Ќ@shijin_cmpb̿̿ḟྕண࿌̿̿
ཎ✏ᥦฟᮇ㝈㸸11 ᭶ᮎ᪥Ⓨ⾜ணᐃ㸸C83㸦12 ᭶ᮎ㸾ᮾி㸧 ࡲࡓࡣ ࡇࡳࡗࡃࢺࣞࢪ࣮ࣕ21㸦1 ᭶୰᪪㸾኱㜰㸧ၥྜࡏඛ㸸 @brsyweዟ௜৅ষ঩‫ ؟‬ফ  া  ঩ ੂගਸ਼  ླྀ3') ග 26&72.<2  ੂගਸ਼  ླྀ‫ ؟‬া  ঩ 26&.<272 ৅ ষ‫؟‬PLNXWWHU 峘ු岮ম਑੿੻৩ভ
৅ষ঻‫؟‬#EUV\ZH ਧഈ峘ଣଛଂ৔ཹภ஼শ
৴൪੔‫؟‬EUV\ZH  #  KRWPDLOFRMSഀླྀ嵣ᐑഘੈৡ‫؟‬,8-.

ࡈពぢ࣭ࡈឤ᝿ࡣ࠾Ẽ㍍࡟࡝࠺ࡒࠋtwitter ࣁࢵࢩࣗࢱࢢ #ࡍࡈ࠸ M ᮏ
mikutter ࡢⷧ࠸ᮏไసጤဨ఍࢙࢘ࣈ࣮࣌ࢪ㸦ྑࡢ QR ࢥ࣮ࢻࡶྠࡌ㸧
http://home1.tigers-net.com/brsywe/mikutter.html㏣⿵㸦mikutter ࡢⷧ࠸ᮏ vol.2 ึ∧➨ 1࣭㸰ๅ/PDF ∧ඹ㏻㸧
௨ୗࡢ㏻ࡾㄗ᳜ࡀࡈࡊ࠸ࡲࡍࡢ࡛ゞṇࢆᚚ㢪࠸⮴ࡋࡲࡍࠋ࠙44 ࣮࣌ࢪ 2.5.4ࠚ
AOuth ‫ۑ‬OAuth

mikutter ࡢⷧ࠸ᮏไసጤဨ఍࡛ࡣࠊAmazon ࢠࣇࢺๆ࡟ࡼࡿ㔠㖹㠃ࡢᨭ᥼ࢆཷࡅ௜ࡅ࡚࠾ࡾࡲࡍࠋࡶࡋࠊ࠶࡞ࡓࡀࡇࡢⷧ
࠸ᮏࢆㄞࢇ࡛ࠊఱ࠿ࡋࡽ‶㊊ឤࢆᚓࡽࢀࡓ࡞ࡽࠊ㏦ࡗ࡚㈔࠼ࡿ࡜ࡑࡢ‶㊊ឤࢆㄡ࠿࡜ඹ᭷࡛ࡁࡿ࠿ࡶࠋ
ୖࡢ࢙࢘ࣈ࣮࣌ࢪࢆᚚཧ↷ࡃࡔࡉ࠸ࠋ