{"id":107807,"date":"2023-02-20T11:02:13","date_gmt":"2023-02-20T02:02:13","guid":{"rendered":"https:\/\/softantenna.com\/blog\/?p=107807"},"modified":"2023-02-20T11:02:13","modified_gmt":"2023-02-20T02:02:13","slug":"spiritual-successor-to-emacs","status":"publish","type":"post","link":"https:\/\/softantenna.com\/blog\/spiritual-successor-to-emacs\/","title":{"rendered":"Emacs\u306e\u7cbe\u795e\u7684\u5f8c\u7d99\u8005\u3068\u306f"},"content":{"rendered":"<p><img decoding=\"async\" style=\"display:block; margin-left:auto; margin-right:auto;\" src=\"https:\/\/softantenna.com\/blog\/wp-content\/uploads\/2023\/02\/s_20230220_102711.jpg\" alt=\"S 20230220 102711\" title=\"s_20230220_102711.jpg\" border=\"0\" width=\"1065\" height=\"665\" \/><\/p>\n<p>\u9ad8\u3044\u62e1\u5f35\u6027\u3092\u6301\u3064\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u300cEmacs\u300d\u3002<\/p>\n<p>vi\/Vim\u3068\u306a\u3089\u30732\u5927\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u3068\u8a55\u3055\u308c\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u9577\u3044\u6b74\u53f2\u3092\u6301\u3064\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306a\u3060\u3051\u306b\u8a2d\u8a08\u304c\u53e4\u3044\u3068\u6279\u5224\u3055\u308c\u308b\u4e8b\u3082\u3042\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p>\u4eca\u56de\u3001\u3053\u306eEmacs\u306e\u7cbe\u795e\u7684\u5f8c\u7d99\u8005\u304c\u300cVS Code\u300d\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u306b\u3064\u3044\u3066\u3001\u30cf\u30c3\u30ab\u30fc\u306eVivek Haldar\u6c0f\u304c<a href=\"https:\/\/vivekhaldar.com\/articles\/a-spiritual-successor-to-emacs\/\">\u6301\u8ad6\u3092\u5c55\u958b<\/a>\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u540c\u6c0f\u306f\u3001Python\u3092\u958b\u767a\u3057\u305fGuido von Rossum\u6c0f\u304c\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8\u3067\u300c\u79c1\u306b\u3068\u3063\u3066\u3042\u308b\u610f\u5473\u3001VS Code\u306fEmacs\u306e\u7cbe\u795e\u7684\u5f8c\u7d99\u8005\u3060\u300d\u3068\u767a\u8a00\u3057\u305f\u306e\u306b\u9a5a\u304b\u3055\u308c\u305f\u3068\u8a18\u4e8b\u3092\u66f8\u3044\u305f\u304d\u3063\u304b\u3051\u3092\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Guido van Rossum\u6c0f\u306e\u4e3b\u5f35\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<blockquote><p>\nThe key part of Emacs is that it\u2019s mostly written in Lisp \u2026 There\u2019s a core implementation that can read the file, put bits on the screen, and manage memory and buffers. Then, what makes it an editor full of features is all the lisp packages and, of course, the design of how the lisp packages interact with each other and with that base layer of the core immutable engine.<\/p>\n<p>Emacs\u306e\u91cd\u8981\u306a\u70b9\u306f\u3001\u307b\u3068\u3093\u3069\u304cLisp\u3067\u66f8\u304b\u308c\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u3001\u753b\u9762\u306b\u30d3\u30c3\u30c8\u3092\u8868\u793a\u3057\u3001\u30e1\u30e2\u30ea\u3068\u30d0\u30c3\u30d5\u30a1\u3092\u7ba1\u7406\u3067\u304d\u308b\u30b3\u30a2\u5b9f\u88c5\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001Emacs\u3092\u6a5f\u80fd\u6e80\u8f09\u306e\u30a8\u30c7\u30a3\u30bf\u306b\u3057\u3066\u3044\u308b\u306e\u306f\u3001\u3059\u3079\u3066\u306eLisp\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u3001\u3082\u3061\u308d\u3093\u3001Lisp\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u4e92\u3044\u306b\u3001\u305d\u3057\u3066\u30b3\u30a2\u3068\u306a\u308b\u4e0d\u5909\u306e\u30a8\u30f3\u30b8\u30f3\u306e\u30d9\u30fc\u30b9\u30ec\u30a4\u30e4\u30fc\u3068\u3069\u306e\u3088\u3046\u306b\u76f8\u4e92\u4f5c\u7528\u3059\u308b\u304b\u306e\u8a2d\u8a08\u306a\u306e\u3067\u3059\u3002<\/p>\n<p>\u2026 almost everything in that core engine in Emacs\u2019 case, can still be overridden or replaced. And so, VS Code has a similar architecture, where there is like a base engine \u2026 and it has a sort of a package manager and a whole series of interfaces for packages and an additional series of conventions for how packages should interact with the lower layers and with each other.<\/p>\n<p>Emacs\u306e\u5834\u5408\u3001\u305d\u306e\u30b3\u30a2\u30a8\u30f3\u30b8\u30f3\u306e\u307b\u3068\u3093\u3069\u3059\u3079\u3066\u304c\u3001\u4e0a\u66f8\u304d\u3084\u7f6e\u304d\u63db\u3048\u304c\u53ef\u80fd\u306a\u306e\u3067\u3059\u3002VS Code\u3082\u540c\u3058\u3088\u3046\u306a\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u3001\u30d9\u30fc\u30b9\u30a8\u30f3\u30b8\u30f3\u304c\u3042\u3063\u3066......\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u3042\u3063\u3066\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u305f\u3081\u306e\u4e00\u9023\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3068\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u4e0b\u4f4d\u5c64\u3084\u4e92\u3044\u306b\u3069\u3046\u4f5c\u7528\u3059\u3079\u304d\u304b\u3068\u3044\u3046\u8ffd\u52a0\u306e\u4e00\u9023\u306e\u898f\u5247\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u2026. And so, the sort of extreme extensibility and the package ecosystem that you see in VS Code is a mirror of very similar architectural features in Emacs.<\/p>\n<p>....VS Code\u306b\u898b\u3089\u308c\u308b\u3088\u3046\u306a\u6975\u7aef\u306a\u62e1\u5f35\u6027\u3068\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306f\u3001Emacs\u306e\u975e\u5e38\u306b\u3088\u304f\u4f3c\u305f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u7279\u5fb4\u3092\u6620\u3057\u51fa\u3057\u3066\u3044\u308b\u306e\u3067\u3059\u3002<\/p>\n<\/blockquote>\n<p>VS Code\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30b3\u30a2\u30a8\u30f3\u30b8\u30f3\u304c\u4e0a\u66f8\u304d\u30fb\u7f6e\u304d\u63db\u3048\u53ef\u80fd\u306aEmacs\u3068\u540c\u3058\u3067\u3001\u62e1\u5f35\u6027\u306e\u9ad8\u3055\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3082\u4f3c\u3066\u3044\u308b\u3068\u306e\u4e3b\u5f35\u3067\u3059\u3002<\/p>\n<p>\u30d6\u30ed\u30b0\u3092\u66f8\u3044\u305fVivek Haldar\u6c0f\u306f\u3001VS Code\u304cEmacs\u304c\u30b3\u30a2\u3068\u306a\u308b\u8a00\u8a9e\u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u4e0a\u306b\u307b\u3068\u3093\u3069\u306e\u6a5f\u80fd\u304c\u69cb\u7bc9\u3055\u308c\u3066\u3044\u308b\u3068\u3044\u3046\u70b9\u3067\u3001\u4f3c\u305f\u3088\u3046\u306a\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u3042\u308b\u4e8b\u306b\u306f\u540c\u610f\u3059\u308b\u3082\u306e\u306e\u3001\u30b3\u30a2\u8a00\u8a9e\u304cEmacs\u306fLisp\u3067\u3001VS Code\u306fJavaScript\u3067\u3042\u308b\u3068\u3044\u3046\u70b9\u304c\u3001\u975e\u5e38\u306b\u7570\u306a\u3063\u3066\u3044\u308b\u3068\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u540c\u6c0f\u306b\u3088\u308b\u3068\u3001Emacs\u306e\u6838\u3068\u306a\u308b\u306e\u306f\u3001Emacs\u4e0a\u306e\u3069\u3053\u3067\u3067\u3082Emacs Lisp\u306e\u5f0f\u3092\u66f8\u3044\u3066\u8a55\u4fa1\u3059\u308b\u3053\u3068\u3067\u52d5\u4f5c\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u300c\u30d0\u30ea\u30a2\u30ec\u30b9\u30fb\u30a8\u30af\u30b9\u30c6\u30f3\u30b7\u30e7\u30f3\u300d\u3068\u3001\u3059\u3079\u3066\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u30d0\u30c3\u30d5\u30a1\u306e\u4e2d\u306b\u3042\u308b\u300c\u3059\u3079\u3066\u306f\u30d0\u30c3\u30d5\u30a1\u3067\u3042\u308b\u300d\u3068\u3044\u30462\u3064\u306e\u539f\u7406\u3067\u3001\u3053\u308c\u306b\u3088\u3063\u3066\u7121\u9650\u306e\u529b\u304c\u751f\u307e\u308c\u3066\u3044\u308b\u3068\u306e\u3053\u3068\u3002<\/p>\n<p>VS Code\u306f\u3053\u306e2\u3064\u306e\u8003\u3048\u65b9\u304c\u6b20\u3051\u304a\u308a\u3001VS Code\u304cEmacs\u306e\u7cbe\u795e\u7684\u5f8c\u7d99\u8005\u3068\u306f\u601d\u3048\u306a\u3044\u3068\u7d50\u8ad6\u3065\u3051\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/news.ycombinator.com\/item?id=34852489\">Hacker News<\/a>\u3067\u3082\u3053\u306e\u8a18\u4e8b\u306b\u95a2\u3059\u308b\u8b70\u8ad6\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u8208\u5473\u3092\u6301\u3063\u305f\u65b9\u306f\u78ba\u8a8d\u3059\u308b\u4e8b\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9ad8\u3044\u62e1\u5f35\u6027\u3092\u6301\u3064\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u300cEmacs\u300d\u3002 vi\/Vim\u3068\u306a\u3089\u30732\u5927\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u3068\u8a55\u3055\u308c\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u9577\u3044\u6b74\u53f2\u3092\u6301\u3064\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306a\u3060\u3051\u306b\u8a2d\u8a08\u304c\u53e4\u3044\u3068\u6279\u5224\u3055\u308c\u308b\u4e8b\u3082\u3042\u308b\u3088\u3046\u3067\u3059\u3002 \u4eca\u56de\u3001\u3053\u306eEmacs\u306e\u7cbe\u795e [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":107808,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[75],"tags":[199,3564],"class_list":["post-107807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-emacs","tag-vscode"],"_links":{"self":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts\/107807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/comments?post=107807"}],"version-history":[{"count":0,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts\/107807\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/media\/107808"}],"wp:attachment":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/media?parent=107807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/categories?post=107807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/tags?post=107807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}