LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

Emacs

Emacs (イーマックス、)およびその派生物は、その拡張性を特徴としたテキストエディタのファミリーである。Emacsの中で最も広く使われている派生物はGNU Emacsであるが、そのマニュアルにはEmacsを「the extensible, customizable, self-documenting, real-time display editor」(拡張およびカスタマイズが可能で、自己文書化を行い、リアルタイム表示を行うエディタ)であると説明されている。最初のEmacs開発は1970年代中盤に開始され、現在も続いている。Emacsは2000を超える組み込みコマンドを持ち、ユーザーは作業自動化のためにこれらのコマンドをマクロと組み合わせることができる。EmacsはLISPプログラミング言語の方言であるEmacs Lisp (ELisp) でユーザーや開発者が新しいコマンドを書けるようにしているため、深い拡張性を提供する。Emacsの拡張機能は電子メール、ファイル、アウトライン、およびRSSフィードを管理するために書かれている 。ユーザーの中にはEmacs内部からテキスト編集だけでなくほとんど全ての作業を行うことができることに気づいた者もいる。原典であるEMACSは1976年にリチャード・ストールマンとガイ・L・スティール・ジュニアによりTEXOエディタ用の"Editor MACroS"のセットとして書かれたものであり、TECOマクロエディタの概念にインスパイアされている。最も有名かつ最も移植されたEmacsは、ストールマンによってGNUプロジェクトのために作成されたGNU Emacsである。XEmacsは1991年にGNU Emacsからフォークされた派生物である。GNU EmacsとXEmacsは共にELispを使い、互いに互換性のある部分が大半である。Emacsはviと並びUNIX文化における伝統的なエディタ戦争の主要な当事者の2つである。Emacsとviは共に未だに現役である古来のアプリケーションの中では最古の部類である。Emacsは1970年代のMIT人工知能研究所(MIT AI研)で産声をあげた。 AI研で使われていたPDP-6やPDP-10のオペレーティングシステムはIncompatible Timesharing System (ITS) であり、そのデフォルトエディタはTECOというラインエディタであった。TECOは現在の一般的なテキストエディタとは違い、追加・編集・表示用にそれぞれ別々のモードが存在していた。そのため文字を入力しても即座に反映されるわけではなく、代わりにTECOコマンド言語の ('i') 文字を入力して入力モードに切り替えてから必要な文字を入力し、最後に () 文字を入力してエディタをコマンドモードに再度切り替える必要があり(上書きが可能なため、同様のテクニックが使われた)、しかも入力モードで編集中の文字は画面に表示されなかった。なおこの振る舞いは現在も使われているedプログラムと同じである。リチャード・ストールマンは、1972年と1974年にスタンフォード人工知能研究所を訪れ、Fred Wrightにより書かれたその研究所の「E」エディタを目にした。Eの振る舞いは今のエディタの大半で使われている直感的なWYSIWYGであり、ストールマンはその機能に触発されてMITに戻った。 AI研ハッカーの一人であるCarl Mikkelsenは、利用者がキー操作するたびに画面表示を更新する「Control-R」という表示・編集を組み合わせたモードをTECOに追加していた。ストールマンは、この更新が効率的に動くよう書き直し、任意のキー操作でTECOプログラムが動くように利用者が再定義できるマクロ機能をTECOの表示・編集モードに追加した。EにはTECOに不足していたランダムアクセス編集機能が搭載されていた。TECOはPDP-1の紙テープを編集するために設計されたページシーケンシャルエディタであるため、一度に1つの紙テープしか編集することしかできず、さらに紙テープのファイルに存在するページの順に編集しなければならなかった。Eはディスク上のページランダムアクセスを可能にするため、ファイルを構造化するというアプローチを採用していたが、ストールマンはTECOを修正してさらに巨大なバッファを効率的に処理できるようにするというアプローチを採用し、ファイル全体を単一バッファとして読み込み、編集し、書き込めるようにファイル管理方法を変更した。現在ではほとんどのエディタがこのアプローチを用いている。新しいバージョンのTECOはまたたく間にAI研で評判となり、マクロを意味する「MAC」や「MACS」が語尾に付いた名前のカスタム・マクロの巨大なコレクションが溜まった。さらにその2年後、どんどんばらばらになっていくキーボード・コマンド・セットを1つに統合するプロジェクトをガイ・スティールが引き受けた。ストールマンはスティールとハックしたある夜の後、新しいマクロ・セットの文書化や拡張の機能を含む実装を完成させた。こうしてできあがったシステムは"Editing MACroS"や"E with MACroS"を意味するEMACSと呼ばれることになる。ストールマンによると、Emacsとしたのは「当時ITSでが略称に使われていなかったから」である。作り話であるではケンブリッジの人気アイスクリーム店「」にちなんで名付けられたとしている。操作可能な最初のEMACSシステムは1976年後半に姿を現した。ストールマンはEMACSの過度のカスタム化や事実上の分裂の危険に気づいたため、ある使用上の条件をつけた。彼は後に次のような文章を残している:原典であるEmacsはTECO同様にPDP-10上だけで動作した。Emacsの振る舞いはTECOのそれとはと大きく異なっていてTECOとは独立した別のエディタとみなせるようになり、さらにEmacsは急激にITS上の標準編集プログラムとなった。はEmacsをITSからTENEXやTOPS-20オペレーティングシステムに移植した。 初期のEmacsへの貢献者には、このほか、Earl Killian、Eugene Ciccarelliらがいる。1979年までに、EmacsはMIT人工知能研究所やMITコンピュータ科学研究所で使われる主要エディタとなった。その後、他のコンピュータシステム用に多くのEmacs風エディタが書かれた。これらにはMichael McMahonとらがLISPマシン用に書いた ("Eine Is Not Emacs") とZWEI ("Zwei Was Eine Initally")(なお、ZWEIはドイツ語で「2」の意味でもある。EINEが「1つの」(女性形)にあたるためのもじり。ストールマンの呼ぶEINEは「アイン」のように聞こえるが、ドイツ語の発音は「アイネ」に近い)、そしてOwen Theodore Andersonによって書かれたSINE ("Sine Is Not Emacs") がある。WeinrebのEINEはLISPで書かれた最初のEmacsである。1978年にはハネウェルケンブリッジ情報システム研究所でによりがほぼ全てをMultics Lispで書かれ、その後とBarry Margolinによりメンテナンスされた。なおRichard SoleyはNILプロジェクト用にNILEというEmacs風エディタを開発し続けていた。GNU Emacsを含むEmacsのバージョンの多くは後に拡張言語としてLISPを採用することになる。UNIXで動作する最初のEmacs風エディタは、後にNeWSやJavaの開発で知られることになるジェームス・ゴスリングが1981年に書いたであった。 これはCで書かれ、というLISP風構文の拡張言語を使っていた。Mocklispにはシンボルさえなく、構文がLISP風なだけで本当のLISPではない。Gosling Emacsは、現在広く使われているフリーソフトウェアのGNU EmacsやMeadowとは異なりプロプライエタリ・ソフトウェアであった。プロプライエタリ・ソフトウェアとは、ソースコードが公開されていないソフトウェアで、プログラムを自由に配布や改変、逆コンパイルをすることができないものを指す用語である。1984年、リチャード・ストールマンはプロプライエタリ・ソフトウェアであったGosling Emacsのフリーソフトウェアによる代替物を作るべく、GNU Emacsに取り組み始めた。当初GNU EmacsはGosling Emacsをベースとしていたが、ストールマンはMocklispインタプリタを本物のLISPインタプリタに入れ替えてしまい、ほぼすべてのコードが入れ替わった。GNU Emacsは揺籃期のGNUプロジェクトがリリースした最初のプログラムとなった。GNU EmacsはCで書かれており、Cで実装されたEmacs Lisp (ELisp) を拡張言語として提供する。最初に広く頒布されたGNU Emacsのバージョンは1985年に登場した15.34だった。初期のGNU Emacsのバージョン番号は"1.x.x"のように最初の桁にC coreのバージョンを表すよう採番されていたが、バージョン1.12が出た後にメジャー番号が変わりそうにないため先頭の1をなくすことにしたので、バージョン番号は"1"から"13"にスキップした。最初の公開リリースであるバージョン13は1985年3月に完成した。2014年9月にGNU emacs-develメーリングリストで、GNU Emacsにラピッドリリース戦略を採用し、将来的にバージョン番号をより迅速に増やしていくことが発表された。GNU Emacsは後にUNIXへ移植され、Gosling Emacsよりも多くの機能を提供した。それらの機能の中で代表的な物は、拡張言語であるフル機能を持ったLISPである。それから瞬く間にGNU EmacsはGosling Emacsに取って代わりUNIXのEmacsエディタのデファクトとなった。は彼の1986 cracking spreeで、UNIXコンピュータ上でスーパーユーザーアクセスを取得することでGNU Emacsの電子メールサブシステムのセキュリティフローを暴きだした。GNU Emacsの開発は"伽藍とバザール"で"伽藍"式開発の例にあげられていたように、1999年まで比較的閉鎖的だったが、それ以降は公開された開発メーリングリストと匿名CVSアクセスを採用するようになった。GNU Emacsの開発は2008年までは単一のCVSトランクで行われていたが2009年末より分散型バージョン管理システムであるBazaarに切り替えられ、さらに2014年11月11日にGitへと移行した。リチャード・ストールマンは長らくGNU Emacsの主要な管理者を務めていたが、時代と共にその役目から退いていった。2008年から管理はStephan MonnierとChong Yidongに引き継がれている。2014年の時点で、GNU Emacsはその歴史を通じて579人によりコミットされてきた。GNU Emacs のバージョンは 1985年のうちに 17 まであがったが、それ以降は更新は落ち着いた速度で行われている。1991年初頭、GNU Emacs 19の初期α版をベースとしてと社の人たちによりLucid Emacsが開発された。コードベースはすぐに2つに分割され、開発チームは単一プログラムとして併合しようとすることをあきらめた 。これはフォークしたフリーソフトウェアのうち初期の最も有名な例の1つである。Lucid EmacsはXEmacsと名前を変え、Emacsの中でGNU Emacsに次いで2番目に有名な派生となった。XEmacsの開発は2009年1月に最新の安定版であるバージョン21.4.22がリリースされてから遅くなっていき、その一方でGNU Emacsは以前はXEmacsにしかなかった機能の多くを実装していった。このため一部のユーザーはXEmacsの死を宣言するようになった。XEmacsほど有名ではないGNU Emacsのフォークには以下のものがある:過去においては、各Emacsプロジェクトの目的は肥大化したEmacsの小規模なバージョン作成であった。GNU Emacsは当初、当時のハイエンドであった32ビットフラットアドレス空間と少なくとも1MiBのRAMを搭載するコンピュータを想定していたが、1980年代ではそのようなコンピュータはハイエンドなワークステーションであったので、一般的なパーソナルコンピュータのハードウェアで動作するようより小規模に再実装する必要があった。近年では小規模なEmacsクローンはソフトウェアインストールディスクに収まるよう設計されている。小規模バージョン作成以外のプロジェクトの目的は、ELisp以外のLISP方言やLISPとは全く異なるプログラミング言語によるEmacsの実装である。Emacsクローンを以下に示す。ただし現在その全てが管理されているわけではない:CとEmacs Lisp両方を含むソースコードは、GNU General Public License (GPL) 規約の下で調査、修正、再頒布のため自由に入手できる。古い版のGNU Emacsの文献は、修正版の複製にあるテキストの挿入を要件とする個別のライセンスの下でリリースされた。たとえば、GNU Emacs user's manualは、GNU Emacsの入手方法と、リチャード・ストールマンの政治的エッセー「GNU宣言」を含んでいた。フォーク時に古いGNU Emacsのマニュアルを継承したXEmacsのマニュアルも同じライセンスである。一方、新しい版のGNU Emacsの文献は、GNU Free Documentation Licenseを用い「不変部分」を利用して、同じ文書の包含を要求しつつ、マニュアルが"GNU Manuals"であることも宣言している。GNU Emacs(や他のGNUパッケージ一般)では、コピーレフトの強制を容易にするため、すなわちFSFが係争に入ったときに法廷でソフトウェアを守れるようにするため、著しい量のコード寄贈は著作権者が自身の著作権を適切に放棄または委譲したときだけ受理する方針になっている。この方針の唯一の例外はMule(MULtilingual Extension、Unicodeや、他の言語の用字系を処理する高度なメソッドがある)のコードで、著作権者が日本国政府で著作権の委譲が不可能であった 。些細なコード寄贈やバグ修正には、この方針は適用されない。些細かどうかの厳密な定義はないが、指針として10行未満のコードは些細とみなされている。この強制は、GNU Emacsのフリーソフトウェア・ライセンス、つまりGNU General Public Licenseと、多くの著作者と寄贈者による知的著作物であるフリーソフトウェア自体に、法的な信頼性をあたえている。Emacsは主にテキストエディタでありテキスト要素を操作するよう設計されているが、LaTeX、Ghostscript、ウェブブラウザといった外部のプログラムと通信することで、ワードプロセッサのように文書を整形したり印刷することができる。Emacsは語、文、そして段落といった異なるセマンティック要素や、関数のようなソースコードの構成要素を処理したり様々な色を付けるためのコマンドを提供する。さらにEmacsは編集コマンドのユーザー定義バッチ用に"キーボードマクロ"も提供する。GNU Emacsは"リアルタイム表示"エディタであるので、編集する度にその編集がオンスクリーンで表示される。これは現在のテキストエディタの標準的振る舞いであるが、EMACSは初期の段階でこの機能を実装していたため、viのように既存のテキストに新しい編集を挿入するために個別のコマンドを実行する必要がなかった。viが編集のための基本的な機能のみを搭載していたのに対し、Emacsはインクリメンタルサーチ・無制限のアンドゥ・ヤンク(ペースト)用のスタック・複数のバッファ・バッファ上でシェルを実行・補完・言語ごとのモードなど、エディタとして考えられる限りの機能を詰め込んでいる。VimではEmacsと同等のことができるようになっているが、バッファの使い方はEmacsより控えめである。文書への文字列挿入などの基本的な編集操作を含むEmacsの機能はほとんど全て、LISPの方言で書かれたスクリプトで行える。GNU Emacsで使われるLISP方言はEmacs Lisp (ELisp) として知られている。ELisp層はCで書かれた基本的なサービスとプラットフォームを抽象化した概念の、安定したコアの頂点に位置している。LISP環境の変数と関数は、Emacsのリコンパイルや再起動をせずとも一時的に修正できる。Emacsは追加属性を持つテキストを含んだ"バッファ"上で動作する。全てのバッファはその固有の"ポイント"(カーソル位置)と"マーク"(ポイントと併せて、選択された"リージョン"を区切るためのもう1つの位置)、(適用可能な場合)バッファが"訪問"しているファイル名、そして変数で編集や振る舞いを制御する現在の"モード"のセット(正確には1つのメジャーモードと複数のマイナーモードからなる)を保存している。Elispコードは"コマンド"と名付けられ、インタラクティブに実行できる。コマンドはキープレスにバインドでき、さらに名前でアクセスすることもできる。コマンドの中にはバッファから任意のElispコードを評価するもの(例としてはcodice_1やcodice_2など)もある。バッファは"ウィンドウ"内に表示される。ウィンドウは端末画面やGUIウィンドウのタイリングされた部分である(その部分はEmacs用語で"フレーム"と呼ばれ、複数のフレームが可能)。特に設定されていない場合、ウィンドウにはスクロールバー、行番号、一番上にある"ヘッダ行"(通常この行にはバッファタイトルやファイル名が表示される)、そして一番下にある"モード行"(通常この行には現在のモードとバッファにおけるポイントの位置のリストが表示される)が含まれる。同じバッファ上で複数ウィンドウを開くことができるため、例えば1つの長いテキストから異なるパートを見ることができる。さらに複数バッファで同じテキストを共有できるので、例えば言語が混在したファイルで異なるメジャーモードを利用することができる。codice_3により必要に応じてモードを手動で変更することもできる。ふつう最下行にある"ミニバッファ"は、Emacsが情報を受け取る場所である。検索対象のテキストや読んだり保存したりするファイルの名前などの情報をミニバッファに入力する。一部の入力ではタブキーを用いて入力を補完することができる。ミニバッファは通常1行しかないが、ここでも通常のバッファと同じ移動・編集コマンドを使うことができる。基本的な操作は、今日広く使われているEmacs実装である最近のEmacs、すなわちGNU EmacsとXEmacsについて記述する。GNU Emacsからのフォークとして始まったXEmacsとその後継版は、GNU Emacsとおおむね互換性がある。カーソル移動などは矢印キーをつかって行うこともできるが、主要な大部分の操作は、Controlキー・Metaキー(Windows では通常Altキーを使用する)・Superキーなどを押し下げたまま別のキーを打鍵することで行うことができる。viと比較した場合、viが編集モード、カーソル移動モードの2つのモードを持つのに対し、Emacsはそのようなモードを持たない。ただしEmacs上でviの操作をエミュレートするエミュレータもいくつかある (vip-mode, viper-mode) 。なお、EmacsではControlキーを押しながら「a」を押す事を「C-a」と表記し、Metaキーを押しながら「a」を押す事を「M-a」と表記する。本稿でも以下この表記を用いる。キーの多くは英語の頭文字にしたがって割り振られているので、どのキーがどの操作に対応しているのかを比較的簡単に覚えることができる。たとえばカーソルを右、左、上、下に動かす操作はそれぞれC-f、C-b、C-p、C-nであるが、これはそれぞれforward、backward、previous、nextの略である。Emacsでは、2ストローク以上のキー操作も多数用意している。たとえば「C-xC-s」(=Controlを押し下げたままx、sと打鍵する)でファイルを保存する。キーの割り当てられていないコマンドも多くあり、それらは M-x を押してからコマンドを入力することで実行する。なお、C-h t(英語)あるいはC-h T(翻訳)でチュートリアルを表示させることができ、そのまま操作方法を学習することができる。グラフィカル・インターフェースでEmacsを使っているとき、キーボードの代わりにメニューバーやツールバーからもコマンドを呼び出せる。しかし、経験豊富なEmacsの利用者には、必要なキー操作をいったん記憶してしまえばより速く操作でき便利なキーボードからのコマンド呼び出しのほうが好まれている。全ての編集コマンドは、実際はEmacs Lisp環境の関数を呼び出す。文字"a"を挿入するコマンドのcodice_4をたたいただけでも、関数を(この場合codice_5を)呼び出す。一部のEmacsコマンドは、外部プログラム(つづりのチェックにispellや、プログラムのコンパイルにgcc)を呼び出し、プログラムの出力を解析し、Emacsに結果を表示することで、機能している。「主モード(メジャーモード、major-mode)」という編集モードにEmacsが入ることで、編集するテキストの種類に応じて振舞いを適応させる。普通のテキスト・ファイル、多くのプログラミング言語のソースコード、HTML文書、TeXやLaTeXの文書や、多くの他種のテキスト用に主モードが定義されている。各主モードはEmacs Lisp変数を調節するなどして固有の型のテキストに都合よく振る舞うように作られている。特に、キーワードやコメントなどの表示にさまざまな書体や色を用いた構文の強調をしばしば実装する。主モードは、専用の編集コマンドも提供する。たとえばプログラミング言語用の主モードはしばしば、関数の先頭や末尾へ飛ぶコマンドを定義する。ファイルを16進で表示してバイナリ編集できる hexl-mode などの特殊なモードもある。「副モード(マイナーモード、minor-mode)」でEmacsの振舞をもっとカスタム化することもできる。たとえば、Cプログラミング言語の主モードは、人気の字下げスタイルそれぞれにさまざまな副モードを定義している。主モードは2つ以上同時に使用できないが、副モードは同時に複数を有効にできる。Emacsは、プログラマが単一インターフェースでコードを編集、コンパイル、デバッグするような統合開発環境 (IDE) としても使うことができる。このような編集機能にとどまらず、Emacs LispはTCP/IP通信や外部プロセスの起動などの機能を持っており、テキストエディタとしては一般的でない機能も多くEmacs Lispで記述されている。これらの機能を利用した様々なアプリケーションソフトウェアが書かれてきた。Emacsはこれらのアプリケーションソフトウェアを動作させる実行環境となっている。その他様々な機能を持つライブラリーが存在する。ライブラリーは、インターネットで見付けることができる。新しいライブラリーを投稿するためのUsenetニュースグループgnu.emacs.sourcesまである。一部のライブラリーは、最終的にEmacsに取り込まれて、「標準」ライブラリーとなる。GNU Emacs 24 では、パッケージマネージャが内蔵された。公式のパッケージアーカイブである GNU ELPA(Emacs Lisp Package Archive)のほか、いくつかのアーカイブを扱うことができる。Emacsは、チューリング完全な言語を小さい中央コアの頂点で起動する階層型アーキテクチャを使用する。ストックされたEmacs頒布の約3/4(24.4現在では1611kLOCのうち1266)がElisp拡張言語で書かれており、一度Cによる中核部分(Elispインタプリタを実装し、24.4現在では247kLOCを占める)を移植すればElispコードに実装された機能のセットは存在することになるので、Emacsを新しいプラットフォームに移植することはネイティブコードのみから成る同等のプロジェクトを移植するよりはるかに簡単である。Emacsの移植は理論上中核部のみを新しいプラットフォームへ移植すればよい。このため一度中核部が移植されれば、Cよりも高級な言語で実装された部分は最小限度の作業で済む。Emacsには最初から各個別のコマンド、変数、内部関数の説明文字列を表示する、強力な"help"ライブラリが付属していた。このため通常の機能や現在の状態の情報をユーザーに提供するので、Emacsは"自己説明的"だと評される。各関数には説明文字列が含まれていて、要求に応じてユーザーに表示される。その後関数に説明文字列をつける習慣は、LISP、Java、Perl、およびPythonといったさまざまなプログラミング言語に広まった。このヘルプシステムにより、ユーザーは組込みのライブラリや追加されたサードパーティーのライブラリのどちらからも各関数用の実際のヘルプコードを取得できる。Emacsには組み込みのチュートリアルもある。編集ファイルを指定せずEmacsを起動すると、簡単な編集コマンドの実行方法とチュートリアルを呼出す方法についての説明が表示される。このチュートリアルはStuart Cracraftとリチャード・ストールマンによって作られたものである。GNU Emacsには組込みの説明文字列のほかにも、リチャード・ストールマンの執筆した"GNU Emacs Manual"の電子コピーがついており、組込みのInfoブラウザで閲覧することができる。電子版のほかに、3種のマニュアルがフリーソフトウェア財団から書籍のかたちで刊行されている。XEmacsの場合、ソフトウェア本体と同時にGNU Emacs Manualからフォークした同様のマニュアルがある他、Bill Lewis、リチャード・ストールマン、Dan Laliberte共著の"Emacs Lisp Reference Manual"、Robert Chassel著の"Programming in Emacs Lisp"も含まれている。Emacsの日本語版としてNemacs (Nihongo Emacs) が、多国語対応版としてMule (MULtilingual Enhancement to GNU Emacs) が開発された。NemacsおよびMuleは電子技術総合研究所(電総研:現在の産業技術総合研究所)の半田剣一らによるものである。Muleはアラビア文字などの右から左へ記述する文字をふくめた複数の文字集合の1ファイル中での混在と編集が可能であり、中国や、タイ等多くの国や地域で規格化された文字集合をサポートするなど、先進的かつ実用的な多用字系処理系であった(しばしば多言語処理系ともいわれる)。日本語 GNU Emacs (Nemacs:Nihongo Emacs) は東京大学の平野聡と大阪大学の東田学によって、フリーなDOSエクステンダのgo32/djgppを用いてMS-DOS上に移植され(後に emx にも対応)、demacsと呼ばれた。GNU Emacs 21 より Mule のコードが取り込まれており、多数の自然言語で書かれているテキストの編集をサポートしている。多種のアルファベット、用字系 (script) 、書写体系 (writing system) 、文化慣習のサポートがある。ispellといった外部プログラムを呼び出すことで、多数の言語のつづりをチェックできる。UTF-8を含む多数の符号化体系をサポートしている。XEmacs 21.4版と21.5版には、部分的なUnicodeのサポートが含まれている。内部的にはEmacs固有の符号化を用いていたが、上記の半田剣一らの努力により、Emacs 23 では内部で UTF-8 を使うようになり、さらに基本多言語面以外の文字も使えるようになった。また、Emacs 24 では左から右へ書く文字と右から左へ書く文字を混在して書くことができるようになった。Emacsのユーザー・インターフェースは英語で、初心者用チュートリアルを除き、他の言語に翻訳されたことはない。視力障害や全盲の利用者のため、音声フィードバックだけでエディタを使えるようになる"Emacspeak"という下位システムがある。Emacsはもとは文字端末での利用を前提に設計されていたものであるが、少なくともGNU Emacsバージョン18ではX Window Systemアプリケーションとしてコンパイルすることもできた。しかし、その実装方法は、自前の端末エミュレータを立ち上げ、その中で動くというものであり、ウィンドウシステムの持つ機能を十分に発揮するには至っていなかった。このため XEmacs などのプロジェクトが生まれたが、GNU Emacs 自身も徐々にGUIに対応していった。Emacsバージョン21およびXEmacsではグラフィックス機能が強化されており、1バッファ中で複数のサイズやスタイルのフォントを混在させることもできる。また、画像を表示させることもでき、ImageMagickと連携してさまざまな画像ファイルを開くことができるようになった。2009年の Emacs 23 ではフォントの扱いが大きく変わり、TrueTypeフォントが自由に使えるようになった。Win32 で動く Emacs を NTEmacsとよぶこともある。現在はGNU Emacs自体をVisual C++またはCygwinでコンパイルすることが可能である。バイナリ形式でも配布されているので、zipを展開するだけでWindows上でEmacsが使用可能である。日本では、かつて宮下尚によりWin32アプリケーションとしてMule 2.3をベースにしたMule for Win32、そしてEmacs 20をベースにしたMeadowが、Windows上に移植・開発され、広く使われていた。2004年7月7日にはGNU Emacs 21をベースにしたMeadow2がリリースされたが、Emacs 22 以降には対応していない。一方、上記のバイナリは日本語IMEからの入力に問題があるため、パッチをあててCygwinでビルドしたgnupackが使われるようになってきている。SKKのようなEmacs上の入力システムを使い、Windows上の日本語IMEを使用しない場合は、公式のバイナリをそのまま使えばよい。OS X は最初から Emacs がインストール済みだが、標準ではGUIが使えない。銭谷誠司が Emacs 22 を OS X の Carbon API を使って GUI 対応した Carbon Emacs が使われてきたが、Emacs 23 からは GNU Emacs そのものが Cocoa API を使った GUI で動くようになり、configure に codice_16 (ns は NEXTSTEP)オプションをつけるだけで GUI で動く Emacs をソースからビルドすることもできる。そのほか、GUIをAquaとしたAquamacsなど、多数のバリエーションが存在する。OS X では、コントロールキーのほかにコマンドキーとオプションキーが用意されており、そのどちらかをMetaキー・もう片方をSuperキーとして使うことができる。Superキーの割り当ての一部は OS X の標準のキー割り当てとよく似ている(s-x でカット・s-c でコピー・s-n で新しいフレームが開くなど)。ただし、その副作用として本来のオプションキーとしての機能は使えなくなってしまう。たとえば日本語キーボードではバックスラッシュをオプション+円記号で入力する必要があるので、特別な対応が必要となる。"Emacs教会" () とはEmacsユーザーによって作られたである。Emacs教会はviを「獣の数字」である(ローマ数字ではvi-vi-viは666を表すため)としているが、viのユーザーに反対しているわけではない。むしろプロプライエタリ・ソフトウェアをアナテマと呼んでいる(「viのフリーソフトウェア版を使うことは罪というより苦行である」)。このパロディ宗教をサポートするためのEmacs教会のニュースグループとしてalt.religion.emacs,が存在する。Emacsユーザーの中には「よりよいものを真似る」ことを試みたとして、viの支持者は対抗として"viカルト" () を作成した。ストールマンは冗談で自身をEmacs教会の聖人 () であるSt IGNUciusとしている。Emacsの修飾キーへの強い依存がとなるというフォークロアは"Emacs小指" () と呼ばれる。ユーザーは様々なアプローチでEmacs小指に対処してきた。ソフトウェア側の手段には以下のようなものがある:ハードウェアによる解決法としては、修飾キーを親指で簡単に操作できるKinesis Contoured Keyboardや、手の平で押せるようキーボードの両側に対照的に手の平で押すことができる巨大な修飾キーを配置したがある。フットペダルも利用できる。Emacsが開発されたスペースカデットキーボードは、スペースキーに隣接したコントロールキーが巨大で親指が届き易かった。英語においてboxenやVAXenのように、"emacs"という単語の複数形を"emacsen"と綴ることもある。EmacsのLispベースの設計の欠点は、Lispコードの読込み、解釈 に伴う性能への負荷である。Emacsが最初に実装されたシステムでは大抵、競合するテキストエディタよりかなり遅かった。このことをジョークにした、頭文字による略語がEMACSになる文がいくつか存在する(このようなジョークは他にも存在し、例えばユーザー・インターフェースをネタにした ("Escape Meta Alt Control Shift") などがある)。ただし、最近のコンピュータは十分速くなり、以前言われていたほどEmacsを遅いと感じることはめったになくなった。実際、Emacsは最近のワードプロセッサよりも素速く立ち上がる。さらに、GNU Emacs 23以降はEmacsをサーバープログラムとして立ち上げておくデーモンモードが追加された。この場合、Emacs本体はOS起動時に自動的に一度起動するだけなので、速度は問題にならない。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。