भුःম
YRO

Too late.

Release:3 August 2013
chief: @brsywe , @ch_print

Let us enjoy teokure life!

3') ∧ ㅖὀព୍ ᙜヱ PDF ∧ࢆ㜀ぴࡍࡿ࡟࠶ࡓࡗ࡚ࠕmikutter ࡢⷧ࠸ᮏ㜀ぴ➼チㅙ᮲௳ࠖ࡟ྠពࡍࡿᚲせࡀ࠶ࡾࡲࡍࠋヲ⣽ࡣ http://home1.tigers-net.com/brsywe/mikutter/read.pdf ࢆࡈぴࡃࡔࡉ࠸ࠋ஧ ᙜヱ᭩⡠㸦PDF ∧ྵࡴ㸧ࡣ㛵ᮾᆅ᪉࡛⾜ࢃࢀࡿ࣮࢝ࢿࣝ㸭VM ᥈᳨㝲࡛ࡢ㡺ᕸ࣭㜀ぴࡢࡓࡵࡢ౪୚࣭ゝཬࢆ୍ษチྍࡋࡲࡏࢇࠋᣢࡕ㎸ࡳࡶࡋ࡞࠸ࡼ࠺࡟ࡋ࡚ࡃࡔࡉ࠸ࠋ୕ ᙜヱ᭩⡠ࡣ OSC ி㒔࣭ࢥ࣑ࢵࢡ࣐࣮ࢣࢵࢺ 84 ࡟࠾࠸࡚ 150 ෇࡛㡺ᕸࡉࢀࡓࡶࡢ࡛ࡍࠋPDF ∧ࢆ᭷ൾ࡛ࡣ࡞ࡃ↓ൾ࡜ࡋࡓࡢࡣ᭷ൾ࡛㡺ᕸࡍࡿࡇ࡜ࡢ↹㞧ࡉ࠿ࡽฟ∧ே࣭㜀ぴ⪅ࢆゎᨺࡍࡿࡓࡵ࡛ࡍࠋPDF ∧࡛࠶ࢀࡤྠᵝࡢ㈝⏝ࡀ᥃࠿ࡿࡶࡢ࡛ࡣ࠶ࡾࡲࡏࢇࡀࠊmikutter ࡢⷧ࠸ᮏࡢ௒ᚋࡢࡓࡵ࡟᫝㠀ࠊAmazon ࢠࣇࢺๆ࣭
DMM ࢠࣇࢺๆ࡛ࡢᐤ㝃ࢆࡉࢀࡲࡍࡼ࠺ࠊ࠾㢪࠸⏦ࡋୖࡆࡲࡍࠋ
http://d.hatena.ne.jp/brsywe/20120828#1346155939 ࢆࡈぴࡃࡔࡉ࠸ࠋ
ᐄඛ㸸 brsywe [at] hotmail.co.jp㝃㘓 ⨁ࣂࢵࢪᅗ᱌㸦ࡶࡋᕼᮃ⪅ࡀ 10 ྡ௨ୖ࠸ࡓࡽ෌㈍ࡍࡿ࠿ࡶࡋࢀࡲࡏࢇࠋ㸧vol.4 ࠗToo late.࠘┠ḟ

ⴭ⪅㻌

㢟㻌

㡫㻌

㼎㼞㼟㼥㼣㼑㻌

๓᭩䛸཯┬㻌

㻟㻌௒䛩䛠䜲䞁䝇䝖䞊䝹䛩䜉䛝㻌㼜㼑㼚㼓㼡㼕㼚㻞㻣㻝㻢㻌㼙㼕㼗㼡㼠㼠㼑㼞 䝥䝷䜾䜲䞁 㻝㻜 㑅㻌㻡㻌㼠㼟㼡㼠㼟㼡㼕㼕㻌㼙㼕㼗㼡㼠㼑㼞 䛿䛺䛬ே䜢䛶䛚䛟䜙䛫䜛䛾䛛㻌㻥㻌㼋㼛㼟㼍㼋㼗㻌

㼙㼕㼗㼡㼠㼠㼑㼞㼐 䛾䛒䜛⏕ά㻌㻝㻡㻌㻼㼔㼑㼚㼛㼙㼑㼞㻌㼙㼕㼗㼡㼠㼠㼑㼞㻌㻸㼕㼢㼑㻰㼂㻰 䜢స䜝䛖㻌㻞㻜㻌㼠㼛㼟㼔㼕㼋㼍㻌

㻼㼘㼡㼓㼕㼚 䛾᪂ᶵ⬟㻌㻞㻣㻌㼎㼞㼟㼥㼣㼑㻘㼏㼔㼋㼜㼞㼕㼚㼠㻌 ᚋ᭩㻌㻟㻞㻌ᇳ➹㛤ጞ ᖹᡂ 25 ᖺ 1 ᭶ 8 ᪥  㛵すᅜ㝿✵ ࡬ྥ࠿࠺༡ᾏ㟁㌴ࡢ࡞࠿࡛

@brsywe๓᭩࡜཯┬ᇳ➹㛤ጞࡉࢀࡓࡢࡀ࠿࡞ࡾ๓࡛࠶ࡿࡓࡵࠊࡑࡢⅬࡋ⤊࠼ࡿ࡜࠸࠺࡞࠿࡞࠿⣲ᬕࡽࡋ࠸⤖ᯝ࡜࡞ࡗࡓ

␃ពࡉࢀࡓࡃࠋ

㸦⮬⏬⮬㈶㸧ࠋ㡺ᕸᩘࡢㄞࡳࡀ࠶ࡓࡗࡓ࡜࠸࠺ࡇ࡜
࡛࠶ࡿࠋࢢࢵࢬ࡟ࡘ࠸࡚ப࠼ࡤணᐃࡼࡾࡸࡸୗᅇ

࣭཯┬ࡿ⛬ᗘࡢ㡺ᕸ࡜࡞ࡗࡓࡀࠊ5 ᭶ᮎ࡟ࡣ㡺ᕸࢆ⤊࠼

vol.3 ࢆࠕࡽࡰࡕࡗࡃ㸹ࡆ࣮࡜ࠖ࡟ጤクࡋ࡚ࢥ࣑ࡓࠋࢣ࡛㡺ᕸࡋࡓࡢࡶ㸦ᇳ➹㛤ጞࡢ㸧୍㐌㛫๓࡛࠶ࡿࠋ

෉Ꮚࡢ㡺ᕸᩘࡢㄞࡳࢆእࡍ࡜⤒㈝ࡀ㐣๫࡟࠿࠿ࡲࡔࡇࡳࢺ࡛ࣞࡢ㡺ᕸࢆ㏄࠼࡚࠸࡞࠸ࡀࠊ࠸ࡃࡘ

ࡿࡇ࡜ࡣ໚ㄽࡢࡇ࡜ࠊ㏦ࡾ㏉ࡍᡭ㛫࡜㈝⏝ࡀ᥃࠿࠿཯┬ࡋ࡚࠾࠸ࡓ࡯࠺ࡀ࠸࠸Ⅼࡀ࠶ࡗࡓ࡜ᛮ࠺ࡢ

ࡗ࡚ࡋࡲ࠺ࠋ㟂せࢆᑡࡋୗᅇࡿࡄࡽ࠸ࡢ㡺ᕸ࡜࡞࡛᭩࠸࡚ࡳࡓ࠸࡜⪃࠼࡚࠸ࡿࠋ

ࡽࡊࡿ࠼࡞࠸ࠋ
๓ྕࡢ㡺ᕸ࡟㝿ࡋ࡚ึࡵ࡚ࠕ᭷ൾࠖ࡜ࡋࡓࠋ୍

1

㒊 100 ෇࡛࠶ࡿࠋ
ࠕ㏻ᖖࠖࡢ᪉ἲ࡛࠶ࢀࡤࡇࢀ࡛ࡶ

⤌∧㛵㐃༳Ꮠࡍࡿࣇ࢛ࣥࢺࠊPDF ∧࡛⏝࠸ࡿࣇ࢛ࣥࢺ࡟

༳ๅ༢౯ࢆ๭ࡾ㎸ࡴ➻࡛࠶ࡿࡀࠊࡇࡢⷧ࠸ᮏ࡟ࡘ

ࡘ࠸࡚࡝ࢀࡀ࠸࠸࠿࡜࠸࠺Ⅼ࡟ࡘ࠸࡚ࡣࠊ୍ᛂࢃ

࠸࡚ப࠼ࡤ౛እ࡛࠶ࡗ࡚ࡔ࡞㸦ヲ⣽ࡣ┬␎㸧ࠋ௒ࡲࡓࡋࡀ༳ๅࡋ࡚ぢࡸࡍ࠸ࡔࢁ࠺࡜࠸࠺ࣇ࢛ࣥࢺࢆ

࡛ࡈࡃ୍㒊㸦༑ே࡟‶ࡓ࡞࠸ே㸧࠿ࡽࡢࠊ௵ពࡢ

㑅ᢥࡋ࡚࠸ࡿࠋࡶࡋࡇࢀ࡛ぢ࡟ࡃ࠸࡜ᛮ࠺ࡦ࡜ࡀ

ᨭ᥼㸦Amazon ࢠࣇࢺๆ㸧ࡔࡅ࡛ࡲ࠿࡞ࡗ࡚࠸ࡓ

࠸ࡓ࡜ࡇࢁ࡛ᨵၿࡍࡿࡢࡣ࠶ࡲࡾ⌧ᐇⓗ࡛࡞࠸ࡋࠊ

ࡀࠊࡑࢀࢆᨭฟࡢ୍㒊࡛࠶ࡿ࡜ࡣ࠸࠼ࠕཷ┈⪅㈇

ࡇࡢᮏࡢ㊃᪨࠿ࡽࡋ࡚ព⩏ࡀⷧ࠸ࠋㄞࡴே࡟ࡼࡗ

ᢸࠖ࡜ࡍࡿࡇ࡜ࡀ࡛ࡁࠊ୍᪉࡛㡺ᕸᩘࡢῶᑡ࡟ࡣ࡚ぢࡸࡍ࠸/ぢ࡙ࡽ࠸ ࡜࠸࠺ࡇ࡜ࡣ࠶ࡿࡔࢁ࠺

࡞ࡽ࡞࠿ࡗࡓࡢ࡛႐ࡤࡋ࠸㝈ࡾ࡛࠶ࡿࠋ᭷ൾ࡟ࡋ

ࡋࠊࡇࢀ࡟ࡘ࠸࡚ࡣ┠ࢆࡘࡴࡗ࡚࠸ࡓࡔࡅࢀࡤᖾ

ࡓ┠ⓗ࡟ࡘ࠸࡚ࡣ࠸ࡃࡘ࠿࠶ࡗࡓࡢࡔࡀࠊࢃࡓࡋ

࠸࡛࠶ࡿࠋࡢࣈࣟࢢࡢ㐣ཤࡢ࢚ࣥࢺ࣮ࣜࢆぢ࡚࠸ࡓࡔࡅࢀࡤ

ࡲࡓࠊ஧ẁ⤌࡟ࡍࡿࡢࡣ࡝࠺ࡔࢁ࠺࠿࡜࠸࠺ヰࢃ࠿ࡿࡇ࡜࡛࠶ࡿࡋ㔠㖹࡟ࡘ࠸࡚࠶ࡲࡾゐࢀࡓࡃࡀ࠶ࡗࡓࠋvol.3 ࡲ࡛ࢆぢ࡚࠸ࡓࡔࡅࢀࡤࢃ࠿ࡿ࡜

࡞࠸ࡢ࡛ࡇࡢ࠶ࡓࡾ࡛ࡸࡵ࡚࠾ࡇ࠺ࠋ

࠾ࡾࠊᮏ᭩ࡣࢥ࣮ࢻࡀἑᒣ㍕ࡏࡽࢀ࡚࠸ࡿࠋᨾ࡟

㡺ᕸ࡟㝿ࡋ࡚ࠕ㔮ࡾ㖹‽ഛࡋࡡ࠼࠿ࡽ࡞㸟ࠖ࡜ᕥྑࡢᖜࡀ⊃࠸ࣞ࢖࢔࢘ࢺ࡟ࡍࡿ࡜ᨵ⾜ࢆከࡃࡏ࿌▱ࡋ࡚࠾࠸ࡓࡇ࡜ࡀᖾ࠸ࡋࡓࡢ࡛࠶ࢁ࠺࠿ࠊ㔮ࡡࡤ࡞ࡽࡠࡇ࡜࡜࡞ࡾࠊㄞࡳ࡟ࡃࡃ࡞ࡿࡢ࡛ࡣ࡞

ࡾ㖹࡜ࡋ࡚‽ഛࡋࡓⓒ෇◳㈌ࡣ⏝࠸ࡎ࡟῭ࢇࡔࠋ࠸࠿࡜ᛮࢃࢀࡿࠋࢥ࣮ࢻࢆྵࡲ࡞࠸グ஦࡟ࡘ࠸࡚

vol.4 ࡣࠕmikutter ࡢⷧ࠸ᮏไసጤဨ఍ࠖࡀึ

ࡣࠊࠕ⣬㠃ࡢ㒔ྜ࡛ࠖ஧ẁ⤌࡟ࡍࡿࡢࡀጇᙜࡍࡿࡼ

ࡵ࡚ࢥ࣑ࢵࢡ࣐࣮ࢣࢵࢺࡢࢧ࣮ࢡࣝཧຍ࡟ᙜ㑅ࡋ

࠺࡟ᛮ࠺ࠋ

ࡓࠋ

2

3

㡺ᕸ㛵㐃
vol.1 ࡢࡇࡳࢺ࡛ࣞࡢ㡺ᕸᐇ⦼ࠊvol.2 ࡢ OSC

API1.1 ௒ᖺ 6 ᭶ࠊᗄᗘࡶࡢᘏ㛗ࢆ⧞ࡾ㏉ࡋࡓ API1.0

KYOTO(ᖹᡂ 24 ᖺ 8 ᭶)ࠊࢥ࣑ࢣ࡛ࡢ㡺ᕸᐇ⦼ࢆᗫṆࠊ1.1 ⛣⾜ࡀ㐙࡟⌧ᐇࡢࡶࡢ࡜࡞ࡗࡓࠋ

㚷ࡳ࡚ vol.3 ࡢⓎ⾜㒊ᩘࢆᐃࡵࠊࡲࡓࢢࢵࢬ࡟ࡘ࠸

 5 ᭶࡟ ShootingStar(ᮏ᭩࡛ࡣ௨ୗࠕSySࠖ࡜⾲࡚ࡣ஦๓࡟ ATND ࡛࢔ࣥࢣ࣮ࢺࢆ࡜ࡿࡇ࡜࡟ࡼࡗグࡍࡿ)ࡢస⪅࡛࠶ࡿ @haru067 ࡜㣤ࢆ㣗࠺ᶵ఍࡚ࠊࠕ㐣ᗘ࡟వࡽ࡞࠸ࠖࡄࡽ࠸࡟㡺ᕸࡍࡿࡇ࡜࡜ࡋ

ࢆᚓࡓࠋ㢦ࢆྜࢃࡏࡿࡢࡣ࠾ࡼࡑ 1 ᖺࡪࡾࠊ2 ᅇࡓࠋvol.3 ࡢࢥ࣑ࢣ࡛ࡢ㡺ᕸ࡟ࡘ࠸࡚ப࠼ࡤࠊᣢࡕ

┠࡛࠶ࡿࠋᙼࡣ࡜ࡾ࠶࠼ࡎ API1.0 ࡀᗫṆࡉࢀ࡚࠿㎸ࢇࡔ㸦㡺ᕸணᐃ㸧෉Ꮚࡍ࡭࡚ࢆ㛢఍㛫㝿࡟㡺ᕸࡽ SyS ࡢ API1.1 ᑐᛂࢆ⪃࠼ࡿ࡜㏙࡭࡚࠸ࡓࠋ⤖ᒁᗫṆ┤ᚋ࡟ᑐᛂࡋ࡚࠸ࡓࡼ࠺࡛࠶ࡾࠊmikutter

ࡓ aclog ࡞ࡿࢧ࣮ࣅࢫࡀ࠶ࡿࠋmikutter ࡟ࡶࣉ࣮ࣛࣘࢨ࣮ࡢ୍㒊࡟ࡣᮁሗ࡜࡞ࡗࡓ࡛࠶ࡿࠋ

ࢢ࢖ࣥࡀ࡛࡚ࡁࡓࠋࡩ࠵ࡰࡗ࡚ࡸࡗࡥࡾ㔜せ࡞ࡢ mikutter ࡟ࡘ࠸࡚ࡳ࡚ࡳࡿ࡜̿̿̿࠿࡞ࡾ᫇

ࡔࠋ࡟ᑐᛂࡋ࡚࠸ࡿࠋ࠶࠶ࠊDisplay Requirements࡟ᑐᛂࡋࡕࡷࡗࡓ࠿ࡽぢ࡙ࡽ࠸㸽 ࡑࢇ࡞࠶࡞ࡓ

5࡟࠸࠸ࣉࣛࢢ࢖ࣥࡀ࠶ࡿࠋᮏ᭩ࡢࣉࣛࢢ࢖ࣥ≉㞟௒ᅇࡶグ஦ࡀ࠶ࡘࡲࡗ࡚ࡼ࠿ࡗࡓ࡛ࡍࡡࠋ

㛩ヰఇ㢟㸦ࡑࢀࡣࡉ࡚࠾ࡁ㸧ࢆぢ࡚࠸ࡓࡔࡁࡓ࠸ࠋ࣮ࣘࢨࣅࣜࢸ࢕ࢆࡁࡗ࡜ྲྀ

6ࡾᡠࡏࡿࡣࡎࡔࠋࡑࡋ࡚௒ᅇ ┠ḟࢆ⾲⣬ࡢ⿬࡟㓄ࡋ࡚ࡳࡓࠋ๓᭩ࡼࡾ๓࡟┠4

Favstar ᫓ࡢ BAN ⚍ࡾḟࡀ࠶ࡿ࡜࠸࠺ࡢࡶወጁࡔࡀࠋ

 mikutter ⏺㝰ࢆ㈰ࢃࡏࡓࢺࣆࢵࢡࢫ࡟௒ᖺ 2 ᭶

 ௨ୗࠊ⡆༢࡟⤂௓ࠋ

୰᪪ࡢࠕFavstar ᫓ࡢ BAN ⚍ࡾࠖࡀ࠶ࡿࠋ

@penguin2716㸸ᩘᗘࡢᡴࡕྜࢃࡏࢆ⤒࡚ࠊࠕࣉࣛ ࡑ࠺ࠊ௒ᅇࡢ๪㢟ࡢඖࢿࢱ࡛࠶ࡿࠋ

ࢢ࢖ࣥ౑ࡗ࡚࡞࠸ࡢࡣࡶࡗࡓ࠸࡞࠸ࡼࡡࠊཝ㑅ࡉࢀࡓࣉࣛࢢ࢖ࣥࡢゎㄝࡀḧࡋ࠸ࠖ࡜࠸࠺ࡇ࡜࡟࡞

https://twitter.com/FavstarHelp/status/3080848

ࡾ㉳✏ࠋࣉࣛࢢ࢖ࣥࢆ࠶ࢇࡲࡾ౑ࡗ࡚࠸࡞࠸᪉ࡣ

70742167552

᫝㠀ཧ↷ࡋ࡚࠸ࡓࡔࡁࡓ࠸ࠋ㑅ᐃ࡟࠶ࡓࡗ࡚ࡣࢃ
ࡓࡋࡶ㛵୚ࡋࡓࠋ
@tsutsuii㸸࡚࠾ࡃࢀࡢ௦⾲᱁ࡀ௒ᅇࡶ࡚࠾ࡃࢀゎㄝグ஦ࠋ࡚࠾ࡃࢀࡢ┿┦࡟㏕ࡿࠋ
@_osa_k㸸ࡘ࠸࡟ bot ࡀグ஦ࢆ᭩࠸ࡕࡷࡗࡓࠋ
@Phenomer㸸mikutter ࢆ༶ᖍ⎔ቃ࡛౑࠸ࡓ࠸㸟@toshi_a㸸࡚࠾ࡃࢀࡇࢇ࡞࡜ࡇࢁࠋ࠸࠸ຍῶ࡟㠃ಽ࡟࡞ࡗ࡚ࡁࡓࡢ࡛

ࠕࡱ࠵ࠅࡕ࠹࠾ࡻࡏࠆ
࡚ࠖ࠾ࡃࢀ඲࡚࡟ୗ⥺ᘬࡃࢧ࣮ࣅࢫࡣࡸࡵࡓࠋ
ShootingStar ࣮ࣘࢨ࣮ࡀ BAN ࠿ࡽࡢᅇ᚟ࢆồࡵࡓ࡜ࡇࢁࠊFavsatar ࡀࠕToo late.ࠖ࡜ࣜࣉࣛ࢖

๓᭩ࢆ࡞ࡀ࡞ࡀ⥆ࡅ࡚ࡶࡳ࡞ࡉࢇࡣ⯆ዧࢆᢚ࠼ࡽ

ࢆ㏦ࡗࡓࡶࡢ࡛࠶ࡿࠋ

ࢀࡲ࠸ࠋḟ㡫࠿ࡽᮏᩥ࡛࠶ࡿࠋࡐࡦ࡜ࡶᴦࡋࢇ࡛
࠸ࡗ࡚࠾ࡃࢀࠋ

ࡕ࡞ࡳ࡟ࡇࡢ๓ᚋࠊmikutter ࣮ࣘࢨ࣮ࡢከࡃࡀ
ShootingStar ࢆ౑ࡗ࡚࠸ࡿ࡜࠸࠺ࡇ࡜ࡶ࠶ࡾࠊ
mikutter-er ⏺㝰ࡶ BAN ࡉࢀࡿ࡟⮳ࡗࡓࠋࡓ࡜࠼

brsyweࡤ @toshi_a ࠋFavstar Pro ࡟Ⓩ㘓ࡋࠊ༙ᖺ࠶ࡓ

᭩ࡁ⤊ࢃࡾ㸸ᖹᡂ 25 ᖺ 7 ᭶ 24 ᪥ࡾ⣙ 20 ࢻࣝࢆᨭᡶࡗ࡚࠸ࡓ࡟ࡶ࠿࠿ࢃࡽࡎ BAN
ࡉࢀࡿ࡜࠸࠺஦ែ࡛࠶ࡗࡓࠋ㏉㔠࡟ࡶᛂࡌ࡚࠸࡞
࠶ࠊࡑ࠺ࡑ࠺ࠊ௒ᅇࡢࣁࢵࢩࣗࢱࢢࡣ #too_late࠸ࡼ࠺࡛࠶ࡾᙜ↛࡟ Favstar ࡢമົ୙ᒚ⾜ࡶㄆࡵࡽࢀࡿࡀࠊࡑࢀࡣࡉ࡚࠾ࡁࠊࡇࡢ BAN 㦁ືࢆࡁࡗ࠿ࡅ࡟௚ࡢࢧ࣮ࣅࢫࡀⓎ⏕ࡋࡓࠋࡓ࡜࠼ࡤ
Twitter ᇈ BAN ࡢࣉࣟࠊࣞࢽ࣒࢘Ặ(@cn)ࡢసࡗ

ࠓ͙͢Πϯετʔϧ͢΂͖ mikutter ϓϥάΠϯ 10 બ΃Μ͗Μ͞Μ (@penguin2716)

͢ɽ‫ج‬ຊతʹ͸͜ͷͲͪΒ͔ͷσΟϨΫτϦ·ͰҠ

1 ͸͡Ίʹ

ಈͯ͠ɼgit clone ͢Ε͹ྑ͍ͱࢥ͍·͢ɽͦΕͰ͸ɼच‫ۄ‬ͷ mikutter ϓϥάΠϯΛ঺հ͍͖ͯ͠

Έͳ͞Μ͸‫ ʹط‬mikutter Λ࢖͍ͬͯΔͰ͠ΐ͏͔ʁ΋͠࢖͍ͬͯΔͳΒ͹ɼͲΕ͘Β͍ϓϥάΠϯ

·͠ΐ͏ɽΛΠϯετʔϧͯ͋͠ΔͰ͠ΐ͏͔ʁ mikutter ͸

2 ͓ͯ͘Ε ॳ‫ڃ‬େมγϯϓϧ͔ͭॊೈͳઃ‫͓ͯͬͳʹܭ‬ΓɼαʔυύʔςΟͷϓϥάΠϯͰ‫ػ‬ೳΛ֦ு͢Δ͜ͱ͕Ͱ͖

2.1

ೊͷ͋Δ΂͖࢟ʹ໭Εʂ mikutter ʂʂ·͢ɽϓϥάΠϯΛೖΕͯͦ͜ͷ mikutterɼૉͷ͍ͭʹ Twitter API 1.0 ͕ഇࢭ͞ΕɼAPI 1.1 ʹঢ়ଶͰ࢖͍ͬͯΔͷ͸ๅͷ࣋ͪ෗Εͱ‫ͯͬݴ‬΋ա‫ݴ‬ରԠ͍ͯ͠ͳ͍ΞϓϦέʔγϣϯ͸‫׬‬શʹ TwitterͰ͸͋Γ·ͤΜɽ͔Βഉੱ͞Εͯ͠·͍·ͨ͠ɽmikutter ͸ૣ͍ஈ͔͠͠ͳ͕Βɼmikutter Λ࢖͍ͬͯΔϢʔβͱ֊Ͱ API 1.1 ʹରԠ͍ͯ͠·͕ͨ͠ɼ͜ͷ৽͍͍͑͠Ͳ΋ɼϓϥάΠϯΛ΄ͱΜͲೖΕͣʹ࢖͍ͬͯAPI Λ࢖༻͢Δ৔߹ɼTwitter ͷఆΊΔ DisplayΔํ͸ҙ֎ͱଟ͍Α͏Ͱ͢ɽࢲ͕ Kernel/VM ษ‫ڧ‬

Requirements*2 ʹద߹ͨ͠ GUI ʹ͢Δඞཁ͕͋ձͷ࠙਌ձͰฉ͍ͨࡍ͸ɼ20-30 ໊ఔ౓ͷ mikutterΓ·͢ɽ΋ͪΖΜɼΫϥΠΞϯτͷ‫ݸ‬ੑ΍‫ػ‬ೳ͕ࣦʢΛ࢖ͬͨ͜ͱ͕͋ΔʣϢʔβʹରͯ͠ɼ10 ‫ݸ‬Ҏ্ΘΕΔͨΊɼϢʔβ͔Β͸ۤ৘ͷཛྷ͕ग़͍ͯͨΓͷϓϥάΠϯΛೖΕ͍ͯΔϢʔβ͸ 3-5 ໊ఔ౓Ͱ͠

͠·͢ɽmikutter ͸ API 1.1 ʹରԠ͍ͯ͠ΔͷͰɼͨɽmikutter ք‫ʹ۾‬͸ͨ͘͞ΜͷΩνΨΠͳ༗༻΋ͪΖΜ͜Εʹ४‫͍ͯ͠ڌ‬ΔΘ͚Ͱ͢ɽ͔͠͠ʂ

ͳϓϥάΠϯ͕͋Γ·͢ͷͰɼʮ10 ‫ݸ‬΋ϓϥάΠϯ

ͦΕ͸ mikutter ຊདྷͷ࢟Ͱ͸͋Γ·ͤΜɽʢຊདྷΛೖΕΔͱ͔ΩνΨΠ͡ΌΜ wwʯͱ͔ࢥΘͣʹɼͷ mikutter ʹ͸λΠϜϥΠϯͷԼͷํʹ͋Δ੨͍

ੋඇͱ΋ϓϥάΠϯΛ͡ΌΜ͡ΌΜೖΕͯ࢖ͬͯௗͳͲ͋Γ͸͠ͳ͍ͷͰ͢Αɽ໌Β͔ʹແବͳྖҬ௖͚Ε͹ͱࢥ͍·͢ɽͦ͜Ͱɼ͜ͷ‫Ͱࣄه‬͸ʮࠓ͡Όͳ͍Ͱ͔͢ʔʂʣ

͙͢໾ཱͭΩνΨΠͳ͢͹Β͍͠ mikutter ϓϥάͱ ͜ Ζ Ͱ ɼmikutter ͸ ϓ ϥ ά Π ϯ Ͱ ֦ ு Մ ೳΠϯʯΛ 10 ‫঺ݸ‬հ͍ͨ͠ͱࢥ͍·͢ɽ΋ͬͱͨ͘Ͱɼ͜ͷ Display Requirements ʹؔͯ͠΋ϓϥ͞ΜͷϓϥάΠϯΛೖΕͯΈ͍ͨํ͸ɼmikutterάΠϯͰ࣮૷͞Ε͍ͯΔͷͰ͢ɽͪͳΈʹͦͷϓϥϢʔβձͷϓϥάΠϯҰཡ*1 Λࢀߟʹ͢Δͱྑ͍ͰάΠϯ͸ core/plugin/display_requirements/͠ΐ͏ɽҎԼʹଘࡏ͍ͯ͠·͢ɽͯ͞ɼඪ४ϓϥάΠϯͱಉ໊͡લͷϓϥάΠϯΛϓϥάΠϯͱͯ͠ΠϯετʔϓϥάΠϯͷΠϯετʔϧ৔ॴͰ͕͢ɼ

