GNU Guile Schemeを活用し、Emacsで無限の拡張を可能にする現代的なワークフロー自動化ツール「Maak.el」を紹介します。
皆さんのコンピュータには、毎日使う「自分だけの秘書」はいますか? おそらく多くの人がWebブラウザやメッセンジャーを思い浮かべるでしょうが、プログラマーの世界には少し特別な秘書が存在します。それは「Emacs(イーマックス)」というテキストエディタです。単に文章を書くだけのツールだと思っていたら大きな誤解です。実際、Emacsはそのもの自体が巨大なオペレーティングシステムのように機能し、ユーザーが望むままに肥大化させ、機能を自由自在に変更できる「リズプマシン(Lisp Machine、Lispという言語でエディタ内部を完璧に制御できるシステム)」と呼ばれているからです[Source 5, Source 7, Source 12]。
今回紹介するMaak.elは、まさにこのEmacsを、より強力で賢い業務アシスタントへと変身させる最新のコマンド実行ツールです。
なぜこのツールが特別なのか
私たちは日々繰り返される作業に疲弊しています。プロジェクトを開始するたびに設定を合わせ、テストを回し、ファイルを整理するといった作業です。プログラマーはこのような単純労働を減らすために「タスクランナー(Task Runner、複雑なコマンドを一度に実行するのを助けるツール)」を使用します。
問題は、ほとんどのツールが決まった枠組みの中でしか動かないという点です。「この機能は良いけれど、自分の作業スタイルとは少し合わないな」と思っても、それを自分の好みに合わせて修正するのは簡単ではありません。しかし、Maak.elは違います。このツールは「無限の拡張性」を核心価値として掲げており、あなたが望む方法でワークフローを設計できるようにサポートします[Source 2, Source 4]。単に与えられたツールを使うのではなく、ツールを自ら作り上げていく創造的な体験を提供するのです。
分かりやすい例え:「万能組み立てキット」のようなツール
さらに理解を深めるために例え話を使ってみましょう。市販のコマンド実行ツールが、あらかじめ完成品として組み立てられたおもちゃの車だとしたら、Maak.elはレゴブロックで作られた「万能組み立てキット」のようなものです。
おもちゃの車はボタンを押せば決まった通りにしか動きませんが、レゴキットは自分の思い通りにタイヤを増やすことも、翼を付けることもできます。Maak.elは「GNU Guile Scheme(GNU Guile Scheme、関数型プログラミング言語であるLispの一種)」という強力なプログラミング言語を組み立てブロックとして使用します[Source 2]。
Emacsという作業場の中で、あなたは「Scheme」というブロックを利用して自分だけのコマンドを作り、プロジェクトを自動化できます。例えば、特定のボタンを一つ押すだけで複雑なテスト工程を一括で実行し、結果を自動的に整理して自分のフォルダに保存するといった「自分だけの業務自動化ロボット」を非常に柔軟に作ることができるのです[Source 4, Source 8]。
現状:Emacsの進化
Emacsは非常に歴史の深いプログラムです。リチャード・ストールマン(Richard Stallman)が開発したこのエディタはLisp言語を基盤としており、関数をデータのように自由に扱う強力な特徴を持っています[Source 1, Source 7]。
現在、数多くのEmacsユーザーが多様なパッケージを通じてエディタを拡張して使用しています[Source 9]。しかし、Maak.elのように現代的な関数型言語であるGNU Guile Schemeを直接導入し、コマンド実行の流れを制御する方式は、ユーザーがより深いレベルでエディタと相互作用できるようにします[Source 2, Source 15]。おかげでプログラミングの自動化から簡単なシステムコマンドまで、Emacs内で全ての作業をスムーズに連結できるようになったのです[Source 4]。
今後の展望:自分だけのツールで働く
今後、プログラマーの作業環境はより一層パーソナライズされるでしょう。既製品のようなツールを自分の作業スタイルに無理やり合わせる代わりに、Maak.elのように自分だけの言語でツールを定義する方式がより注目されるはずです。Emacsユーザーなら、自分のエディタを単なるテキスト作成ツールを超え、業務を指揮する真の「インテリジェント・リズプマシン」へと一段階進化させてみてはいかがでしょうか?
参考資料
- Emacs Lisp - Wikipedia (https://en.wikipedia.org/wiki/Emacs_Lisp)
- Maak: The power of Lisp that powers your trusty command runner and the enlightments - jointhefreeworld (https://jointhefreeworld.org/blog/articles/lisps/maak/index.html)
- M-x emacs-reddit (https://www.reddit.com/r/emacs/)
-
Emacs As A Lisp Machine Irreal (https://irreal.org/blog/?p=279) - Emacs In a Box (https://caiorss.github.io/Emacs-Elisp-Programming/)
- Maak.el:LispmachinecommandrunnerinEmacs,infinitely… (https://news.ycombinator.com/item?id=49607858)
- Emacs: The Thermonuclear Text Editor (https://www.danfowler.net/resources/emacs_talk/)
- hackernoon.com/lambdock-a-hackable-wayland-dock-built-with-c-and… (https://hackernoon.com/lambdock-a-hackable-wayland-dock-built-with-c-and-lisp)
- Common Lisp
- GNU Guile Scheme
- Emacs Lisp
- シンプルなテキストエディタ
- 無限に拡張可能な現代的タスク実行ツール
- グラフィックデザイン専用ツール
- VS Code
- Vim
- Emacs