あまねけ!ニュースレター #20

February 08, 2022

こんにちは、あまねです。

感想や興味のあるトピックについて、ぜひコメントしてください。

人間と科学

helix editor

去年の6月くらいに話題になっていたhelixというRust製のエディタを本格的に使い始めました。

これまで、私は主にNeovimとVSCodeを使っていましたが(でも、この記事はJoplinのエディタで書いています)、それぞれ良いところと悪いところがあります。Neovimはカスタマイズ性に優れた比較的軽量なエディタですが、快適に使えるようになるまでに設定すべき項目が多くて面倒ですし、せっかく張り切って設定したショートカットの多くは使わずに忘れてしまいがちです。一方、VSCodeはGUIでプラグインを選んで簡単に設定できて便利ですが、ちょっと重たかったり、起動時に前回の状態を覚えていたりして、気軽なメモ帳的に使うには微妙な音楽性の違いがあります。

helixは、おおよそNeovim(Vim)の使い勝手をベースにして、さらにシンプルで軽量なエディタに仕上がっている印象です。VimとVSCodeのハイブリッド?と称して紹介している記事もありますが、VSCodeと似ている点は非常に抽象的か、あるいはほとんどありません。

たとえば、ビルトインのLSP(Language Server Protocol)サポートはVSCodeと同じく非常に強力で、拡張子と対応するLSのコマンドをlanguages.tomlに設定すればすぐに使うことができます(なお、シンタックスハイライトはtree-sitterによるもので、設定方法が異なります)。

また、Vimでお馴染みの :q や :w を使える : によるコマンドモードや、 i a o I A Oなどによる挿入モード、 v による選択モードはもちろん、癖の少ないキーマップで便利な機能を利用できるようデフォルトで調整されています。特定のモードでは利用できる機能を小さなウィンドウで示してくれるのも、なかなかとっつきやすい特徴でしょう。ただし、矩形選択を用いた挿入・ペーストなどのより高度な編集機能はまだ利用できないようです。

helixでbottle.pyを開いてみたところ
helixでbottle.pyを開いてみたところ

もちろん、そのままの姿であらゆるユーザーと目的に適した万能なエディタは存在しません。仮に万能なエディタが存在するなら、それは好きな機能を好きなだけ足すことができる空っぽのエディタでしょう。そのようなエディタを自分好みに設定し、完璧な環境で作業を行うのは素晴らしいことです。

それでも、長大な設定ファイルをメンテナンスするのに辟易し、いつしか半ば壊れかけのエディタでストレスを溜めながらコードを書く日が来ないとは限りません。そんな疲れた日には、helixを使ってみてはいかがでしょうか。

アクセス解析のこと

2月3日からあまねけ!でアクセス解析を始めました。

実際のところ、これは大きな変化です。あまねけ!の分析基本指標は、読者が最後までスクロールした上に「読んだ」ボタンを押すという、比較的ハードルの高い想定に基づいたものしかありませんでした。この指標によれば、あまねけ!が30回/月ほどしか読まれていないのは#17でお話したとおりです。

もちろん、これまでの「読んだ」ボタンベースの分析は、今後も第一指標であり続けます。最後まで記事を読み、かつ作者にそのことを知らせる習慣のある読者は私にとって重要な存在だからです(もちろん、記事をシェアしたりコメントを送ったりする読者も重要です)。そのため、このアクセス解析は私の飽きや満足感によって簡単に取り除かれてしまうでしょう。

ここからは、アクセス解析の詳細についてもう少し紹介します。使用しているのはShynetというツールで、今のところ自宅サーバで動作しています。OSSのアクセス解析ツールとしては、他にMatomoumamiPlausibleOWAなどがあるようです。

Shynet曰く、

Shynet is a portmanteau of “Skynet” and “shy.” The idea is that it gives you loads of useful information (Skynet) while also respecting your visitors’ privacy (shy).

とのことで、解析用のスクリプトにも、

This script only sends the current URL, the referrer URL, and the page load time. That’s it!

と記載されています。このコメントに続くスクリプトの実体も非常に簡単なもので、確かに上記の情報を5秒ごとにShynetに送信するだけの機能しかないことが分かります。

また、長期にわたってブラウザを特定・追跡できるCookieやローカルストレージ、IndexedDBなどのチャネルは使用しておらず、原理的にはアクセスログをフィルタ・集計するより少しリッチな情報が得られる程度のものしかありません(ただし、解析対象ページの Referrer-Policy をバイパスしますし、読み込みにかかった時間も送信します)。