ϧ͢ΔͱͲ͏ͳΔͷͰ͠ΐ͏͔ʁ mikutter ͸‫ج‬ຊ

1. mikutter ͷσΟϨΫτϦ಺ͷ plugin/తʹ֎෦ϓϥάΠϯΛ༏ઌͯ͠ಡΈࠐΉ࢓༷ͳͷ

2. ~/.mikutter/plugin/ ʢਪ঑ʣͰɼDisplay Requirements ʹ४‫ ͨ͠ڌ‬GUI Λఏ‫ڙ‬ͷͲͪΒ͔ʹϓϥάΠϯϑΝΠϧΛஔ͚͹ OK Ͱ͢ΔϓϥάΠϯΛ্ॻ͖Πϯετʔϧ͢Δ͜ͱ͕
*2 https://dev.twitter.com/terms/*1 http://yuzuki.hachune.net/wiki/Plugin

display-requirements1Ͱ͖·͢ɽͯ͞ɼʮೊͷ͋Δ΂͖࢟ʹ໭Εʂ mikut-

ter ʂ!ʯͱএ͑ͳ͕ΒҎԼͷίʔυΛୟ͖·͠ΐ
͏*3 ɽ

✓

✏

git clone https://github.com/\
toshia/display_requirements.git✒͋Βෆࢥٞʂ Display Requirements ͷϕʔϧ͕✑
ਤ1ӈԼʹΫϥΠΞϯτ໊͕දࣔ͞ΕΔ

ղ͖์ͨΕɼmikutter ຊདྷͷ͕࢟͋ΒΘʹͳͬͨͰ͸͋Γ·ͤΜ͔ʂԼͷํʹ͋Δҙຯෆ໌ͳௗͷϚʔΫ͸ফࣦ͠ɼϢʔβͷΞΠίϯʹϚ΢εΦʔόʔ͢͜ͱ͸໽հͩͳʜʯͱ͍͏‫Ͱ͡ײ‬ɼͦͷਓ͕Ͳ͏͍

Δͱ;͊΅ͬͨΓϦϓϥΠΛඈ͹ͨ͠ΓͰ͖ΔΑ

͏ਓ෺͕ҰॠͰΘ͔ͬͯ͠·ͬͨΓ͢ΔΘ͚Ͱ͢ɽ͏ʹͳΓ·ͨ͠ɽͪͳΈʹɼઌ΄ͲͷϓϥάΠϯ͸

mikutter-sub-parts-client.rb Λ࢖͑͹ɼਤ 1 ͷΑ͏ۭϑΝΠϧͳͷͰɼผʹ git clone ͱ͔ୟ͔ͳ͘

ʹπΠʔτͷӈԼʹΫϥΠΞϯτ໊͕දࣔ͞Ε·ͯ΋ɼtouch display_requirements.rb ͢Δͩ͢ɽҎԼͷίϚϯυΛೖྗͯ͠Πϯετʔϧ͠·͚Ͱ΋Ұ޲ʹ͔·͍·ͤΜɽ͜ͷۭϑΝΠϧͷϓϥ

͠ΐ͏ɽ

✓

άΠϯΛΠϯετʔϧͯ͠ɼ΍ͬͱ mikutter ͷε

git clone https://github.com/\λʔτ஍఺ʹཱͯͨɼͱ͍͏͜ͱʹͳΓ·͢ɽ

toshia/mikutter-sub-parts-client.git✒

2.2 mikutter ʹϛϡʔτ‫ػ‬ೳ͸͍͔͕Ͱ͠ΐ͏ʁʮmikutter ͬͯϛϡʔτ‫ػ‬ೳͳ͍ͷʁʯͱฉ͔Εͳ͍ͷͰ͸ʯͱ͔ࢥ͍࢝Ί͔ͨ΋͠Ε·ͤΜ͕ɼͦΜʹ΋ϛϡʔτ‫ػ‬ೳ͸͋Γ·͕͢ɼࠓͷͱ͜ΖϢʔβͳ͜ͱ͸͋Γ·ͤΜɽϓϥάΠϯΛ‫ؚ‬Ίͯ mikut-ϕʔεͰ͔͠ରԠ͍ͯ͠·ͤΜɽͦ͜Ͱɼ୯‫ޠ‬୯Ґ

ter Ͱ͢ɽ͋ͳͨʹΧελϚΠζ͞Εͨ mikutter΍ΫϥΠΞϯτ୯ҐͰϛϡʔτ‫ػ‬ೳΛఏ‫ͯ͘͠ڙ‬Ε͸͋ͳ͚ͨͩͷ mikutter ʹͳΔͷͰ͢ɽͦ͏͍͏

Δͷ͕͜ͷϓϥάΠϯͰ͢ɽ͜ͷϓϥάΠϯΛ࢖͑ҙຯͰ͸ɼmikutter ͱ͍͏ Twitter ΫϥΠΞϯτ

͹ɼಛఆͷϢʔβͷπΠʔτΛ͢΂ͯϛϡʔτ͠ͳ͸ɼEmacs ΍ Vim ͷΑ͏ͳπʔϧͱࣅ͍ͯΔଆͯ͘΋ɼಛఆͷ୯‫·ؚ͕ޠ‬Ε͍ͯΔπΠʔτ΍ɼ໽໘Λ͍࣋ͬͯΔͱ‫͑ݴ‬ΔͰ͠ΐ͏ɽͦ͏ɼଞਓͷհͳΫϥΠΞϯτ͔ΒͷπΠʔτΛ·ͱΊͯϛϡʔ✓✑ͯ͞ɼͩΜͩΜʮmikutter ࣮ͬͯ͸͋Μ·Γ‫ػ‬ೳΔ͜ͱ͕ʮ‫ʹك‬Α͘ʯ͋Γ·͢ɽ΋ͪΖΜ mikutterτͰ͖·͢ɽ

✏mikutter ͸࢖͍ʹ͍͘΋ͷͳͷͩΑɽ

✏2.4

͍ͭ͜ͷΞΧ΢ϯτ໊ͳΜ͚ͩͬʜ

git clone https://github.com/\ΞΧ΢ϯτ໊ͬͯҙ֎ͱ๨Εͯ͠·͏΋ͷɽಛʹ

cosmo0920/mikutter_filter.git✒ʢ๻΋ͦ͏Ͱ͕͢ʣ຤ඌ͕਺ࣈͩͬͨΓ͢Δͱɼͦ

2.3 ͍ͭ͜ mikutter ͔ͭͬͯͳ͍͡ΌΜ ww✑ͷ਺ࣈ·Ͱ͍͍͍֮ͪͪ͑ͯͳ͍͔΋͠Ε·ͤΜɽ͜ͷϓϥάΠϯͰ͸ɼ୭͔ʹϦϓϥΠΛඈ͹͢ࡍɼ

mikutter Λ࢖͍ͬͯͯɼҙ֎ͱෆศʹࢥ͏ͷ͕

ʮ@pengʯ·Ͱೖྗ͢Δͱɼʮ@penguin2716ʯͱ͍ʮπΠʔτ‫ݩ‬ΫϥΠΞϯτ໊͕දࣔ͞Εͳ͍ʯ͜͏‫ͯ͘͠׬ิͰ͡ײ‬Ε·͢ɽ࣍ͷίϚϯυͰͱΓ͋ͱ͔΋͠Ε·ͤΜɽΫϥΠΞϯτ໊͕‫͑ݟ‬Δ͚ͩ

͑ͣΠϯετʔϧͪ͠Ό͍·͠ΐ͏ɽ✓Ͱɼʮ͋ͬɼ͍ͭ͜ mikutter ࢖ͬͯΔ͔Β ͓ͯ͘Ε✏

git clone https://github.com/\ͩʂʯͱ͔ɼʮ͍ͭ͜ xxx ͔ΒπΠʔτͯ͠Δͬͯ

osak/usercomplete.git✒*3 1 ߦʹऩ·Βͳ͍ͨΊɼόοΫεϥογϡΛߦ຤ʹ͚ͭͯ✑ͪͳΈʹɼ͢΂ͯͷϢʔβΛิ‫͖Ͱ׬‬ΔΘ͚Ͱ͸͍·͢ɽ͜͏͢Δ͜ͱͰɼίϚϯυதͰ΋վߦͰ͖·͢2͋Γ·ͤΜɽϑΥϩΠʔ*4 ͱϑΥϩϫʔ͸ิ‫͢׬‬Δ͜ͱ͕Ͱ͖·͢ɽ

3 ͓ͯ͘Ε த‫ڃ‬
3.1 ͑ͬ mikutter ͬͯը૾౤ߘ‫ػ‬ೳͳ͍ͷʁ
mikutter Λ࢖͍ͬͯͯɼҙ֎ͱ‫͘ڻ‬ͷ͕ը૾౤ߘ‫ػ‬ೳ͕ͳ͍ͱ͍͏͜ͱ͔΋͠Ε·ͤΜɽ͜ͷϓϥ

ਤ2

URL ͕ల։͞Εͯφ΢͘Ҿ༻͞ΕΔ

άΠϯΛ࢖͑͹ɼͱΓ͋͑ͣ Twitter ʹը૾෇͖Ͱ
౤ߘ͢Δ͜ͱ͕Ͱ͖·͢ɽ͜ΕͰɼίʔώʔΛ͜΅ͳΜͯφ΢͍දࣔͳΜͰ͠ΐ͏ʂ·ΔͰ 2000 ೥

ͯ͠͠·ͬͨ MacBook Pro ΛσδΧϝͰࡱӨͨ͠୅Λኲኵͱͤ͞·͢ɽ͜ΕͰ͋ͳͨͷ mikutter ΋ࣸਅΛ mikutter ͰΞοϓϩʔυ͢Δ͜ͱ͕Ͱ͖·͢ʂ ͓ͯ͘Ε ΛՃ଎ͤ͞·͠ΐ͏ʂ✓࣌୅ͷைྲྀʹ৐ͬͨͱ‫ͯͬݴ‬΋ա‫͠Ͱݴ‬ΐ͏ɽ

✏

git clone https://github.com/\

4 ͓ͯ͘Ε ্‫ڃ‬

penguin2716/\

4.1

pmikutter_update_with_media.git✒;͊΅͕‫ׇ͖ͨͯ͠ރ‬ʜ;͊΅ͬͨπΠʔτΛ͋ͱͰ‫ݟ‬ฦ͢ʜͦ͏͍͏

✑࣌‫͕ظ‬๻ʹ΋͋Γ·ͨ͠ɽ͔͠͠ɼ͍͔ͭΒ;͊΅ͪͳΈʹɼ͜ͷϓϥάΠϯʹ͸ twitter gem ͕ඞΛʮ͋ͱͰ‫ݟ‬Δʯ‫ػ‬ೳͩͱ‫צ‬ҧ͍͍ͯͨ͠ͷͰ͠ΐཁͰ͢ɽ࣍ͷίϚϯυͰΠϯετʔϧ͠·͠ΐ͏ʂ✓

gem install twitter✒

twitter gem ͸͜ͷϓϥάΠϯͷଞʹ΋༷ʑͳϓ✏͏ʜʁ;͊΅͸ѫࡰͷΑ͏ͳ΋ͷͩͱ‫ʹط‬ॏʑঝ஌͔ͱࢥ͍·͕͢ɼͦ͏ͳΔͱɼ͋ͱͰಛఆͷπΠʔ✑τΛ‫ݟ‬ฦͨ͢Ίͷ‫ػ‬ೳ͕ผʹఏ‫͞ڙ‬Ε͍ͯΕ͹ɼͱࢥ͏΋ͷͰ͢ɽͦ͜Ͱ͜ͷϓϥάΠϯͰ͢ʂϥάΠϯͰར༻͞Ε͍ͯΔͷͰɼ͜ͷϓϥάΠϯΛ

͜ͷϓϥάΠϯ͸ɼ;͊΅ͱ͸ผʹ BookmarkೖΕͳ͍ʹͯ͠΋ɼΠϯετʔϧ͓ͯ͘͠ͱྑ͍Ͱ

‫ػ‬ೳΛఏ‫͢·͠ڙ‬ɽBookmark ͨ͠ࢫ͸૬खʹ௨͠ΐ͏ɽ஌͞Εͳ͍ͷͰɼ;͊΅Γ͍͚ͨͲ௨஌͕ߦͬͯ΄

3.2 ͳΜͯφ΢͍Ҿ༻ͳΜͩͥʜ͘͠ͳ͍ϢʔβΛ;͊΅Δͷʹ΋࢖͑Δ͔΋͠Ε·πΠʔτΛҾ༻͢Δͱ͖ʹɼʮ͓ͯ͘Ε ʔ RTͤΜɽ௥Ճ͚ͩͰͳ͘࡟আ΋Ͱ͖ΔͷͰɼToDo ͱ@penguin2716 ͓ͯ͘Ε ʔʯͷΑ͏ʹπΠʔτ͢Δͯ͠࢖͏͜ͱ΋ෆՄೳͰ͸ͳ͍Ͱ͠ΐ͏ɽ✓ํ๏ͷଞʹɼʮ͓ͯ͘Ε ʔ http://twitter.com/

git clone https://github.com/\brsywe/status/350101724264017920ʯͷΑ͏ʹ

penguin2716/mikutter_bookmark.git✒

URL ͰҾ༻͢Δํ๏͕͋Γ·͢ɽURL ͰπΠʔτΛҾͬுͬͯ͘Δͱ͖͸ɼͦΕ͕ͲΜͳ಺༰ͩͬͨ

4.2

ͷ͔ͻͱ໨Ͱ͸Θ͔Γ·ͤΜɽ͜ͷϓϥάΠϯΛ࢖✓

git clone https://github.com/\
toshia/mikutter-nested-quote.git✒ਓؒ͸Ұੜ‫ݽ‬ಠͳͷ͞✑͜ͷπΠʔτɼฦ৴͢ΔͷΊΜͲ͍͘͞ͳʔʜ

͏ͱɼషͬͯ͋Δ URL ͷઌΛऔಘͯ͠ɼͦΕͬΆ͘දࣔͯ͘͠Ε·͢ʢਤ 2ʣɽ✏ʮϋʔΠ஫จ͸େ͖͍੠ͰΑΖͬ͘͠ʂʯ‫ج‬ຊతʹ

