PDFリーダーのソース配布 (Haskell gi-gtkによる実装)

まえがき

poppySGif
まだ全然完成していないですが、普段遣いできるレベルにはなりましたのでPDFリーダー(二号機)のソースを公開します(取り急ぎ公開したので、試行錯誤の痕跡が残ったソースになっています。いずれ清書します)。
https://github.com/polymonyrks/poppyS
ご自身でビルドして色々遊んでみてください。(★カメラの説明書に適用した場合の効果が絶大でした。下の方に用意しています。)
HaskellでGUI((gi-gtk)をやりたい人も参考になると思います。
以下、実行環境を整える準備です。

Ubuntu20.04

OSはUbuntu 20.04 LTS (Focal Fossa)です。
まだ環境を持ってない人は、
仮想環境(VirtualBox等)とかご自身が今はつかっていない古いPCに入れたりするのがおすすめです。
その際は軽量なUbuntuであるlubuntuを使うといいと思います(下の手順で導入できること確認済みです。)。
他のLinuxディストリビューションやMac、Windowsは動作確認していませんが、下と同様のことをやれば動くと思います。
ターミナルで以下のコマンドを打ち込んでいけばいいです。
(Ubuntuでのターミナル起動はCtrlとAltを押しながらtです)。

Update Packages list

sudo apt update

Haskell Stack

stack

wget -qO- https://get.haskellstack.org/ | sh

gi-gtk

https://github.com/haskell-gi/haskell-gi

sudo apt install libgirepository1.0-dev libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev

poppler

sudo apt install libpoppler-dev libpoppler-glib-dev

stanford CoreNLP Server

docker

sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key  add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt install docker-ce

この記事を参考にしました。

stanford CoreNLP Parser

sudo docker pull graham3333/corenlp-complete

stanford CoreNLP Parserのdockerの箇所。
Graham MacDonald氏のリンクをご参考です。

poppyS

PDFリーダーはpoppySと命名しました。

git clone

git clone https://github.com/polymonyrks/poppyS.git

stack build

cd poppyS
stack build

これでインストール完了です。

プログラムの実行

./pdfsディレクトリに何かPDFを一つ(今は英文(English)のみ対応)を入れておいてから、
Stanford CoreNLP Serverを立ち上げた状態で、本PDFリーダー(poppyS)を立ち上げる必要があります。
下は一例です。この辺りは動作確認できています。
普通に読んだらなかなか難しいたぐいの文書(法律関係はその筋でないと読む気すら起こらないですね、、)ですが、工夫すると読みやすくなります。
この辺りが革新的だと確信しています。
(PDF例)

  1. 情報科学分野
  2. 法律関連
  3. 医療関連
  4. 装置の説明書 <- new

Stanford CoreNLP Serverの起動

sudo docker run -p 9000:9000 nlpbox/corenlp

初回だけダウンロードが始まります。ちょっと時間がかかりますが、次回以降はこのプロセスはないです。

poppySの起動

以下のコマンドでPDFリーダー(poppyS)が立ち上がります。後述のhow to read PDFを参考に色々遊んでみてください。

stack exec poppyS-exe

これで起動します。pdfsというディレクトリ内のPDFを差し替えると、各人が読みたいPDFで試すことができます。
まだ全然完成していませんが、着色しながら読書する雰囲気はつかめると思います。

how to read PDF

PDFリーダー(poppyS)を立ち上げてから少し待つと一部単語が黄色に色が変わります。
待っても色が変わらないときにはstanford coreNLP server がタイムアウトになっているかもしれません。
その場合はstack exec poppyS-exeから再度実行してみてください。Ctrl c , Ctrl c (コントロールCを二回)でプログラムの実行を止めれば、
再度stack exec コマンドが打てるようになります。
以下、操作方法です。

Keyboard

コマンド 効果
j ページ送り(順方向・2ページ)
k ページ送り(逆方向・2ページ)
Right ページ送り(順方向・1ページ)
Left ページ送り(逆方向・1ページ)
Down 画像サイズ調整(余白切り取り)
x 選択した単語の着色を解除(後述)
dd 着色を全解除(後述)
:w Enter 着色を保存(後述)

コメント

Right, Left, Downは矢印キーのことです。Enterはエンターキーです。
Vimっぽい操作に近づけようとしています。今はこんな感じです。

Mouse

マウス操作は着色に使います。文章中の適当な箇所をクリックしてみてください。色が変わります。何度か連打すると他の色に変わります。
ddですべての着色が消えます。
黄色だけ残りますが、これはそのページでの重要語です。
一部単語のみ着色解除したい場合は、まずxを押してください。これで削除モードになります。
その状態で対象となる単語をクリックしてください。削除モードを終了させるにはもう一度xを押してください。

着色戦略

着色は戦略的に行わないと逆に読みにくくなります。ある程度ノウハウを持っており、このHPでも度々ご紹介していますが、
折を見てここでまとめるつもりです。

License

(以下と同様の内容はソースのLICENSEというファイルに英語で書いてあります。)
BSD3をベースに、個人利用と教育目的の利用は問題なしです。教育目的以外で商用利用したい場合は連絡ください。
他ページで特許周りに言及してます(まだ出願だけです)が、個人利用と教育目的であればBSD3に則って運用すれば権利主張することはないです。
プログラミング教育の題材として使うと面白いことになると思っているからです。
(余談)
Haskellは難しいことをやらなければ初心者向け言語であり、
学べば学ぶほど面白くなってくる言語だと、このソフトウェアの開発を通じて今も実感しています。

Haskellのご紹介

Haskellの開発環境の整備

ご自身でソースを書き換えたい場合は、Haskellの開発環境が必要になります。
世間的には、VSCodeHIEの構成がスタンダードになりつつあります。
自分はSpacemacsHaskellLayer(intero)の構成で開発しています。
(interoのメンテが打ち切られてしまいましたね、、自分はまだ使っていますがオススメできない状況になってしまいました。
Haskell Layer +(HIE)の構成だとポップアップでソースが隠れてしまうので微妙です。ミニバッファに型情報とか出せるといいのですが、自分は作る力量がないです、、)

教科書等

教科書等の書籍関連はこちらでご紹介しています。

これから

まだ全然完成していないです。まめに更新をかけています。
よろしくおねがいします(メインはGitHubでこちらは折を見て内容。最新のソースを使う場合はGitHub側のReadmeを見てください)。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする