...

mikutterの薄い本 vol.2 PDF版

by user

on
Category: Documents
13

views

Report

Comments

Transcript

mikutterの薄い本 vol.2 PDF版
ẴắẟᾼᾸᾺῄῃῃᾴ῁ᴾ
ẺỉẲẪềấẪủợạὲᴾ
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 3
456
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!gh
ij
kOj$l$NG6+C$fm,n op
q$,qrGstuAvw ./
xy$7
z
?'
T6A{_R
|
z
}~$•€
!"
#
#
$
%&''
#
'( '
!
"
#
''
%%
#
% &''%
v {_R
‰
6
1
%)
$%&
+
6
'
#
#
'(%' %%'
*
6
'
#
* %%
%&''
•••
$
#
,- ,
,
' ./$012/3 4
53
+
' %% '
#
4 5
?ƒ„6 :
#
‡ˆ6-./Nu PQ
Š
)‹[ @ -.
R
#
#
…†G
S T
?
C 5 $ -6A/75
Œ•Ž•,•4 /
‘G’“”• F•G -.–
7
8 5( 9‚
1
?ƒ„.u
;"<=>
?7
@ABCDEFGHEFI
JKLMNFOCFPNQRST>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 4
53
¹¹¹¹9.
% &''%
6
6
'
' %% '
8 5(
¹¹¹¹¹¹¹¹¹¹¹¹¹¹
5
#
#
7
Windows XP SP3 ࡛ mikutter ࢆ࠸ࢀ࡚ࡳࡼ࠺ࠋ
author: @catina013
!" #$%
123456789:; <
OB
=> ?@A
4PQ>JK F
WWX ?Y
&
'() *( + ,-.
/0
B(C4DEF>%GH%IJK L AM N>I
RSTU4>%I M>I VM/IHJI? ? A
Z5 [> \
]I^
FI_24`K%
F
%a
bc?de fI%gI%hi_FjIk
F
l
m
F8pdeq(rs
k7/XnXn
F/?
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²
, &-
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
°. '
³´ µ¶
k7 , &¹^º
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
(
cJ
n K \cM'() *( ?
(™( ÀAHJ
÷I ø
ùû÷I
°4
>J'() *(
[>
þ n
F
»
»
þ
/?IAFjIk
X
FÏÐ An>ck²
* & +/
[ÎF>%
4Ir i_?0
4ü
F4
/ * & + FÔ
#
/øù
?MÓ
a¯
êÐ FX ?ör ÷I
»
4
Gõ örMck
÷I øù I_ú»ùûFÆ»ùû ÷I
F* & +
0 12 »?MUb/7Œ
55
J
}(Ù
McJn
aI%/
Ž(½C‡
( FI_
»
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
'() *( + ,-.
(: &
a¯
1(
;
HJ*C( "(
ã
kJ
™(
6^«œ(}
UI%I
,%>;3 / ?š I6Õ ?•@…Ž4œ
E>JP½
4•®
/
Q½ C<=?š
!" / yØ;' ž
½C ?
;,
#(B¾
X þ n9æ
; OB ° B„()
8 <
™
&®>%Ik
"(
#(B¾
M
&
*0 < 565
"(
/ D49æóh ÂJ
#(B¾
U
BF X
>%I
4&®>k>J
0123 iH%/
I2JK ;L TU
(
&®nHH%Ik
1(
/‹
yÌÍŒFI_\F ‹
_Þ M)Ž °H%I 6¯?
\ ‹
*/m, i_ ‹Iô ?OB
4/0
ŒFI_
UI%I OB 4&®>k
&®ŒFI_n
£/ìN O>IFI_5å
UbŒFI_\F
0
?¥º ?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>h
WC 2U>%ž
7 c%I
UI%I ã}( ƒ„ Ž (•)=CœQ}
ŒFI_PQnH6ck>J \ i_
JOB
, &-
} Ž4
4&®>%Ik
½° 2 ð(½(4ü$JÁ½(•¾
F¼G /‹
? OB
UbŒFI_
>Ñ_
óh ´: AAM?IÆ;
A
/7
2§
\ ‹ N>IOB 4üý Iô ?OB
4þ8 ?H%‹Iô ?OB Œ
>C ° 8=
ðñ(Ž
/0½1CŒFnÏ_¦§/01(
F?H%Ik
*FÏÐ
276 / ?šn
°B„()
MUI%I?b%nž
Xc/Xc •‡
X 2V/‹+ (
J|¯ XYŒF
§J|¯ \+XY
>%>kHJK>k
>A> ç]
(™( FH% Þ ^)( (FI_n /
)}à(B¾ °=)}`
K * & +°
cc [Î
/!g
( F? P
%
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 ´
&® /OB
M7 {2
UA )ž
4vw
|¯ fx§%>k
t ¥4|bJ$ OB Pd LJ¥
&®PQ •Ò
ƒc
iK
• Ž }M~ 4
FI_n 4h¡>%nM_A ‚å >J
1(
†
€}â
¦§AFI_ /lk>I5å
€?IFI_ÇÈ [K æ
k
Kk
cÓ š ?mn°Ek
%nM_\F
[Î ? =
Ž…)abFIHJ I6Õ ‹ (™(â
i_?‹
Mhi c?IFI_5å
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
(
) )& & 8 )& 7
*'
:
/ 0/ *)
5 7
8 6 33 *
-+11 * 3. 4
1
"
8 )& 6 *
* 4 9 " 5
) ) 6 )
5 38 5*
"
*)
73
78
7 33
8
&
& '1- ') 7.7:* ' )1/ 001
1 ;1 )' ; 0 ; : 3
! $ '/
FÔ‡
k
ŽI :÷H%X kkŠ F\ô ƒc%IH%>kHJi_?\
• Ž \c4LJ•¬ ŠJæ/š_jHJ |ô_AFI_F\ô/ %a§ \c4Þß…Ž>J ! $ ' 0
( '
•b
0 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
3;< .;
c%IJ\FAM #
A/¡ ;n Kk²
=(+ 1AM/_A
‹ c› gIJäœ
ŒFÞœ Ž
/•A \ ÌÍú !g>%IJn Fj6ck
• Ž öž ? 4Ÿ¯%
\ ž œ…M(•
= ŽŒ
?bFn¡
4¿Io$J
(™( šc|¯IJ
/\ ž œ…M(•4¥ >?¯cÓ
4¿Io
$ \F/?AHJ >Ñ_
\_>%A
_U§nçû
P
¢
/
/œ
4<@
HJ
nA•
4
OB
UAX_ŒFI
X_F_£_AM¤¥>F¯ŒFgI% HJK ¡
?
1(
4UA
{%bcJ
B(C4ªM²JK>%>kIk>J «œ Ùð
#(B¾ &®nÅ¢ ¬6Kç-fIJ A •¬6K †
4UA
ç
?
! & C 4.c? MP½… 4
¦bŽ
+(WC4
±L
>J
&®W ®¯F
4o$k>J
5å/Ø
HJ\F >J
FH% 3 () ° B 9 /kHJb°¡
,%>;3 / =ãâ
X ²I
1
,%>;3 /
d/ ! $ ' 4¿ÐÓ
¡
¨©4>%<„
!" "(
?IŒFI_½
. ˆ
‹œQ}/
# /67 |¯FI_ÇÈ >J
X_Fw§A7
I_\F
>k>J Øp? M‹
!" OB &® x¯%´ç¦|HJK>JJ$ >ÓMb :/
OB
X_>%
Û
Ž(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/´>bn
i¶¶¶ŒF·¸¹+ Ï6c%IJ
&
?š
UbIô ?OB
F/‹ C '
OB
4UA
tËŒ4qÃ>i_ FI_W
I6Õ
*
‹0
œQ} g§ó
\F
0
\
*
/‹%abc *
‹%abc *
1
1
1
a¯
/?IAFjH%Ik
%abc *
\ ‹
1
$ Œ
ñ(Ž>J
X\AM1(Ž
cÓXc?K ab
$ Pd fI%/Å
’Æ°
kJ
E &
°b
1
$ FI_ /
PŸ
œ(•Œ
Ç•È nÌÍ>%I
É
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ÜÝ>JIFjIk
c i_ ?Kk>J ÙAMFn?b\c4PÚº ‹
'ÕAM
/
*
2U
Å Àb Kk>J XcPd/%abc /?bÔÕ n HJ
6c ‹\_
4UA
œQ}Ä
M %abcJŠJæ4? FA>JI FI_jI ó$Mc%IJK
:4A¯% n
88 B . '
nHFn
‹nHFÁÂ
abcŒFI_6¯ /Ë>%?b XnXn
/‹
>
WW
$ Œ Ò %abc? AFI_F ‹2U>%ž
Á3
ž(? iô>b
'
§k>J
6?
&® ¾¿¯
FI_ÀhF/Š
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
) |HJK
F' |HJK
Ik|¿H%I Š IJK>k
Kk
m OB nÝs ðñ(Ž>%>k_J$ Þpº
Oム6^«.fFÏÐÓ ( &
(™( þ / ,&&E &!
6¯
P
Ž…) fI%n * & +
B&
Œq c%I
°
A / A ß$%IJK
&& 4
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üý
ab4
1
%abcçV4èé> çAM Âê
H%hi_ FI_P+P
$ ?
OB ° *
1
ëìí
FI_‹FK Ð7æÑHF>JOB
HJ\F %abc4Lï
$ F/8pŠ l ?Kk
Oãƒ
\ %abc *
îùïFI_Ãnnü$%ÀHðñ>? M HJ
XnXn
X\òóŒFI_ƒ (=)}
Ž(C
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
4
% X
¤Pd/û>ü>
}( B¾…Ž
}( B¾…Ž
/‹
£õ
§%IJ
!"##
>J 1; 4¥
½Ù(’“? %Ýs)
!''
#7!+ +G
= Þ ¯ÿO Þ…Ž n
, ( ×Û
>ffÁ¾
Š ¯ÿ
>
#…+(
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
X
k
>J
8'
£õ ¯ÿ/
Яÿ þ çfFI_\F i_ >J
I_ör
tnöq4
LA¯J
J(æs ½Ù(/ >
/‹
H%GH%h F
FI_\F jI ÃAø IB(C ùú|HJ
H%IJ /
4 >MHJ½Ù(’“ ?
H G
Fm4¡H%nM_\FnÞª|i? F
c n 4Lf¯%qÃ>J
X ?6¯ B(C
8 â 1. ð ‡ G
F Ab
kKw ²7Gc > nM_tnw÷ ªc
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Àb
I8
E c FI_
kKB(C4çw 4
HJ G
ùú
ªKJIŒFI_ÃL [>%
M>I
n K /•
!
ÿnGH%>k_FI_%abcJ
kF
?Kk>J
\ i_ >% If>A‹
J
ŒFI_%abc?de ¶
>%>kH
>J
\ i_?
?
1( FIÐÓ
OB
PQ°
B(CGR iK
1(
k nJM ck>J
¢ê
4A¯%bc
4&®
¢ê
1
(: &
&®
ˆm/
1( &®
/
?OB
Þœ Ž
&®4>% |¯|F
AM°H% ŠÓAK|HJ¯cš
i_ ?H%AM/
˜
MßÙ(
? Aib6A ?AHJ¯š
MßÙ( l4
Ç•È
I%
IŠ
5>%bc i_ ?HJ
#Oóh !"
B(CnMHJ¶
#p$n49æk>J
t yÃL
/ˆ‰ i_
¢ê /
F¼G {%bcJ & $
˜6¸R (Ž
FAd8 ÅIŠ %&Ò>%J'H%l ?H%
HH%JH%ÏHJMØp‹
H%Ò'ŒF
FK Ð7 , ( L²%hJMÁ˜
AcJ
æs B(C è(>%
‹'() *( H%=Cœ? 'ŒFA) cJ
Ž *+f4jI¡M cJ
B(C
k/FnAbF>% &®
t U>
, PjXYnXc?K ø¢|¯cšn
:4uH%L {%bc
nM_\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ô ?OB
0
׌FI_ƒc çû
‹
§ff Kk
Á3 / B„()
#&
UIJ 2¶ŒFI_
Œ -.4Ÿ¯ ‹
Ubk
/0 aI%
0
a¯
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
IFI_\Fn\ ƒc4˜5>>%Ik
F B 9 E° B* (' 4
de
3 () ˆ¬
c?K ê6 =)}n(Cã c J$ 276 / ?š O Ù(?OB
½
34
8
° 8)
!>?I¹^
kJ ! $ '
& FIHJX
a¯ 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,१ढ़⏓⎘⎧⎅⏌⎯⎨ろ ⏤␯␄␦␙⏠␯␄⎨⎃⏌ PLNXWWHUUE ⎌⏊஬⏔⎨⏃ুਹ
ਉ⎰⎫⎌⎫⎌٪⎉⎧⎎⎿⎜⏔ゎ
⎞⎔⎨ろ‫ܞ‬Ѿ⎰7ZHHW⏓ࠟண⎚⏌⎩⎔⏎⏓ਘӆ⏋⎬⎘⎧஬⏔⎨⎅⎐⎔⎩⎬⎘⎿⎚ゎ ๲ѽ⎚⏌⎠⏂⎬⎰PLNXWWHU⎯␓␥⏬
⏠␯Նۚ⎬ԟ⎚⏌ગߨ⎍಩์⎩⎫⏋⎿⎚⎍ろ಩์⎬⎫⎤⎠⏊⎞⎯୙୞঑෗⎘⎧⎅⎐⎯⎨अజ⎃⏋⎿⎜⏔ゎ ⎿⎠ろ#WRVKLBD
⎖⏔⎍␓␥⏬⏠␯⎯ࢆ⎎൘⏓ധ⎬Ւߏ⎩⎘⎧ࢆ⎅⎧⎅⏌⎩ް⎇⎯⎨⎞⎢⏊⏃‫⎅⎖⎡⎐⎧⎘⎬۪ދ‬ゎ
PLNXWWHU⎯7ZHHWࠟண⎬⎰ॽ⎫⎍⏊⎯5(67 $3,⎬⏉⏌⏃⎯⎩8VHU6WUHDP⎬⏉⏌⏃⎯⎯ࠦຳ⎍⎃⏋⎿⎚⎍ろ
5(67 $3,⎯൘⎍੺ࡸ⎨ѽ঑⎘⏅⎚⎅⎯⎨⎔⎤⎢⏓ਘӆ⏋⎬ѽ঑⎘⎧⎅⎎⎿⎚ゎ ␑⏝⏠␧⎰ FRUHDGGRQUHVW
UHVWUE ⎨⎚ゎ
␦⏵␄ FRUHDGGRQUHVWUHVWUE
FRGLQJ XWI 5HVW $3, ࡎ ၿ ᙎ ᷔ ࡒ ࢤ ࢉ ࣅ ࣎ ࢉ ࣘ ࡹ ᘯ ᕿ ࡀ ࡲ ࢼ ࣎ ࢕ ࢉ ࣘ
3OXJLQ FUHDWH UHVW GR
GHI VHOI GHILQHBSHULRGLFDOBH[HFXWHU DSL LQWHUYDO FRXQW VXFFHVV FRXQWHU
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 VHUYLFH QRWLFH ERRW SHULRG #FUDZOHUV HDFK ^ _ V _ V FDOO VHUYLFH `
5HVHUYHU QHZ ^
VWDUW VHUYLFH ` HQG
RQERRW GR _ VHUYLFH _
VWDUW VHUYLFH HQG
HQG
઄⎅⎨⎚⎮ゎ ⎞⏍⎨⎰ろࡼ౵⎬஬⏔⎨⎅⎎⎿⎘⏈⎇ゎ
۱ෳ⎨⎰ 3OXJLQFUHDWH UHVW ⎩⎘⎧ UHVW ⎩⎅⎇෕ঽ⎯␓␥⏬⏠␯⏓‫ݩ‬ढ़⎘⎧⎅⎿⎚ゎ ⎔⎔⎨␒␩⏿⏫⏓୔⎘⎧
⎅⎿⎚⎍ろ⎔⎯␒␩⏿⏫⎰ਓܽ⎬಻ь⎖⏍ろ␒␩⏿⏫௅⎨␔␧␍␝⏹⏿␅⏓‫⏋⎠⎘ࡥ⎴څ‬ろ಩์⎫ബॅ⎫⎪⏓଑զ⎘⎠⏋⎘⎧
⏠␕␯␄␋␯␅␥⎯୕໰‫⏓׋ݩ‬۱⎫⎅⎿⎚ゎ
゚۱ෳ⎯ GHILQHBSHULRGLFDOBH[HFXWHU ⎰௅ೱ⎨‫⎨⎯⎫␅⏿⏹␝⏌⎅⎧⎤ޡ‬ろ⎩⏋⎃⎉⎛௅฻⎰ટ⎅⎧⎋⎅⎧
஬⏀छ⏂⎿⎚ゎ ⎚⏌⎩ろ۱ෳろ۱ෳ⎨⎞⏍⎟⏍⎔⎯␝⏹⏿␅⎍‫⎮⎚⎿⎅⎧⏍⎖ࡥ⎴څ‬ゎ ⎫⎬⏅⏊ #FUDZOHUV ⎬⎔⎯
␝⏹⏿␅⎯റ⏋ખ⏓௡⏍⎧⎅⎿⎚ゎ
߹⎰ GHILQHBSHULRGLFDOBH[HFXWHU ⎰ろキ LQWHUYDO ഇ⎕⎩⎬ DSL ⏓‫⎴څ‬ろढ़‫ٌ⏊⎠⎘ڸ‬ї⏓ωॅ⎬⎘⎧ VXFFHVV
⏓‫⎷څ‬ギ⎩⎅⎇␥␜⏼ߧ⏓റ⎚␝⏹⏿␅⎨ろ ۱ෳろ۱ෳ⎨⎰⎔⎯␝⏹⏿␅⎍റ⎚␥␜⏼ߧ⏓జໆ⎬ҳ௽⎘⎧⎅⎿⎚ゎ ␥
␜⏼ߧ⎰۱ෳ⎨ VHUYLFH ⎩⎅⎇ωॅ⏓ࠟ⎤⎧⎅⎧ろ۱ෳ⎨ VHUYLFHFDOOBDSL ⏓‫⎫ࠞ⎍⎯⎇⎅⎩⎚ࡥ⎴څ‬Ն௾⎨
⎚ゎ ⎔⏍⎬⎥⎅⎧⎰‫⎚⎿⎘ࡧڤ‬ゎ ⎞⎘⎧⎔⎔⎨ҳ௽⎖⏍⎠␥␜⏼ߧ⎰ろ۱ෳ⎯ VWDUW ⎯ય⎨‫⎚⎿⎅⎧⏍⎖ࡥ⎴څ‬ゎ ⎔
⎯␝⏹⏿␅⏓⏉⎐٪⏌⎩ろ݂‫ ⎬ڤ‬5HVHUYHUQHZ ⎩⎅⎇⎯⎍⎃⏋⎿⎚⎮ゎ ⎔⏍⎰PLNXWWHU⎯␥⏠␒␥␦⎨ろ‫ޱ‬଑⎘⎠ೀ
ॅ⎍‫ر‬Ѭ⎘⎠‫߹⏓⏫⏿␩␒⎨ڤ‬۱⎚⏌⏃⎯⎨⎚ゎ ⎥⎿⏋ろ VWDUW ⎍‫ ⎩⏌⏍⎖ࡥ⎴څ‬#FUDZOHUV ⎯␥␜⏼ߧ⏓߹۱⎘⎠‫ڤ‬ろ
ೀ‫ ⎠⎿⎬ڤ‬VWDUW ⏓‫⎇⏉⎚ࡥ⎴څ‬าช⎘⎧⎅⏌⎯⎨ろٌї⎩⎘⎧ഇ⎕⎩⎬ #FUDZOHUV ⎯␥␜⏼ߧ⎍‫⎬ߏ⏌⏍⎱څ‬
⎫⏋⎿⎚ゎ
⎠⎡⎘ろ⎔⏍⏓߹‫⎬ࡾ݂⎰⎬⏂⎠⏌⎚ټ‬Ѿ VWDUW ⏓‫⏔⎜⎿⎒⎅⎱⏍⎒⎫⏊⏅⎨⏔څ‬ゎ ⎔⎯ฉෳ⏓੽⎇⎯⎍゚
۱ෳ⎯ RQERRW ⎨⎚ゎ PLNXWWHU⎯␓␥⏬⏠␯⎨⎰ろ⎔⎯⏉⎇⎫ࢆ⎎൘⏓⎚⏌⎩ ERRW ⏠␕␯␄⎬਻⎘⎧␒␩⏿⏫⏓⏠␕␯
␄␋␯␅␥⎩⎘⎧୕໰⎚⏌⎔⎩⎍⎨⎎⎿⎚ゎ ERRW ⏠␕␯␄⎰PLNXWWHU⎯Քஓߗ⎬λ୞⎡⎒౎१⎚⏌⎯⎨ろ⎔⏍⎨ VWDUW
⎯݂ࡾ⎯Ѿ⎍‫⎚⎿⎜ࡥ⎴څ‬ゎ
⎔⎔⎨ ERRW ⏠␕␯␄⎯ωॅ⎩⎘⎧ VHUYLFH ⎍୔⎖⏍⎧⎅⎿⎚⎍ろ⎔⏍⎰⎫⏔⎨⎘⏈⎇⎌ゎ VHUYLFH ⎩⎅⎇⎯
⎰ PLNXWWHU ⏳ ⏵ ␂ ␜ ⎍ ଚ ֤ ⎘ ⎧ ⎅ ⏌ろ 7ZLWWHU ⎯ $3, ‫ ⏓ ⎘ ࡥ ⎴ څ‬ળ ࣐ ш ⎚ ⏌ ⎠ ⏂ ⎯ ⏦ ␒ ⏴ ⏣ ⏫ ␄ ⎨ろ ⎠ ⎩ ⎉ ⎱
IULHQGVBWLPHOLQH ⏓੓ωॅ⎬⎘⎧ VHUYLFHFDOOBDSL ⏓‫⎩⎷څ‬7ZHHW⎯௅ೱ಺‫ ⏌⎃⎨ټ‬0HVVDJH ⏫␥⏵⎯⏠
␯⏵⏻␯⏵⎯జໆ⎍റ⎤⎧⎎⎿⎚ゎ ⎖⎤⎎ GHILQHBSHULRGLFDOBH[HFXWHU ⎨٪⎠૳⏋⎨⎚⎮ゎ
#FUDZOHUV ⎯યङ⏓٪⎧⎅⎎⎿⎘⏈⎇ゎ ۱ෳ⎯ࡾՃшߗ⎬ろ 3OXJLQFDOOSHULRG 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 ⏓⎿⎩⏂⏌⎯⎰߄௨ड़⏓ࣘ⎓⏌⎩
⎅⎇‫ڹ‬ї⏃⎃⏋⎿⎚ゎ
⏠␕␯␄⏓૰⎤⎧
UHVWUE ⎨ XSGDWH ⏠␕␯␄⎬⏉⎤⎧୯⎓⏊⏍⎠7ZHHW੬⎰⎪⎔⎹۱⎐⎯⎨⎘⏈⎇⎌ゎ XSGDWH ⎨JUHS⎚⏌⎩⎅⎐⎥
⎌␎⏿␄⎘⎿⎚⎍ろ⎔⎔⎨⎰ FRUHDGGRQIULHQGBWLPHOLQHUE ⏓٪⎧⏀⎿⎘⏈⎇ゎ
␦⏵␄ FRUHDGGRQIULHQGBWLPHOLQHUE
FRGLQJ XWI 0RGXOH QHZ GR
PDLQ
*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
JLQFUHDWH ⎬␒␩⏿⏫⏓୔⎚⎯⎨⎰⎫⎐ 3OXJLQDGGBHYHQW ⎫⎪⎨⏠␕␯␄␋␯␅␥⏓୕໰⎘⎧⎅⎿⎚⎍ろԷඕ⎰
UHVWUE ⎩ஔ⎙⎨⎚ゎ
゚۱ෳ⎨⎰ ERRW ⏠␕␯␄⎯␋␯␅␥⏓୕໰⎘⎧⎅⎿⎚ゎ PXLBWDEBUHJLVW ⎰⏻␒⏓୕໰⎚⏌⏠␕␯␄⎨ろ۱ෳ
⎨१ढ़⎘⎧⎅⏌ *WN7LPH/LQH ⎯⏠␯⏵⏻␯⏵⏓୔⎘⎧⎅⎿⎚ゎ
゚۱ෳ⎍ XSGDWH ⏠␕␯␄⎯␋␯␅␥⎨⎚ゎ ੺ࡸ⎬ PDLQ ろ⎚⎫⏐⎢␗⍬␜⏻⏠␜␥⏠␯⎬਻⎘⎧୔⎖⏍⎠7ZHHW
⏓ωॅ⎬⎘⎧ DGG ⏓‫⎚⎨⎒⎡⏌⎅⎧⎘ࡥ⎴څ‬ゎ
ԑ੺⎨⎚⎮ゎ ⎡⎒⎪⎔⏍⎡⎒⎡⎩ъ⎍Ք⎎⎧⎅⏌⎌ഇ⎌⏋⎿⎜⏔ゎ⎖⏊⎬ধ⎤⎧⏀⎿⎘⏈⎇ゎ
⏻⏠␜␥⏠␯
PLNXWWHU⎯␗⍬␜⏻⏠␜␥⏠␯⏻␒⎰ *WN7LPH/LQH ⎯⏠␯⏵⏻␯⏵⎨ろচ‫ ⎰ٿ‬FRUHPXLFDLURBWLPHOLQHUE ⎬
⎃⏋⎿⎚ゎ FRUHPXLJWNBWLPHOLQHUE ⎨⎰⎫⎅⎯⎨શΤ⎘⎧⎐⎡⎖⎅ゎ
␦⏵␄ FRUHPXLFDLURBWLPHOLQHUE
FRGLQJ XWI UHTXLUH JWN UHTXLUH FDLUR FODVV *WN 7LPH/LQH *WN 9%R[
HQG
PLTXLUH
PLTXLUH
PLTXLUH
PLTXLUH
PLTXLUH
PLTXLUH
PXL PXL PXL PXL PXL PXL FUXG FHOOBUHQGHUHUBPHVVDJH WLPHOLQHBXWLOV SVHXGRBPHVVDJHBZLGJHW SRVWER[ LQQHUBWO PLTXLUH FRUH PHVVDJH PLTXLUH FRUH 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 ⎯଑զ⎰ FRUHPLTXLUHUE ⎬⎃⏋⎿⎚ゎ
␦⏵␄ FRUHPLTXLUHUE
FRGLQJ XWI ེ࠶ࡕ੝ࡒᘺళࡒᾓࡊ⣶ࡥࡳࡲࣆࢢࢨࢮࡹၿ∄ࡀࡲ
UHTXLUH VHW ࣄ࢔ࡊࡍ࠲ࡶࠫࠫ࡯ࡔ࠮ࠀ
ࢩࢉࣘࢫ࣐࣡ࠫࠫ࡯ࡔ࣡ࠀ
ࡐ࠭⛆ࠫࡕ࠲ࡹᘲ࠶ࡏ࢘࣡ࢮ࡯ࡱ⬱࠶ࡑࡱࡄ࠭ࡇ࠲ࡰ✆࠾࠶ࡖᘲ࠲ࡑࠫ࠸ࡐࠫࠫ࡯ࡔ࠮ࠀ
࡜ࡆࡱࡎ႞ࠫᗐࡏ࠲ࡒᢔࠫࡍࡆࡰⴄࡒࡥࠫࡍ࠶ࡳࡲࡺࡇ࡯࣡ࠀ
Ꮢࡑ࠳ࡰࡑࡺࡍࡶ࠲ࡱ࡫ࡀࠫ✠ᖱࡑࡺࡇࡴ࠭ࠀ
⛠ 0LTXLUH PLTXLUH ࡕ ࢍ ࢉ ࣏ ࢇ ࢞
GHI PLTXLUH DUJV 0LTXLUH PLTXLUH DUJV HQG
#WRVKLBD⎖⏔⎯␛⏫͵⎍୆⏐⎤⎧⎎⎿⎚⎮ゎ ⏹⍬⏵⏯⍬␅⎿⎨⏀⎤⎐⏀⎐⎨⎚ゎ
⎞⏍⎰⎖⎧⎋⎎ろ PLTXLUH ⎯ඕਹ⎰␞⏴␡⍬␧␝⏹⏿␅⎬ࡽ๲⏓Ϋ࣬⎘⎧⎅⏌⎡⎒⎯⏉⎇⎨⎚ゎ ඕਹ⏓٪⎧⏀⎿⎘⏈⎇ゎ
␦⏵␄ FRUHPLTXLUHUE
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 _
UHQGHU
ODPEGD ^ _ 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\P
LI 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 PDWFK
UE 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 ⎚⏌⎡⎒⎨
⎚ ゎ
⏻⏠␜␥⏠␯݁
⎞⏍⎨⎰ *WN7LPH/LQH ⎬෸⏋⎿⎘⏈⎇ゎ
⎔⎯␑⏝⏠␧௅⎨٠‫⎩⏌⎒⎌⏓ݲ‬ഇ⎌⏋⎿⎚⎍ろ DGG ⎫⏔⎧␝⏹⏿␅⎰⎔⎯␑⏝⏠␧⎬⎰⎃⏋⎿⎜⏔ゎ ⎘⎌⎘গଟ⎯
FDLURBWLPHOLQHUE ⏓٪⎧⏀⏌⎩ろ۱ෳ⎨ *WN7LPH/LQH8WLOV ⏓ LQFOXGH ⎘⎧⎅⎿⎚ゎ ෕ঽଯ⎬⏃⎅⎌⎬⏃҃⎘
⎅⎯⎨ FRUHPXLJWNBWLPHOLQHBXWLOVUE ⏓٪⎧⏀⎿⎘⏈⎇ゎ
␦⏵␄ FRUHPXLJWNBWLPHOLQHBXWLOVUE
BPHVVDJHB ࡹ ⤚ ౳ ࡀ ࡲ ࠀ ⧋ ల ࡎ ♣ ᕝ ࡕ 0 H V V D J H ࢏ ࢻ ࢝ ࢌ ࢔ ࢭ ࡹ ᧲ ࡀ ࠺ ࡏ ࡩ ࡎ ࠴ ࡲ ࠀ
GHI DGG PHVVDJH LI PHVVDJH LVBD " (QXPHUDEOH WKHQ
VHOI EORFNBDGGBDOO 3OXJLQ ILOWHULQJ VKRZBILOWHU PHVVDJH ILUVW HOVH
P
3OXJLQ ILOWHULQJ VKRZBILOWHU > PHVVDJH @ ILUVW ILUVW
VHOI EORFNBDGG P LI P LVBD " 0HVVDJH HQG
VHOI HQG
DGG ⎯଑զ⎍⎃⏋⎿⎘⎠ゎ
⎩⏋⎃⎉⎛ PHVVDJH ⎰జໆ⎍റ⎤⎧⎐⏌⏃⎯⎩⎚⏌⎩ $UUD\ ⎰ (QXPHUDEOH ⎫⎯⎨۱ෳ⎯ LI ⎬ω⎤⎌⎌⏋⎿⎚ゎ
⎔⎔⎨⎰ 3OXJLQILOWHULQJ ⎬ PHVVDJH ⏓୔⎘⎧ろ⎞⎯ٌї⎯গஏ์৔⏓ EORFNBDGGBDOO ⎬୯⎓⎧⎅⎿⎚ゎ
3OXJLQILOWHULQJ ⎰PLNXWWHU⎯␓␥⏬⏠␯Ն௾⎯࡚์⎫⏃⎯⎨ろ⏠␕␯␄⎩ஔโ⎬⎘⎧␑⏟␧⏻⏓୕໰⎘⎧⎋⎐⎔⎩
⎨⏦␒⏴⏣⏫␄⏓‫ߢ⏊⎌ڤ‬ศ⎬৭‫⎚⎿⎎⎨⎍⎩⎔⏌⎚ݩ‬ゎ ⎔⎔⎨⎰ PHVVDJH ⏓ VKRZBILOWHU ␑⏟␧⏻⎬૳⎘⎧⎅⎿⎚
⎍ろ⎔⎯␑⏟␧⏻⎰ 0HVVDJH ⎯జໆ⎌⏊಺ߟ⎚⏌⏃⎯⎡⎒‫⎧⎘ޝ‬਩⏓‫⎚⎨⏻␧⏟␑⎯⏂⎠⏌⎚࢑ݪ‬ゎ ⎠⎩⎉⎱␛␡⍬␄⎘
⎧⎅⏌␢⍬⏲⎯7ZHHW⎰$3,⎌⏊ࠟண⎘⎠ٌї⎬ԥ⎿⏍⎧⎅⎿⎚⎍ろ7/⎬಺ߟ⎘⎧⎰⎅⎒⎫⎅⎯⎨⎔⎯␑⏟␧⏻⎨‫ݪ‬
࢑⎖⏍⎿⎚ ゎ ⎿⎠ろ␑⏟␧⏻⏓૳⎘⎠ٌї⎬਻⎘⎧ ILUVW ⏓ࠟ⎤⎧⎅⏌⎯⎰ろ 3OXJLQILOWHULQJ ⎍яബૠ⎯ωॅ⏓ࠟ
⏌⎠⏂ろറ⏋ખ⎰์৔⎨⎃⎤⎧⏃జໆ⏓റ⎚⎔⎩⎬⎫⎤⎧⎅⏌⎠⏂⎨⎚ ゎ
⎞⏍⎨⎰ EORFNBDGGBDOO ⏓٪⎧⏀⎿⎘⏈⎇ゎ JWNBWLPHOLQHBXWLOVUE ⎬⏃⎔⎯␝⏹⏿␅⎰⎃⏋⎿⎚⎍ろ LQFOXGH ‫⎯ٴ‬
FDLURBWLPHOLQHUE ⎨݁଑զ⎖⏍⎧⎅⏌⎯⎨⎞⎢⏊⎍‫ ⎚⎿⏍⎱څ‬ゎ
UHQGHU>FDLUR@
⎰ 3URFFDOOFDLUR ⎩ஔ⎙⎨⎚ゎ5XE\ವࡵ⎯Ւ൚⎨⎚⎍ろ⎅⎿⎅⎢૥ӽଯ⎨⎰⎫⎅Չ⎍⎘⎿⎚ゎ
␦␏⏴␣␯⎌⏊⎰FDLUR⎬⏉⏌ಾѳ⎍␃␑⏥␧␄⎬⎫⎤⎧⎅⎿⎚ゎ
ำક⎨⎚⎍Ιঽ␓␥⏬⏠␯⏓‫⎎⎩⎠⎅⎧⎤ݩ‬ろ␃⏟␨⏫␄␦⎯ч⎬ PDLQUE ⎩⎅⎇෕ঽ⎨ඕਹ⏓ટ⎅⎧⎘⎿⎅ろ␩⍬␅⎖⏍⎫⎐⎧௻⏔⎡⎔⎩⎍⎃⏋⎿
⎘⎠ゎ
‫״‬ਹଯ⎫ࡽ๲⎰ FRUHDGGRQSURILOHUE ⎬⎃⏋⎿⎚ゎ
ωॅ⏓ GHI IDUJV ⎯⏉⎇⎬⎘⎧ࠬ⎒⏌⎩ろ I ⎯‫ ⏃⎨⎘ࡥ⎴څ‬DUJV
>@ ⎩⎫⏋⎿⎚⎮ゎ
⎠⎡⎘યङ⎰⎿⎤⎠⎐ஔ⎙⎫⎯⎨ろ␦␑⏝⏫⏻␦␯⏬⎖⏍⎧⎫⎅⏃⎯⎩ް⏐⏍⎿⎚ゎ
␦⏵␄ FRUHPXLFDLURBWLPHOLQHUE
ᕿ ࠾ ࠫ ࡩ ࡕ ࠲ ࡰ Ⱨ ᴳ ࡒ SDFN࠾ࡍࠫ࠶ࠀ
GHI EORFNBDGGBDOO PHVVDJHV UHPRYHV DSSHQGV
PHVVDJHV SDUWLWLRQ ^ _ P _ P > UXOH @
GHVWUR\ `
UHPRYHBLIBH[LVWVBDOO UHPRYHV UHWZHHWV DSSHQGV
PHVVDJHV SDUWLWLRQ ^ _ P _ P > UHWZHHW @ `
DGGBUHWZHHWV UHWZHHWV DSSHQGV VRUWBE\ ^ _ P _ P PRGLILHG WRBL ` GHDFK PHWKRG EORFNBDGG HQG
࣏ ࢩ ࢉ ࣡ ࢭ ࡹ ⤚ ౳ ࡀ ࡲ ࠀ BPHVVDJHVB ࡒ ࡖ 0HVVDJH ࡕ ⧋ ల ࡹ ᑗ ၿ ࠾ ߿ ࡄ ࡳ ࡰ ࡖ
UHWZHHWࡎࡑ࠸ࡳࡗࡑࡰࡑࠫ
GHI DGGBUHWZHHWV PHVVDJHV PHVVDJHV HDFK ^ _ PHVVDJH _
LI QRW LQFOXGH " PHVVDJH UHWZHHWBVRXUFH EORFNBDGG PHVVDJH UHWZHHWBVRXUFH HQG
`
HQG
゚۱ෳ⎨⎰ GHVWUR\ ␝⏿⏷⍬⏴⎯ࡽ๲⏓⎘⎧⎅⎿⎚ゎ ⎔⏍⎰7ZHHW⏓‫⎬⎎⎩⎅⎠⎘࢑ݪ‬௅ೱଯ⎬१ढ़⎖⏍
⏌␝⏿⏷⍬⏴⎨ろ P>UXOH@
GHVWUR\ ⎯⎩⎎⎰ң୻⎚⏌,'⎯7ZHHW⏓‫⎚⎿⎘࢑ݪ‬ゎ 8VHU6WUHDP⎬ঋਞ⎘⎧⎅⏌⎩
⎎⏃ GHOHWH ⏠␕␯␄⎍ಓ⏔⎨⎎⎿⎚⎍ろPLNXWWHU⎨⎰⎔⎯⏠␕␯␄⎰ࡽ๲⎘⎧⎅⎫⎅⏉⎇⎨⎚ ‫׀‬ය⎯⎃⏌ञ⎰ FRUH
DGGRQVWUHDPLQJVWUHDPHUUE ⏓஬⏔⎨⏀⎧⎐⎡⎖⎅ゎ
゚۱ෳ⎰␦␀⏠⍬␄⎯ࡽ๲⎨⎚ゎ ␑⏥␩⍬⎘⎧⎫⎅ञ⏅ॽ⎯7ZHHW⎍␦␀⏠⍬␄⎖⏍⎧⎎⎠⏊ろ⎞⎯7ZHHW⏓
7/⎬಺ߟ⎘⎫⎅⎩⎅⎒⎫⎅⎯⎨ࡽ๲⎘⎧⎅⎿⎚ゎ
۱ෳ⎰⎞⎯਩ろ⎥⎿⏋ೞ૳⎯7ZHHW⎯ࡽ๲⎨⎚ゎ 7ZHHW⏓ۖईߗԝ⎯ई⎘⎅ࡼ⎬⏹⍬␄⎘⎧⎌⏊ү 0HVVDJH ⏓
EORFNBDGG ⎯ωॅ⎬⎘⎧‫ ⎚⎿⎅⎧⎘ࡥ⎴څ‬ゎ GHDFK ⎩⎅⎇⎯⎰٪Ӿ⏍⎫⎅␝⏹⏿␅⎨⎚⎍ろ⎔⏍⎰ HDFK ⎯ઢБ౦⎨ろ
ਓܽ⎬ু⎧⎯์৔⎬਻⎘⎧␧⍬␓⎚⏌⎯⎨⎰⎫⎐ろі⎫‫⏓⎅܄ܝ‬٪‫ ⎥⎛⎘ࢢ⎧⎤⏊ظ‬HDFK ⎯ࡽ๲⏓⎘⎧⎅⎐␝⏹⏿␅⎨
⎚ゎ ⎔⎯߹ਂ⎬⎰ 'HIHUUHG ⎩⎅⎇⏫␥⏵ FRUHOLEGHIHUUHGGHIHUUHGUE ⎍‫ ⎚⎿⎅⎧⏍⏐ޡ‬ゎ
EORFNBDGG ⎰ࢢ⎘๸⏍⎠⎩⎔⏎⎨চ‫⎚⎿⎅⎧⏍⎖ٿ‬ゎ
␦⏵␄ FRUHPXLFDLURBWLPHOLQHUE
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 Ιҙ⎯‫ຶ⎩⏌⏍⎖୔⎍ؠ‬ҙ⏓୯
⎓⏌⏉⎇⎬⎘⎧⎅⎿⎚ゎ ⎔⎯␝⏹⏿␅⎰ FRUHXWLOVUE ⎨চ‫⎚⎿⎅⎧⏍⎖ٿ‬ゎ
⎔⎔⎨⎯ࡽ๲⎯ඕਹ⎰゚۱ෳ⎨⎚ゎ ۱ෳ⎩۱ෳ⎯ ZKHQ ঐ⎰ EORFNBDGGBDOO ⎌⏊๝⎠⎩⎎⎬⎰
ࡽ๲‫⎨⎯⎫⏀݌‬ろ߹߸ଯ⎬⎰ BDGGPHVVDJH ⏓‫⎚⎿⏋⎫⎩⎒⎡⎷څ‬ゎ
BDGGPHVVDJH ⏓٪⎧⏀⎿⎘⏈⎇ゎ
7/⎯⏹⍬␄⎰7UHH9LHZ⎍⏅⎤⎧⏌⎯⎨⎔⎯⏹⍬␄⎰⎅⏊⎫⎅Չ⎍⎚⏌⎘ろ⎞⏃⎞⏃պࡼ⎯⏉⎇⎫Չ⏃⎘⎿⎚ゎ
M4XHU\⎯'HIHUUHG⎩ஔ⎙⏉⎇⎫ӽ⎙⎨⎚ゎ
␦⏵␄ FRUHPXLFDLURBWLPHOLQHUE
GHI BDGG PHVVDJH VFUROOBWRB]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 @ WRBV
LWHU > *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 ⎍੽୻⎘⎧⎅⎿⎚ゎ ‫׀‬ය⎯⎃⏌ञ⎰ FRUHPXLFDLURBPLUDFOHBSDLQWHUUE ⏓஬⏔⎨⏀⎧⎐⎡⎖⎅ゎ
゚۱ෳ⎨⎰ろ*7.⎯ 7UHH9LHZ ⎬୔⎚␃⍬⏻‫* ߧآ‬WN&58' ⎬ PLUDFOHBSDLQWHU ⏅7ZHHW⎯೒юࣣൎ
⏓‫⎚⎿⎅⎧⎜ݗ‬ゎ 7UHH9LHZ ⎨⎰⎔⎯ࣣൎ⏓‫⎧⎘⎬ٴ‬ѳ෣⏓ಾѳ⎚⏌⎯⎨⎚⎍ろ*7.⎯ѽ঑⎰ඕۣ⎯౮Ξ⏓૝⎉⏌⎯
⎨Ӎ͵⎘⎿⎚ゎ #WO ⎩⎅⎇⎯⎍ *WN&58' ⏓‫* ⎠⎘ࢨز‬WN7LPH/LQH,QQHU7/ ⎨ろ 7UHH9LHZ ⎍␃⍬⏻⏓଱উ⎬ࡽ
๲⎨⎎⏌⏉⎇⎬⏧␥␜⎯঎଑⎫⎪⏓സߖ⎘⎧⎅⎿⎚ゎ
۱ෳ⎰⏻⏠␜␥⏠␯⎬ກ⏍⏌7ZHHWॅ⎍ਪ⎐⎫⏋⎚⎏⎠⎩⎎ろ‫΄⏓␦␞␝⎧⎤⎅⎧⎘࢑ݪ⏊⎌⎯⏃⎅ڄ‬స⎘⎫⎅⏉
⎇⎬⎚⏌⎠⏂⎯৉ટ⎨⎚ゎ
⎃⎩⎍⎎
7ZHHW⎯ࠟண⎌⏊⏠␕␯␄⎬⏉⏌⎠⏊⎅Ѿ⎘ろ⏻⏠␜␥⏠␯⎹⎯૰ю⎿⎨⏓٪⎧⎅⎎⎿⎘⎠⎍ろ⎅⎌⎍⎡⎤⎠⎨⎘⏈⎇⎌ゎ
0LUDFOH3DLQWHU ⏅⏤␯␂⏟␂⏟⎯ࡽ๲ろ 'HIHUUHG ⎯߹ਂ⏃⎫⎌⎫⎌෣ళ⎅⎯⎨⎚⎍ろ޿෣⎯୙‫ࣅ⎰⎨⎔⎔ࣘ܄‬ѻ⎨
⎎⎿⎜⏔⎨⎘⎠ゎ ⎔⎯Ւߏ⏓஬⏔⎨‫׀‬ය⎍⏐⎅⎠ञ⎰ॖಒ⎔⏍⏊⎯⏯⍬␅⏃஬⏔⎨⏀⎧⎐⎡⎖⎅ゎ ⎞⎘⎧҉ຜ⎨⎎⏌୅
⏅␌⏬⏓٪⎥⎒⎠⏊ KWWSGHYPLNXWWHUKDFKXQHQHWSURMHFWVPLNXWWHU ⎬⏽⏭⏿␄⏓উ⎤⎠⏋␍⏿⏽⏓਄⎤⎠⏋
⎘⎧⏀⎧⎐⎡⎖⎅ゎ
⎞⏍⎨⎰ゎ
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
'123
4256(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(0
5B¦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>)()7
2!"
2
2§¨© +?ÄÅÆÇ3
2
24 '
2$%24 '
/
ºl+?È
>
d0/6
ÉÊI2
I*+,
9°*´R2
®I)
(
1
Y0
yg
*6Ë)5
EÌÍ
•3/6&ÎÏ?
5$6 5B+?/6&ÎÏ?Y0
6(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)(*+,
>B
d4)•(2o
j&£±›
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Ûú©
!#
0O+·7
/> YE vù
5ô % i×
(1
j
Œõ©
P
üý+?/6&O°7°AR6
þ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
‚‚
9 (
9 (
§
V
R)D?
54)é\
D?
‚‚ B·,
F
F
B
0
#
--B
(4 (
;;
?*
+
- (
-'' (-G
''
G
''
G
+
?(
(-''
(-''
(-''
(-''
?( G
? # ? ( *G
=
# (-''?H#*4 2 (
( # ? ( *G
#;
?
? #=
?
? ''=
(
-
''(
FF 2(
''( BB
G
E" >3 >G00
(
(
( #
# ( 4
/
( ( #
+
''(
/
(
&2 FF
-
**G
FF 2) 2 FF
% 8 (
*G
#
**G
'' I( -
24 2A7A72*G
-o
jOv
''
G
t
I)?é
J *
FF
#* FF
''
G
G
/
''
BI542,//*Oµ¶
EE ‰Oo
\-
Ù
(6
7:
©+?
I
,
‰
'1?6
-o
jO
†
&t
9
I2
O
v
t
I
÷E*I2,
I)(?
OIŸ05óé'1
%
V
#
K
FG
3
S4)\ª
-
L
8
8
n>7
•t& €O°*+,
% 8 (
D67
•1?6
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
::
(
(
!
!
!
2
2
ã ø
(
(
""
H F
P
P
'' &%
"- 8
"- 8
) :B 6C #*
2
2 ?
(
H (
( ,2
(
,,2
"
"
(
- 8
F:
(
26 -
'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>)(*
+,
1‘•1?Š&I*+,C R:% 6 C8
ˆ V
M ?
T
U ?
ƒ
d4) v
ÎÏ?Y0
I){?
$6S
d4)
v
+?VïI7
V((OIŸ0,
D6&°
<
25Bd4)°)7Ð3
Ö4)(2 ¿ 4&/
?6(0
RS57X8
(
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?
G
…&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?
?5
O-ÎÏ?5q5B
65zRO{2(O+·,1‘6
5 Oë;@<&554)(?
&£±
Q
ÍF&I*+,
65
9:
KL
Y0
P
(6 O,
i
vHI
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。本稿ではその導入方法
等を複数解説し、「難しい」というイメージの払拭を試みる。
Arch Linux で最新の mikutter を使おう
2
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]
==> y
miku@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 <[email protected]>
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
: mikutter
Name
: mikutter-svn
Version
: 811-1
URL
: http://mikutter.hachune.net/
Licenses
: GPL v3
Groups
: None
Provides
: mikutter
Depends On
: ruby ruby-gtk2 ruby-cairo
Optional Deps : libnotify
Conflicts With : mikutter
Replaces
: None
Download Size : 1539.11 KiB
Installed 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
: None
Description
: a moest twitter client
2.5
ソースから野良ビルド
mikutter が最新でも、ruby や ruby-gtk2 が古くては面白くない。6 そこで、ruby と rubygtk2 をソースからビルドする手順も紹介しておく。これは Arch Linux だけではなく Debian
等でも、パッケージ名を読み替えつつ同様の手順を踏むことで行える。
6
Arch Linux では最新の安定版が利用できることが多い。
5
2.5.1
ruby のビルド
以下が ruby の trunk7 のビルド手順であるが、早速失敗する。
✓
miku@negi%
miku@negi%
miku@negi%
miku@negi%
miku@negi%
...
executable
✒
svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby
cd ruby
autoconf
./configure --prefix=/usr/ruby --enable-shared
make
host ruby is required. use --with-baseruby option.
✏
✑
「trunk の ruby をビルドする際は、ruby が必要」らしい。仕方がないので ruby をイン
ストールしやり直す。
✓
✏
✒
✑
✓
✏
✒
✑
miku@negi% sudo pacman -S ruby
miku@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 を用いてインス
トールする。9
miku@negi% /usr/miku/bin/gem install pkg-config
ruby-gtk2 のリポジトリ10 からチェックアウトし、コンフィグを実行する。
Ruby - レポジトリガイドhttp://www.ruby-lang.org/ja/documentation/repository-guide
Arch 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
vi
vi
vi
vi
vi
vi
vi
vi
vi
vi
vi
✒
glib2/ext/glib2/rbgobj_valuetypes.c
glib2/ext/glib2/rbgobj_param.c
glib2/ext/glib2/rbgobj_type.c
glib2/ext/glib2/rbglib_keyfile.c
glib2/ext/glib2/glib-enum-types.c
glib2/ext/glib2/rbgobj_signal.c
glib2/ext/glib2/rbgobj_object.c
gdk_pixbuf2/ext/gdk_pixbuf2/rbgdk-pixdata.c
gdk_pixbuf2/ext/gdk_pixbuf2/rbgdk-pixbuf.c
gtk2/ext/gtk2/rbgtkaccellabel.c
gtk2/ext/gtk2/rbgtkwidget.c
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%
miku@negi%
miku@negi%
miku@negi%
✒
git clone https://github.com/rcairo/rcairo
cd rcairo
/usr/miku/bin/ruby extconf.rb
make && sudo make install
これで、mikutter の動作に必要なライブラリは全て揃った。
2.5.4
✏
✑
動作確認
今回作成した環境では、mikutter は AOuth 認証画面まで正しく行うことができたもの
の、残念ながら gdk と rcairo のエラーにより、タイムラインの表示を行うことができな
かった。ruby の trunk は比較的普通に利用できるが、ruby-gtk2 の trunk を利用するのは、
gtk2 との関係もあるためかなかなか難しいようだ。11
LTSP を用いた mikutter 環境展開システムの構築
3
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.1
dhcpd の設定
クライアントは 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 Manual
https://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֡࣋ⱈযժթշ֑բբպ‫קס׀‬զյፒK‫֡؀׌ש‬፥ժտ‫פ‬
‫ו׆؀ֱ֡؀ֱֽ׶‬؉‫׸‬ն՜յզ֍Փ֍ըԨ౧ૐչᠷ┣նը՛ԧῖղյՓ֚շmikutterս
ェỺচᴠ՛٫՛֚բշվギⷹՓᯝՓնըԨ
1.1.2 ‫ׯֽאםה‬؉‫ז‬
mikutter‫֡؀ֱֽ׶פ‬ᘈՓյ٢ṇ֗՞Ց֚սվԧmikutter▬ּܼ֡‫ײׄא׶‬դժ֚շՓ
ՕբշնըԨբսᖐԧֵ‫׶‬؉վ‫׊؀׀‬؉‫׸‬պज঄դ֛թԧᢜపⱈযᖐպ‫ֽם‬೷ઽ֡զ֗Օշ
զ֍ըԨբսᎥযվԧ‫֡؀ֱֽ׶פ‬ェỺը֚շ՜պվ⸶㏟պչ֚սնԧ۶٬ս֗Օչ‫؀׫׀‬
‫ז‬նmikutter֡ⱈযզ֍զ֖Օ
WZG^RNPZYYJWWGIJGZL
−−​d ebug ַ‫֡؀״ׄפ‬ճՠյⱈযը֚շԧmikutterվ‫ׯֽאםה‬؉‫ז‬նⱈযզ֍ըԨ‫׌‬
؉‫׸ח׬‬պվඋ⻪ս‫׈א׮‬؉‫ׅ‬՛⦓₄դ֛յՓ֚շᆪՓ֍ըԨբ֛վ‫֯׀‬պۧⶇ֍֛յՓ֚
᲌໘ս‫֡זא׊׮‬૖ւजզծᖐպज঄դ֛֑֚սնըԨࢽܼἃպ‫ׯֽאםה‬؉‫ז‬նվոՕՓ
ղծⷹՓ՛Ց֚ս՚֡⨿յՓ՜ծՓշᆪՓ֍ըԨ
ּ‫ײׄא׶‬ᖐպ‫׹וּאם‬؉‫⦓֡׆‬₄ը֚
ᵣౠվּ‫ײׄא׶‬զծշ՜պ‫׹וּאם‬؉‫⦓֡׆‬₄զ֍ժ֢՛ԧ‫ׯֽאםה‬؉‫ז‬նվ
լ֛֡⦓₄զ֍ըԨ
noticeԦ⭲ઽ؈ֵ‫׶‬؉‫׈א׮‬؉‫⦓ׅ֡‬₄
print‫ֽאםה‬վԧ֗՞‫ֽאםה֛֚֞ݝ‬ጤᦢս٢ճնըԨRubyնվ p ‫זא׊׮‬չ
ո՛֗՞‫֍֛֞ݝ‬ըԨmikutterն֑ᄙᯤբ֛֡हḒը֚բշվն՜֍ը՛ԧ
mikutter▬ܼ՛ notice, warn, error շՓՕ‫֡זא׊׮‬ᐖ‫ݶ‬զյՓ֚սնԧլհ
֘֡‫ݝ‬Օբշ֑ն՜֍ըԨ
STYNHJሚ೷
\FWS⭲ઽ
JWWTWֵ‫׶‬؉
լ֛խ֛‫זא׊׮‬કսⷊ֙ԧnotice՛٢◠ἃչሚ೷ԧwarnվ⭲ઽԧerrorվֵ‫׶‬؉
‫׈א׮‬؉‫⦓ׅ֡‬₄ը֚ծ֐պ‫ݝ‬Փ֍ըԨբ֛֘ս p շսհ՛Փվԧըֈյ᠉᪘ֵ‫׶‬؉
ज঄պ‫׈א׮‬؉‫ׅ‬՛ज঄դ֛֚բշԧ‫ׯֽאםה‬؉‫ז‬նչՓշໜㅁս⦓₄՛դ֛չՓ
սնԧṋၚ⋥պվज঄֡ࢱ֛ծ֍֍ն‫׷׷‬؉‫׆‬ը֚բշ՛ն՜֚շՓՕ᮸նըԨ٢
ᔰԧ⇁٢ცᔂ֡ᔎລऱշզյլս֍֍⦓₄զյզ֍Օսնԧᔎລऱպ൵ᐞն՜չՓַ
‫וִּׅף‬պվઙ՜֍ժ֢Ԩ‫ݧ‬ൿշզյԧExceptionսׂ‫׆׶ּף‬սֱ‫׆؀׌׆؀‬՛
ᩘդ֛ծ೹ઐվԧ‫׹וּאם‬؉‫⦓֡׆‬₄զ֍ըԨ‫ݧ‬՗տԧ۶٬ս‫׀‬؉‫׊؀׀֡ז‬؉‫׸‬
պࢱ঄զյໜ⥽զյ֎֍զ֖ՕԨ
GJLNS
WFNXJJWWTWYJXY
WJXHZJ"#J
JWWTWJ
JSI
۶٬ս֗Օչज঄՛ᅐ֛֚֘վթնըԨ
JWWTWJ[FQNSEWJXHZJNSUTXYJWWTWYJXY
KWTRJ[FQNSEUTXY
KWTR`2.0:99*7D).7bHTWJUQZLNSLZNWGNSEJ[FQ
KWTR`2.0:99*7D).7bHTWJUQZLNSLZNWGNSEUTXY
KWTR`2.0:99*7D).7bHTWJRZNLYPDUTXYGT]WGNSEUTXYDNY
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEHFQQ
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEGQTHPNSHFQQDPJ^UWJXXDJ[JSY
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEJFHM
KWTR`2.0:99*7D).7bHTWJFIITSFIITSWGNSEHFQQDPJ^UWJXXDJ[JSY
KWTR`2.0:99*7D).7bHTWJRZNLYPDUTXYGT]WGNSEGQTHPNS\NILJYDUTXY
KWTR`2.0:99*7D).7bHTWJRZNLYPDJ]YJSXNTSWGNSEHFQQ
KWTR`2.0:99*7D).7bHTWJRZNLYPDJ]YJSXNTSWGNSEGQTHPNSDDYWFHP
KWTRRNPZYYJWWGNSEHFQQ
KWTRRNPZYYJWWGNSERFNS
KWTRRNPZYYJWWGNSEGTTY
KWTRRNPZYYJWWGNSE!RFNS#
1.1.3 pryպּ֚֗‫ײׄא׶‬ᖐսַ‫וִּׅף‬ੜ᯾
֍ծּ֑֓‫ײׄא׶‬զծᖐսՙ⫌նըԨּ‫ײׄא׶‬զծᖐպએ൵ᔂ՛ոՕՓղծߗ֡‫ޢ‬᎕զ
յՓ֚՚ԧַ‫וִּׅף‬՛ոս֗ՕչᲩቻպչղյՓ֚՚֡ῖ֚ᅮ⨸՛Ց֙֍ըԨբՕՓղ
ծḒⷄպվ‫ݝֹ֡אםה‬Օսնը՛ԧᘐ⌛‫ו׆ד‬՛յ֘Twitter֡կ֘կ֘ឱզ֎ծՓᖐպ
‫ⱈֹ֡אםה‬যզյզ֍Օշԧয݅՛ⷫ՞չղյզ֍Փ᧡֛պ‫֛ⷫ֙ڝ‬ԧքՐ֋֡⶷ըં┣
ᆱ՛Ց֙֍ըԨ
pryշվ
irbս֗Օչֱ‫׌׷פ׌؀‬նըԨgemնֱ‫ו׆؀‬؉‫׸‬ն՜֍ըԨ
LJRNSXYFQQUW^
UW^
@BUW^RFNS#
pry‫ז؀׫׀‬նֱ‫׌׷פ׌؀‬՛ↁհ٫՛֙֍ըԨ೗ᘬἃպվirbշઔէ֗Օպ‫ݝ‬՗֚ս
նը՛ԧբբն‫ݧ‬՗տlsշ՚ࢱ঄ը֚շ
@BUW^RFNS#QX
XJQKRJYMTIXNSHQZIJUWN[FYJUZGQNHYTDX
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^D[JWXNTS
@BUW^RFNS#F"@B
"#@B
@BUW^RFNS#QX
XJQKRJYMTIXNSHQZIJUWN[FYJUZGQNHYTDX
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^DF[JWXNTS
@BUW^RFNS#
շԧunixսls‫ז؀׫׀‬ս֗Օպԧᵣౠս‫׀׆‬؉‫פ‬՚֘⨿՗֚൵ᔂշ‫זא׊׮‬՛٢⩑ն
՜֍ըԨ֍ծcd‫ז؀׫׀‬նոսַ‫וִּׅף‬ս‫׀׆‬؉‫פ‬ն‫׀‬؉‫֡ז‬ໜ⥽ը֚՚᎙໘ն
՜֍ըԨ‫ݧ‬՗տ൵ᔂaպࢱղյ֚⺑ऱս‫ڂ‬պࢱղյ֎֍զ֖ՕԨ
@BUW^RFNS#HIF
@BUW^!&WWF^##QX
*SZRJWFGQJRJYMTIXFQQ$FS^$HMZSPHTQQJHYDHTSHFYIJYJHYJFHMDHTSXJFHMDJSYW^
JFHMDXQNHJJFHMD\NYMDNSIJ]JFHMD\NYMDTGOJHYJSYWNJXKNSIKNSIDFQQKQFYDRFULWJU
LWTZUDG^NSOJHYRF]RF]DG^RJRGJW$RNSRNSDG^RNSRF]RNSRF]DG^STSJ$TSJ$
UFWYNYNTSWJIZHJXQNHJDGJKTWJXTWYDG^
&WWF^RJYMTIX!!!"#""@B@B"FXXTHFYHQJFWHTQQJHYHTQQJHY
HTRGNSFYNTSHTRUFHYHTRUFHYHTSHFYHTZSYH^HQJIJQJYJIJQJYJDFYIJQJYJDNK
IWTUIWTUD\MNQJJFHMJFHMDNSIJ]JRUY^$JVQ$KJYHMKNQQKNSIDNSIJ]KNWXY
KQFYYJSKQFYYJSKWT_JS$MFXMNSHQZIJ$NSIJ]NSXJWYNSXUJHYOTNSPJJUDNK
QFXYQJSLYMRFURFUUFHPUJWRZYFYNTSUTUUWJYY^DUWNSYUWJYY^DUWNSYDH^HQJ
UWTIZHYUZXMWFXXTHWJOJHYWJOJHYWJUJFYJIDHTRGNSFYNTSWJUJFYJIDUJWRZYFYNTS
WJUQFHJWJ[JWXJWJ[JWXJWJ[JWXJDJFHMWNSIJ]WTYFYJWTYFYJXFRUQJXJQJHY
XJQJHYXMJQQOTNSXMNKYXMZKKQJXMZKKQJXN_JXQNHJXQNHJXTWYXTWY
XTWYDG^YFPJYFPJD\MNQJYTDFYTDFW^YTDXYWFSXUTXJZSNVZSNVZSXMNKY
[FQZJXDFY_NUa
XJQKRJYMTIXDDGNSINSLDNRUQDD
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^D
@BUW^!&WWF^##
շԧ‫זא׊׮‬շլս‫׀׆‬؉‫פ‬ս൵ᔂ՛⨿՗֍ըԨբ֛՛mikutterշܾսジ‫ތ‬՛Ց֚՚
շՓՕշԧໜվmikutterվ‫ׯֽאםה‬؉‫ז‬ᖐպּ‫ײׄא׶‬ը֚շԧ֑զՑ֛տּ‫א׶‬
ׄ‫ײ‬ը֚ॐպpry֡ↁհ٫ա֚֗ՕպչղյՓ֍ըԨ֍ծ‫؀ֱֽ׶פ‬՚֘
into_debug_mode‫֡זא׊׮‬૖ւजժտԧՓճն֑pry՛㙇Ց֛տ㙈ⱈযն՜֍
ըԨնվԧໜㅁպ‫ݝ‬ղյ֎֍զ֖ՕԨ۶٬ս֗Օչ‫֡؀ֱֽ׶פ‬ᘈՓծշզ֍ըԨ
5QZLNSHWJFYJHWFXMIT
TSZUIFYJITaRJXXFLJXa
RJXXFLJXJFHMITaRa
STYNHJRYTDX
JSI
JSI
JSI
٢◠ሚ೷շզյ‫ר‬؉‫؀ֱ׶׭ֱ׌׭‬ս‫ֱב‬؉‫ࣅו‬໱֡ਪລը֚‫؀ֱֽ׶פ‬պ⨿՗֍
ըԨໜ⥽զյ֎֍զ֖ՕԨ
JWWTW`2.0:99*7D).7bHTWJUQZLNSWGNSEWJXHZJNSGQTHPNSJ[JSYD\WFUZSIJKNSJI
RJYMTIEJFHMKTW!2NPZ9\NYYJW]#
KWTR`2.0:99*7D).7bHTWJXJW[NHJWGNSERJYMTIDRNXXNSL
KWTRMTRJYTXMNRNPZYYJWUQZLNSHWFXMWGNSEGQTHPQJ[JQXNS!YTUWJVZNWJI#
KWTR`2.0:99*7D).7bHTWJUQZLNSWGNSEHFQQ
‫ڂ‬ṃ
KWTRRNPZYYJWWGNSE!RFNS#
+WTRMTRJYTXMN)THZRJSYXMTGG^XHWNUYXRNPZYYJWYWZSPHTWJUQZLNSWG%QNSJ
5QZLNSJ[JSYD\WFU
IJKJ[JSYD\WFUHFQQGFHP
QFRGIF`aFWLXa
GJLNS
HFQQGFHPHFQQFWLX%UQZLNSDJ]NY
WJXHZJ*]HJUYNTS"#J
"#NSYTDIJGZLDRTIJJGNSINSL
WFNXJJJSIbJSI
@BUW^5QZLNS#
ּ‫ײׄא׶‬զյ‫׹וּאם‬؉‫׆‬՛⦓₄դ֛֍զծԨ٢⥽Ὁպֵ‫׶‬؉ս੃బ՛जյՓ֍
ը՛ԧ٢ܼܾ՛ሊՓ֢նզ֖Օ՚Ԩբսᖐԧ٢ṇ٬֡⨿֚շPry‫ופ؀׺פ‬՛ↁհ٫
՛ղյ֍ըռԨհ֖ղշ៥ຟ֡⨿յ֎֍զ֖ՕԨ
@BUW^5QZLNS#QX
HTSXYFSYX&HYN[NY^)NWJHY2JXXFLJ*]JHZYJ'T]*]JHZYJW,:.8JYYNSL8YWJFRNSL
4GOJHYRJYMTIXIJKZS^FRQDYFL
5QZLNSRJYMTIXFGTWYDTSDJ]HJUYNTS$FHYN[NY^FIIDJ[JSYFIIDJ[JSYDKNQYJW
FIIDJ[JSYDMTTPGTTYDUQZLNSHFQQ㙇ṃ㙈
5QZLNSRJYMTIXFHYN[JFHYN[J$FIIDJ[JSYFIIDJ[JSYDKNQYJWFIIDJ[JSYDMTTPFY
HWJFYJIJYFHM㙇ṃ㙈
HQFXX[FWNFGQJX%%FIIDJ[JSYDMTTP%%J[JSY%%J[JSYDKNQYJW%%J[JSYVZJZJ%%UQZLNSX
QTHFQXDDINWDDJ]DDKNQJDDNSDDTZYDDUW^DFWLXHFQQGFHPJ
@BUW^5QZLNS#XJQK
"#5QZLNS
@BUW^5QZLNS#
բբվPluginּ‫Ⳳ▬׆׶‬նըռԨᣟᆑչ՛ֱ֘‫ו؀צ‬ս‫׀‬؉‫ּאם׸‬ս‫׀׆‬؉‫פ‬նվ
չՓնըԨໜվֱ‫ו؀צ‬ս‫׀‬؉‫ּאם׸‬նֵ‫׶‬؉՛ⱈբ֚շᅮթբբնPry՛૖ւज
դ֛֍ըԨ‫׀‬؉‫⨿֡ז‬յ֑ᕨ֘՚չⷊ֙ԧ㙒ճս൵ᔂ՛໘⑝դ֛յՓ֍ըռԨ
൵ᔂ
args
ቐૐ
ֱ‫׀ו؀צ‬؉‫ּאם׸‬սცᔂ(⺑ऱ)
callback ‫׀‬؉‫(Ⳳ▬ּאם׸‬Proc)
e
‫ݧ‬ൿַ‫וִּׅף‬
onupdateպᩘդ֛֚ცᔂ֡⨿յ֎֍ըԨ
@BUW^5QZLNS#FWLX
"#@!8JW[NHJYTXMNDF#@‫ֱב‬؉‫ו‬BB
@BUW^5QZLNS#
ՑՑԧonupdateվԧ⇁٢ცᔂ՛Serviceԧ⇁‫ڸ‬ცᔂպ‫ֱב‬؉‫ו‬՛ࢱղյ՞֢֚նը
ռԨCtrl-D֡ࢱ঄զյmikutter֡٢ႛ⌛‫ڳ‬զյԧonupdateսცᔂ֡Ὅզյ۶٬ս
֗Օպުᣄզյ࣋ⱈযը֚շԧ‫׌‬؉‫׸ח׬‬պ‫ֱב‬؉‫ו‬՛ᢜԫշ⦓₄դ֛֚շᆪՓ֍
ըԨ
5QZLNSHWJFYJHWFXMIT
TSZUIFYJITaXJW[NHJRJXXFLJXa
RJXXFLJXJFHMITaRa
STYNHJRYTDX
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ս‫ٵ‬ḯ
նվᕐⷎⱈযզյ֎֍զ֖ՕԨ
‫ֱב‬؉‫ו‬ፒK‫ק׆‬؉‫׆‬՛Ց֚կՠսᣟᆑչְֳ‫ֳז؀‬՛⦓₄դ֛֍ըԨբբ՚֘޳ծ
հս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պվԧլ֛՛ᘕচչշ՜պկՠয݅ը֚
‫ואקט׆‬՛Փ՞ճ՚ᐖ‫ݶ‬դ֛յՓ֍ըԨ‫ݧ‬՗տԧ‫׷וּ׹ְה؀ֱֽ׶פ‬պ⅐ս‫׸ֱ֮ע‬
֡݅ዺզյ۶٬ս֗Օպ‫פֱ׌‬զԧ
UYQ
lսᅈ֜նའェֺ؉֡፥ըշ
5QZLNSHWJFYJIT
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նֱ‫ו׆؀‬؉
‫׸‬զյ՞կդՓԨ
LJRNSXYFQQIGZXWZG^
‫ݝ‬ղյ֎֚
֍թԧmikutter_mode.rbֱ֡‫ו׆؀‬؉‫׸‬զծmikutter֡‫ׯֽאםה‬؉‫ז‬նⱈযզ
֍ըԨլզյ ~/.mikutter/plugin/ պԧ⸉ᄙչ‫׸ֱ֮ע‬㙇բբնվԧtest.rb㙈֡݅
ዺզ֍ըԨᣄၚպmikutter-mode՛ֱ‫ו׆؀‬؉‫׸‬դ֛յՓ֚չ֘ԧ۶٬սࣖὨս֗
Օպԧ‫ׯ‬؉‫؀ֱ׶ז‬պ Mikutter շ⦓₄դ֛յՓ֚վթնըԨ
դյԧբս‫؀ֱֽ׶פ‬վ test շՓՕֱ‫ו؀צ‬՛ỺḊը֚շԧԲ‫ו׆ד‬ԳշՓՕ
notice‫׈א׮‬؉‫⦓ׅ֡‬₄զ֍ըԨໜㅁպ֓ղյ֎֚պվ࣋ⱈয՚‫׊؀׀֡؀ֱֽ׶פ‬
؉‫׸‬պ‫קס׀‬չսնը՛ԧEmacsշmikutterպᣄၚպmikutter-mode՛ֱ‫ו׆؀‬
؉‫׸‬դ֛յՓ֛տԧ‫֮עאם‬նC-c C-c շ‫פֱ׌‬ը֚կՠնբս‫׆؀ֱ֡؀ֱֽ׶פ‬
‫ו‬؉‫׸‬ը֚բշ՛ն՜֍ըԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP
QJ[JQXNS!HQFXX8JW[JW#WZG^HTIJJ]JHZYJ
TWLRNPZYYJWJ[FQ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP
QJ[JQXNS!HQFXX8JW[JW#WJYZWSX
YJXY
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP
QJ[JQXNS!HQFXX8JW[JW#WZG^HTIJJ]JHZYJ
MTRJYTXMNRNPZYYJWUQZLNSYJXYWG
STYNHJMTRJYTXMNRNPZYYJWUQZLNSRNPZYYJWDRTIJRNPZYYJWDRTIJWGNSEGQTHP
QJ[JQXNS!HQFXX8JW[JW#WJYZWSX
YJXY
٫⪍ս֗Օչ‫׈א׮‬؉‫ׅ‬՛‫׌‬؉‫׸ח׬‬պ⦓₄դ֛֚շᆪՓ֍ըԨᢜպໜㅁպtestֱ‫צ‬
‫֡ו؀‬ỺḊդժ֍ըԨ‫׊؀׀‬؉‫׸‬՚֘۶٬ս‫׀‬؉‫֡ז‬ໜ⥽զ֍զ֖ՕԨ
5QZLNSHFQQYJXY
۶٬ս֗Օչज঄՛ᅐ֛֘֍ըԨ࣋ⱈযᯝզպmikutter‫ו׆؀ֱ֡؀ֱֽ׶פ‬؉‫׸‬ն
՜֍զծԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSYJXYWGNSEGQTHPQJ[JQXNS
!HQFXX8JW[JW#‫ו׆ד‬նը
‫؀ֱֽ׶פ‬ս▬য࣋‫׺‬؉‫ז‬
test.rb պՑղծ onunload պճՓյ⫹ᕨզյՙ՜֍ըԨmikutter-mode֡‫ݝ‬ղ
յ‫׺֡؀ֱֽ׶פ‬؉‫ז‬ը֚ᖐԧընպլս‫؀ֱֽ׶פ‬՛‫׺‬؉‫ז‬դ֛յՓ֚ᖐ՛Ց֙֍
ըԨլս೹ઐԧ٢ႛ‫؀ֱֽ׶פ‬՛੫֙ൿդ֛ԧᔫզՓ‫؀ֱֽ׶פ‬՛‫׺‬؉‫ז‬դ֛֍ըԨ
բՕՓՕԧmikutterս⌛‫ڳ‬۶ൿս⨸బն‫؀ֱֽ׶פ‬՛੫֙ൿդ֛֚ᖐպ onunload
‫ּא׺ף‬՛૖տ֛֚սնըԨծ֐զպ֑Օ٢ႛ C-c C-c շ‫פֱ׌‬զյ֎֍զ֖ՕԨ۶
٬ս֗Օպज঄դ֛֚շᆪՓ֍ըԨ
STYNHJMTRJYTXMNRNPZYYJWUQZLNSYJXYWGNSEGQTHPQJ[JQXNS
!HQFXX8JW[JW#֯‫׺؀‬؉‫ז‬
onunload ս‫ڌ‬չ‫ݝ‬ՓⷷվԧThread֓Gtk⇔ԧ‫؀ֱֽ׶פ‬՛੫֙ൿդ֛յ֑⩫ᓥդ
֛չՓַ‫⩫֡וִּׅף‬ᓥը֚ԧ‫׌ּ׶ו׆ה‬ἃչऋᵪ֡ᘈ՞ծ֐նըԨ
mikutter_mode.rbս۠ᅈ
mikutter_modeվᘐⶕ֓ղշᘬᛘἃպェỺպώጤդ֛ճճՑ֚֍կỺའⷄ٫սᠷ┣
նը՛ԧEmacs٫նEmacs Lisp֡ᘈ՞֗Օպmikutter‫؀ֱֽ׶פ‬՛ᘈՠ֚֗Օպ
չ֚‫֐⃩֡׸װׄ؀דת‬ծ‫؀ֱֽ׶פ‬նըԨᘐᔫսሚ೷վԧ٫պᘈՓծgithubս‫ק‬؉
‫⨿ׅ֡‬յ՞կդՓԨᵣౠվEmacsսᎄᄄᠷ┣ս֎⺑ြզյՓ֍ը՛ԧDBus՛‫ݝ‬՗֚
չ֘ۨսֵ‫׌ְה‬؈IDEն֑ઔ៥սբշ՛ն՜֚վթնըԨ
2 ֍շ֐
ॐపԧmikutterս⟗Փᘬvol.1պԲWriting mikutter pluginԳ֡໹KդժյՓծկ՜ԧ
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 # KRWPDLOFRMS
ഀླྀ嵣ᐑഘੈৡ‫؟‬,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 ࢠࣇࢺๆ࡟ࡼࡿ㔠㖹㠃ࡢᨭ᥼ࢆཷࡅ௜ࡅ࡚࠾ࡾࡲࡍࠋࡶࡋࠊ࠶࡞ࡓࡀࡇࡢⷧ
࠸ᮏࢆㄞࢇ࡛ࠊఱ࠿ࡋࡽ‶㊊ឤࢆᚓࡽࢀࡓ࡞ࡽࠊ㏦ࡗ࡚㈔࠼ࡿ࡜ࡑࡢ‶㊊ឤࢆㄡ࠿࡜ඹ᭷࡛ࡁࡿ࠿ࡶࠋ
ୖࡢ࢙࢘ࣈ࣮࣌ࢪࢆᚚཧ↷ࡃࡔࡉ࠸ࠋ
Fly UP