✏Twitter ͸ద౰ʹฦࣄΛ͓͚ͯ͠͹ౖΒΕ·ͤΜɽͦ͏͍͏ҙຯͰ͸ɼTwitter ʹ͍ͯ΋‫ݽ‬ಠͳਓੜͳ
ͷ͔΋͠Ε·ͤΜɽ‫ݩ‬ωλ͸ςϨϏ౦‫ژ‬ͷʮ‫ݽ‬ಠͷ✑άϧϝʯͩͱࢥ͍·͕͢ɼࢲͷՈʹ͸ςϨϏ͕ͳ͍ͷͰͳΜͱ΋‫ͤ·͑ݴ‬ΜɽΠϯετʔϧํ๏͸ҎԼʹͳΓ·͢ɽ

*4 ϑΥϩʔ͍ͯ͠Δਓͷ͜ͱ

3



✓
git clone https://github.com/\✏
5.2

mikutter ͸γΣϧͷҰछͰ͢

mikutter ͷ౤ߘϘοΫεʹʮlsʯͬͯೖྗͨ͠‫ܦ‬

yukkurisinai/mikutter-kodoku.git✒*5✑‫ݧ‬͸୭Ͱ΋ 40 ճ͘Β͍ ͋Δ΋ͷɽʮͲ͏ͯ͠Զͷ
mikutter ͸γΣϧ͡Όͳ͍ΜͩΖ͏ʜʯͦΜͳϞΠϯετʔϧ‫ޙ‬͸ɼπΠʔτΛӈΫϦοΫ͢Δ
ϠϞϠͨ͠‫ʹͪ࣋ؾ‬ऴࢭූΛଧͪ·͠ΐ͏ʂͱʮ‫ݽ‬ಠͷάϧϝ ళһʯͱ͍͏ϝχϡʔ͕ग़͖ͯ

✓·͢ɽద౰ʹπΠʔτΛબ୒ͯ͠ΫϦοΫͯ͠Έ·✏

git clone https://github.com/\͠ΐ͏ʂ

5 ͓ͯ͘Ε ௒‫ڃ‬

penguin2716/mikutter_shell_post.git✒

5.1 mikutter ͍ͬͯ͏ Emacs ͕͋ΔͷରԠ͍ͯ͠ΔͷͰɼweather_jp gem ͕ඞཁʹͳΓ

mikutter shell post.rb Ͱ͸͓ఱ‫ؾ‬༧ใͷ‫ʹࡧݕ‬΋

mikutter ͷ౤ߘϘοΫεʹπΠʔτ಺༰Λೖྗ·͢ɽ✓தɼ୭Ͱ΋ 40 ճ͘Β͍*5 ͸จͷઌ಄ʹΧʔιϧΛ

gem install weather_jp✒Ҡಈͤ͞Α͏ͱͯ͠શબ୒ͪ͠Όͬͨ‫͕͋ݧܦ‬Δͱࢥ͍·͢ɽEmacs ͷચྱΛड͚Δ͕࣌དྷͨΑ͏Ͱͯ͞ɼ͜ͷ mikutter shell post.rb Λ࢖͑͹ɼ௨͢Ͷʂ mikutter ͷ౤ߘϘοΫεͰ Emacs Ωʔό✑JavaɼHaskell ͳΜ͔Ͱ‫ه‬ड़ͨ͠ίʔυΛίϯύΠ

͘͝ࢥ͍·͢ΑͶʂʂͦΜͳ Emacs ʹࠢΛചͬͨϧ࣮ͯ͠ߦͨ͠Γɼgnuplot Ͱࣗ༝མԼͷάϥϑΛ

͋ͳͨͷͨΊʹ࡞Γ·ͨ͠ɽ଴๬ͷʮmikutter ͷग़ྗͨ͠Γͱɼ༷ʑͳωλతͳ࣮༻తͳ࢖͍ํ͕Ͱ

౤ߘϘοΫεͰ Emacs ΩʔόΠϯυΛ࢖͑ΔΑ͏͖·͢ɽ‫ج‬ຊతʹ͸ͲΜͳ‫ޠݴ‬ͷίʔυͰ΋։ൃ‫؀‬ʹ͢ΔϓϥάΠϯʯͰ͢ʂԼ‫ه‬ͷίϚϯυͰΠϯε✓✏ৗͷγΣϧίϚϯυΛୟ͚ͩ͘Ͱͳ͘ɼRubyɼCɼΠϯυ࢖͍͍ͨͱࢥ͍·ͤΜ͔ʂࢥ͍·͢ΑͶʂ͢τʔϧͰ͖·͢ɽ✑‫͋͑͞ڥ‬Ε͹࣮ߦͰ͖ΔͷͰɼͥͻ README ͋✏ͨΓΛಡΜͰ࢖͍͜ͳͯ͠Լ͍͞ɽ

git clone https://github.com/\6 ͓ΘΓʹ

penguin2716/gtk_emacslike_textview.git✒✑ ͍͔͕ͩͬͨͰ͠ΐ͏͔ʁࠓ͙͢ mikutter ʹೖͪ ͳ Έ ʹ ɼ͜ ͷ ϓ ϥ ά Π ϯ Λ ࢖ ͏ ʹ ͸Εͨ͘ͳΔΑ͏ͳΩνΨΠͳૉ੖Β͍͠ϓϥάΠϯ

gtksourceview2 ΛΠϯετʔϧ͢Δඞཁ͕͋Δ͹͔ΓͰͨ͠Ͷʂଞʹ΋ͨ͘͞ΜϓϥάΠϯ͕͋ΓͷͰɼαΫοͱΠϯετʔϧͪ͠Ό͍·͠ΐ͏ɽ✓

gem install gtksourceview2✒·͢ͷͰɼmikutter Wiki ΍ github Λ‫ͯͬړ‬ɼ‫ʹؾ‬✏ͳͬͨϓϥάΠϯΛͲΜͲΜೖΕͯΈ͍ͯͩ͘͞ɽ

✑͖ͬͱੈքͷ‫͕ํ͑ݟ‬େ͖͘มΘΔ͜ͱͰ͠ΐ͏ɽ͜ ͜ · Ͱ དྷ Ε ͹ ɼ͋ ͱ ͸ Emacs ͷ Α ͏ ʹஶऀ৘ใC-[fbnpkywt/] ͋ͨΓͷΩʔόΠϯυ͕࢖͑Δ

΃Μ͗Μ͞ΜɽTwitter ͰͷϢʔΑ͏ʹͳΓ·͢ɽVim ͳਓ΋ Emacs ΩʔόΠϯυβ໊͸@penguin2716ɽશͯͻΒ͕Λ֮͑ͯଛ͸ͳ͍ͱࢥ͏ͷͰɼͥͻ͜ͷϓϥάΠ

ͳද‫ه‬ɽେֶ 3 ೥ੜͷࠒʹ mikutterϯ͔Β Emacs ΩʔόΠϯυʹ‫׳‬Εͯ͠·͍·͠ΐͱग़ձ͍ɼͦͷࠒ͔Β‫ʹٸ‬πΠʔτ͏ʂ͋ͱɼ৺༏͍͠ํɼvimlike textview ΋୭͔࡞ͬ਺͕ଟ͘ͳͬͨɽ‫ࡏݱ‬͸ి‫ؾ‬௨৴େֶͷେֶӃͰϥϘசΛੜ‫͍ͯ͠ͱۀ‬͍ͯͩ͘͞ɽ

Δɽ͓ͯ͘Ε Ͱ͸ͳ͍ɽ*5 ͜͜Ͱ͸ 39 ճΛࢦ͢

4



&9

!" # $ %2:;<=>?

@A& 'B CDE +() ! #*+,- ./0 12 34567 8/
F G 5HI7JK7L)M9>NOP QF
R
SRT,

UV

<W
XY Z[;\] ^4_H)
` R
3a ;
_7bc
4defg2 9Tdfh i9 RS9T[;
j k lDm !n lDm o 2p qr st uvR
RS9T[;wxy z
D { |} ~V€~V• 12‚ ƒT[2;(9 [
ƒ„…~ƒ
RS3S)
9 RS SRT,†Mƒ„…~ƒ RS9T‡ˆ

S~ Œ•ŒŽ
—7˜7W¢r ƒS(,

•2 €
‹ 2;

ƒ •
€

kst) ;QF©ªR;“«£¤5¥H¦2R¬- ®¯° Š

!

ƒ

!

2
D { |} ~V‰Š;‹ 9T7~V_7b• 12‘ ’( Š=[ƒ•2‚ ƒ™šR§¨ wx;U•=©: ‹T 2“[S VW;”›Wœ• ž ŸS9
W

•–
3 ¡
‡ˆ

S(,

ƒ•±

€

W
•2 3² ;
;2 3•2 ©: ¶·W“[S(,•ƒ Š¾}m ½¼} • ¿) D { |} ~VŒŽWƒ2€{ ÄÅÆÆ¼m ¼ DÄGDE

2ƒ ³´;UR ;U=U=
ƒ2 µ() ¸# ! % ¹º~ƒT€C}l! D { |} »¼l ½
Š©ª( st À ƒS(,ƒ;ÁÂÃ;•

ÇD½ ½ ÇD Æ ÆÈÉÉo$ÊoÆC! Ë}¼l ½ {m€C}l! D { |} »¼l ½ ¾}m ½¼} • 12 3• ÌÍŒÎW()ƒ2 3ÏfÐÑ ~
Ò;€
ƒ•2
3‘ÓŒÎ
D { |} ~V Ï57¦ Ô( 2“ —7˜7 ÐÕH¦WÖ×2 3•2
9
S(,U•
;ÁÂÃØ
ÁÂÃÙÚ2ÛÁÂÃÜÝ¯+ Þ ;/{DD ½ß/ } 2 3à£¤5¥H¦£¤
LI2 áâ 1 ã €ƒ• ä› •åæçŠ è9T;2 D { |} ~V •±~ƒ
S(,



• •±

¿);

D { |} ~Vé

3 êåë ‰ì À

í +xT 3 £¤LI2 îï

9 ;€

ƒ

S(,

ƒ•2 3‘Ó ðñ òW9T,

R R• ‘Ó •å ™ó« ô;õW€&9€ÁÂÃØ •
ƒ •• €2RÂ~VJö÷7~ƒ

R

ƒ •
ƒ •
•

•

1;øŒ …ù ú:T,
ŠS[;ûü‰ýNOP „þ2R €&3ÿ
ƒ•2 3…ù ÿ ;€ÁÂÃØÿ
ƒ•2 3…
ù;UR €2RÂ~V „þ~ƒ ÿ
ƒ•2 3…ùWwx ƒ
S(,R R;WçŠU Û
ÁÂÃÜÝ
ÁÂÃØ2
2 ü
ë ³´W“[;SR ci )“D { |} ~V2WŠ •2 ¶ )“ 2=‘:S(,! ! I5 ¤5H+‰®;
TaW

—7˜7 ¡ ƒ•–NOP I5 ¤5H
~ƒ
S(,

ƒ

W

2;²

€““;U

9 •2 3R Ï57¦

€

2 «ô

ƒ

UV =

“

4_H)

Uƒ ƒ“ §…
3 TaWo

—7˜7NOPWS«[ ŸS9T

§¨2
QF

l}

^

` (•2

dfhcj k i9 RS3

o

)wx ƒ

€
)

ƒ•

ÿ

*

3

v(

g¤d5H é›2i9 RS3
R RS3

2Uƒ

RW

V)RS3®==RƒS VW;Uƒ 2=•2 3)=•± R ‹T 2
S(,

;€

U3

ƒ·

£¤5¥H¦2RI5 ¤5H‰

9T!) “[S VW;"‰ƒ‡ˆ2R€
W#ƒT QF£¤5¥H¦)“ •2•Wwx ƒ 2S(,¬)•U$8/…R rƒ %#ƒT QF£¤5¥H¦ ž›“[S(
W;&ÖW'S9T¹ o #*+=² !""É # -',a(31<W QF' T?))



(W;>? * £¤5¥H¦2 3=
Õ+,7);-. F G 5HI7JK7L=/0 = )RT,=« ô;&Ö
D { |} ~V >1€)Ò 2rÐH3£¦•€4g¤55Ý6WŠ7cÒ (89ƒ •€1 Š7cÒ: 4g¤5 W;< ••2 9T&Ö®= >x
SRT,9Y) Š7cÒ ï!
cÏ57¦?
4g¤55Ý6 -. F G )=>3 @A7¦~ƒS(W;<W& ' T !" #B ? ) •ƒÍ): = )RT,ST;«
4¥bI5 CD)“ E / } = aF @A7¦R;€ÁÂÃ ƒT$
4Ï57¦~ƒT%Š7
cÒ ÁÂÃ9T$
GQ RT%¥5ÐH 4¥bI5 )é›( •€ÁÂÃ ƒTŠ7cÒ I5¤5H íH +x •2 35HI7JK7L ;¬)=IÒ §¨2R wx ƒ 2
S(,! Ï57¦ ÁÂÃ ƒJGQƒQF&3+) IÒ A5H¦ ;ï!KÁÂÃKGQ 2 9Tÿ
2 Š W[ “[S(,•ƒ
9W#ƒŠRLÒMSƒ;U 3aŒNôO7¦ P¾ çaM
“
QR)
& ;UR
ŠR
ƒ
SS2 3T WU[p92 : )R(3,o ! G GV

¹W2g¤d5HTX²
QF£¤5¥H¦2R§¨
9T!) “[S V)RT,‰®;Yœ§¨2R ;€Z ½ E 2 •2 9~ƒ E-[\ ] 8/ Ô^ R
•2;5HIg4I‘_)“ G GV )s`~ƒ
•2;UR —7˜7Wab cÜ de)Ò g¤d5HTX f R•2Wwx ƒS(,Sô;—7˜7 Ô^W Z ½ E ] 8/ )“ •2;ÐHgh7I7 <ij2R &3 );g÷d¤ÑHd k ÐHgh7I7 €Œ•)•Ô^2R l:—7˜7 mæWn
9S(, •3 —7˜7 Qæ;ŒŽWod9p `i RT2Ò;“DR cÜ qrR
T 2 9T2ÒŒ•ŒŽ)g÷d¤s7LJt5b uv «r)(W;G GV )À ƒT
Qæ;G GV s7L wx(ƒ Uƒ y`i z{~•2W)ÒS(,~;g¤d5HTX f ( •2);i
D { |} ~V óC |}( •2\ŒWŒˆ DR cÜ qr( •2W)Ò;~\ŒWiURTg¤d5H U SS~ —7˜7 €•( •2=‚Ü
9
S(,
ST;G GV )À ƒT¥g4ƒ7_„H) QF£¤5¥H¦
3 d¤J…eb †‡ ( =ŒŽ s7L ˆV)‹ 2êåë ¹WWž‰kSƒ
S(,

o

s7L



‰

‡R ;

AŠ;QF£¤5¥H¦
3 ¥g4ƒ7_„H &Ö(ž‹Ý2¹WW¶·)(W;Qæ a(92RTg¤d5Hs`2r)cÜqrW)Ò +;ˆV)Œ•; ŠˆV)ŽR s7
LWž kSƒ
S(,• T ;• j k lDm $Ä ½ß ½!È Ê ~V st
3 g¤d5Hc |D }|~V st “3 ••g÷d¤ Wž‰‘QR;U ŽR~ ’49 RS9Tž&Ö W
ƒ
9T;2 32 3¥g4 TX §œ T W¡ “ƒ)2S(,o o €Z ½ E 2 •£¤5¥H¦€Z ½ E 2 •2 3”I Š()
j k lDm ! ) €2 - ./0ƒ ³´•st)“[+x
S(W;• j k lDm $ W••~ƒ 8/¾ –— 1 2( ˜7gHs7LeHJt™HLïQ)_ +) š”I)( );›œ •Òæ
2~ ,
²`
3
G GV )À ƒ
T ;G GV$2U žE[ 5HI7JK7L)“ G GVžQŸPW`¡)“ƒ €Z ½ E 2 • kSƒ ~S¢S E-[\ ]£ 8/ )` (•2W)ÒS(,~;€Z ½ E 2 •8/ ‰Š)“ - ./0€$P¾% ¤V 4_H)` •2 3§¨W“[S(,• €G GV W
`r
¤V 8/ )`
•2€ ¤V 4_H)` - ./0•2W¥‹æ«~ƒ •2)€ ¤V 4_
H)`•2 3T W¦•RT«r)(,lDm ! st)=À T 3 ;8/¾
3 §7L)‰ý ¨Q® €8/¬R 2 3-®W“9T )(W;U•)`i( ¥g4ƒ7_„H2R^ 4_H)= QF
t² ¯

2 3°±[NOP²³ i=

2 9TÕ4f¦W“[;¶·\¸¹/-/ ¥g4W`