Shynetの解析スクリプトを導入するために、あまねけ!が敷いているCSPにも大きな変更がありました。具体的には、

  • default-src 'none';
  • img-src 'self';
  • media-src 'self';
  • style-src 'self';
  • connect-src 'self'; ...

から、

  • default-src 'none';
  • **script-src t.ama.ne.jp;**
  • img-src 'self' **t.ama.ne.jp**;
  • media-src 'self';
  • style-src 'self';
  • connect-src 'self' **t.ama.ne.jp**; ...

へと、スクリプト(+XHR)と画像について t.ama.ne.jp が追加されています。これまで、あまねけ!では「最強のセキュリティ対策はスクリプトを全く使用しないこと」と考え、CSPでメディアやスタイルのみを使用できるように設定し、カラーテーマの変更さえCSSで実現してきましたが、一定の検討と十分な制限の下で方向転換を行いました。この決定には、いわゆるCoinhive事件の解決が寄与したかもしれません。

なお、Shynet自身はJavaScriptが使用できない場合に1×1のGIF画像(いわゆるピクセル)にフォールバックする機能を持っており、スクリプトを許可せずとも(リクエストヘッダの情報から)解析を行うことができます。しかし、あまねけ!はどこにもリファラを送らないよう設定されている( Referrer-Policy: no-referrer )ので、アクセスしたページが分からず上手く動作しません。 no-referrer-when-downgrade では少し広すぎますし、 same-origin は使えません。ama.ne.jpの中で適切にプロキシすればよさそうですが、いつでも高機能なエッジコンピューティングが使えるとは限りませんし、ユーザーがスクリプトだけをブロックするのも難しくなります。

Shynetはプライバシーを重視したアクセス解析ツールであり、尊重されることなくもはや非推奨となったDNTフラグにも従います。多くのケースでは「トラッキング拒否」や「DNT」を送信する設定にすれば十分だと思いますが、わずかな帯域消費も避けるべきシーンや、アクセスログさえ絶対に残したくない場合には、 t.ama.ne.jp をドメインごとブロックすることができます。もちろん、これらの操作はいつでもユーザーに任されています。

同人誌即売会における仮想通貨支払いのこと

前回、#19で同人誌即売会におけるキャッシュレス決済についてお話しました。今回は、同人誌即売会で暗号資産を用いて決済を行う際に必要なこと、運用上の注意点について検討しようと思います。

まず、大前提として、法定通貨による現金払いをベースに会計システムを構築すべきです。読者は常に決済のために暗号資産を保有しているわけではないため、現金払いの選択肢を残しておくこと、そしてこれまで通りキリの良い金額に設定しておくことが重要です。例えば、同人誌を500円/冊と決めておくと、Monero換算では0.0232 XMR程度(この記事を書いている時点で21623円/XMR)になります。

さて、このような支払い額が変動する方式を採用する場合は、支払うタイミングを明確に定めなければなりません。CoinPaymentsのような暗号資産決済代行サービスでは、注文時点のレートを用いて支払額を算出し、制限時間内に決済とn承認を終えるよう求められます。同人誌即売会なら、1~2時間程度の制限時間を設けるのがちょうどよさそうです。

また、暗号資産による支払いは瞬時に完了しないことにも注意すべきです。比較的高速に送金できるMoneroなどでさえ、現金の即時性には到底勝てません。そのため、注文後から支払いが完了するまではブースを離れることを許す設計にすべきでしょう。後から支払ったことを示すには、支払いごとにアドレスを分割して(MoneroならSubaddressIntegrated Addressを使用できます)レシートに記載したり、暗号資産ごとに実装された手段で支払いを証明することができます。

なお、ブースを離れて支払った後に商品を受け渡さずにサークルが撤収してしまった場合、支払った資金を持ち逃げされる懸念はありますが、たいていの同人誌即売会はサークルの個人情報を収集していますから、全く手がかりを得られず泣き寝入りすることはないと考えています。また、支払ってから受け取るまでの間に商品が完売してしまった場合は、取引全体を現金で払い戻すことで簡易的に対応できるでしょう(取り置きして在庫不足が起こらないようにもできます)。

このように、実際に暗号資産による支払いを導入するにはいくつかの注意点がありますが、経済的検閲に熱を上げる決済業者から資金移動の自由を取り戻せる大きな可能性があります。第三十四回文学フリマ東京では、暗号資産による支払いを含めたいくつかの企画を行う予定です。

アマネイメージズ

今回はありません。


© 2022 Amane Katagiri, Built with Gatsby