静的サイトに特化した全文検索ライブラリ「Pagefind」、さくらのレンタルサーバで動かしてみた

今回は「静的サイトに特化した全文検索ライブラリ「Pagefind」、さくらのレンタルサーバで動かしてみた」についてご紹介します。

関連ワード (動作確認、同時、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


先日、静的サイトに特化した全文検索ライブラリとして「Pagefind」というソフトウェアがあることを、下記の記事が話題になったことで知りました。

参考:静的サイトに特化した検索ライブラリ Pagefind を試す | grip on minds

実は、いまお読みのPublickeyはまさに、Movable TypeというCMSを用いて生成された静的なWebサイトです。現在、PublickeyではGoogleが提供している「Googleカスタム検索エンジン」を全文検索エンジンとして採用しています(右上の虫眼鏡アイコンから呼び出せます)。

しかしPublickeyでは以前からGoogleに依存しない、自前の全文検索エンジンを持てないかと模索しており、まさにPagefindは私が探し求めていたソフトウェアだったと言えます。

そこでさっそくPagefindがPublickeyに導入できるかどうか、調べてみることにしました。

Pagefindをさくらのレンタルサーバで動かせるか?

上記の記事や公式サイトを読むと、Pagefindの仕組みは、「pagefind」というコマンドをサーバ上で実行することで静的サイトの大量のHTMLファイルを読み込み、インデックスファイルをJavaScriptファイルなどのファイル群として生成します。

それをWebブラウザ上で読み込み、ユーザーが入力した検索キーワードに対応してJavaScriptが実行され、結果を表示する、というもののようです。

仕組みそのものはPublickeyでも利用できそうだということが分かりました。

ただし問題が2つありました。

1つは、ドキュメントによるとPagefindのインストールにはNode.jsのパッケージマネージャに関連した「npx」コマンドを使うと説明されていることです。Publickeyは、さくらのレンタルサーバを利用しているのですが、さくらのレンタルサーバにはNode.js環境は標準で用意されていません。

もう1つは、Pagefindが公式で提供しているビルド済みのファイルは、Windows版、macOS版、Linux版しか提供されていないことです。さくらのレンタルサーバのOSはFreeBSDなので、そのままでは実行できません。

この2つを同時に解決するには、PagefindのソースコードをFreeBSD上でビルドし、できあがったバイナリをさくらのレンタルサーバに転送し実行する、という方法が考えられます。

早速試してみることにしました。

Windows上の仮想マシンでFreeBSDを動かす

具体的には、Windows上で仮想マシンを起動し、そこでFreeBSD環境を用意します。

次に、PagefindはRust言語で開発されていることが分かったので、FreeBSD上にRust言語をインストールし、Pagefindをビルドする、という手順で試してみましょう。

Windows 11での仮想マシンの立ち上げは、コントロールパネルを起動し、Hyper-Vを有効にします。

fig

次に、FreeBSDの公式サイトからHyper-V用のイメージを取得します。さくらのレンタルサーバはFreeBSD 13.0だったので、FreeBSD 13.2のAMD64版となる「FreeBSD-13.2-RELEASE-amd64.vhd.xz」をダウンロードし、解凍します。

解凍したファイルをHyper-Vで読み込んで起動すると、仮想マシン上でFreeBSD 13.2が起動します。

fig

ただしデフォルトの状態ではストレージの容量が5GBしかなく、Rust言語がインストールできません。そこで、こちらのサイトを参考に、ストレージを拡張します。

基本的な操作は、Hyper-Vマネージャから仮想ハードディスクの拡張を行い、その後FreeBSDのコンソールからrootで以下のコマンドを実行することになります。

Rust環境でPagefindのビルドを実行

これでFreeBSDのストレージ容量が確保できたので、次はRust言語のインストールとPagefindのビルドです。このサイトが大変参考になりました。

Rust環境の構築は次のコマンドをrootのまま実行しました。

これでRut言語だけでなくパッケージマネージャのcargoまでインストールしてくれます。

次に、cargoコマンドでPagefindをインストールするため、以下のコマンドを入力します。するとPagefindのソースコードを取得してビルドしてくれます。

ビルドが正常に終了すれば、「pagefind」コマンドが「/root/.cargo/bin/」の下に保存されています。これでFreeBSDで実行可能なPagefindのバイナリが手に入ったはずです。

これをftpのバイナリモードなどで、さくらのレンタルサーバへ転送します。そしてパスを通して実行してみたところ、エラーを吐くことなく無事に実行できました!

fig

あとは設定やカスタマイズ

あとは公式ドキュメントを読みつつ、設定やカスタマイズを行えばよいはずです。

また、cronを使って定期的にpagefindコマンドを実行するように設定すれば、つねに最新のコンテンツに対して検索できるようになります。

ちなみに、Publickeyの約6000記事のインデックス化にかかった時間は約20秒でした。その高速さにも驚かされました。

下記が、実際にさくらのレンタルサーバでPagefindを動かしてPublickeyのコンテンツをインデックス化し、検索可能にしたものです。「AWS」とか「Kubernetes」とか「GitHub」とか、適当なキーワードを入力してみてください。

document.addEventListener(‘DOMContentLoaded’, () => {
new PagefindUI({ element: “#search”,pageSize : 10,
excerptLength: 50 });
});

まだデフォルトの状態のままなので、結果が長くなって見にくいところなどがありますが、実際にPagefindがさくらのレンタルサーバ上で(そしてMovable Typeのコンテンツでも問題なく)動くこと、そして6000本以上もある記事でもサクサクと検索できることを確認できると思います。

もう少し動作確認と設定を行った後、近いうちにPublickeyでこのPagefindを正式な機能として投入しようと考えています。お楽しみに!

関連記事

Publickeyは昨年(2023年)、関連記事の動的生成を自前のプログラムで実現することに成功しています。Pagefindは、もしかしたら関連記事の精度を高めることに活用できるかもしれない、とも思っています。

  • Publickeyが関連記事の動的生成をPHPとJavaScriptとMovableTypeで実装した方法とは?

COMMENTS


Recommended

TITLE
CATEGORY
DATE
「ChatGPT」の奇妙な応答、「恐ろしい」など誇張した表現は不適切
IT関連
2023-03-10 19:02
請求書発行「請求QUICK」、JIIMA「電子取引ソフト法的要件認証」取得
IT関連
2023-01-18 16:52
ノートとしてもタブレットしてもハイレベル レノボのデタッチャブルPC「ThinkPad X12 Detachable」
PR
2021-06-17 06:01
三菱地所、社員1万人を「DX人材」にする育成プログラムを開始
IT関連
2022-09-30 13:40
NISCで情報漏えいの疑い、JPCERT/CCは立場と見解を説明
IT関連
2023-08-09 07:25
2023年はデータ活用が主役の「クラウド応用期」–グーグル・クラウド平手代表
IT関連
2023-01-06 22:38
マイクロソフト、「Office LTSC」「Office 2021」のリリース予定など明らかに
IT関連
2021-02-19 10:56
ウクライナのソフトウェア開発者は今どうしているのか
IT関連
2022-04-12 06:26
不正取引が「これまでになく」増加する中、Outseerは決済セキュリティツールに注力
セキュリティ
2021-06-13 00:15
テック業界でのダイバーシティの向上には妥協点を見出すアプローチが必要
IT関連
2021-01-29 07:27
大陽日酸、グループ8000人で「kintone」を活用–推計で年間最大400万円を削減
IT関連
2023-11-09 15:31
「トランプ氏のFacebookとInstagramのアカウント一時停止は支持するが、無期限停止は不適切」と監督委員会
アプリ・Web
2021-05-07 09:44
BuzzFeedがバレンタインデーに合わせてAI利用「理想の恋人診断」を公開
ネットサービス
2021-02-14 17:22
Istioのオープンソースアプリネットワーキングプロジェクトから生まれたTetrateが43.4億調達
ソフトウェア
2021-03-12 08:04