第50回 Cocoa勉強会関西 - iOS/Macアプリ開発勉強会 発表資料
JSON Λͦͦ͜͜ݟ͘͢͢ΔCUI πʔϧΛ࡞ͬͨͱ͖ͷ@griffin_stewie136݄1༵
View Slide
ࣗݾհ•େࡕͰ iOS ΞϓϦ։ൃͷࣄΛ͍ͯ͠·͢•Cocoa ྺ 5 ఔ•SafariGestures ͱ͔ SafariTabMemento ͱ͔ Safari ͷ SIMBL ϓϥάΠϯΛ@canberland ͱҰॹʹ࡞ͬͯ·ͨ͠ɻ136݄1༵
ຊ136݄1༵
CUI ͱ136݄1༵
•Character•User•Interface136݄1༵
ࠇ͍ը໘ʹढจ136݄1༵
ී௨ LL ܥݴޠͰαΫοͱ࡞Δײ͡136݄1༵
Ͱɺ136݄1༵
•Ruby Ҏ֎͞Θͬͨ͜ͱͳ͍•֎෦ϥΠϒϥϦΛಉࠝͯ͠Ͱ͖Δͷʁ•ௐΔͷΊΜͲ͍͘͞•͋͊ ΊΜͲ͍͘͞136݄1༵
Ͱɺࣗʹͱͬͯͷ CUI136݄1༵
•Cocoa Ͱ•U·͍͜ͱΕ•I͍Μ͡ΌͶʁ136݄1༵
ͯͳΘ͚Ͱ Objective-C Ͱ࡞ͬͨͱ͖ͷ136݄1༵
ಈػ136݄1༵
JSON ͕ݟʹ͔͔ͬͨ͘Β136݄1༵
136݄1༵
python -m json.tool136݄1༵
ຊޠ͕ಡΊͳ͍136݄1༵
࡞ͬͨͷ͕136݄1༵
jsonpphttp://griffin-stewie.github.io/jsonpp/136݄1༵
ຊޠ͕ಡΊͨ136݄1༵
•ϩʔΧϧͷ JSON ϑΝΠϧΛಡΈࠐΜͩΓ•http Ͱͱ͖ͬͯͨΓ•Key Λιʔτͨ͠Γ•ιʔτ͢Δͱ͖ʹࣈͱͯ͠ѻͬͨΓ•ϑΝΠϧʹอଘͨ͠Γ136݄1༵
ͬͨ͜ͱ136݄1༵
ίϚϯυϥΠϯҾͷॲཧͬͯͲ͏Μͷʁ136݄1༵
•DDCli ͍ͬͯ͏ϥΠϒϥϦΛͬͨ•appledoc ʹΘΕ͍ͯΔ136݄1༵
•DDCli ͷσϦήʔτϝιουΛ2࣮ͭ͢Δ•1ͭ Φϓγϣϯͷఆٛ༻• ड͚͚͍ͨίϚϯυϥΠϯΦϓγϣϯΛߏମͷྻͱͯ͠ఆٛ•͏1ͭ CUI ΞϓϦͱͯ͠ͷΤϯτϦϙΠϯτ• ίϚϯυϥΠϯΦϓγϣϯσϦήʔτΦϒδΣΫτʹ KVC ܦ༝ͰηοτࡁΈ• ͦͷ΄͔ͷҾ͕͞ΕΔ136݄1༵
1. main.m ͷมߋint main(int argc, const char * argv[]){int result = 0;@autoreleasepool {result = DDCliAppRunWithClass([CSJSONPrettyPrint class]);}return result;}136݄1༵
2. Delegate ͷ࣮•- (void)application:(DDCliApplication *)appwillParseOptions:(DDGetoptLongParser*)optionParser•- (void)application:(DDCliApplication *)apprunWithArguments:(NSArray *)arguments136݄1༵
•- (void)application:(DDCliApplication *)appwillParseOptions:(DDGetoptLongParser *)optionParser•application:(DDCliApplication *)apprunWithArguments:(NSArray *)arguments ͷલʹݺΕΔ•DDGetoptOption ߏମΛ࡞͠ɺσϦήʔτϝιουͰ͞Εͨ DDGetoptLongParser Πϯελϯεʹ addOptionsFromTable: Ͱ͢136݄1༵
DDGetoptOption- (void)application:(DDCliApplication *)appwillParseOptions:(DDGetoptLongParser *)optionsParser;{DDGetoptOption optionTable[] ={// Long Short Argument options{@"version", 'v', DDGetoptNoArgument},{@"help", 'h', DDGetoptNoArgument},{@"output", 'o', DDGetoptRequiredArgument},{@"filter-key", 'k', DDGetoptRequiredArgument},{nil, 0, 0},};[optionsParser addOptionsFromTable: optionTable];}136݄1༵
DDGetoptOption•Long Φϓγϣϯͷ໊শ (--version ͷ "--" Λআ͍ͨจࣈྻ)•short Φϓγϣϯͷ໊শ•Φϓγϣϯ͕ҾΛͱΔ͔ͱΒͳ͍͔ͷࢦఆ136݄1༵
•- (void)application:(DDCliApplication *)apprunWithArguments:(NSArray *)arguments•arguments ʹઃఆͨ͠ΦϓγϣϯҎ֎ͷίϚϯυϥΠϯҾ͕ೖ͍ͬͯΔ136݄1༵
ΦϓγϣϯҾͷରԠ•main ؔͰࢦఆͨ͠Ϋϥεʹରͯ͠ KVC ΛͬͯΛಥͬࠐΜͰ͘ΕΔ• ϓϩύςΟ໊ Long Φϓγϣϯͱಉ໊͡শ• ܕ NSString136݄1༵
JSON ͷ Pretty-PrintͲ͏ͨ͠ͷʁ136݄1༵
SBJSON ʹؙ͛136݄1༵
Debug ΊΜͲͦ͏136݄1༵
໘136݄1༵
•ͰɺXcode ʹ Run ͨ͠ͱ͖ʹҙͷҾΛͤΔΈ͕͋ΔΑ•ෳఆٛͰ͖ͯνΣοΫϘοΫεͰOn/Off Մ•GUI ΞϓϦͱେͯ͠มΘΒͳ͍खؒ136݄1༵
Xcode ศར136݄1༵
manpage ࡞ͬͨΑ136݄1༵
manpage ͷه๏ҙຯෆ໌136݄1༵
Կ͜Εʁ จࣈԽ͚ʁ136݄1༵
͜Μͳͷه๏ͳΜ͔ษڧͯ͠ΒΜͶ͐136݄1༵
Pandoc Ͱੜͨ͠136݄1༵
Pandoc ͬͯʁ•Pandoc a universal document converter• ଟ༷ͳςΩετϑΥʔϚοτΛผͷϑΥʔϚοτʹม• ରԠϑΥʔϚοτྫ• markdown• reStructuredText• textile• MediaWiki• ODT• docx• ͦͷଞ͍Ζ͍Ζ136݄1༵
markdown Ͱॻ͍ͯมͨ͠136݄1༵
Πϯετʔϥʔ༻ҙͨ͠136݄1༵
ࠓͷ Xcode ʹPackageManager ͕ಉࠝ͞Εͯͳ͍136݄1༵
Developer Center ͷAuxiliary Tools for Xcodeͷதʹ͋ͬͨ136݄1༵
͍ํ؆୯136݄1༵
άάΕʂ136݄1༵
ͱ͍͏͜ͱͰ jsonpp Ͱ͖ͨΑ136݄1༵
ͰͶ136݄1༵
jqjq is a lightweight and flexiblecommand-line JSON processor.136݄1༵
jq•http://stedolan.github.io/jq/•C Ͱॻ͔Εͨ JSON Λݟͯ͘͘͢͠ΕΔࢠ•ڧྗ•XPath తʹతͷσʔλ͚ͩநग़ͨ͠Γ•map ͱ͔ select ͱ͔ؔతͳϑΟϧλϦϯάग़དྷΔ136݄1༵
͜Μͳͷ͕136݄1༵
৭͕͍ͭͨΓ136݄1༵
ཉ͍͠ͷ͚ͩϑΟϧλͨ͠Γ136݄1༵
jq ϚδΦψψϝ136݄1༵
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠136݄1༵