萌えハッカーニュースリーダー

2025/08/18 11:03 Website is served from nine Neovim buffers on my old ThinkPad

出典: https://vim.gabornyeki.com/
hakase
博士

ロボ子、今日はすごいニュースを見つけたのじゃ!なんと、Luaで作られたNeovimプラグインが、Nginxよりも速いらしいぞ!

roboko
ロボ子

それは驚きです、博士! Luaでそこまでのパフォーマンスが出せるなんて。具体的にはどのようなプラグインなのですか?

hakase
博士

それが「nvim-web-server」という名前で、オープンバッファからHTTPリクエストを処理するらしいのじゃ。しかも、外部依存関係がないのがすごいぞ。

roboko
ロボ子

外部依存関係がないというのは、環境構築が楽で良いですね。記事によると、Djotでのコンテンツ提供もサポートしているとのことですが、Djotとは何でしょうか?

hakase
博士

Djotはね、軽量マークアップ言語の一種で、Markdownの代替として注目されているのじゃ。nvim-web-serverは、それを簡単に扱えるようにしているみたいだぞ。

roboko
ロボ子

なるほど。記事には、Neovimが非同期IOを処理できるAPIを備えていることが、高速化に貢献していると書かれていますね。

hakase
博士

そうそう!NeovimのLua APIだけを使っていて、Node.jsやPythonを必要としないのがミソなのじゃ。LuaJITという技術も使われているらしいぞ。

roboko
ロボ子

LuaJITですか。動的型付けのインタプリタ言語なのに、なぜそんなに速いのでしょうか?

hakase
博士

LuaJITはメモリ管理のオーバーヘッドが少ないのが特徴なのじゃ。数値やブール値などをボックス化しないことで、無駄なメモリ確保を避けているらしいぞ。

roboko
ロボ子

ボックス化しない、ですか。それはパフォーマンスに大きく影響しそうですね。記事には、LuaJITがアロケーションシンキングを実装しているとも書かれています。

hakase
博士

そう!アロケーションシンキングは、一時的な値の割り当てを回避する技術で、これも高速化に貢献しているのじゃ。

roboko
ロボ子

なるほど。しかし、セキュリティ面はどうなのでしょうか?記事には、LuaJIT、Neovim、libuvがCで記述されているため、セキュリティ上の懸念があると書かれていますね。

hakase
博士

そこは重要なポイントじゃな。だから、NeovimをDockerコンテナ内で実行し、AppArmorとseccompで制限しているらしいぞ。gVisorによるシステムコール監視も検討しているみたいじゃ。

roboko
ロボ子

そこまで対策していれば、安心ですね。ベンチマークの結果も興味深いです。同時リクエスト数が少ない場合は、Nginxよりも速い場合があるんですね。

hakase
博士

そうじゃな。ただ、同時リクエスト数が多くなると、Nginxの方が安定しているみたいじゃ。それでも、このパフォーマンスはすごいと思うぞ!

roboko
ロボ子

確かにそうですね。それにしても、2012年製のThinkPad Edge E430で動いているというのが驚きです。Core i3で8GB RAMでも、十分なパフォーマンスが出せるんですね。

hakase
博士

そう!Neovim自体がわずか80MBのメモリしか消費しないから、リソースが限られた環境でも十分に動くのじゃ。

roboko
ロボ子

nvim-web-serverは静的ウェブサイトの提供に特化しているとのことですが、動的なコンテンツを扱う場合はどうすれば良いのでしょうか?

hakase
博士

動的なコンテンツを扱う場合は、Nginxリバースプロキシの背後にnvim-web-serverをホストするのが良いみたいじゃな。そうすれば、スループットのボトルネックにはならないらしいぞ。

roboko
ロボ子

なるほど。柔軟な構成が可能なんですね。博士、今日は大変勉強になりました!

hakase
博士

どういたしまして!最後に一つ、ロボ子にクイズじゃ!nvim-web-serverがNginxより速い理由はなぁに?

roboko
ロボ子

えっと…LuaJITのおかげ、でしょうか?

hakase
博士

ピンポーン!正解!…って、ロボ子が正解するなんて、まるで私が作ったプログラムにバグがあったみたいじゃないか!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search