Sioyek、教科書と研究論文に特化したPDFビューア
(github.com/ahrm)- Sioyekは、教科書や研究論文を読むことに特化したPDFビューアで、以前に開いたファイルをすばやく見つけたり、論文の構造内を移動したりする機能を提供する
- リンクのないPDFでも図・参考文献項目へジャンプでき、参考文献名をGoogle ScholarやLibgenで検索する操作をサポートする
- 目次検索、クイック概要、マーク、ブックマーク、ハイライト検索など、長い文書を読むときに必要なナビゲーション機能を中心に構成されている
- 複数モニターを使うユーザーはPortalsで本文の位置と図の位置を結び付け、別ウィンドウで最も近いポータルの目的地を自動表示できる
- Windows、macOS、Linux向けの公式インストーラーに加え、Homebrew Caskや各種Linuxディストリビューションのサードパーティーパッケージが提供されており、開発ブランチのビルドにはQt 6.7または6.8が必要になる
プロジェクト概要
- Sioyekは、教科書と研究論文に特化したPDFビューア
- 公式ドキュメントは Sioyek documentation で提供されている
- 機能紹介動画と、より詳しいチュートリアル動画が用意されている
インストール方法
- Windows、macOS、Linux向けの公式インストーラーは Releases page で提供されている
- macOSではHomebrew Caskでインストールできる
brew install --cask sioyek
- Linux向けのサードパーティーパッケージも提供されているが、サードパーティーのパッケージャーによる提供のため、利用は自己責任となる
文書ナビゲーション機能
- Quick Openは、Sioyekで以前に操作したファイルをすばやく検索して開けるようにする
- Table of Contents機能では、目次項目を検索してその位置へ移動できる
- Smart Jumpは、PDFファイルにリンクがなくても、参照されている図や参考文献項目へ移動できる
- 参考文献項目名を中クリック、またはShift+中クリックすると、Google ScholarまたはLibgenで検索できる
- Overviewは、図、参考文献、表などを右クリックしてクイック概要として開けるようにする
- Smart Jumpと同様に、文書がリンクを提供していなくても動作する
長文読書を補助する機能
- Markは、PDF内の名前付き位置を保存し、あとでその名前ですばやく戻れるようにする
- 各マークは
aやmのような1文字の名前を持つ - 小文字のマークは文書ローカルで、大文字のマークはグローバル
- Vimを使ったことのあるユーザーにはなじみのある方式
- 各マークは
- BookmarksはMarkに似ているが、テキスト文字列の名前を使い、すべてグローバル
- Highlightsは、複数種類のハイライトでテキストを示し、すべてのハイライトを検索できるようにする
- Portalsは、現在の段落と離れた場所にある図のような位置を結び付けられる
- 別ウィンドウに最も近いポータルの目的地を表示する
- このウィンドウは通常、2台目のモニターに配置される
- ユーザーが文書内を移動すると、最も近いポータルの目的地に自動更新される
設定とビルド
- Configurationでは、
keys_user.configとprefs_user.configを編集することで、すべてのキーバインドと一部のUI要素をカスタマイズできる- デフォルト設定は
keys.configとprefs.configにある
- デフォルト設定は
- 開発ブランチをビルドする際にQt 5.*のビルドエラーが発生する場合は、Qt 6.7または6.8を使う必要がある
- macOSで
"sioyek is damaged and cannot be opened. It is recommended to eject the image."というメッセージが表示される場合、macOSのquarantineに関連する問題であり、関連する議論が案内されている - Linuxビルドでは、Fedora向けコマンドと一般的なディストリビューション向け手順が提供されている
- Fedora Workstation 36で検証された手順が含まれる
- 一般的なディストリビューション向け手順では、Qt 5、
qmake、libharfbuzzをインストールした後、./build_linux.shを実行するよう案内している
- WindowsビルドはVisual Studio 2019で検証されており、比較的新しいバージョンでも動作する可能性がある
- Qt 5と
qmakeを用意した後、64ビットのVisual Studio Developer Command Promptでbuild_windows.batを実行する
- Qt 5と
- Macビルドでは、XcodeとQt6をインストールした後、
build_mac.shを実行し、ビルドされたsioyek.appを/Applications/に移動してからcodesignを行う手順が案内されている
1件のコメント
Hacker Newsのコメント
機能一覧を最後まで読む前にインストールしたほど気に入ったが、たとえば 2ページ表示 のような改善は必要に見える。
キーボード操作インターフェースは素晴らしいのにメニューコマンドがないのは残念。プログラム内でヘルプを再表示する方法がないのも変だと感じた。最初に開いたときはヘルプが見えるが、ファイルを開くと消えてしまい、結局ウェブサイトのドキュメントページに行かなければならなかった。
それでも研究に最適化された優れた機能が非常に多いので、こうした不便さを受け入れる価値はある。
:で コマンドパレット を開き、コマンドとショートカットを検索できます。読んでいるコンテンツと自分のノートをよりよく統合する方向で取り組んできた。文献の中であるアイデアが発展したり反駁されたりする箇所を集め、良いアイデアも一緒に集めようとしている。
私が開発中のCahier(https://getcahier.com)では、読んだPDFの特定の一節を参照するカードを作成できる。
この数年、この分野で進んでいる発展を見るのは興味深い。
結局、論文はZoteroに、ノートはObsidianにといった具合に、複数のサイロに分かれて閉じ込められる。Cahierは、読書、ノート作成、ノート整理、新しい洞察の生成、そして執筆まで続く 統合ワークフロー として知識管理を捉えている点で、間違いなく正しい方向に見える。
ただ、一部の領域で車輪の再発明にならないかが心配だ。たとえばZoteroのWeb統合コレクターのような機能まで全部統合する計画なのか気になる。それは膨大な作業量だろうし、それがなければ参考文献管理ソリューションとしてZoteroを完全に置き換えるのは難しい。ロードマップと最終的な機能範囲、ユーザーのワークフローが気になる。
ふだんはiPadで論文を読んで注釈を付けているが、ハイライトとノートが同期され、MacBookやWindowsデスクトップで執筆するときにすぐ参照できるのが良い。
ただしノート作成の解決策としては、Cahierのほうがずっと良さそうだ。ときどき、複数のソフトウェアを組み合わせて各自にぴったりのツールを作れたらいいのにと思う。
個人用途で真剣に調べたのは数年前だが、当時の選択肢にはかなり失望した。PDFの読書や整理に関しては、Zoteroとorg-noterが、それぞれまったく異なる形ではあるものの最良クラスだった。
OneNoteも1年間使ってみて、その時点では気に入っていたが、情報の探索・発見・復習を支援しないため、知識基盤の構築 や文献レビューには耐えられなかった。
PDF、HTML、動画など、どんな形式であれ文書情報を読み、結びつけるソフトウェアは、今毎日使っているものよりずっと良くなれると思う。
そうでなければ今日の作業が消えてしまう。いつかCahierの開発をやめたり、私が別のシステムへ移行したりすることになったらどうなるのか気になる。
このアプリはいつも使っている。良いアプリだ。引用へジャンプする機能のような一部の機能はChrome向けGoogle Scholar拡張にもあるが、アプリをVimのように操作できるようにする発想が本当に良い。
Sioyek以前は、KarabinerでmacOS Previewに
j/kなどを設定してVimキーで移動していたが、手間がかかるうえ、Sioyekが提供する多くの機能はなかった。それに、目の疲れを減らすためにPDFの背景色をsolarizedにしているが、このアプリはPDF内のグラフにも ナイトモード を適用できる。不満もいくつかある。PDFを2列パネルで並べて見る拡張があるのだが、実際のPDFファイルそのものを変更してしまう。プラグインのインストールは全体的に難しく、回避策を見つけて報告したものの、アプリの改善に反映されたのかは分からない。設定ファイルはアプリのApplicationsディレクトリに保存されているようで、
~/.configにあったほうがよい。ディレクトリからファイルをすばやく開く機能は、iCloudを含むクラウドドライブでは動作しない。プラグインについては、開発ブランチでネイティブJavaScript拡張をサポートするようにしました。Qtの内部JavaScriptエンジンを使うので外部依存はなく、ずっと扱いやすくなるはずです。
設定ファイルも、開発ブランチでは
~/.configを使えるようになっていると思いますが、100%の確信はありません。sioyekという名前をどうしても覚えられないので、xpdfのエイリアスにしてある。研究論文を読んで議論するために、もう少し 協調的なアプローチ も試してみた。https://www.scholars.io または https://app.scholars.io では、人々が研究に注釈を付け、コメントし、協力できるようになっている。
PDFに目次が含まれていなくても目次機能が動作するのか気になる。PDFリーダーがやってくれたらとずっと思っていた機能だ
論文ではかなりうまく動くほうで、たまにいくつかのセクションを見落としたり、余計な項目が入ったりする程度だった。教科書、特に数式の組版が多い本では、役に立たない項目や欠落が多すぎることがよくあった。
論文や教科書の一部だけ必要な場合は、自動生成目次とブックマークだけでたいてい十分だ。それ以外では、pdf.tocgen(https://github.com/Krasjet/pdf.tocgen)で半手動で正確な目次を作るほうを好む
ファイルに目次がなく、設定が有効ならヒューリスティックな方法で目次を生成する。
max_created_toc_sizeで大きすぎる目次の生成を防げる。https://sioyek-documentation.readthedocs.io/en/latest/config...
リンク先はウェブサイトにしておくのがよいと思う
紙の本では簡単だがコンピューターでは難しい2ページ間を行き来する機能の簡単な回避策として、ソフトウェアが2インスタンスを許すならPDFを2回開いておく。
気を利かせすぎてそれができないなら、PDFをコピーして2つ目の複製を開き、それぞれ別の位置までスクロールしてから
alt-tabで行き来すればよい。携帯電話ではAcrobat ReaderとKOReaderを同時に使える
Sioyekには良い機能もあるが、かなりバグが多かった。バグ修正やテスト作成には多くの労力がかかることがある
少し脇道だが、LLMベースの検索が統合された良いPDFリーダーを知っているか気になる。文書内で「cities in USA」を検索すると、たとえばNew York、Los Angeles、Chicagoのようなすべての出現を見せてくれる感じだとうれしい
このリーダーがZoteroと統合されるとよさそう。プラグイン形式でも可能そうだ
Sioyekは、より高機能なZathuraのようでかなり気に入っていたが、2つの理由で標準のPDFリーダーにはできなかった。
第一に、複数のPDFを同時に開けない。すでにあるPDFが開かれている状態で2つ目のPDFを開こうとすると、2つのインスタンスがどちらもクラッシュする。
第二に、注釈がPDF自体ではなく別文書に保存される。
他のユーザーもその両方についてすでに書いていた。1番の簡単な解決策は見つけられず、2番の部分的な対処法としては拡張機能を使うが、記憶では依然としてコマンドを手動実行して注釈をPDF文書自体へ移す必要があった
理想的には、Zoteroや言及されている拡張機能のように両方の選択肢を提供できるのがよいが、PDFのきれいなコピーを保ったまま他人と共有できるので、注釈は分離されているほうがよい。
しかも現在、注釈をサポートするPDFビューアはそれぞれ独自のやり方で処理しており、プログラムは他のプログラムが作成したハイライトやノートを元文書とうまく区別できない。
ただし、Zoteroやいくつかのリーダーは、汎用的な注釈保存メカニズムとしてWeb Annotation Data Model(https://www.w3.org/TR/annotation-model/)を使い始めている。いつか、Sioyekで作ったハイライトやノートを電子書籍リーダーのKOReaderで見たり編集したりして、その後、同じPDFの別コピーを持つZoteroやObsidian/PMKを使う同僚に注釈ファイルを送れるようになることを期待している。まだごく初期段階だが、進められている。https://hypothes.isも少しそういう動きをする
should_launch_new_instanceを1に設定すると、Sioyekで複数のPDFを同時に開けたが、最初の1つ以降のPDFをターミナルから開く場合に限られた。Sioyek内から開くかdmenuから開くと、すでに開いているPDFが置き換えられる。それでもクラッシュは一度も経験していない。Debianでdwmを使っている。2番は望ましいと思う
new-windowコマンドを使うか、--new-windowコマンドラインオプションを渡せばよい。クラッシュが発生するならGitHub Issueを立ててくれるとありがたい