ãã®ãããžã§ã¯ãã®ç®æšã¯ãiOSäžã§ã·ã³ãã«ãªUnixã®ãããªã¿ãŒããã«ãæäŸããããšã§ããios_systemã䜿çšããŠã³ãã³ããè§£éããios_systemãšã³ã·ã¹ãã ã®ãã¹ãŠã®ã³ãã³ãïŒnslookupãwhoisãpython3ãluaãpdflatexãlualatexãªã©ïŒãå«ãã§ããŸãã
ãããžã§ã¯ãã¯ãiPadOS 13ã®è€æ°ãŠã£ã³ããŠã®äœæãšç®¡çã®æ©èœã䜿çšããŠããŸããåãŠã£ã³ããŠã¯ããããã®ã³ã³ããã¹ããå€èгãã³ãã³ãå±¥æŽãããã³ã«ã¬ã³ããã£ã¬ã¯ããªãæã£ãŠããŸããnewWindowã¯æ°ãããŠã£ã³ããŠãéããexitã¯çŸåšã®ãŠã£ã³ããŠãéããŸãã
ãã«ããèŠãã«ã¯ãã³ãã³ãã©ã€ã³ã§helpãšå
¥åããŸããhelp -lã¯å©çšå¯èœãªãã¹ãŠã®ã³ãã³ããäžèŠ§è¡šç€ºããŸããhelp -l | grep commandãå
¥åãããšããæ°ã«å
¥ãã®ã³ãã³ãããã§ã«ã€ã³ã¹ããŒã«ãããŠãããã©ãããããããŸãã
configã䜿çšããŠa-Shellã®å€èгã倿Žã§ããŸããããã«ããããã©ã³ãããã©ã³ããµã€ãºãèæ¯è²ãããã¹ãã®è²ãããã³ã«ãŒãœã«ã®è²ãšåœ¢ç¶ã倿Žã§ããŸããåãŠã£ã³ããŠã¯ããããã®å€èгãæã€ããšãã§ããŸããconfig -pã¯çŸåšã®ãŠã£ã³ããŠã®èšå®ãæ°žç¶åããå°æ¥ã®ãã¹ãŠã®ãŠã£ã³ããŠã§äœ¿çšãããŸããconfig -tã䜿çšããŠããŒã«ããŒãèšå®ããããšãã§ããŸãã
æ°ãããŠã£ã³ããŠãéããšãa-Shellã¯.profileãã¡ã€ã«ãååšããå Žåã«ãããå®è¡ããŸããããã䜿çšããŠç°å¢å€æ°ãã«ã¹ã¿ãã€ãºããããäžæãã¡ã€ã«ãã¯ãªãŒã³ã¢ãããããã§ããŸãã
a-Shellã®äœ¿ç𿹿³ã®è©³çްã«ã€ããŠã¯ãããã¥ã¡ã³ããåç §ããŠãã ããã
a-Shellã¯çŸåšãAppStoreã§å ¥æå¯èœã§ãã
ãããžã§ã¯ããèªåã§ã³ã³ãã€ã«ãããå Žåã¯ã以äžã®æé ãå¿ èŠã§ãïŒ
git submodule update --init --recursiveã§ãããžã§ã¯ãå šäœãšãã®ãµãã¢ãžã¥ãŒã«ãããŠã³ããŒãããŸãdownloadFrameworks.shã§ãã¹ãŠã®xcFrameworksãããŠã³ããŒãããŸã- ããã«ãããæšæºã®Appleãã¬ãŒã ã¯ãŒã¯ãããŠã³ããŒããããŸãïŒ
xcfs/.build/artefacts/xcfsã«ããããã§ãã¯ãµã å¶åŸ¡ããããŸãïŒã - Pythonãã¬ãŒã ã¯ãŒã¯ã¯å€ãããŠïŒ2000以äžïŒèªåã§ããŠã³ããŒãã§ããŸããããããžã§ã¯ãã®ãEmbedãã¹ãããããããããåé€ãããã以äžã®æé ã§ã³ã³ãã€ã«ããããšãã§ããŸãïŒ
- Xcode Command Line Toolsãå¿
èŠã§ãããŸã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯
sudo xcode-select --installã - macOSåãã®OpenSSLã©ã€ãã©ãªïŒlibsslããã³libcryptoïŒãXQuartzïŒfreetypeïŒãNode.jsïŒnpmïŒãå¿ èŠã§ãïŒiOSããã³ã·ãã¥ã¬ãŒã¿åãã®ããŒãžã§ã³ã¯æäŸããŠããŸãïŒã
cd cpythonã§ãã£ã¬ã¯ããªãcpythonã«å€æŽããŸãsh ./downloadAndCompile.shã§Python 3.11ããã³é¢é£ããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ããã«ãããŸãïŒãã®ã¹ãããã«ã¯2GHzã®i5 MBPã§ã¯æ°æéããããŸãïŒã
- Xcode Command Line Toolsãå¿
èŠã§ãããŸã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯
- ããã«ãããæšæºã®Appleãã¬ãŒã ã¯ãŒã¯ãããŠã³ããŒããããŸãïŒ
a-Shellã¯çŸåšããã€ã¹äžã§åäœããŸããa-Shell miniã¯ããã€ã¹äžããã³ã·ãã¥ã¬ãŒã¿äžã§åäœã§ããŸãã
Python 3.xã¯iOS 14 SDKã§ã®ã¿äœ¿çšã§ãã颿°ã䜿çšããŠãããããæå°iOSããŒãžã§ã³ã14.0ã«èšå®ããŠããŸããããã«ãããã€ããªã®ãµã€ãºãåæžããããããios_systemãä»ã®ãã¬ãŒã ã¯ãŒã¯ãåãèšå®ã«ãªã£ãŠããŸããiOS 13ããã€ã¹ã§å®è¡ããå¿
èŠãããå Žåã¯ãã»ãšãã©ã®ãã¬ãŒã ã¯ãŒã¯ãåã³ã³ãã€ã«ããå¿
èŠããããŸãã
iOSã§ã¯ã~ãã£ã¬ã¯ããªã«ã¯æžã蟌ã¿ã§ããã~/Documents/ã~/Library/ãããã³~/tmpã®ã¿ã«æžã蟌ãããšãã§ããŸããã»ãšãã©ã®Unixããã°ã©ã ã¯èšå®ãã¡ã€ã«ã$HOMEã«ãããšæ³å®ããŠããŸãã
ãããã£ãŠãa-Shellã¯ãããã~/Documentsãæãããã«ããã€ãã®ç°å¢å€æ°ã倿ŽããŸããenvãå
¥åããŠãããã確èªã§ããŸãã
ã»ãšãã©ã®èšå®ãã¡ã€ã«ïŒPythonããã±ãŒãžãTeXãã¡ã€ã«ãClang SDKãªã©ïŒã¯~/Libraryã«ãããŸãã
a-Shellã¯iOS 13ã®æ©èœã䜿çšããŠä»ã®ã¢ããªã®ãµã³ãããã¯ã¹å
ã®ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ããŠããŸããpickFolderãå
¥åããŠä»ã®ã¢ããªå
ã®ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ã§ããŸããäžåºŠãã£ã¬ã¯ããªãéžæãããšãããã§ã»ãŒãã¹ãŠã®æäœãå¯èœã«ãªããããæ³šæããŠãã ããã
pickFolderã§ã¢ã¯ã»ã¹ãããã¹ãŠã®ãã£ã¬ã¯ããªã¯ããã¯ããŒã¯ããããããpickFolderãªãã§åŸã§ãããã«æ»ãããšãã§ããŸãããŸããbookmarkã§ã«ã¬ã³ããã£ã¬ã¯ããªãããã¯ããŒã¯ããããšãã§ããŸããshowmarksã¯çŸåšã®ããã¯ããŒã¯ããã¹ãŠåæããjump markããã³cd ~markã¯ã«ã¬ã³ããã£ã¬ã¯ããªããã®ç¹å®ã®ããã¯ããŒã¯ã«å€æŽããrenamemarkã¯ç¹å®ã®ããã¯ããŒã¯ã®ååã倿Žããdeletemarkã¯ããã¯ããŒã¯ãåé€ããŸãã
èšå®ã®ãŠãŒã¶ãŒã倿Žå¯èœãªãªãã·ã§ã³ã§ãsãgãlãrãdã³ãã³ãã代ããã«ããŸãã¯äœµçšããŠäœ¿çšããããšãã§ããŸãã
è¿·åã«ãªã£ãå Žåã¯ãcdã§åžžã«~/Documents/ã«æ»ãããšãã§ããŸããcd -ã¯çŽåã®ãã£ã¬ã¯ããªã«å€æŽããŸãã
a-Shellã¯Apple Shortcutsãšäºææ§ãããããŠãŒã¶ãŒã«ã·ã§ã«ã®å®å šãªå¶åŸ¡ãæäŸããŸããa-Shellã³ãã³ãã䜿çšããŠãã¡ã€ã«ã®ããŠã³ããŒããåŠçããªãªãŒã¹ãè¡ãè€éãªã·ã§ãŒãã«ãããäœæã§ããŸãã3ã€ã®ã·ã§ãŒãã«ããããããŸãïŒ
Execute Commandã¯ã³ãã³ãã®ãªã¹ããåãåããããããé çªã«å®è¡ããŸããå ¥åã¯ãã¡ã€ã«ãŸãã¯ããã¹ãããŒãã§ãããããŒãå ã®ã³ãã³ããå®è¡ãããŸããPut Fileããã³Get Fileã¯a-Shellãšãã¡ã€ã«ã転éããããã«äœ¿çšãããŸãã
ã·ã§ãŒãã«ããã¯ãIn ExtensionããŸãã¯ãIn Appãã§å®è¡ã§ããŸãããIn Extensionãã¯Appã®è»œéããŒãžã§ã³ã§ãã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ããªãã§ã·ã§ãŒãã«ãããå®è¡ãããããšãæå³ããŸããèšå®ãã¡ã€ã«ãã·ã¹ãã ã©ã€ãã©ãªïŒmkdirãnslookupãwhoisãtouchãcatãechoãªã©ïŒãäžèŠãªè»œéãªã³ãã³ãã«é©ããŠããŸãããIn Appãã¯ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãéããŠã·ã§ãŒãã«ãããå®è¡ããŸãããã¹ãŠã®ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããŸãããæéãããããŸããã·ã§ãŒãã«ãããã¢ããªãéããããopen shortcuts://ã³ãã³ããåŒã³åºããŠShortcutsã¢ããªã«æ»ãããšãã§ããŸããããã©ã«ãã®åäœã¯ãã³ãã³ãã®å
容ã«åºã¥ããŠã§ããã ãã·ã§ãŒãã«ããããIn Extensionãã§å®è¡ããããšããããšã§ããç¹å®ã®ã·ã§ãŒãã«ããããIn AppããŸãã¯ãIn Extensionãã§å®è¡ããããšãã§ããŸãããåžžã«æ©èœãããšã¯éããªãããšã«æ³šæããŠãã ããã
äž¡æ¹ã®çš®é¡ã®ã·ã§ãŒãã«ããã¯ããã©ã«ãã§åãç¹å®ã®ãã£ã¬ã¯ããªã$SHORTCUTSãŸãã¯~shortcutsã§å®è¡ãããŸãããã¡ãããcdããã³jumpã³ãã³ããå®è¡ã§ãããããã»ãŒã©ãã«ã§ãç§»åã§ããŸãã
a-Shellã«ã¯ãPythonãLuaãJSãCãC++ãTeXãªã©ã®ããã€ãã®ããã°ã©ãã³ã°èšèªãã€ã³ã¹ããŒã«ãããŠããŸãã
Cããã³C++ã§ã¯ãããã°ã©ã ãclang program.cã§ã³ã³ãã€ã«ããWebAssemblyãã¡ã€ã«ãçæãããŸãããã®åŸãwasm a.outãa.outãã©ã¡ããã§å®è¡ã§ããŸãããŸããè€æ°ã®ãªããžã§ã¯ããã¡ã€ã«ããªã³ã¯ããããarã§éçã©ã€ãã©ãªãäœæãããããããšãã§ããŸããããã°ã©ã ã«æºè¶³ããããããã$PATHå
ã®ãã£ã¬ã¯ããªïŒäŸïŒ~/Documents/binïŒã«ç§»åããããšãã³ãã³ãã©ã€ã³ã§programãšå
¥åãããšå®è¡ãããããã«ãªããŸãã
ãŸããã¡ã€ã³ã³ã³ãã¥ãŒã¿ãŒã§ç§ãã¡ç¬èªã®WASI-sdkã䜿çšããŠããã°ã©ã ãã¯ãã¹ã³ã³ãã€ã«ããWebAssemblyãã¡ã€ã«ãiPadãiPhoneã«è»¢éããããšãã§ããŸãã
a-Shellå°çšã®ã³ã³ãã€ã«æžã¿WebAssemblyã³ãã³ã㯠https://github.com/holzschu/a-Shell-commands ã§å
¥æå¯èœã§ããããã«ã¯zipãunzipãxzãffmpegãªã©ãå«ãŸããŸãããããã¯pkgã³ãã³ãã䜿ã£ãŠpkg install zipã®ããã«ããŠiPadã«ã€ã³ã¹ããŒã«ã§ããŸãã
ãœã±ãããªãããã©ãŒã¯ãªãïŒçŸåšã§ã¯å¯Ÿè©±çãªãŠãŒã¶ãŒå
¥åã¯ããïŒãšãã£ãWebAssemblyã®å¶çŽããããŸããä»ã®ã³ãã³ãããã®å
¥åãcommand | wasm program.wasmã§ãã€ãããããšã¯åé¡ãããŸããã
Pythonã§ã¯ãpip install packagenameã䜿çšããŠè¿œå ã®ããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããŸãããããããçŽç²ãªPythonã§ããå Žåã«éãããŸããCã³ã³ãã€ã©ã¯ãŸã Pythonã§äœ¿çšã§ããåçã©ã€ãã©ãªãçæããããšãã§ããŸããã
TeXã®ãã¡ã€ã«ã¯ããã©ã«ãã§ã¯ã€ã³ã¹ããŒã«ãããŠããŸãããä»»æã®TeXã³ãã³ããå ¥åãããšãã·ã¹ãã ã¯ãããããŠã³ããŒãããããã«ä¿ããŸããLuaTeXã®ãã¡ã€ã«ãåæ§ã§ãã
èšå®ã§VoiceOverãæå¹ã«ãããšãa-Shellã¯VoiceOverãšé£æºããã³ãã³ããå ¥åããéã«èªã¿äžããããçµæãèªã¿äžããããæã§è§Šããç»é¢ãèªã¿äžããããªã©ãè¡ããŸãã