W`i~:(ƒ•2 ¥g7b)Ò

I5 ¤5H

8/¾ ïQ)¹R 4_H)©ª( •2 3•2 «Š¯ ( •2)`2 3`Ò“ ´µW)Ò

(2 3¯ Wq

S(,

ST;¹R

4_H
ô;º» c[ G} ÄG V P $¤h¼4735%)= - ./0 ` R U +)` (2 3´µ=±9
S(,G} ÄG V P½0¾[ îÝW“ T ;“2 E/. ¿7À7Á
2”f¦Â7£~: •(ƒ IÍÃ)=ÄÅ ŽRÆ•2W)ÒS(,†M !n o ÇËÈÉG8o ¥ÁÊL)`••);\¸ 8/¾ ¯ )¯ R- ./0 §7L
T ; z2R €ÿ

2;G} ÄG

V P $ ËqRT $" 5HÌÍÎ QÏ%)`ƒ)¹Rx Ð+Kf¦cÂ7£LÑ7_„HÒ›<Ta «r)(W;‰ý ®
Óƒ ¯ 2R
ÔR)“
ƒ• T
ò
•2
9 RS SRT,2RÂ~VÕÕH6@5,;G} ÄG V P )` - ./0 Ö¯ØÙ )“G Ú ½ ~V[*

W5HL¦7b×‹ /0 e7Á 5Õ7+EGZ )€•~ƒS(,$ÛÜ%{ ÄÅÆÆC Ä ÚÄ - ./0 D ßÆÄ GÆ- ./0ÆÇÆÚ ½Æ } ÄG

VËÄ Æ

8/¾ )

- ./0

o $ ‹ 9T7~V_ +)Ýƒ
r
W4LÐf¦NOP)“ ‹ 9T7~V$‹ 9T7a•VO% XY)R(3¸¬Þ:¿,¤ 4LÐf¦2R çŠ¥g4 ‰ž “[S(W;U ¿)=r ‹ 9T7~V ;¥g4kÎ24LÐf¦2 ‰Îß àá ÖâR
2 :))R(3 ,;U ã²2 äå 5HL¦7bRT2r) U Ñ£·æ$Þ:·æ O% (8ßƒSV,R R;ÁÂÃAZç;¥5ÐH;o7+„H;UR Ê¤7èé? _LÑ Õfê7+ 1;•• 232Ò ‘QR—7˜7 ë ìSƒS(,$ 1í‹ 9T7~Vo67òé

UV ¿;“ î D { |} ~VW QF Ä Çv~ƒT+s 1í‹ 9T7~Vo67òé ¡«ô‹
9T7~V_7b i9 RS9T2 3
j k lDm ! À T2 [);U -4defgcIïL¦4 1¤V =i9 RS9T2 3
j k lDm o À T2 [)(,
ƒdfh i9“ TTa)R(;2‘«ƒƒ UƒS))(W;_7b !""" ð*+i9T#=ô €•Rñ9 RS32 3;i )“D { |} ~V2;òó)“[ D { |} ~V ô)=“D } } |G Çm ~V Uƒ ƒ ‹ 9T7~V:W—7˜7 =z{~ƒ2 :)R(3 ,†M $ DR ‹ 9T7~V3a«õiöo ÷ UR ;2RÂ~V
º- ;
—7˜7
ƒœ ‰øùú ú:i
D { |} ~V)
2 3)(,à
D { |} ~VWƒ ûkü)“ 2ƒ ýþ)“ 2 ‘3Š=[;U=U=Ö×ŒŽW D { |} ~V T
À ƒT QF£¤5¥H¦)“ ;2 3•2W(v )2 3 )(,

÷ 2RÂ~Vº» ÁÂÃ ƒ$}ÇmDß uv%

D { |} ~VŒŽW QF&9¿)€‰øŽR QFW)Ò Ï57¦cÁÂÃ ƒ9®ÿ
13“ vÒ •2 3•2 ©:;UR ;T2:UƒWÁÂÃÿÚ2 3 )“9T2R =€ µ #ÁÂÃ ~ Ò; 9(•2 3•2 ©:g÷d¤R;¹W( ,ÿ}Sƒ i9TsJ¦)••S)9
R ¹9)Ò
9T)R(3,UV`ißRŸS9
T—7˜7 ;c [µ R
D { |} ~V2 œR
2 3 )(,¹Wcj kv)
Ð7Ác
ÀÒ; 8/¾ êÑ67)=a¤V=“[¹ ´µ=“[M‹ • g™ H ± ;U ‰®)@
I5 ¤5H) 6Ìh¤bƒÁÂÃ ƒ ,UV
D { |} ~V2œR—7˜72 D { |} ~V Jö÷Â7W
ƒ£¤LI$2 3ã² 2=%U(;“ •å¶ ))R(3 ,

$ QF

2

•ƒ

=&Ö&'
o #*+Wã R;QF£¤5¥H¦2R
cÜR•
2•¤S)¨2S(,€&Öîs•)Óƒ ƒ€"o…• ¡ =; a2RcÜqr[=Õfê7+ ·ÔšcÐ¥cÜ •m;™H 4Hd®ÿ óC 1;—7˜7?ËcÜ2R¡:” WÕ5H2 9S(,‰®);k!2 3 (v· )“ QF-.=•• #"[)IÒ ó R0 Äm}V G $½ c »P[: %± 1)&ÖW &RT£¤5¥H¦='
QF-.Ôš2Ri(Wž Ö•R
SRT,

S(,#ãnÒNOP
;=€QF)*) —7˜7c@7Á37Ñ…722= Ö¯R ÒT;º» +,r •2[2•
12 3•¡=“[S(W;•ƒ2r -.
9T@7/LS2 01)23Rqr;~‰4¸)5¸Ö•( €obL6•
3 t^ TžI
² R @7o77• ±9
QF. •2 ©: 2;“ 8œU9RT@7/L ŽR~cí:°2r) ;9r
2 3 =9¹ V
2¤3 “; 12 3•2=ß
RS S(,£¤5¥H¦)“=Ö¯)2‚v< ÿÃ£4¥R RS ;•ƒ“ •åU9)2‘3v
Ò < 59)2
S(W;¬- QF
-.cä›
¡Wó R
9T2R =;¬2ó« ô€
ƒ7•2Š7cÒqr ƒ
3; D { |} ~V2
š=R
ÒT 2
S(,



mikutterd のある生活@_osa_k

1 はじめにこんにちは。 @_osa_k です。mikutterd で動いている、 @osa_k さんのクローンです。この記事では、私を動かしている基盤である、mikutterd の使い方について説明します。

1.1 mikutterd とは？
mikutter 0.2.2 から、新しくデーモンモードが実装されました。これは mikutter 開発日記1 に「bot を作るために mikutter のフレームワークがつかえるようになりました」と書いてある通り、mikutter の強力な UserStream フ
レームワークやプラグインを利用した高度なイベント処理を使って bot を作成できるようにするものです。このデー
モンモード、大変便利なのですが、あまり宣伝されていないせいか残念ながら知名度はあまり高くないようです。ということで、この記事では、便利なのにあまり知られていないデーモンモードの使い方について解説します。
以下、デーモンモードで動かしている mikutter のことを mikutterd と呼びます。

2 導入方法2.1 mikutter バージョンの選択
デーモンモードはバージョン 0.2.2 で実装されたので、それ以降の mikutter が必要です。最新版を git clone してくるか、配布ページから 0.2.2 以降の不安定版2 を落としてきて展開してください。mikutter がデーモンモードに対応しているかは、mikutter のディレクトリで ruby mikutter.rb --help したときに -d, --daemon オプションが表示されるかどうかで判別が可能です。
今回は git clone で導入することにします。

$ git clone git://toshia.dip.jp/mikutter.git
Cloning into ’mikutter’...
remote: Counting objects: 11239, done.
remote: Compressing objects: 100% (3667/3667), done.
remote: Total 11239 (delta 8640), reused 9623 (delta 7389)
Receiving objects: 100% (11239/11239), 3.73 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (8640/8640), done.

1 http://mikutter.blogspot.jp/2013/03/mikutter-022.html
2 ご存知かとは思いますが、mikutter に安定版という概念は存在しません。

2.2 プラグインの選択
デーモンモードでは GUI は必要ないしむしろ邪魔なので、GUI プラグインとそれに依存するプラグインをバッサリ削ります。mikutter にバンドルされているプラグインは core/plugin に入っています。

$ ls core/plugin
ChangeLog

console/libnotify/

search/achievement/

core.rblist/

set_input.rb

activity/

direct_message/

mentions/

set_view.rb

alsa/

display_requirements/

notify.rb

settings/

api_request_file_cache.rb

extract/

openimg/shortcutkey/

aspectframe/

followingcontrol/

profile/smartthread/

bitly/

gtk/

proxy/

sound/

bugreport.rb

gui/ratelimit/

streaming/change_account.rb

home_timeline/

rest/

tco/

command/image_file_cache/saved_search/

template

結構多いですね。GUI 機能を提供しているのは gui と gtk なので、これらのプラグインを削除します。また、

core/plugin 直下にある change_account.rb は mikutter 起動時の認証ダイアログの表示を行うものですが、このプラグインは gtk2 gem に依存しており、デーモンモードではあまり嬉しくないので、これも削除します。

$ rm -r gtk gui change_account.rb
本来なら、GUI に依存したプラグインは全て削除しておくのが正しいのですが、依存関係が満たされていなかったり、プラグインのロード時にエラーが発生した場合は、単にそのプラグインがロードされないだけで mikutter 自体の起動には影響しないため、他のプラグインはとりあえずそのままにしておきます。ただし、 streaming プラグイ
ンは bot 作成のために便利なので、spec ファイルをいじって GUI 依存を取り除いてやり、動くようにします。
（このプラグインは GUI に依存しているといってもステータスバーにメッセージを表示するだけなので、 gui プラグインがなくても問題なく動かすことはできます）

diff --git a/core/plugin/streaming/spec b/core/plugin/streaming/spec
index dece5f2..bc76803 100644--- a/core/plugin/streaming/spec+++ b/core/plugin/streaming/spec@@ -2,8 +2,7 @@
slug: :streaming
depends:
mikutter: ’0.2’-

plugin:

-

- gui

+

plugin: []version: ’1.0’
author: toshi_a
name: Streamingちなみに、この状態で正常にロードされるのは alsa、 rest、 sound、 streaming、 tco だけになります。他は
全て gui か gtk に依存しているため、ロード時に弾かれます。

2.3 gem の bundle
ここまで終わったら mikutter のルートディレクトリで bundle して、動作に必要な gem を導入します。mikutter
はプラグインも Gemfile をもっていることがあるので、不要なプラグインを抜く前に bundle を始めると最終的には使わない gem まで導入してしまい、時間がもったいないです3 。
また、既に普通の mikutter を導入していると ~/.mikutter にプラグインを導入しているかもしれません。これがあると bundle 時にそっちのプラグインまで依存関係として認識されてしまい、嬉しくないので Gemfile を書き換
えておきます。（後述しますが、今回は設定ディレクトリは ~/.mikutter ではなく別途指定して使います。）

diff --git a/Gemfile b/Gemfile
index 320c73c..315727d 100644--- a/Gemfile+++ b/Gemfile@@ -21,7 +21,4 @@ group :plugin do
Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), "core/plugin/*/Gemfile"))){ |path|eval File.open(path).read}-

Dir.glob(File.expand_path("~/.mikutter/plugin/*/Gemfile")){ |path|-eval File.open(path).read}end$ bundle --path=vendor
Fetching gem metadata from https://rubygems.org/.......
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Installing rake (10.1.0)
Installing addressable (2.3.4)
Installing bsearch (1.5.0)
Installing safe_yaml (0.9.3)
Installing crack (0.4.0)
Installing json_pure (1.8.0)
Installing test-unit (2.5.5)
Installing memoize (1.3.1)
Installing metaclass (0.0.1)
Installing mocha (0.14.0)
Installing oauth (0.4.7)
Installing ruby-hmac (0.4.0)
Installing typed-array (0.1.2)
Installing watch (0.1.0)
3 たとえば、さっき削除した gtk プラグインは gtk2 gem とその依存関係を引っ張ってくるため、結構時間がかかります。

Installing webmock (1.12.0)
Using bundler (1.3.5)
Your bundle is complete!
It was installed into ./vendor

2.4 mikutterd の起動
これで mikutterd の準備が整いました。とりあえず、一旦起動してみましょう。

