「最近」x「使った」x「あれ」

社長:最近使ったあれに対する高速アクセスとか検索手段を一元化したいですね。

開発:「あれ」というのは。

社長:まあ、ファイルやウェブページは当然ですけど、ウィンドウとかタブとか、ページの中の地点とか。まあオブジェクトというかリソースというか。あらゆるもの。神羅万象ですね。

開発:となると、揮発性のものも含めて全てのオブジェクトや現象にユニークIDをふる、サブジェクト側の関与方法にタイムスタンプを付けて履歴として保存する。そういう感じですかね。

社長:そう、履歴、ログ、ジャーナル、いわゆる5W1Hの記録。基本はタイムスタンプとメソッドと、サブジェクトとオブジェクトですね。

社長:あと、オブジェクト側が勝手に変わったというのもありますね。まあ因果をたどればどこかのサブジェクト側の関与に行き当たるでしょうけど。そのマシンを購入した、とか。

開発:因果のネットワーク化はその場では難しいでしょう。まずは事象を記録する。原理的には、サブジェクト側は、キーボード入力列と、マウスのポインタ位置、ディスプレイの録画をずっととっておけばよさそうです。足すとしたら血圧・体温・気温とか。気分とか(笑)

基盤:アップルウォッチとか?ディスプレイの垂れ流し録画はHDMIに市販のレコーダを挟むのも手かも。あるいはドラレコ。

社長:まあ、自分をカメラで撮影してデスクトップの隅に表示しとくとかかな。それで気分が悪くなるかも(笑)

社長:オブジェクト側は、まあOSの動作、特にファイルやウィンドウの操作プリミティブの履歴をとっておけば、かなりカバーできそうな気がする。アプリケーション内の状態の変化は個別アプリでやらないといけないけど。まあこれは既に伝統的に、個別にやられている。

開発:実現性を考えると、課題はデータ量と処理用ですね。データ量的には、パソコン内の神羅万象を記録するとしても1Gbpsくらいですかね。不可能ではない数字。記録方法としては、流し撮りでしょうね。ドライブレコーダ的な。

基盤:実際、ディスプレイはドラレコでよさそうな気もしますね。ただちょっと、コンパクト化するために割高になってるかも?

社長:とりあえず撮っといて、暇な時間にフィルターしたり構造化するんですかね。暇がなかったらざっくりとしか拾えず消えちゃいました残念みたいな。

基盤:ユーザ側で許容できるリソースとしては、ディスク10GB、バンド幅で100Mbpsくらいですかね。CPUも1GHzは欲しいけど、最近みんなマルチコアだからたぶん無問題。ヒストリ処理専用にラズパイとか。

開発:ありものを使うとしたら、そもそもあるスクリーン録画機能を動かしっぱなしにする。ファイル側をそういう特殊なファイルにしてやる、って感じですかね。Unixの穴あきファイルで、前のほうとか中間をトランケートというか解放する機能は実装されたんでしょうかね?50年前からBUGSに記載されたままかな。

社長:それがあればユーザレベルで実装できますね。見た目ヘキサバイトだけど実態はギガバイトみたいな感じですね。64ビットOSだからもうやりたい放題。きっとヘキサバイトの仮想メモリとか単一ファイルなんてのもできるよね。そしたらソフトの作り方もがらりと変わる。てこれ、前世紀から考えられてたことだけど。VMの仮想ディスクのファイルとかどう出来てるんだろう?

基盤:それを知らない cp とか tar とかしたら大変なことになりますけどね。rsync ならまだまし。まあ実装上は、あらかじめフィルターするというのが現実的だとは思いますが。おそらく5〜6桁データも処理も小さくなりますね。

社長:それはサブジェクトたるユーザ側にも大きく依存するしね。なんにしても、個別場当たり的な解決法じゃなくて、いったん大きな風呂敷に神羅万象をくるんで一元的に考えて、そこから個別最適化を考えるのが良いと思うんですよね。個別最適なソリューションを色々考えてきましたが、それはそれで必要ですが、ちょっと飽きたし、やっぱり一網打尽にしたい気分なんです。根っこに手を突っ込みたい。

開発:なんにしろ、後で検索とか分析とかする時に、どんな分解能というか、グラニュラリティが求められているかで、戦略も変わると思います。ボトムアップに、ユーザが求めているレベルの情報を再構成するのは、コストが高いというか、現実的には無理という感じもします。まあ、誰が求めている情報を構築するかなんですが、うちはまずエンドユーザなのかなと思いますし。

基盤:現状利用可能なインタフェースを使うことも必須です。やはりフロントエンド側の入り口は当面、WebDavな気がします。ローレベルで使用するには自由度が非常に低い。実装上、性能面では穴あきファイルですかね。rsync がそれに対応してるのかも気になります。

社長:というか、ユーザとしてデータ読んだだけでは、nil なのかゼロなのか、区別はつかないんだよね…

開発:まあそれは、物理メモリについても言えますね。あっちはまあ、制御できますけど。存在しない実体へのアクセスにどう答えるかという。

社長:論理的にはトランスペアレントでいいっちゃあいいんだけど、out of band で知りたい人には知れるように出来てないと。マスクできる割り込み的な。

開発:せっかく履歴をとるので、undo というかリカバリにも使えると良いですが。

社長:いや私はこないだまで、100マイクロ秒前の世界に10マイクロ秒以内に戻るというようなシステムをやってましてね…

営業:よくわかりませんが、製品化がどんどん遠のいている感じはします。

--
2020-0528 SatoxITS

JavaScriptでXeyes

社長:これ、絶対誰か作ってるよね。いや、みんなが作ってたような記憶もある。

基盤:xeyes javascript … たくさんヒットしますね。まず日本語ウィキペディアからはこれ[1][JavaScript Kit]が参照されてます。検索の上位に来るのがこれ[2][JsFiddle.net]

社長:いや、そいつら目つきが Xeyes と違う。

基盤:白目剥いて固まってるこれとか[3][jQuery-xeyes]。あれ、これも固まってますね[4][Ajaxschmiede]。

社長:何かの互換性の問題でしょうかね?

基盤:おっと、これですね、見たかったのは。[5][Kero2]

社長:完璧です。感動しました。

開発:昔のはみなさん、gifイメージを動かす形で作られてますね。でもイマドキだとHTML5のCanvasというのを使うって直書きするんじゃ無いでしょうかね?

基盤:xeyes canvas で検索… ああ、これ[6][JsFiddle.net] とか、これ[7][annimationPolyfill.js] がそうですね。今の技術基準だと、この [7]が正解じゃないでしょうか。2014年の作品。オリジナルのウィンドウだとこう[eyes.html]。埋め込むとこんな感じ↓

https://gist.github.com/nielsdoorn/7959409

eyes.js
eyes.css
eyes.html
animationPolyfill.js

社長:うーむ、昔のよりコードがコンパクトでかつなめらかキビキビしてますね。

開発:マウスの動きを検出したらキャンバス全消去して書き直しか… ていうか JavaScript って、eye というクラスを定義して複数インスタンシエートとか出来ないんでしたっけ… いずれにしても onmousemove であの reCAPTCHA は何してるかに興味アリですね… それはそうと、このコード中のコメント、オランダ語のようですが‥

--
2020-0527 SatoxITS

私はロボットです

社長:昔 robots.txt を無視するロボットに業を煮やして、私はロボットです(ImRobot)、ロボットではありません(ImNotRobot)というクッキーを作りましてね。ヘビーにアクセスされると困るリソースから排除を試みたりしてました。

開発:その後ロボット対策に、ぶにゃぶにゃの文字とか画像とかを人間に認識させる対策が流行りましたが、あれってちょっと人間にはつらい仕打ちでした。ああいう画像認識はロボットのほうがよっぽど得意なんじゃかと思うんですが。

社長:だから、Google reCAPTCHA みたいのが現れた時は、救世主かと思いましたよ。あれを Google からまったく切り離した中立的なサービスなり製品として提供してくれると良いのですが。reCAPTCHA バッジの中のプライバシーとか利用規約だのをクリックして読むと、一体なんの事かと恐ろしい感じがします。

開発:Google reCAPTCHA を Google のロボットが突破できるのか、興味ありますね。盾鉾試験はしてるんでしょう。

社長:昔、自前で全文検索エンジンを作ってたんですが、主な検索対象はローカルなファイルでした。そこそこ気に入ってたし、今でも DeleGateミュージアムで動いています。ですが、Google から Google Desktopサーチが出て、ああもういらないかなって、開発をやめてしまいました。それが Google Desktop が 2011年に撤収してしまって。まあ reCAPTCHA はやめないだろうけど。

開発:Mac では Spotlight のごり押しがひどくてみんなから嫌われてましたが、最近使ってみたら面白いなとは思いました。

社長:でも結局私が欲しいのは、grep なんですよね。正規表現で検索できなくちゃ。そりゃあ Google みたいな巨大なデータには適用できないだろうけど、自分のローカルにある検索したいファイルの中のテキスト部分なんて、高々100MB〜1GB程度なわけです。全然 grep で行けます。1秒で grep できちゃうし、vi でだって編集できる。私は、find もかったるいので、tar でまとめて vi で検索なんてことをよくやります。

開発:コンピュータのプログラムに関しては、Eclipse とかの IDE の検索機能がとても良いですね。やはり形式が規定されたデータの間の参照関係は役に立ちます。いっそ文書も全部、Eclipseで検索してやろうかと思いましたが、さすがにうまく行きませんでした。

社長:でも結局、IDEで使ってたのも、主には grep 的なテキスト検索でしたね(笑)。正規表現でマッチして置き換える。これ、半世紀近く前 sed の時代に完成していて、今は退化したか社会の片隅化してしまった技術の一つだと思います。

開発:コンピュータのパーソナル化で「直感的に操作できること」に重心が移りすぎたですかね。正規表現だなんて抽象的なものは、火炙りの刑というか。

社長:たとえば干物みたいな、流通技術が乏しかった時代の対処技術は、実はものを美味しくする技術でもあった、みたいなとこもありますよね。

開発:最近少しだけ仕事した FPGA の統合開発環境もとても印象的でした。ハードウェア部品とは言え、結局は文字列か数値で表現されたデータのマッチングではあるのですが、図的な表示との双方向の検索は、ちょっと感動ものというか。

開発:まったく昔に戻ることなんてあり得ないけど、昔の本質的な技術とのベストミックスを考えると良さそうにも思います。

開発:タイトルと全然違う話になりました。

社長:まあ検索ということで、なんとか bot 繋がり。

--
2020-0527 SatoxITS

ブラウザだけで快適16進計算

これまで16進計算が必要な時に、bcコマンドやら printf「コマンド」やらを使ってきたのですが、どうも不便だと思っていました。それで今日ふと気づいたのが、ウェブブラウザについているDevToolsというデベロッパ向けの機能。そのコンソールで、JavaScript として計算を行うことができます。こんな感じ↓

DevToolsで快適16進計算

なんて手軽で便利なんでしょう。
数値を適当に _ で区切って書けるのも見易くて助かります。

こんなにらくちんなものに思いが至らなかったなんて、人生の貴重な時間をだいぶ無駄遣いした気がします。いったい自分はこれまで何回… たぶん人生で1万回くらいはやったと思われます。一回あたりの無駄時間を10秒としても、28時間ですね。

ただ、整数値が64ビット未満でへたれているのが残念です。できれば128ビットまでは行って欲しいものですが。

それと、結果を10進ではなく16進で見たい時はどうするんでしょう?とりあえずは toString(base) で、まあそれほど不便でもありません。ただ、かなりお得感が薄れます。

