廃止されている上に、プラットフォームに依存する。それぞれどのような値になるのかは次のようなコードを書いて確認すれば良い。よってバブリングを停止する。スクロールスピードスクロールはスクロールする時間間隔が短くなると速くなる一度にスクロールする量が増えると速くなる量が増えるとスムーズさが書けるため、時間を短くするほうが優先。間隔が1(1ミリ秒)になった場合、加速はスクロール量によって行う。逆に遅くするときはスクロール量が増えているならそちらを先に減らす。スクロール量が1であれば時間間隔を増やす。1ミリ秒刻みでは使いにくかろうと思ったので、5ミリ秒刻み、ただし値が小さいほうが変化量は大きいため、5ミリ秒からは1ミリ秒で調整されるようにしている。(50ミリ秒から+5された場合は10%遅くなるが、10ミリ秒から-5された場合は100%速くなる)割合で増減させてもいいのだが、どちらかといえばキーリピートが効くため一定間隔にしたほうが良いUIであると考えられる。今回は50ミリ秒をデフォルトとしたため、10%の5ミリ秒を増減単位とした。この速度感は画面のピクセル数によって異なり、特にピクセル数が多く高精細なディスプレイの場合は遅く、ディスプレイサイズが大きくピクセル数が少ない場合は速く感じることになる。基本的には「得意なことは得意な方法で」だ。このようにスクロールやキーイベントなどはウェブブラウザとJavaScriptが簡単に書ける。無理せずウェブブラウザとJavaScriptで書こうと考えたわけだ。余計な機能や情報があると使いにくい。最低限のウェブブラウザが欲しいのだが、既にそのようなものはSurfがあるのでこれを使う。レンダリング部分はQtwebengineやGtkWebkitがあるのだから書くのは非常に簡単である。そのためにはテキストをHTMLにする必要がある。エスケープしてしまえば元のテキストを表現できる。このようなことはSedでもできる。先にエスケープしなくてはならない。エスケープがエスケープされることを防ぐためだ。テキスト処理するためのツールはLinux上に豊富にある。このようなことはシェルが得意とする部分だ。文字列を埋め込むだけならば特別なツール(例えばeRuby)を使わなくても、ヒアドキュメントで十分だろう。プログラムはシェルスクリプトで構築する、という方針は簡単に決められる。中間的なファイルや生成に必要なファイルは、もちろん予め用意してリンクさせることもできるが、ディレクトリ設計に関する障害を増やすことになる。今回はローカルディレクトリにインストールする、という前提を与えてはいるが、それでもできれば避けたいところだ。それにバージョンアップの手間も考えれば、一時ファイルを作る方針にした。これも簡単なものなのでヒアドキュメントで処理する。ブラウザを作るにあたっては、私の得意なRubyではなく、割と苦手なPythonにした。Rubyバインディングは存在するし、動作もするが、メンテナンスされておらず(3年間放置されている)、情報も非常に少ない。ruby-qmlよりもpyqtのほうがqml自体もシンプルに書けるので、Pythonを採用した。表示はウェブブラウザ(作ったもの的にはPython+qml+Webengine)で、スクロールはJavaScriptで、変換と橋渡しはシェルスクリプトで。コンポーネントを分けて、それぞれが得意なことをシンプルに行う。問題を簡単にし、ミスを減らすポイントでもある。Unsurfを動かすためにはPyQt5とpython-openglが必要なので、ハードルの高さはどちらが上やら↩だいぶ懐かしい響きだが、今でもしているところはある。↩より正確にいえば、これはコンテキストメニューを表示させたときに発生するイベントで、右クリックと一対一ではない。キーボードのメニューキーを押した場合や、右クリック以外をコンテキストメニューキーにしている場合も同様にも発生するし、右クリックがコンテキストメニューでないのならば発生しない。