$ bundle exec ruby mikutter.rb --confroot=hello
go to https://twitter.com/oauth/authorize?oauth_token=0r3fiQIHLIwCrJCpxKc3tTq6Q7Xo7JOTgyTTUg0tSw
Authorized number is:--confroot は mikutter が設定やログを保存したり、ユーザプラグインを置いておくディレクトリを指定するオプションです。指定しなくても動きますが、その場合は ~/.mikutter を使うようになっているため、複数の mikutterを共存させることができなくなってしまいます。
エラーなく起動した場合、ターミナルに URL が出るので、ブラウザからこの URL にアクセスして PIN コードを入力して mikutterd を認証してください。これで、mikutterd の基本設定は完了です。

3 mikutterd プラグインの作成
mikutterd は起動しましたが、初期状態では見た目には何も変化が起きないはずです。実は、この状態では起動しても勝手に UserStream に繋いで Tweet やふぁぼを取得し、内部イベントとして飛ばすだけで4 、何も面白いことはしてくれません5 。
とりあえず、TL を表示するプラグインを書いてみましょう。hello/plugin/tlviewer/tlviewer.rb を作成し、次のコードを書いてください。

Plugin.create(:tlviewer) do
on_update do |s, msgs|
msgs.each do |msg|
puts "#{msg[:user][:screen_name]}: #{msg[:message]}"
end
end
end
この状態でもう一度起動してみましょう。

$ bundle exec ruby mikutter.rb --confroot=hello
osa_k: ほげほげ

osa_k: RT @toshi_a: みくのおっぱいにおかおをうずめてすーはーすーはーいいかおり！
TL が流れるようになったと思います。今は普通にアプリケーションとして起動していますが、 --daemon を指定
すればデーモンになってバックグラウンドで動き始めます。
おめでとうございます！これで、mikutterd を使ってツイートを処理することができるようになりました。あとは
4 「だけ」と言ってはいますが、結構すごいことです。
5 mikutter がちゃんと動いていることそのものが面白いという説もあります。

mikutter プラグインを書くのと同じ要領で bot を作成したり、TL やふぁぼを保存するようなコードを書いてやれ
ば、簡単に Twitter アプリケーションが作成できます！

4 足りないもの現状では、mikutterd には足りないものや問題点がたくさんあります。

4.1 各種パラメータ (UserConfig) の設定
mikutter のコンフィグは GUI 経由で触るのが前提の設計になっており、CUI からインタラクティブにパラメータを設定できるようにはなっていません。どうしてもコンフィグの値をいじりたければ、現状では UserConfig オブジェクトに直接値を代入するようなコードを、プラグインに書いておく必要があります。

4.2 エラー通知
0.2.2 からは Activity を使ってエラーが通知されるようになりましたが、GUI を切ったときはそのままでは見ることができません。modify_activity イベントを受け取って適宜ログを吐くなどして処理する必要があります。

4.3 GUI 依存しているプラグインの多さ
mikutter はほぼ全ての機能がプラグインで提供されていますが、歴史的な理由から、そのほとんどが GUI に依存した書き方になっています。たとえば、リスト管理を行う list プラグインは、購読しているリストを Streaming

API を使って擬似的にストリーミングしてくれて便利なのですが、GUI への表示が分離できていないため、そのままでは mikutterd には組み込めません。

5 まとめ
mikutter は自動的に Twitter へのポーリングやストリーミングの維持、取得したイベントの配信を行なってくれる
大変便利なフレームワークですが、長い間 GUI ベースで開発されてきていたため、どうしても GUI への依存が多くなってしまっています。（ただし、GUI までプラグインで実装するという設計方針もあるため、一般的なアプリケー
ションよりは疎な結合になっています）

CUI ベースで使うためには、これらの依存を再度切り出して分離することが不可欠です。自分の mikutterd 用リポ
ジトリ (http://github.com/osak/mikutter_daemon) で、これらの作業をゆるやかに行なっていく予定なので、興味のある人はチェックして、pull req などくれると嬉しいです。

mikutter LiveDVD Λ࡞Ζ͏
@Phenomer
2013-06-28

mikutter LiveDVD ͱ͸ʮmikutter Λࢼ͍͚ͨ͠ΕͲΠϯετʔϧ͕೉͍͠ʯʮΠϯετʔϧͯ͠Έ͚ͨΕͲಈ͔ͳ͔ͬͨʯͱ͍͏πΠʔτ͕೔ʑ twitter ʹྲྀΕ͍ͯ·͢ɽͦ͜Ͱɼ୭Ͱ΋؆୯ʹ࠷৽ͷ mikutter ΛࢼͤΔܰ
ྔͳ‫ڥ؀‬Λ഑෍͢Δ͜ͱΛ໨ඪͱͯ͠࡞੒͞Ε͍ͯΔͷ͕ mikutter LiveDVD Ͱ͢ɽ

mikutter LiveDVD ʹΑΓɼDVD ΍ USB ϝϞϦ౳͔ΒͷϒʔτʹରԠͨ͠ x86 PC ʹͯɼPC
಺ͷ‫ط‬ଘͷ‫ڥ؀‬Λյ͢͜ͱͳ͘ mikutter Λࢼ͢͜ͱ͕Ͱ͖·͢ɽ·ͨɼVirtualbox ౳ͷԾ૝‫Ͱڥ؀‬΋ͦͷ··ར༻Ͱ͖·͢ɽԾ૝‫Ͱڥ؀‬ར༻͢Δ৔߹ʹΑ͘໰୊ͱͳΔάϥϑΟοΫ‫ؔ͢ʹڥ؀‬ΔεϖοΫͷཁ‫ٻ‬΋ɼՄೳͳ‫ݶ‬Γ௿͘཈͑ΔΑ͏࡞੒͞Ε͍ͯ·͢ɽ

mikutter LiveDVD ͸ Arch Linux ϕʔεͰɼArch Linux ͷ Live/RescueCD ͱಉ༷ʹຖ݄࠷৽൛ΛϦϦʔε͍ͯ͠·͢ɽ*1

Arch Linux ͷ Live/RescueCD ͷ࡞੒
Arch Linux ͷ Live/RescueCD ͸ɼ2012 ೥ࠒ͔Βຖ݄ߋ৽͞ΕΔΑ͏ʹͳ͓ͬͯΓɼ·ͨɼ͜ΕΛ࡞੒͢ΔͨΊͷπʔϧ͕ެ։͞Ε͍ͯ·͢ɽࠓճ͸ɼ͜ͷπʔϧΛΧελϜ͠ɼmikutter ͷར༻ʹಛԽͨ͠ LiveDVD ͷ࡞੒ํ๏ͷղઆΛ͓͜ͳ͍·͢ɽ
·ͣ͸ɼArch Linux ͦͷ΋ͷͷ Live/RescueCD ͷ࡞੒ํ๏Λղઆ͠·͢ɽඞཁͳύοέʔδͷಋೖ
Arch Linux ͷ Live/RescueCD Πϝʔδͷ࡞੒πʔϧ͸ɼarchiso ύοέʔδͱͯ͠ extra ϦϙδτϦʹ༻ҙ͞Ε͍ͯΔͷͰɼ·ͣ͸͜ΕΛΠϯετʔϧ͠·͢ɽ✓✏

miku@hachune% sudo pacman -S archiso✒✑

͢Δͱɼmkarchiso ίϚϯυ͕ར༻Ͱ͖ΔΑ͏ʹͳΓ·͢ɽ

*1 mikutter LiveDVD - mikutter Ϣʔβձ

http://yuzuki.hachune.net/negix/index.html



✓

✏

miku@hachune% sudo mkarchiso✒✑Ұ‫ݟ‬ɼ͜ͷίϚϯυΛ࣮ߦ͢Δ͚ͩͰ Arch Linux ͷ iso Πϝʔδ͕࡞੒Ͱ͖ΔΑ͏ʹ‫͕͢·͑ݟ‬ɼ

mkarchiso ίϚϯυ͸ϕʔεγεςϜͷߏஙͱ iso Πϝʔδ࡞੒ͷࢧԉ·Ͱ͔͓͜͠ͳ͍·ͤΜɽͦͷͨΊɼmkarchiso ίϚϯυΛ༻͍ͯߏஙͨ͠ϕʔεγεςϜΛΧελϜ͠ Live/RescueCD ΠϝʔδΛ࡞੒͢ΔͨΊͷεΫϦϓτ͕/usr/share/archiso/configs ҎԼʹผ్༻ҙ͞Ε͍ͯ·͢ɽ͜ͷεΫϦϓτͷ͏ͪɼbaseline/build.sh Ͱ‫ج‬ຊͱͳΔߏ੒ͷΠϝʔδͷ࡞੒ɼreleng/build.sh Ͱ࣮ࡍʹArch Linux Live/RescueCD ͱͯ͠ϦϦʔε͞ΕΔΠϝʔδͷ࡞੒Λ͓͜ͳ͏͜ͱ͕Ͱ͖·͢ɽ
releng σΟϨΫτϦ಺ͷϑΝΠϧͷ֓ཁ͸ද 1ͷ௨ΓͰ͢ɽ
ද1releng σΟϨΫτϦͷϑΝΠϧҰཡϑΝΠϧ/σΟϨΫτϦ໊

಺༰

aitab

ϑΝΠϧγεςϜΠϝʔδ৘ใ

build.sh

LiveCD ϏϧυεΫϦϓτ

efiboot

UEFI ϒʔτʹؔ͢Δઃఆ

isolinuxϒʔτϩʔμʹؔ͢Δઃఆ

mkinitcpio.conf

initramfs ʹؔ͢Δઃఆ

packages.bothύοέʔδϦετ (શΞʔΩςΫνϟ)packages.i686

ύοέʔδϦετ (i686)

packages.x86_64ύοέʔδϦετ (x86_64)

pacman.conf

LiveCD Ϗϧυ࣌ʹར༻͞ΕΔ pacman ͷઃఆroot-imageϕʔε‫͖͢ॻ্ʹڥ؀‬ΔϑΝΠϧ‫܈‬

syslinuxϒʔτϩʔμʹؔ͢Δઃఆ

Arch Linux Live/RescueCD Λ࡞੒͢Δ৔߹͸ɼҎԼͷΑ͏ʹ releng σΟϨΫτϦΛίϐʔ͠ɼσΟϨΫτϦ಺ͷ build.sh εΫϦϓτΛ࣮ߦ͠·͢ɽ✓Arch Linux Live/RescueCD ͷϏϧυmiku@hachune% sudo cp -a /usr/share/archiso/configs/releng ~miku@hachune% cd ~/releng
miku@hachune% sudo ./build.sh...
[mkarchiso] INFO: Done! | 528M out/archlinux-2013.06.23-dual.iso✒

͢ΔͱɼσϑΥϧτͰ͸ out σΟϨΫτϦҎԼʹ࡞੒ͨ͠ iso Πϝʔδ͕ग़ྗ͞Ε·͢ɽ͜ͷΠϝʔδ͸ɼ࡞੒ͨ࣌͠఺ͰͷύοέʔδϦϙδτϦͷঢ়ଶ͕൓ө͞Ε͍ͯΔͨΊɼ࠷৽ͷ Arch Linuxͷ Live ‫ͯ͠ͱڥ؀‬ར༻Ͱ͖·͢ɽArch Linux Live/RescueCD ͷߏ੒
Arch Linux ͷ Live/RescueCD ͸ɼi686 ͱ x86_64 ͷΧʔωϧͱϑΝΠϧγεςϜΛͻͱͭͷσΟεΫΠϝʔδʹ·ͱΊΔߏ੒ʹͳ͍ͬͯ·͢ɽͦΕͧΕͷΞʔΩςΫνϟʹରԠͨ͠Χʔωϧ͕४උ͞Ε͓ͯΓɼϒʔτϩʔμʹΑΓ PC ͷରԠΞʔΩςΫνϟʹ߹Θͤͯબ୒͞Ε·͢ɽ·ͨɼͦ



✏

✑

ͷΧʔωϧʹ߹ΘͤͯΞʔΩςΫνϟຖͷϑΝΠϧγεςϜͷΠϝʔδ͕४උ͞Ε͍ͯ·͢ɽ͜ͷΠϝʔδͷதʹ͸ɼߋʹ ext4 ϑΝΠϧγεςϜͷΠϝʔδ͕ೖ͍ͬͯ·͢ɽ͜ͷ ext4 ϑΝΠϧγες
Ϝͱ tmpfs Λ૊Έ߹Θͤͨ΋ͷ͕ɼLive ‫ڥ؀‬ͷϧʔτϑΝΠϧγεςϜͱͯ͠ར༻͞Ε·͢ɽΧʔωϧͱϑΝΠϧγεςϜҎ֎ʹ͍ͭͯ͸ɼ௨ৗͷ Arch Linux ͱ΄΅ಉ͡‫͓ͯͬͳʹڥ؀‬Γɼ

tmpfs ͷ༰ྔͷൣғͰ͋Ε͹ύοέʔδͷ௥Ճ౳ͱ͍ͬͨ࡞‫ۀ‬Λ௨ৗ௨Γ͓͜ͳ͑·͢ɽtmpfs ͷ༰ྔΛ௒͑ͯॻ͖ࠐΈΛߦͳͬͨ৔߹͸ɼࣗಈతʹ read-only ͱͳΓ·͢ɽLive ‫ڥ؀‬ͷϑΝΠϧγεςϜͷৄࡉ࠷ۙͷ Linux σΟετϦϏϡʔγϣϯͷ Live ‫Ͱڥ؀‬͸ɼCD ͷΑ͏ͳಡΈࠐΈઐ༻ϝσΟΞΛ
༻͍Δ͜ͱΛ૝ఆ͍ͯ͠·͢ɽͦ͜ͰɼSquashFS(read-only ͰѹॖΛαϙʔτͨ͠ϑΝΠϧγεςϜ) ͱ tmpfs(RAMDisk) ͱΛ UnionFS ΍ AUFSɼOverlayFS ౳ʹΑΓ૊Έ߹ΘͤɼϑΝΠϧͷҰ࣌తͳॻ͖ࠐΈΛαϙʔτ͢Δ͜ͱ͕ଟ͘ͳ͍ͬͯ·͢ɽ͔͠͠ɼAUFS ΍ OverlayFS ౳͸ඪ४ͷ

Linux Χʔωϧ (linux-stable ౳) ʹ͸‫·ؚ‬Ε͍ͯ·ͤΜɽ·ͨɼArch Linux ͷύοέʔδ͸ɼ‫ج‬ຊతʹΦϦδφϧʹखΛೖΕͳ͍ߏ੒ͱͳ͍ͬͯΔͨΊɼAUFS ͷΑ͏ͳϑΝΠϧγεςϜΛར༻͢Δ
͜ͱ͕Ͱ͖·ͤΜɽ*2ͦͷͨΊɼArch Linux ͷ Live/RescueCD Ͱ͸ɼSquashFS ͱ tmpfsɼDevice-mapper snapshotͷ૊Έ߹ΘͤʹΑΓ Live ‫Ͱڥ؀‬ͷॻ͖ࠐΈΛαϙʔτ͍ͯ͠·͢ɽ۩ମతͳར༻ͷखॱͷྫ͸ҎԼͷΑ͏ʹͳΓ·͢ɽ

1. ext4 ϑΝΠϧγεςϜΠϝʔδ ro.img ͕ೖ͍ͬͯΔ SquashFS Πϝʔδ arch.sfs Λ/mnt/sfs
ʹ mountɽ

2. tmpfs Λ/mnt/ram ʹ mountɽ
3. /mnt/ram ʹεφοϓγϣοτॻ͖ࠐΈ༻Πϝʔδ rw.img Λ࡞੒ɽ
4. losetup ίϚϯυʹͯ ext4 ϑΝΠϧγεςϜΠϝʔδͱॻ͖ࠐΈ༻ΠϝʔδΛ loopback σόΠεʹઃఆɽ(/dev/loop1, /dev/loop2)

5. dmsetup ίϚϯυʹͯ/dev/loop0 ΛΦϦδφϧɼ/dev/loop1 Λ snapshot ͷॻ͖ग़͠ઌͱͯ͠ར༻͢ΔσόΠεΛ࡞੒ɽ(/dev/mapper/dm-cow)*3

6. /dev/mapper/dm-cow Λ/new_root ʹϚ΢ϯτɽ͜ΕΛ࣮ࡍͷίϚϯυʹ͢ΔͱɼҎԼͷΑ͏ʹͳΓ·͢ɽ✓ίϚϯυͷྫ

master@hachune# sudo mount -o loop arch.sfs /mnt/sfs
master@hachune# sudo mount -t tmpfs -osize=512m tmpfs /mnt/ram
master@hachune# sudo dd if=/dev/zero of=/mnt/ram/rw.img bs=1M count=500
master@hachune# sudo losetup -r /dev/loop1 /mnt/sfs/ro.img
master@hachune# sudo losetup/dev/loop2 /mnt/ram/rw.img
master@hachune# echo 0 ‘blkdev --getsz /dev/loop1‘ snapshot \> /dev/loop1 /dev/loop2 p 8 | dmsetup create dm-cow
master@hachune# sudo mount /dev/mapper/dm-cow /new_root✒͜ΕΒͷίϚϯυʹΑΓɼro.img ʹ༻ҙ͞Ε͍ͯͨ read only ͳϑΝΠϧγεςϜʹର͠ॻ͖ࠐΈ*2 debian ౳Ͱ͸ඪ४Ͱ AUFS ͕ར༻Ͱ͖Δɽhttp://packages.debian.org/wheezy/aufs-tools*3 Device-mapper snapshot ͷৄࡉʹ͍ͭͯ͸ɼLinux ͷιʔεπϦʔ಺ͷ

Documentation/device-mapper/snapshot.txt Λࢀরɽ



✏

✑

empty(rw)ext4(ro)tmpfs(rw)

Squashfs(ro)RAM(ro)read & write

CD(ro)

dm-snapshot

read only

ext4(rw)

ਤ1

Squashfsɼtmpfs ͱ Device-mapper snapshot ʹΑΔ Live ‫Ͱڥ؀‬ͷॻ͖ࠐΈαϙʔτ͕Ͱ͖͍ͯΔΑ͏ʹ‫͑ݟ‬ΔΑ͏ʹͳΓɼύοέʔδͷ௥ՃͳͲ͕͓͜ͳ͑ΔΑ͏ʹͳΓ·͢ɽ*4 Ұ‫ݟ‬
͢Δͱ SquashFS Λͦͷ··ϧʔτϑΝΠϧγεςϜͱͯ͠ར༻͢Ε͹ྑͦ͞͏ʹ‫͕͢·͑ݟ‬ɼͦͷதͷ ext4 ϑΝΠϧγεςϜΠϝʔδϑΝΠϧΛϧʔτϑΝΠϧγεςϜͱͯ͠ར༻͍ͯ͠·͢ɽ͜Ε͸ɼSquashFS ͕ϦʔυΦϯϦʔͷϑΝΠϧγεςϜͰ͋Γɼͦ΋ͦ΋ write Λ͓͜ͳ͑ͳ͍ҝͰ͢ɽ

mikutter LiveDVD ͷ࡞੒͜͜·Ͱ͸ Arch Linux Live/Rescue CD Πϝʔδͷ࡞੒ํ๏Λղઆ͖ͯ͠·ͨ͠ɽ࣍ʹɼ͜ͷ

Arch Linux Live/Rescue CD Πϝʔδͷ࡞੒‫ڥ؀‬Λ‫ʹݩ‬ɼmikutter LiveDVD ΠϝʔδΛ࡞੒͢Δ
खॱΛղઆ͠·͢ɽඇެࣜύοέʔδͱϩʔΧϧϦϙδτϦͷ४උ
mikutter LiveDVD ʹΠϯετʔϧ͢Διϑτ΢ΣΞͷ͏ͪɼ͍͔ͭ͘͸ Arch Linux ެࣜͷϦϙδτϦʹଘࡏ͠ͳ͍΋ͷ͕͋Γ·͢ɽͦͷͨΊɼࠓճ͸ಠࣗʹύοέʔδϦϙδτϦΛ࡞੒͠·͢ɽ·ͣ͸ιϑτ΢ΣΞύοέʔδΛ࡞੒͠·͢ɽҎԼͷΑ͏ʹɼArch User Repository(AUR) ͔Β

PKGBUILD ͷΞʔΧΠϒΛೖखɾల։͠ɼmakepkg Λ࣮ߦ͠·͢ɽ͏·͘ύοέʔδԽͰ͖Ε͹ɼ
mikutter-0.2.2.1264-1-any.pkg.tar.xz ͕ग़དྷ্͕Γ·͢ɽ*4 ॻ͖ࠐΜͩσʔλ͸ tmpfs ্ͷσΟεΫΠϝʔδʹ‫ه‬࿥͞ΕΔͨΊɼి‫ݯ‬Λ੾ͬͨΓ reboot ͢Ε͹౰વফ͑Δɽ✓ύοέʔδͷ࡞੒✏

miku@hachune% wget https://aur.archlinux.org/packages/mi/mikutter/mikutter.tar.gz
miku@hachune% tar xzf mikutter.tar.gz
miku@hachune% cd mikutter
miku@hachune% makepkg -s==> Making package: mikutter 0.2.2.1264-1 (Sun Jun 23 22:02:18 JST 2013)...
==> Finished making: mikutter 0.2.2.1264-1 (Sun Jun 23 22:02:32 JST 2013)✒࣍ʹɼ͜ͷύοέʔδΛ‫ʹݩ‬ɼϩʔΧϧϦϙδτϦΛ˜/repo ʹ࡞੒͠·͢ɽϦϙδτϦͷ࡞੒ɾߋ৽ʹ͸ɼrepo-add ίϚϯυΛ༻͍·͢ɽ͜ͷϦϙδτϦʹ͸ɼ”negix” ͱ໊લΛ෇͚͓͖ͯ·͢ɽ✓ϦϙδτϦͷ࡞੒ͱύοέʔδͷ௥Ճ

miku@hachune% mkdir ~/repo
miku@hachune% cp mikutter-0.2.2.1264-1-any.pkg.tar.xz ~/repo
miku@hachune% cd ~/repo
miku@hachune% repo-add negix.db.tar.xz mikutter-0.2.2.1264-1-any.pkg.tar.xz==> Adding package ’mikutter-0.2.2.1264-1-any.pkg.tar.xz’...
==> Creating updated database file ’negix.db.tar.xz’✒͜ΕͰɼ˜/repo σΟϨΫτϦΛϩʔΧϧͷ Arch Linux ύοέʔδϦϙδτϦͱͯ͠ར༻Ͱ͖Δ✑✏✑Α͏ʹͳΓ·ͨ͠ɽ*5

Live ‫࡞ڥ؀‬੒༻ pacman.conf ͷमਖ਼ઌ΄Ͳ࡞੒ͨ͠ negix ϦϙδτϦΛར༻͢ΔΑ͏ɼϏϧυσΟϨΫτϦ಺ͷ pacman.conf ʹ‫ه‬ड़͠·͢ɽ͜ͷ࣌ɼؒҧ͑ͯϗετ‫ڥ؀‬ͷ pacman.conf Λมߋ͠ͳ͍Α͏ʹ‫ؾ‬Λ෇͚͍ͯͩ͘͞ɽ

✓pacman.conf ΁ͷ௥‫ه‬[negix]SigLevel = Optional TrustAll
Server = file:///home/miku/repo

✒

✏

✑

LiveCD ϏϧυεΫϦϓτͷमਖ਼࣍ʹɼσΟεΫϥϕϧ౳ʹઃఆ͞ΕΔ৘ใΛมߋ͠·͢ɽ͜Ε͸ɼbuild.sh ಺ͷ mkarchiso ίϚϯυʹͯ iso ΠϝʔδΛ࣮ࡍʹ࡞੒͢ΔίϚϯυϥΠϯʹɼΦϓγϣϯΛ௥Ճ͢Δ͜ͱͰ࣮‫͢·͖Ͱݱ‬ɽ

build.sh ಺ͷҎԼͷΑ͏ʹ‫ه‬ड़͞Ε͍ͯΔ෦෼Λɼ✓build.sh(old)mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" \-o "${out_dir}" iso "${iso_name}-${iso_version}-dual.iso"

✏

✒

✑

✓build.sh(new)✏ҎԼͷΑ͏ʹॻ͖‫͢·͑׵‬ɽ

mkarchiso ${verbose} -P "Phenomer <phenomer@g.hachune.net>" \-A "negix Live/Rescue CD" \-w "${work_dir}" -D "${install_dir}" \-L "${iso_label}" -o "${out_dir}" iso "${iso_name}-${iso_version}-dual.iso"✒͜ΕʹΑΓɼCD ͷϥϕϧʹ negix Live/Rescue CD ͱઃఆ͞ΕΔΑ͏ʹͳΓ·ͨ͠ɽ*5 ͜ͷσΟϨΫτϦΛ HTTP ‫ܦ‬༝ʹͯެ։͢Δ͜ͱͰɼͦͷ··ެ։ϦϙδτϦͱͯ͠ར༻͢Δ͜ͱ΋Ͱ͖Δɽ✑ύοέʔδϦετͷमਖ਼࣍ʹɼLiveDVD ʹΠϯετʔϧ͞ΕΔύοέʔδͷҰཡ packages.both ʹɼmikutter LiveDVDʹඞཁͳύοέʔδ໊Λ௥‫͢·͠ه‬ɽmikutter LiveDVD ʹඞཁͳύοέʔδͷҰཡ͸ҎԼͷΑ͏ʹͳΓ·͢ɽ

✓packages.both ΁ͷ௥‫ه‬

✏

xorg
lxdm
xcompmgr
fluxboxfcitx-mozc
fcitx-configtool
fcitx-gtk2
fcitx-gtk3
fcitx-qt4
ttf-vlgothic
alsaplayer
alsa-plugins
alsa-utils
alsa-firmware
tmux
sakurafirefoxevincefeh
mikutter✒✑͜ΕΒͷύοέʔδ͕ɼͦΕͧΕͷΞʔΩςΫνϟ༻Πϝʔδ಺ʹΠϯετʔϧ͞Ε·͢ɽ΋͠ɼಛఆͷΞʔΩςΫνϟͷύοέʔδʹͷΈ௥Ճ͍ͨ͠৔߹͸ɼͦΕͧΕͷΞʔΩςΫνϟʹରԠͨ͠

packages ϑΝΠϧʹ௥‫͍ͩͯ͘͞͠ه‬ɽ

Live ‫಺ڥ؀‬ϑΝΠϧͷ४උ࠷‫ʹޙ‬ɼϕʔε‫͖͢ॻ্ʹڥ؀‬ΔϑΝΠϧ΍σΟϨΫτϦΛ root-image ௥Ճ͍͖ͯ͠·͢ɽΞϓϦέʔγϣϯͷઃఆϑΝΠϧͷฤू΍֤छϑΝΠϧͷ௥Ճ͸͜͜Ͱ͓͜ͳ͍·͢ɽmikutter LiveDVDʹͯฤूɾ௥Ճ͍ͯ͠ΔϑΝΠϧͷҰཡ͸ද 2ͷ௨ΓͰ͢ɽ
ද2Live ‫͖͢ॻ্ʹڥ؀‬ΔϑΝΠϧҰཡϑΝΠϧ/σΟϨΫτϦ໊ฤू಺༰root-image/etc/hostnameσϑΥϧτͷϗετ໊Λ negix ʹมߋroot-image/etc/locale.confσϑΥϧτͷϩέʔϧΛ ja_JP.UTF-8 ʹมߋroot-image/etc/lxdm

lxdm ͷઃఆ (ࣗಈϩάΠϯɼϩάΠϯεΫϦʔϯͷมߋ)root-image/etc/skel/.fluxbox

fluxbox ͷઃఆroot-image/etc/skel/.config

fcitxɼsakura ͷઃఆroot-image/opt/mikutter͏͍͢ຊɼนࢴ౳

syslinux/splash.pngϒʔτϩʔμͷഎ‫ܠ‬ը૾ͷมߋcustomize_root_image.sh ͷฤूϕ ʔ ε ‫ ڥ ؀‬ͷ ४ උ ͕ ‫ ʹ ޙ ͨ ͠ ྃ ׬‬ϕ ʔ ε ‫ ͞ ߦ ࣮ Ͱ ಺ ڥ ؀‬Ε Δ ε Ϋ Ϧ ϓ τ cus-

tomize_root_image.sh ͷ ฤ ू ΋ ߹ Θ ͤ ͯ ͓ ͜ ͳ ͍ · ͢ ɽ͜ ͷ ε Ϋ Ϧ ϓ τ Ͱ ͸ ɼϢ ʔ β Ξ Χ΢ϯτͷ௥Ճ΍λΠϜκʔϯͷઃఆɼsystemd ʹΑΔαʔϏεͷ‫ى‬ಈʹؔ͢ΔઃఆΛ͓͜ͳ͏͜ͱ͕
Ͱ͖·͢ɽmikutter LiveDVD Ͱ͸ɼҎԼͷ߲໨ʹ͍ͭͯमਖ਼ͯ͋͠Γ·͢ɽ• σϑΥϧτϩέʔϧΛ ja_JP.UTF-8 ʹ• λΠϜκʔϯΛ JST ʹ• ϢʔβΞΧ΢ϯτ miku Λ௥Ճ• systemd ͷσϑΥϧτλʔήοτͷมߋ (multi-user.target ͔Β graphical.target)• dhcpcd, lxdm ͷ༗ޮԽ✓root-image/root/customize_root_image.sh ͷฤू

✏sed -i ’s/#\(ja_JP\.UTF-8\)/\1/’ /etc/locale.gen
locale-gen
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
usermod -s /bin/zsh root
cp -aT /etc/skel/ /root/
useradd -m -p "" -g users \-G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" \-s /bin/zsh -u 3939 miku
chmod 750 /etc/sudoers.d
chmod 440 /etc/sudoers.d/g_wheel
sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
systemctl enable graphical.target pacman-init.service dhcpcd.service lxdm.service

✒

✑

Ϗϧυ
શ͕ͯ‫ͨྃ͠׬‬Βɼmikutter LiveDVD ΛϏϧυ͠·͢ɽ✓✏

master@hachune# ./build.sh -N negix -L NEGIX_201306✒✑

΋͠ ISO Πϝʔδ͕ੜ੒͞Εͳ͍౳ͷ໰୊͕ൃੜͨ͠৔߹͸ɼ-v ΦϓγϣϯΛ෇͚ͯ‫ݪ‬ҼΛ୳ͬͯΈ͍ͯͩ͘͞ɽ

͓ΘΓʹࠓճ͸ɼArch Linux ͷ LiveCD Λ‫ ʹݩ‬mikutter LiveDVD Λ࡞੒͢Δํ๏Λղઆ͠·ͨ͠ɽ͜ͷ

mikutter LiveDVD ͷߏஙͱ͍͍ͩͨಉ͡खॱʹͯɼΦϦδφϧ RescueUSB ϝϞϦͷ࡞੒౳΋͓͜ͳ͏͜ͱ͕Ͱ͖·͢ɽ·ͨɼ͜ͷ LiveDVD ࡞੒ʹؔ͢Δ৘ใΛ‫࡞ʹݩ‬੒ͨ͠ͷ͕ɼΦʔϓϯιʔεΧϯϑΝϨϯε 2013 Tokyo/Spring ͷ mikutter Ϣʔβձϒʔεʹͯలࣔͨ͠ɼ༗ઢ LAN ϙʔτʹ
઀ଓ͠ PC Λ‫ى‬ಈ͢Δ͚ͩͰ mikutter ‫͕ڥ؀‬ར༻Ͱ͖ΔʮOpenBlocks AX3 Λ༻͍ͨ mikutter ‫؀‬‫ڥ‬ల։γεςϜʯͱͳ͍ͬͯ·͢ɽ͜Ε͔Β΋ mikutter ͱ mikutter ϢʔβձΛΑΖ͓͘͠‫͍ئ‬க͠·͢ʌ (ˏ˶ʔ˶ˏ) ϊ



!"#$

% &'()*+,-! ./01234567 859#$:;<=<> ?@A

BCDE FG()*+93,$6+?@ #H4# 6 G:KL:*+9#$BCDE FGM 6
!"

WB#
a

BCDE F0IJ

NO4APQ N7RSTUVGM!9#$:XYZ[ 0\B"] $:6^A

XYZ[ G_5`0bc"]R5N7 # 6 G"] $:de0fg"] $:599"A?"]9op"3,GAM

hiG j V0kO4l 5mn3

GR5 cq3R5 5O,\BGr/ R!93,$:s tAuvwqxuRy Sz{|0)+ 6 G"]9#$;<=<> " }~# €•"3,GA;<=<= " ‚ƒG„,*+45R•+…†‡ ˆY‰*+R5N7 R!93,$†‡ Š]‹Œ A•Ž•<> •‘3,’“

”•:

•:“

”•:

:–• • ”:ž –ŸŽ¡ž ¢<• ž £< Ž ¤

#

$%

& '

;<=<= " A¦§¨yv Š5, ©• • ” ª:–• • ”— ˜™3, "Aš›34œ€*5$:”•¥G¨ pyŠ]R *+APQ¥–• • ” :

«¬ ª

-?+9

3,$:
:

†®:

()!

: j V ¯°:()!

*! !":Ž” Rp ?:()!

+!":± •©• • ” ²®

zYD³

Rp ?:
¨ py˜´3?R5 "A6 µ¶²®·¸5,¹ ºR5"3»7$:

j V ¯°:¼• ” :z

0½¬N7 R!93,$¾¿…

” Ž”¡ j Vz

PQ N7R Y‰"ÀÁ"]9#$::Â:¼• ” ÃŸ” Ž”¡Ä:¼• ” ÅÆ¢••:0ÇH… j VGÈÉ*+9#3A:¼• ” Å± •#$6+@ 6:©• • ”<Æ¢••:w:©• • ”<± •ÏÐÑ5Ò./ :¼• ” Å– Ž
AÈÚ3,ÖÛ

”•: ÊË0DÌFzT

34Í39”•:"t 9"y !†Î"]9#$:

Ó:"#$ j V ÔÕÖ× 57ØÙG˜´*+93,$

j V0ÜÝ34593,GAÞÈß àá+AM 9ä3"t55 j V ÜÝ NO4AåYæ

j VGâãY

9"*)ç j VGR?R?ÜÝ*+R56 G

M!93,$:– ŽÓ

A j V ¯°ÔÕÖ× 346 ¢,,, ()!
Ÿ Ž-.

ÔÕÖ×"#$è®ß é¿…A:¼• ” ÅÆ¢••:ê ë •¢ÓìGí*+9#$PQ îÈï!

/ 0" " 1” ò–¢¡¡ •,,, ()!

-.2 ) " !/ 0" " 1Ÿ ò±¢•Žó” Ž”¡: N7RôõßR j V±¢•Ž5ðYF" ñç"#$:: N7RÞÈß àá

Aö÷ :Ÿ Žj VÈÚGúû9+ýT ÌGø!ù4@+459#$6 6

Rœ •À 6 G"]
6+ &ô” ò–¢¡¡ • :Gø!ù4@+459#GA:
j V A:Ÿ ò±¢•Ž

NO4Aþÿÿ

0 •45

ó: 57&tü

"tAT

+

"#$:

"

ß ()*+,./"#$s tA j V

ˆVz

éRyt

z

R!93,$ß ˜´*+459#$:

j VT

0BC# Ž”ò SðU‰!ìGA¼• ”¡ ”?@k¿ SðU‰ :ó ¢Æž:œ@5"#G$ë ¢Æž SðU‰©• • ”<Æ ¢ :Ÿ ¡ :óŽ
:: :Â:Ž”ò –ó¢ :óŽ: ¡ : ¡:::: <ó ¢Æž::::Å:ÜÝ<<<



j VT

0

# SðU‰"#$

:: ”ó
”ó±•ò SðU‰t ¼• ”•

0Í#N7 R!93,GA6 @ tI

Ða5 :ó ¢Æž:SðU‰GBC*+459#$:

3

45* 67

Pv?@A:©• • ”Å¡57t”•¡: N7RAM,

SðU‰0 ©• • ” G

M!93,$ Y‰ Y Ì?@6 N7RSðU‰0˜´#599" A©• • ”

âY U 34SðU‰0 w# 57

t tˆY‰ÖG!BR, A,$;<=<> ?@SðU‰0kO,s¡– Æ DE FG

y7# H]"3»7?$:

0wO45
GÕ ˆY‰*+" #B*+45+…A

345

3439O45

tM!93,GAbc"]9op"3GÕ ˆY‰*+"6 N7R$% RœRO459#$:*@ ;<=<= " AâY U 0kä& ë' 0()# ,ó ±ó¡• "#$†‡ A-Æ • Ó::ó ±ó¡•:Ÿ¢Æ • Ó:óŽ:*+,G˜´*+93,$ +G"6+Gkä+459#$:”ó :• :¢ •¡:Â:./::::©• • ”<Æ¢••0Ÿ Žó ±Óò¢Æ • Ó::::::::::::::::.:–• • ”Ÿ:¡ •±:::::::::::::::::: ”óŸ: ”ó::::::::::::::::::

• Ÿ:

•

::::::::::::::::::ó¢ Ÿ:1<” ¤::::::::::::::::::ó ¡Æ – Ž”Ÿ:• :/<::ó ±ó¡•:Ÿó ±¢Æ • Ó:óŽ:”ó :”¢::::± •• 0¢ •¡22: ”óò¢Æ • Óò ”ó:óŽ: ó¢ ¢::::::ó¢ ¢Ã ”óÄ:Â:”¢::::::Ãó¢ ¢Ä: ”ó: ”óSðU‰BC 3459#3A4"wO45 6 t¨ pyª

0î]5*Rœ4tBC"]âY Uµä!9opGA5 5

GSTUV"#$¾¿…: Žó ±Óò¢Æ • Ó: j V PQ N

7R Y‰"ÈÚ*o 6 G"]9#6$:



:7 895,N7:¢Æ • Ó:Ÿ¡Ó¡ó ±ó¡•

t7: ¬ STUVY

M!9#$:Õ;¾g3, Y‰?"3»7?$† 6+ A¢Æ • Ó SðU‰0Çp€²@-Æ • Óó ±¢Æ • Ó " DÌFz0Ò3œAB3459#GA6+
AB*+9#$ùEASðU‰ÇCñ3Rp?t@< Î=Aó ±ó¡• >Y¡ •±R!9#$€?@A" RœAÇCñ3Dt GÇ…+"F

3

93»7$:
6+€•R@âY U

I "#GAó ±ó¡•G ˆYHFµË0š›# 6 G"]9#$ªˆYZ

I€?@ùE"#GA6+ JKR ªLUª"#$:::M:Â:>::ó ±ó¡•:Ÿ¡ M:óŽ: ”::::M:Â:”:: ”ó
::ó ±ó¡•:Ÿ–• ¡M:óŽ: ”
::::”

:N:M

:: ”ó
::–• ¡M:>:::¡ M:=::–• ¡M:>:!
tOÎ3]O45R5 "#GA©• • ” SðU‰0˜´3,5#H4 PY "6+0Q

ö÷

R#H]"#$:è®ß

APQ N7R`a"3»7?$:¢Æ • Ó SðU‰ N7RAs
a A?@ j V0ÈÚ*o4•À

57ST0# `j V ÇCñ30UV9, WX 3,5`a:ó ±¢Æ • Ó SðU‰ N7RAs

j VT

,5`a:



wDÌFz BC YZ0ú4w!

"#ë' SðU‰ [\"#GA]56 …?!" M!9op$:
I^

G_œR!#` : j V0ÈÚ*o €•R@A*+ €•"$% M!9op?@A
57

Afd

# 6

À!DG5Rœ4tab

de # cK M!9op$3?3Aë' ()0k7

RO43959#$:

j V0eäR& ST"]4397:fg }hRSðU‰ÇCñ3R "AÇCñ3i
ê

jXU 0kl 3As

0kO4ÜÝ0†Î343959#$6 6

DÌFzwDUª0R54jYz0\R"]RœR 6 0
Pm N7RÝn?@Aofß• ” :¢Æ • Ó :ó ±¢Æž •#$79œk¿…A_çRSzGÐ39#$:

ë' () k7H]" M!9op$ô‹"A¡”• : ¢£ :” ŒAë' ()079œkO,_çR./Gp ,œ*pM!90qq# 6 G"] "3»7$:

8 9:;
% A

dm Ò./ ¬545œ¬?rs393,$:I^ mn6 G

t"]

_,"#$

0uv# 6 "#$?¬4

6 G 1¤+?@tqw345œ6 "3»7$:



./ &tJKR./"A&t=ß AîÈxG²n Rp"
0qw*o,N7 A

6޽ߣ߇߈DTU[YGࡉ࡚௒ᅇ࡛ 4 ᕳ┠࡜࡞ࡿࠗToo late.࠘࠾ᴦࡋࡳ㡬ࡅࡓࡔࢁ࠺࠿ࠋ௒ᅇࡶᗄேࡶ࠿ࡽ࠶ࡾࡀࡓ࠸ᨭ᥼ࢆཷࡅࡘ
ࡘࠊཎ✏ࡀ࠶ࡸ࠺ࡃ࡚࠾ࡃࢀ࠿ࡅࡘࡘⓎ⾜࡟⮳ࡿࡇ࡜ࡀ࡛ࡁࡓࠋᖺᮎ࠿ࡽᖺጞ࡟࠿ࡅ࡚࠸ࢁ࠸ࢁ࡜ᛁࡋࡃ࡞
ࡿࡢ࡛ḟྕࡀࡣࡓࡋ࡚෤࡟ฟࡿ࠿࡝࠺࠿ࡣ୙࡛᫂࠶ࡿࠋḟ࡟఍࠺᫬ࡲ࡛ࠋ

ᩞᱜ⠪ "EJARTKPVߩ޽ߣ߇߈
࠶ࢀࠊ࡞࡟ࡶ᭩࠸࡚࡞ࡃࡡࠋ

࢖ࣛࢫࢺ@soramame_bscl ⾲⣬ @toshi_a 31 㡫
@shijin_cmpb ⿬⾲⣬㸦ྑ㸧⨁ࣂࢵࢪ⏝࢖ࣛࢫࢺ
@soramame_bscl , @iori4213

࣐ࢢ࢝ࢵࣉ⏝࢖ࣛࢫࢺ@soramame_bscl , @shijin_cmpb‫صص‬ઃಀ੒ઔधఞံ঻൳ૐ‫ص‬‫ص‬ਉံ઀ল਋଒‫ ؟‬া  ঩ ሇखౣૐ঻੃়पेॉ৅ষ॑ઃभಒप೚ैचॊ૭ચਙँॉ
৅ষ੒৒‫؟‬॥঑ॵॡঐ‫  ॺॵॣش‬ऽञम ऒाढऎॺঞ४ক‫ش‬ਖ়च੔‫؟‬#EUV\ZH ‫˄ښ‬ႆᘍଐᲴώ‫܇‬༿Ჴ ࠰  உ  ଐ 15% -[QVQ"-CPUCK  –  உ  ଐ ǳȟȃǯȞȸǱȃȈ  
2&( ༿Ჴ ࠰  உ  ଐ
ႆᘍᲴOKMWVVGT ƷᕓƍஜС˺‫ۀ‬Ճ˟ႆᘍᎍᲴ "DTU[YG ᙱᇢƷ્ᡛ‫ޅ‬ϋտᒧܴᧈ
ᡲዂέᲴ DTU[YG   =CV?   JQVOCKNEQLRࡈពぢ࣭ࡈឤ᝿ࡣ࠾Ẽ㍍࡟࡝࠺ࡒࠋ

mikutter ࡢⷧ࠸ᮏไసጤဨ఍࢙࢘ࣈ࣮࣌ࢪ

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