一番望ましいのは、結果を16進で表示するモードがあること。そうでなければ、toString(16) を tox() みたいに短く書けること。

面白そうなので調べてみます。

まず DevToolsのコンソールに関する解説はここが原点と思われます。https://developers.google.com/web/tools/chrome-devtools/console/javascript

これによると、DevToolsを呼び出すショートカットは、MacではCommand+Alt+J。いちいちメニューバーまで行かなくて良いので便利です。Operaの場合これをカスタマイズするのは以下の設定用ページ↓

コンソールのURLがあるとブックマークできて便利かなと思いますが、なさそうな感じ。

それで、コンソールのインタプリタはどう出来ているかというと。きわめて抽象的な概説が (^-^;

Overview
The Console is a REPL, which stands for Read, Evaluate, Print, and Loop. It reads the JavaScript that you type into it, evaluates your code, prints out the result of your expression, and then loops back to the first step.

うーん、その「prints out the result」のところをイジりたいのですが… いずれまた。

そういえば、ときどきやる man ascii のインスタント版も欲しいところです。

--
2020-0527 SatoxITS

私はロボットではありませんので

開発:それで、あれ(Simple Google reCAPTCHA = sgr)がどういう仕組みになっているか覗いてみたのですが、サーバ側の生成するソースをみるとHTML的には単なる sgr-recaptcha というクラス名の div です。これだけ。

<div class="sgr-recaptcha"></div>

開発:その sgr-recaptcha の定義はというと単にこれだけです。

.sgr-recaptcha {
    transform: scale(0.895);
    transform-origin: 0 0;
    clear: both;
    padding: 10px 0 5px 0;
}

開発:ですが、サーバ側(ブラウザ側)で reCAPTCHA のエレメントを覗くと、こんな感じです。div の中身に iframe の世界が詰められています。

開発:この中に、以下のように取得した「サイトキー」 k=6Ldm …が含まれてるのが見えます。

開発:それでこのキーは、まあプラグインの設定のインターフェイスからも明らかですが、1プラグインに1つしか設定できません。となると、例えばページごとにキーを変えたいというような使い方ができないことになります。まあ、プラグインを複製すりゃいいっちゃあいいんですけど。サイト全域に仕掛けて、ロボット以外が来たら「ヒトが来た!」ってメールをくれるようにするとかもしたいですね。

開発:Google reCAPTCHA にはアクセス解析機能がついているので、これは是非活用したいわけです。こんな感じなんですが。

開発:もごもご妄想。

そういう意味ではこれもまた、ロボット対策に名を借りたGoogle様のユーザ追跡機能の、お先棒担がされてるんでしょうかね。まあ、ただほど高いものは無いってやつかもですね。

開発:ですので、もし reCAPTCHA 用のWordPressプラグインを自作するとしたら、複数のキーを登録できること、そのうちのどのキーを使うかを埋め込み時に選択できること、が要件かなと思います。

開発:あと、この reCAPTCHA による一種の非ロボット認証は、フォームやらログインやら、結局は HTTP のアクションに行って使われるんだと思うんですが、そうすると、この認証を通ったかどうかを行った先で確認しないといけないので、「対応・非対応」ということがおきていると思います。ですがたとえば、認証されてなかったらそもそもその対象を表示しない(HTTPレスポンスの中に生成しない)ということで一元的な reCAPTCHA 適用ができると思います。それこそ、detailes の中身を空にするとか。CSSでブロックできるかも。まあ、表示しないと人間にも存在が認識できないとか、逆に表示しないだけで存在はしているので陰湿なロボットはダイレクトにアクセスしてくるだろうとか、不完全です。ならば、URLのパターンとかとセットにして、サーバの根っこに反映させれば良いのではないかと思います。たとえば認証されてなかったらPOSTメソッドを禁止するURLとか。

開発:reCAPTCHA のキーは、それを管理をするサーバ、HTTPサーバで良いと思いますが、それで管理すると良いかもしれません。これならば、コンテツを管理するサーバとは独立に、鍵を共有管理できます。アクセス対象のURLと、対応するキーのURLを機械的に変換可能にしておけば、いちいち対応づけをする必要もなくなります。

社長:ふーん。それ、ぜんぶまとめて(リバース)プロキシでやればいいんじゃね?

開発:まあ、我が社的にはそういう方向になるでしょうね(笑)

社長:もごもご妄想。

なんにしてもこの、一見おとなしげに見える reCAPTCHA のアイコン、上空を通過するマウスポインタの動きを偵察し続けてる JavaScript なんだよね。いっそ、Xeyes みたいな目をつけたらウケるのでは。

開発:くわばらくわばら。

--
2020-0527 SatoxITS

私はロボットではありませんから

社長:Googleのあれ、可愛いので導入したいですね。

基盤:先人の手引きを頼みましょう… WordPressのプラグインでやる方法を解説してくれている記事がありますね。2019年7月のだから結構新鮮です。

社長:それそれ、その reCAPTCHA てやつ。

基盤:じゃあ先人の手引きどおりにやってみます。まずは Google reCAPTCHA の作成ページを開いて、必要項目を2、3選択して「送信」。「登録されました」。「サイトキー」と「シークレットキー」というのができました。

社長:とりあえずそのキー、PDFにして保存しときますか。で、それを WordPress に入れろと。

基盤:reCaptcha でプラグインを検索すると色々ありますね。この先人のお勧めは Invisible reCaptcha for WordPress。確かに有効インストール数 100,000+、人気上位ですね。ただ、ちょっと更新が2ヶ月止まってるとか。まあ、とりあえずインストールして、さっきのキーを入力して保存と。

社長:それでそれを表示するには?

基盤:どのフォームに適用するか選択するだけですね。とりあえず全部プチプチっと。保存。

社長:で、フォームに行ってみると… おー、出た出た。

基盤:確かに、5分でできるという看板に偽り無しですね。

社長:正確には、3分くらいかな。

基盤:でも、このバッジ、Safariではちゃんと表示されませんね((これはiframeをclient-side CSSで消していたためだった))。Edgeではぷるぷるするし。少なくともインライン表示にしといたほうが良いみたいです。

社長:うーん、v2 にしといたほうが安全かもね。

基盤:では、Google で v2 のキーを作ります。で貼り付けるとこんな感じ。

社長:ああ、これのほうが安心感もあるね。投稿フォーム用なら、手動かつ visible のほうがかえって良い気がする。

基盤:それで WordPress のプラグインのほうも、さっきのはやめて、この Simple Google reCAPTCHA というのにしました。このシンプルさ加減、必要にして十分。最高です。

社長:すばらしい。なんかイマイチ評価が低いみたいだけど、世の中ゴテゴテしたのが好きな人が多いからかな。わたし的にはこの「いざとなったらFTPで(Keep on mind, that in case of emergency, you can disable this plugin via FTP access, just rename the plugin folder.)」という但し書きがいいと思います。

社長:気にいったので、ためしにちょっとだけ寄付してみましょう。

経理:経費ではちょっと難しいかと…

社長:ではポケットマネーで。ポチッと。

--
2020-0527 SatoxITS

WordPressで「詳しくは」

社長:わたしはこの、HTML5 の details というタグがとことん好きになりました。ですが、WordPress のブロックにないので、いちいち手打ちするのが面倒で、なんとかなりませんかね。

開発:なんで本家でサポートしてないんでしょうか?プラグインとか作ればいいんですかね。

基盤:誰かが作ってるんじゃ無いですかね。んー、details summary WordPress … ああ、ありますね。これとか。

開発:そうですか…

基盤:さっそくインストールしてみましょう。きっと大人気プラグインでしょうね!

基盤:あら… 11ヶ月前に作られたまんまですね。総インストール数30…

社長:まあいいんじゃないですか。非常に基本的なブロックだから、進化したり、インフラと互換性が無くなったりするものじゃないんじゃないかな。どれどれ。

Details Summary Blockプラグインで作ったブロック

これですか。ここにディテイルを書くと。シンプルでいいですね。うーん、でもサマリーの中で改行しちゃうと、変なことになるね。まあ消せば戻ると。あと、カスタムHTMLにしちゃってアウト。まあそういうもんなのかな?ブロックを識別するHTMLの属性ってなんなんだろう?HTML以外に何かメタな構造情報を管理しているのだろうか?


社長:なるほど。きっと他に、いろいろ凝った details プラグインがあるんでしょうね。特に summary の部分の表示ですけど。まあわたし的んはとりあえずこれでOKです。ところで、このブロックの構造って、そもそも WordPress はどうやって管理・認識しているんだろう。

開発:最終的にクライアント向けに吐いているHTMLは単なる details タグですね。そこからは、これが Details Summary Blockプラグインで作られたとか、引き続きそのように編集されるべき要素であるとうことは伺いしれません。示唆的なコメントも付いて無いから、他にメタ情報が記憶されているんでしょうかね。ブロックを別の型のブロックに変換するとか、ビジュアルにドラッグして入れ子を管理してやるとか、できると良いですね。

社長:変換という機能はあるよね。変換対象が狭い気がするけど。まあわたしら、まず WordPress の基本からして知らないからねー。それでも使えるのが素晴らしいというか。

--
2020-0526 SatoxITS

Raspberry Pi で Go!?

社長:ふと思ったんだけど、ラズパイでよくね?

一同:あっ…

開発:っと驚くタメ五郎。確かに。Linux 動いてギガビットEther付きで。1.5GHz 4コア。メモリ2GBで積んで5千円。

基盤:おうちの玄関ルータとして使うのも良さそうですね。あの不快なおまけルータを撃墜したい。会社のデモサーバもこれで良いかも。動かしてはみたものの、Hyper/V で Ubuntu というのも、なんか違う気はしてるんで。このラズパイ4、スペック的にはあのVMと近いかもですね。うちは特に Ubuntu が必要でもなんでもないし。

社長:Goも動くみたいだし。ARMなら命令セットも好きだし。

開発:そういえば AWS は ARM でやるっていうのも面白いかも。クラウドのオンプレミス版がラズパイって、爽快ですね。うちみたいな使い方だと、とてもバランスしている気はします。

社長:しかもなんと、Xilinx の FPGA を積んだ拡張ボードNovaPi なんて企画もあったような。3万円。2019年10月出荷予定ってあるけど、今も売られてないみたいだから、実現しなかったのかな。

基盤:時期的にはフッ化水素禁輸で潰れたとか(笑)

開発:組み込み系だから、FPGAと組むというのは今後も十分あり得ますね。なんならAESアクセラレータも使える。基本、一機能に特化できるから、動作性能も安定する。

社長:GPIOが剣山だからクリスマスにはLチカし放題だよね。

経理:単体LEDは結構高いですけどね。

社長:うん、これはもうどう見ても5千円の投資に十分値する。

基盤:RSとかチップワンとかモノタロウでは売ってないですね。まったく使えんな。あ、ラズパイ UD-RP4B2というのが、ヨドバシで6千円で売ってます。2020/05/02発売。ただし在庫無し。

考えてみたら RS で売ってないのが変。RS online では、4GBモデルが6,888円で売られておりました。また、ラズパイの家元では日本の代理店として KSY が紹介されていて、こちらでは2GBモデルは4,620円(+送料550円)です。(追記-2020-0531)

社長:決断しました。ぽちっと。さていつ届くかな♪

基盤:在庫無しだから、納期はどうですかねぇ。

社長:届くまで楽しい気分で仕事できますから。うーん、ワンマン社、チョー最高 (^-^)

--
2020-0526 SatoxITS

電子証明書来たる

社長:ようやく電子証明書が来ました。

経理:申込から1ヶ月近くかかりましたね。2年で1万3千2百円也。

社長:数日で発行って話だったんですけどね。まあ、連休もあり、コロナもありではありましたから、気長に待ってたんですが。そろそろ本気で使いたいと思って、どうなってんのか問い合わせてみたら、申請時に固定電話番号を記入してなかったので認証が遅れていたとか。有り体に言えば、放置プレイってやつですか。

基盤:固定電話!

開発:ハイテクの信頼性はローテクで支えられてますね。まあ今時のハイテクというようなもんでもないですが。

社長:そうなんですよ。実際、某銀行のクレジットは固定電話確認なんです。で、基盤係が先月のギガビット回線導入の時に固定電話の電源を抜いちゃってて繋がらず、審査が遅れましたとさ。

基盤:…

社長:まあそれで結局、こっちも証明書の認証担当の人と携帯電話でやりとりして。そっからは1営業日未満でメールが届きました。それで早速ダウンロード、インストールしたので、署名してみます。こんな感じですね。

社長:メールに署名するとこんな感じ。証明書の有効期間が今日からなのがういういしいですね。

経理:最初にとった証明書がキャンペーン価格とは言え年3,300円、こちらのは2年で12,300円って妥当ですか?2つ必要なのでしょうか?

社長:んー、まあこっちの証明書は老舗の発行なんで、ルートも中間も証明書がみんなにプレインストールされてますからねー。不特定多数に確認してもらうことを考えると、これは必須です。代表取締役の署名だし、安めの実印程度。一月で言えば500円。妥当じゃ無いかな。うちはバリバリ使うわけだし。前の証明書はいろいろ練習にもなったし、もう元が取れた気がするし、何か特定用途に使い分けてもいいかなと。

開発:まあ、1日に何万回も、生成したデータに署名するかも知れないですしね。ちょっとCPU的にこの子では厳しくなるでしょうけど。てか、公式のタイムスタンパーが安く使えるかが心配。

社長:とりあえずは、「PDFとして保存」する時に署名したいですね。もう手動でやるの飽きたし。

開発:とりあえず Opera にアドオンとかですかね。わくわく。

社長:まあ、フロントエンドでやるかバックエンドでやるか、中間でやるか。どれもやってみる意味があると思います。私の今のやり方を自動化するには、WordPressのプラグインは必要な気がする。WebDavでって話は後回しかも。

基盤:Operaのアドオンを検索すると、ウェブページに署名するアドオンもありますね。これとか、5月12日に更新されているから、まだ新鮮です。

営業:全く売れてないみたいですが。

社長:ところで、役所への電子申請にも使えるんだよね?

経理:たぶん。ちゃちゃっと設定しておきます。

***

社長:で、どうなりましたか?

経理:凶と出ました。

全員:ごくり…

経理:さしあたっては特許庁と法務局への申請かなと思いまして。まず特許庁の電子申請用のアプリをインストールしようとしたのですが。Mac 版をインストールしようとしたら、こう断られました。

基盤:まあ、Apple の美的センスから見ればほぼ malicious なソフトかもね(笑)

経理:で、Windows版をインストールしたら、環境設定が化けて出ました。

開発:おお、字化けって今の時代にもまだ起こるんですね。日本の伝統芸能みたいな。

経理:で、とりあえずさっきの証明書をインストールしようとしたら拒否されました。

社長:ありゃりゃ。天下のシマンテックを発行元として認めないとは出願ソフトも高飛車だねえ。

経理:それで、以前取った証明書も試したら、こちらは、そもそも発行元が未設定との理由で断られます。

開発:発行元が未設定の証明書って意味わかんねー。

経理:それでようやく、特許庁の電子出願ソフトサポートサイトで確認したんですが、「手続者が法人の場合は、法務省 電子認証登記所の発行する電子証明書のみ利用可能です。」とありました。つまり、これまで作った証明書は使えません。

社長:私の常識は非常識だったのか。しょんぼり…

経理:そこから法務省の電子認証制度のページへと導かれるのですが、そこに死刑宣告が書かれていました。

http://www.moj.go.jp/MINJI/minji06_00028.html#044
「商業登記電子認証ソフト」の動作環境について
商業登記電子認証ソフトをご利用になる際の動作環境は,以下のとおりです(令和2年3月現在)。

OSWindows 8.1 (32bit, 64bit 日本語版)
Windows 10(32bit, 64bit 日本語版)
ブラウザWindows Internet Explorer 11
その他Adobe Acrobat Reader DC

基盤:これ、平成じゃなくて令和ですよね?

開発:終了ですね。10年後また来なさい、ってお達しでしょうか。

社長:よって被告を龍宮城へ島流しとする。

経理:ソフトの出来とかサイトの作りとか文書とか、気持ちが15年くらいタイムスリップしました。

社長:電子申請が難しいという噂は聞いてたけど、こういう意味だったんですね…

経理:そもそも証明書の重みというか有意性が違うとは言え、登記官様発行のは月1,000円相当ですから、うちみたいな零細が年に数回申請するためだけに買うというのも割に合いません。しかも、これを使って、ウェブでフォームチキチキするだけで申請できるかということはなく、コンテンツは従前の形式で作らないといけない。

開発:窓口持参、郵送、電子申請、トランスポート層が変わるだけみたいな感じですかね。

基盤:つまりアップローダ・システムみたいな。

社長:コンテンツは等価なわけだしね。ある意味、簡単には動かせないところに意味があり、信用が生まれる。お役所のレゾンデートルというか、社会のスタビライザー的な。われわれが一般的に考える電子化とは違うんだな。これは会社設立の時の作業でもホントそう思った。

経理:そういうことでうちとしては、証明書を使った電子申請は、向こう10年くらいは見送りたいと思うのですが。

全員:異議なし。

--
2020-0525 SatoxITS

リカーシブQR

基盤:昨日 Remote Desktop 越しに Hyper/V やってる時に、つい自分の macOS のデスクトップ自身にVNCしてしまいまして。ゲストOSのデスクトップを見ようとして、間違って自分のIPアドレスを入れてしまったと言う。結局強制リブートするしか脱出手段が見つかりませんでした。

社長:それそれ。昔よくやりましたね。万華鏡みたいというか、2001年みたい(?)というか。マウスカーソルがコマ落としにブラックホールに落ちてく感が素晴らしいですね。まあでもOperaはじめ、macOSはリカバリ能力高いから強制的に落とすのも安心です。で、私はあれを見て思ったんですが、リカーシブなQRコードを作ったらどうだろうって。

基盤:作ってどうするんですか。

社長:だって面白いじゃん。

基盤:社長が遊んでる間、私は仕事ができなんですが。フォアグラウンドでは自分割多重なんで。

開発:まあその点、私はバックグラウンドで動いてるから大丈夫です。

社長:いや、面白い事を放っておくのは精神衛生に悪く、それは仕事の生産性を著しく毀損するので。ただ go で QR の png を生成して、その png を data URI にして、それをまた QR にする。それだけです。こんな感じ。

QRリーダが data URI に対処してくれなかったら、こっちで一段剥がすとか。

基盤:モノリス感ありますね。

開発:遠い将来、これを読み取ってくれるQRリーダが現れると良いですね。

社長:というか、Google の画像検索結果のサムネールが data URI でできてるのはびっくりしました。このサイトで使ってる背景画像とか。”its more ブログ" なんて画像をぐぐるとこんな魚拓が出てきます。

上の画像のdata URI(長さ7.5KB) data:image/jpeg;base64,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

社長:これだけの画像がBASE64、7KBで表せるってちょっと意外です。ウェブページの埋め込みのカウンターに使われてたりとか。

開発:実用性の匂いがぷんぷんしますね。

社長:やはり本質的に面白いものはやがては面白く使われるということかなって思います。

--
2020-0524 SatoxITS