インテリジェントスマートメータ

社長:さっき蕎麦湯を飲みながら考えたのですが。

基盤:え、あのそば屋で蕎麦を食べたのですか?

開発:そば湯だけ単品で出してたら面白いですね。

社長:あの店は蕎麦湯は美味しいんですよ。

開発:店によってあんまり違いが出なそうですね。

社長:それで帰り際に見たら、うちの郵便受けの新調工事中でした。

経理:そういえば大家さんからお知らせのビラが入ってましたね。

基盤:そういえば大家さんの差し入れの新玉ねぎ、かなりやばい状態になってますが。

社長:それで工事の人に聞いたら、今度のはA4が入るんですって。いや、B4って言ってたようにも聞こえた。

基盤:おー、それはめっちゃ便利。

開発:角型2号(240 x 332)は入るんですよね?

基盤:A4ていうからには、角型国際A4(229 x 324)はカバーしてそうですね。

開発:間口だけでなく奥行きも重要です。深さは重視しません。

社長:ぱっと見、かなり大きく見えました。工事が終わった頃に見に行きましょう。

開発:フィジカルな生活用品はゆっくりでも必ず良い方向に進歩しますね。

経理:これでアマゾンもドアの前にぽいっと置き捨てという野蛮な配達をやめてくれそうです。

開発:いや、宅配ボックスは前からあるんですけど。まあ、お互い手間ではあります。大きめの郵便受けで Win Win ですね。

基盤:なんでこれまでの郵便受けって、あんなにちっちゃかったんですかね。

開発:郵便の定形内のしか想定してなかったのでは。100年の歴史でしょう。

基盤:でもそれって、20年も前から前提が変わってますよね。

社長:一日に何度も再配達に来たりするところから、受け取り確認も取らずにドアの前にむき出しでぽいっ、っていう劇的な世界の転換が、今まさに目の前で起きているわけです。どっちにしても不自然。いずれリーズナブルなところに落ち着くでしょう。面白い時代ですね。

開発:わたしはこの、玄関ドアに付いてる投函用の口がもう少しデカかったらとか、そもそも宅配ボックス付きのドアであったら、世の中の問題がまるっと解決する気がします。受け取りロボット画面でも付いてれば完璧です。

基盤:配達する方もロボットだったりして。「私はロボットですが」みたいなチェックボックスをぷちっと押す。

開発:いや、電子証明書を提示するんじゃないですかね。すみませんアマゾンのほうから来ました、お宅の主人が発注した品をお届けに来ました、これが当社の発送証明書ですみたいな。

社長:実際、やばい粉とか菌とか配達される恐れはあるわけで、サイバーな世界以上にフィジカルな世界は恐ろしいですよね。

経理:これからはドア屋さんが儲かるということですね。投資の参考にします。

社長:ああそれで、昨日の光熱費計画の中で出た電力計の件です。あれ、そもそも玄関近くに付いてるでんこちゃんがHTTPサーバで、無線なりPLCでアクセスできればいいんじゃないかと思ったわけです。

基盤:いわゆるスマートメータってそういうものなのでは?

社長:知りません。ですが、例えばあれが普通のインターネット向けルータであれば、電源として絶対必要なでんこメータ兼ルータにつなぐだけで、世の中はシンプルに統一されるなと思ったわけです。

開発:PLCでギガビットとか出るんですかね?

社長:知りませんが、必要なら電力・データ兼用の高品質なケーブルに入れ替えるとか。USBもFくらいまで行けばそうなるんじゃないですかね。とりあえず15A通れば、我が社消費電力的には余裕です。

基盤:100VのUSBとか、めっちゃユニバーサルというか。

開発:いっそ光に統一して、マイクロ波だかレーザだかで家庭内電力伝送できないですかね?

社長:エジソン以来の世の中の大転換ですね。

基盤:過渡期に死人が出そうな予感がします。

社長:そして桶屋が儲かると。

基盤:いっそ、太陽光でっていう線は。

開発:そう、うちもベランダだけは結構広いし。というか、大家さんに屋上を貸してもらうとか。

経理:もとが取れるまで、本社移転が困難になるかと。それより、もう2ヶ月見てないケーブルテレビが月4,000円を超えてるのをどうにかしましょう。アンテナで良いのでは?

社長:ああ、それは早急に真剣に検討しましょう。

-- 2020-0617 SatoxITS

パスワード移転マネージャ

社長:Chrome→Opera→Vivaldiと乗り換えて来ましたが、パスワードは自動で移せないので、移転が進みません。とても不便です。

開発:Vivaldiは、Operaが記憶している全アカウントをimportしたのが面白かったですね。パスワードは無理だったわけですが。

基盤:パスワード管理の見た目のインタフェースはブラウザによらず全く同じようですから、Chromium 起源なんでしょうね。

社長:なので、技術的には自動移転ができるはずだと思うんです。いや、過去のブラウザとも時々は付き合うので、無断で引っこ抜くのではなく、円満に移転すれば良いのにと思いますが。

基盤:移転したくもない奴もありますしね。既に死んでるやつとか。

社長:20年前に作ったアカウントとか。ほぼ青春の思い出ですね。ああいうのは消し難いけど、現在アクティブなビューには出てきてほしくない。そういえばWakWakのアカウント、パスワード忘れちゃって入れないんですよ。

経理:今も毎月ちゃくちゃくと900円課金されてますね。税込み990円。動態保存サイトの2つのカウンターを維持するためだけに。1カウントアップ何円の世界ですよ。

社長:いや、当時は相対的に割安だったんですけどね。脱会するのもまた地獄の作業でして。

経理:私が思うに、敵にクレジットカード渡して、自由に使ってくださいって、ありえない世界だと思います。クレジット側で、この相手には使わせないって設定できませんかね。

社長:まあそれで出血は止められるでしょうね。でもそういう打ち切り方って、一応立場のある法人としてどうなのかな?ブラックリストに載っちゃったりする不安もある。

経理:定期的な料金はできれば全て自動振替にしたいです。あるいは Pay-easy。これで払えるところ以外とはお付き合いしない。なんにしても、いつどこにいくら払われてるのかをリアルタイムに把握するのが大変です。クレジット払いは全廃、全部現在の口座のデビットにして、決済発生即メール通知、ウェブサイトでも確認、にしたいと思います。

社長:ドラッグストアでちょっとした買い物するたびに携帯メールがぽぽぽぽーんて鳴るのが、ちょっと物悲しいんですけどね・・・

基盤:パスワードの管理の件ですが・・・

開発:そもそも一方的な移転じゃなくて、継続的な共有で良いですよね。兼任とか。出向から戻れる的な。どういう管理をするのが、全ブラウザとユーザにとってWin Win でしょうかね。

社長:わたし的には、2つのブラウザでアカウント管理画面を開いて、移したいアカウントをドラッグ&ドロップして複写できるのが良いですね。実際、自分でだってパスワードの文字列なんて表示したくも無いわけです。何かわからないけどブラウザが裏で何かやっているという不安感が嫌ですね。表示するアカウントをフィルターする機能はありますから、まとめて選択して、コピペできるのが良いです。

開発:要するにファイルのコピペのメタファですね。そういう意味では、ここのアカウントが実際にファイルになってれば、あとは普通にFinderなりExplorerなりで扱える、というのが一番自然に思います。フォルダでのグループ化とか作成更新日付とかも、当然ファイルの属性としてありますしね。アクセス権限も柔軟に設定できる。停止したいアカウントはゴミ箱に移す、復活したい時にはゴミ箱から戻す。

社長:Vivaldiのタブのゴミ箱モデルには、やられたと思いました。

基盤:本当のフォルダであれば、アイコンなんかも付けられて可愛らしいですね。

開発:要するに、パスワードというのを何かのアトリビュート的に扱うのではなく、アカウントというエンティティとして包括的に扱えれば良い、ということですね。

基盤:実は裏ではそういうフォルダとファイルとして管理されてたりして。それなら、ブラウザの介在なしで、ファイルの管理として処理できますね。当然暗号化されているでしょうから、そこだけはなとかする。

開発:パスワードストアへのアクセス履歴も同じように管理できると良いですね。ブラウジングの履歴も、アカウントごとに管理すると良い。

社長:それはありがたい。同じ銀行に個人と法人のアカウントを持ってますから、どっちのアカウントで入った時にどんなアクセスの仕方をしたかとか、確認したいですからね。

開発:そもそも私は、アカウントと履歴とブックマークが全く別物のように見えるのがイヤです。ブックマークなんて、履歴から自動生成して、それにユーザがラベルをつけて拾い上げればよいと思うんです。手作りしたブックマークだって、日付や名前でソートしたい。その実体がファイルであれば当たり前にできることです。

社長:メールのフォルダとかラベルもそうですね。それで最近 Mac の Mail に引っ越して便利だなと思うのは、Smart Mailbox というやつです。これは要するにフィルタなんですが。フィルタを掛けた結果が普通のフォルダのように見えるわけです。いや私が35年前につくったメールリーダでも、そうなってましたが。

開発:歴史をたどれば、SQLとかで検索してできた結果のテーブルを、静的なテーブルと同じように扱うっていうような事もできますよね。DBの場合、実際に実体ができてそうなので性能的に馴染むんですかね。

基盤:今どきで言えば、静的データも動的生成データも何でも JSON てとこですかね。

社長:管理情報をあっちこっちにばらまいちゃったり、よくわからないところで集中管理されたりするのも嫌ですよね。昔的には Unix 用のツールは root 権限であちこちにファイルをばらまきたがる。Windowsのアプリとかはレジストリで集中管理したがる。何がどこにあるか見えないのでアンインストールが不透明。MacOS のやりかたを見て、なんだやっぱりこれでいいんじゃないかと思いました。

開発:あれは、ツールとかアプリって、恒久的にインストールされるもので、管理者がごく稀に行う作業だという時代の考え方を引きずっているのかもしれないですね。

基盤:そういう意味で Chrome の extension は、今日的にあるべきアプリの配布と更新の形ですね。

社長:各ブラウザとも、自分自身では複数のデバイスでアカウントを共有する仕組みは持ってるので、あれを使うという手もあるとは思うんですけどね。しかしそういう機微情報を無償のデータベースに置いて良いものかっていう不安はずっとあるのですが。

開発:各ブラウザで違うのを使ってますからね。それもまた一つの関門。

経理:有償のパスワードマネージャだと、月に300円くらいはかかりますね。これは当社にとっては厳しいかと。

社長:リモートな共有とか同期を考えると話が複雑になりそうなので、とりえあず同一デバイス上での複数のブラウザ間でのパスワード情報移転に話を絞りましょう。実際それだけでできれば私の希望は叶えられます。

基盤:表示してコピペで良さそうな気もしますが(笑)

社長:いや、パスワードマネージャでは、パスワードの表示はできるんですが、ペーストというか書き込みはできないんですよ。摩訶不思議圧倒的不便。

開発:そのへんがとっかかりですかね。ちょっとお昼に。

社長:時間がもったいないからそばの店かな。

* * *

開発:いやもう、酒のんで飯食って馬鹿話書いてたら、真面目に仕事する気がどこかにいっちゃいました。

社長:それは本質的に今やるべき仕事ではなかったということかもしれませんね。パスワード移転の件は、手作業でも気合を入れれば10分くらいで片付く話ではあるんです。

開発:いつでも必要とされるものって何ですかね。

社長:たとえば、検索結果のコンテクスト表示です。キーワードで検索した時に、ヒットしたキーワードの前後を表示してくれる。これは出来て当然だし、無いと非常に不便。これはもう、バックスペースや undo の無い世界に匹敵する不便さです。自分でも自作の検索エンジンでそういう表示を作りましたから、特に難しい事でないことはわかっています。なぜそれをやらないのかWordPress。

基盤:プラグインにはありそうですね。

経理:今、新規 iMac の代金が引き落とせませんでした(1度の利用限度額超過)ってメールが来ました。

社長:えー!それは一大事。緊急対策班招集します。

-- 2020-0618 SatoxITS

なにか面白いこと

社長:この店に来るのも久しぶりですね。

開発:一週間は空いてないと思いますが。

基盤:とりあえず生で。カンパーイ。

社長:ヒゲを伸ばしたので、これにビールの泡が付くというのをやってみられたのがうれしいです。

基盤:他の常連さんに褒めてもらえてご満悦ですね。

開発:創立から2ヶ月半しか経ってないですが、異常に長く感じます。

基盤:Azureと戦ってたのはまだ1ヶ月ちょっと前ですが、ものすごく昔のように思えます。

経理:経費という概念が根付きましたね。あれはうちの経費原器です。

社長:基盤の整備も一段落、というか設備投資の方針が固まりました。経費の意味付けは相対評価。重要なのは、もったいなくないの精神ですね。無駄なものは切る。意味のあるものにはお金をかける。

基盤:他人が聞いたら、めっちゃお金かけてるみたいに聞こえるでしょうね。

社長:いや、当社は個人の金銭感覚で法人を運営するという尺度を確立中なのです。

開発:GoとかPNGとかQRとかJavaScriptとかChromeも面白かったです。ただ、ちょっと飽きたかな。いや今突然こみ上げてきたのですが、正直、猛烈に飽きました。

社長:そうですか。。まあ、神秘のベールが剥がれちゃったってとこですかね。それを言えば私も、株式会社とか飽きたかな。

基盤:てことは次は宗教法人とか?

社長:あれはそんな簡単につくれるものじゃないでしょう。でも作るならやっぱり仏教系かな。お釈迦さんの時代に回帰する。

開発:最後は沙羅双樹の下で食中毒で亡くなるわけですか。

社長:私はかなり最近まで「沙羅双樹」っていう木があるのかと思ってました(笑)

営業:宗教法人を目指すということでしたら、私も安心して去れます。

経理:しかしこの、きゅうりを切ってミソを添えただけのもの、安い仮想マシンなら1ヶ月分ですね。不条理です。

基盤:高いクラウドSSD一日分と考えれば腹の虫が収まりますよ。

開発:QRは実用的に面白いと思っていたのですが、今はどうもなんだか冷めました。今のカメラなら条件悪いとこでとっても1MB程度の情報は取れるわけです。ノイズを除去したって100KBくらいは残るでしょう。そしたら、もっと多くのものを伝えられると思うんです。そうすれば、何か新しい使い道も出てくるのではと。2値画像って。。。色情報を失っているってすごいロスではないかと。

社長:でも、あれは表現できる情報量が少ないところにも意味があるのかも。セキュリティ上とか。無線での決済は昔からあったのにQRのようには流行らなかった。やはり人間の目に見えるという安心感。紙に印刷しても使える。安上がり。ああ、もともとそういうものですね。まあ数字みたいに人間が手書きするのは困難だけど。そういやマークシートって、今もあるんですかね?

開発:人間の読み書きする文字情報なら普通にOCRじゃいけないんですか?っていう点はあります。一番の難点は、見た目がいかついということです。それにカラーでない。人が見てきれいだなとか、内容がなんとなく区別できるとか、そういう属性を付けると良いのではないかと思います。安全係数が高い実用一点張りな感じがつまらないわけです。

基盤:しかし、竹鶴ハイボールなくなるって言ってたのに、全然続いていますね。ガセだったんですかね?

経理:チューリップと同じで、無くなっても生活に困るわけではないですしね。カップ麺にくらべれば世の中に対する影響はほぼゼロです。

開発:ですが、醸造には時間がかかりますよね。寝かせとくだけだけど。これは我々の作るものには無い特徴です。

社長:PNGには画像の他にメタ情報も入れらるし、メタ情報を除外した圧縮が規定されているから、普通のデータのコンテナとして使えるかもですね。現行の全てのファイル形式をPNGに詰め込んでしまう。電子署名付きデータ形式はPDFの天下ですが、PNGで追い落とすという方向もあるのかも。別にテキスト検索とか要らないし。どういう縦横サイズだと思うかは難しいかも?

基盤:PDFをPNGに詰めて運ぶとか、めっちゃシュールで面白いですね。

開発:電子署名付きPNGはとても興味があります。画像データが構造の無い値の羅列なので、どんな値でも正常。そういう意味でもコンテナに向いてるでしょうね。あとエンタメ的に面白いのは、それが画像として表示できるということです。データの特徴が、視覚的なパターンとして認識ができるんじゃないかという気もします。まあ、バイナリダンプでもそうなんですけど。

社長:ディスクのノイズでコンパイル処理がどこまで進んだかわかるみたいなやつですね。

開発:一種のサイドチャネルですね。

社長:まあ現実的なところでは、S/MIME か tar か、っていう感じですかねぇ。

基盤:じゃそろそろ。

経理:会計をお願いします・・・ 割り勘にすると超安いですね(笑)

-- 2020-0617 SatoxITS

ラピスラズリ

社長:ラピスラズリについて検討したいと思います。

営業:うちは一応IT業として登記してますから、定款の変更が必要な気がします。

社長:いや、販売するわけじゃないです。

開発:青ってことは銅起源ですかね。私は子供の頃に見た農薬に使ってた硫酸銅の色が心に染み入りました。

基盤:えーとラピスラズリ・・・ 主成分は青金石(せいせんせき)、化学組成は (Na,Ca)8(AlSiO4)6(SO4,S,Cl)2 だそうです。Cu は入ってませんね。

開発:そうですか。そういえば苦いものはみんなアルカリ性かと思ってたんですが、苦味として感じるアルカロイドには「中性や弱酸性のものもある」んだそうです。

基盤:へー。で Wiki には、「和名では瑠璃(るり)」といい・・・

社長:それか!思い出しました。昔ルリタマアザミという花を見て吸い込まれるような気分になったころがあるんですが。あれはラピス色だったということですね。

経理:るりこという名前の人もいますね。

開発:浅丘ルリ子とか。

基盤:そっちですか。。ある色辞典によるとLapis-lazuli は #26619C です。

Lapis-lazuli = #26619C ?

基盤:一方でこれまでイメージカラー候補とされて来た RoyalBlueですが、その一つの定義がこれ。

RoyalBlue = #4169e1 ?

社長:うーん、どっちもいい色ですね。ただ、ラピスがイメージより暗過ぎ、ロイヤルブルーが明るすぎるように感じます。

開発:仕事系フォーマルっていう意味ではラピスですね。ただ、良し悪しはコンテクストというかコーディネーションによると思います。

広報:昨日ぱぱっと作った jQueen のロゴの青は、パワポがデフォで持っている色でした。上の2つの中間ですね。

基盤:アイコン用に切り出したのがこれ。

社長:これがいちばん好きかな。

営業:ラピスラズリという石が目をひくのは、あの模様もあると思います。青を何色か組み合わせて白抜き文字、赤でワンポイントっていうのは、ありかなと。

基盤:模様を拡大して見たらQRコードだった、ってのも良いですね。

社長:引き続き検討しましょう。

-- 2020-0617 SatoxITS

光熱費計画

経理:でんこちゃんから請求書が来ました。

基盤:我が社の光熱費って、バカみたいに低いですよね。電気代4桁台とか。個人がひとりで生活してるのより安いくらい。

社長:まあ、リアルにはそういう事ですが。

経理:プロパンのアパートから越して来た時には、ガス代も3,000円浮きました。

開発:ですがこれからは冷房の季節。過去の実績を見ると、エアコンをフルに回すと現在の3倍くらい電気代は行きますよね。

経理:こたつじゃいけないんですか?

開発:いえ、基本、温めるのは下半身ですが、冷やすのは上半身です。あと、温めるのは簡単ですが、冷やすのは原理的に難しい。エネルギーの質の問題。エントロピーの法則です。

基盤:あの、ファン付きの作業着みたいのは。頸動脈直冷が効率的という話もあります。

開発:うーん、興味深いけど、あれ着てこたつでキーボード打ってるって、見た目がちょっとやばいというか。

社長:理想は裸族です。自由が一番大事。

基盤:いずれにしても、部屋全体を冷やす必要はないですね。リアルな人体を一体冷やせば良い。

社長:USB-C 駆動冷房機とか出ないですかね。

経理:そういえば昨年購入されたあの高級扇風機はどこへ行ったんでしょう。

社長:あ、あれ私物ですが… 社内のどこかにあります。

開発:あれ、首が3D回転するのが面白いって買ったきり、固定で使ってますね(笑)

基盤:思うに、このPC達の吐く熱がそろそろ気になります。別の部屋に遠ざけたいですね。

開発:なのでVNCなわけですよ。まあ手元にあるのは今度来る iMac だけになりますね。

経理:なんにしても、冷房費は月3,000円以内を目標として掲げさせていただきたい。

基盤:無理でしょう。死人が出ますよ。

開発:いざ真夏日となったら、悠長なことは言ってられなくなりますからね。体感で 28℃以下は確保したいところです。

社長:しかし、そもそも歳をとると、下手なエアコンで冷やされると体にコタエルんですよね。特にこの季節、窓を開けていると入ってくる心地良いそよ風。これはちょっとやそっとの技術やコストでは再現できないでしょう。そういう観点からも、自然環境に近い、体にも経費にもやさしい冷房計画を検討してまいりましょう。

基盤:こういうのって、見える化すると盛り上がりますよね。Azureの費用削減の時もそうでした。USBか無線でモニターできる電力計と温度計を購入しませんか?

開発:スマートメータとかって使えないんですかね?うちのはそういうんじゃないのかな。

経理:100Vの電力量計は2,000円〜30,000円くらいですね。PCで制御できるのは高い。

社長:でも安くなったんですね。10年前は単なる電力計で1万円しましたが。

基盤:気温はスマホで良いのでは。アプリからネットで飛ばす。

開発:いや、せっかくだからラズパイでは。据え置きで連続測定したいし。温湿度センサーを基板から離して置きたいですが、I2CのMEMSで数百円です。

基盤:まあ、誰かが作ってるでしょうね。

-- 2020-0617 SatoxITS

chrome extension 第3日

開発:それでは extension 第3日目、行きたいと思います。

社長:今日は午前中から活動ですか。

基盤:裁量デーっス。

日本語e生活環境整備

開発:それはそうと、昨日の終わり頃からどうも日本語入力がバカになってるなと思ったら、Google IME じゃなくてMacOSのお仕着せのになってたんです。

開発:何かの拍子にショートカットが変わったようなんですが、この際オリジナルのには潔く退場してもらいたいです。

社長:昔の「ことえり」って出てた時代のはとても良かったと記憶しているのですが、今のはひどいですね。MSIMEと比肩するというか。日本語IMEに日本人が関与してないんじゃまいか?

開発:それでシステム環境設定を見ると、一人暗い感じのやつがいたので、こいつを ー で消すことにします。

開発:するとこのように気持ちの良い状態になりました。

基盤:素晴らしい。

社長:今後当社の標準環境としましょう。

Vivaldiにごめんなさい

開発:それで昨日、どうも Vivaldi は extensions に対して扱いが冷たいのでは無いかと思ったので、本家の Chrome のほうでやってみましたら、状況は似たようなもの。Vivaldi のせいではありませんでした。というか、インタフェースはChromeとまったく同じ、特に何も足してないし引いてもいない。

開発:実は、パッケージの更新方法について勘違いしていました。

開発:Chromeのextensionsを開くと、そこには先客がいました。それでこの画面を見て気づくのは、画面上の「Update」は全てのextensionに作用するボタンだ、ということです。個々のextensionには、Detaile, Remove の段に更新のアイコンがありました。いや、これは気づいてはいたのですが、なんで「Update」というテキストで表示してくれないんでしょうかねえ?ついテキストで表示されているボタンのほうへ目がいっちゃうじゃないですか。

社長:せめてmouseover で説明が出るとか、いっそ右クリックでコンテクストメニューで良いですね。

社長:コンテクストメニューと言えば、そもそも今出ているのがどのようなコンテクストのであるのかユーザが把握してない事も多いから、違うコンテクストに同じ名前のメニュータイトルが出てくるのは極めてよろしく無いですね。同じ画面に同じ名前のボタンがあるのもまたしかり。

開発:GoogleのUIって、提供する情報を削りすぎてる傾向がありますよね。Appleの真似のような気もしますが、気配りが不完全というか。

基盤:でもこれ、素人のエンドユーザさん向けには寡黙過ぎると思いますが、自分で extension 作ろうって人がここで引っかかるのはどうかなという気もしますが。

開発:いえいえ、せっかくこういう楽しいフレームワークがあるなら、もう誰でも extension 作って楽しめる環境であるべきです。というかそもそも、カスタマイズと extension はシームレスであるべきだと思うんですよ。だから素人向けも玄人向けもない。

基盤:でもそろそろ extensions のチュートリアルくらい頭から読んだほうが良いのでは・・・

開発:まあそれはおいおい。こういうのは最小限の情報から推測するゲームが面白いわけです。

社長:それはそうとさっきから、やっぱりGoogle の IME は本当に気持ちが良いですね。

基盤:機能的には素晴らしいのに、どうもこのポップアップの見た目がしょぼいです(笑)

ウォーミングアップ

社長:それでは本題に入りましょう。軽いところから。まず extensions に掲示する時のアイコンを設定したいですね。

開発:chrome extensions icon でぐぐる。一発で出てきますね。こうやってオンデマンドに調べれば十分なので、別に頭からチュートリアルなんて(笑)

基盤:がっつりサイズが指定してありますね。今どきは自動的にリサイズしてくれるのがふつうでは?

開発:ああ、それも説明がありますね。何でもいいよって。ただ真四角にしてねと。では、設定して、リロード 🙂

社長:出ましたね。やっぱアイコンがあると気分が上がります。このバージョン番号は?

開発:それが、extension の作成日付という考え方が無いように見えるんです。これは apt でも思うんですが、なんで日付という重要な情報がデフォでないんでしょうね?仕方がないので、バージョン番号に折り込みました。

基盤:バージョン番号って何でもいいんですか?

開発:ドットで区切られた4つの整数、各整数は0〜65536、っていう規定ですね。そうじゃないと怒られます。

基盤:つまり64ビットに収めたいってことですね。

開発:そうなんですが、上の例にもあるように、2020061710 でも通すんですよ。マニフェストのバージョンによるんでしょうかね。manifest_version 2 なら 32ビット整数まで通すようになってるとか。

社長:後方互換性の問題があるとしたら、16ビット整数にしとくのが安全ですね。配布する段階になったら再検討しましょう。

開発:いやあそれにしても、Google IME は気持ちいいなあ。

社長:本当に良いと思うものには払いたくてもお金が払えなかったりして変な世の中ですね。せめて当社CCで称賛しましょう。Google IME、ITS認定クリエイティブコモディティ金賞確定です。

開発:ただクリエィティブというより、良い意味でのコンベンショナルというかクラシカルですよね。Vivaldiはまったくクリエイティブなんですが。

* * *

社長:それでは何か少し本格的なものを。

開発:file URL については、セキュリティ上の問題とかでちょっと調べる必要があるかなと。

社長:まあそれはそう急ぎではないです。それより私はこの、WordPressのエディタの不便さをなんとかして欲しい。即刻。特に、コードブロックのスタイルを変えるとか。extension で何とかなりませんかね?

開発:うーん、とりあえず現在見ている要素のHTMLエディタを起動するとかですかね。。

社長:それなら、選択した部分の翻訳をしてくれるなんてのもあるとうれしい。

基盤:そういうのは既にいっぱいあるんじゃないですかね。それはそうとお腹がすきました。

社長:午前から活動してますしね。では一旦ブレーク。

* * *

社長:それでは再開しましょう。ところで、さっき食事をしながらiPhone見てたら、最近翻訳ソフトでは DeepL てのがホットらしいですね。

開発:いろんな選択肢があるのは良いことですね。タイ語とかもいけるんですかね?

社長:さたぽん行ってみましょうか。

基盤:・・・ アジア圏だと日本語と中国語だけのようです。

社長:だめじゃん。ステマだったのかな?

WordPress と折り合う

開発:それで extension の基本、特にコンテクストメニューでは、現在どんなコンテクストに居るのかを知るのが第一歩だと思います。次にそれを表示する。加工して反映させる。たとえば、Cookieとか。

基盤:それ、Vivaldiでもやってますね。調べたらChromeからしてあります。URL窓の左の鍵マークから。

開発:そ、そうだったのか・・・

社長:思い出しました。WordPressの現在の編集ブロックっていうのは、どういう風に見えるんですかね。

基盤:とその前に。検索すると chrome の extension で、HTMLとかCSSのエディタって沢山ありますね。まずはこういうのを試してみてはどうでしょう?きっと誰かが作っているに違いないものをゼロから再開発する時間がもったいないと思います。楽しいとは思いますが、われわれの時間は有限で、やりたい事は無限にあるのです。

開発:まあ、そうですね。

基盤:それで、例えばこのページ。「16 Best WordPress Chrome Extensions that You Should Try」。2018年11月の記事ですから賞味期限内と思います。

Why You Need WordPress Chrome Extensions?

Google Chrome is the most popular web browser in the world. It comes with hundreds of add-ons to easily perform several tasks within your browser.
You’ll find many useful WordPress extensions that can help with the website development, editing blog posts, check for grammar and spelling mistakes, manage tasks, and more.
Since there are thousands of extensions available, it becomes difficult for beginners to find the right tools they need.
To help you with that, we did the research and picked the best Google Chrome extensions that you can try.

開発:ありがたいことです。

基盤:で「editing blog posts」に飛ぶと「How to Add a New Post in WordPress and Utilize all the Features, Last updated on January 2nd, 2020」です。これは、現行のWordPressのエディタの解説でした。それでこの中で気になるのは「The classic editor will be supported until the end of 2021, and we strongly recommend all users to create a plan for switching to the new WordPress editor.」という部分です。

社長:うーん、そうですか。私はほぼ使った事無いけど、Classic Editor のほうが使いやすそうな点もあると思うんですけどね。まあ、New Editor についても、ほとんど何も知らずに使ってるわけですが…

開発:でもこの元の記事、16件あるけど、HTML編集を助けてくれそうなextensionは一つも無いですね。CSS編集のextensionは関係すると思いますが、特定のCSSファイルの編集というより、どのCSSが採用されているのかが追えないというのが最大の問題なわけです。サイト全体に影響が及ぶような変更もしたくないし、今編集しているそれだけに固有のスタイルを定義したいってことはあって。だから、style 属性でも良いし、行儀悪くても body 内の style 領域だって構わない。

社長:具体的なイメージを絞りましょう。確かにHTMLの中身の編集というより、メタ情報の設定が問題だと思います。だから、指定した要素のクラス名を設定できる、それだけで良いかなという気はします。あとは details の編集。これについては、簡単なプラグインは入れましたが、手打ちするのと大して変わらないなという気はしています。

開発:それで今思ったのですが。刹那的なスタイルで、さすがにstyle属性で指定するのは嫌だとか、2回以上使うもの。それって、こういうのも有りじゃないかと。

9pxで青く表示されるテキスト

開発:上で in8px というスタイルを定義したので、以下でも使えるはずです。

高度な設定」での指定。

開発:やはり。編集モードでは他のブロックにあるCSSが見えないのか適用されませんが、プレビューや公開版ではこのCSSが適用されています。

社長:うーん、これはお手軽で便利。野蛮で下品な感じではあるけど。わたしはこれでもう満ち足りました。

基盤:ページローカルなCSSというのは、ページをポータブルにする意味でも良いですね。

開発:それで思ったのですが、これは前にも話に出ましたが、現在のページを一枚の、外部参照のない1つのHTMLにするというプラグインは面白いかなって。もちろん、data URI を使うわけです。

基盤:WordPress って、ページというか文書のヘッダを定義する機能ってないんですかね?それがあれば、後ろめたさもなくできるし。meta が定義できたりするとうれしいし。

社長:それ、どっちも良いですね。その線で検討しましょう。ちょっとブレーク。

* * *

開発:それにしてもこれって、WordPress がまともに CSS のエディタを提供してないのが元凶ですよね。サイト単位の「追加CSS」とかサイドバーの中にちまっとあったりして、何考えてんだって感じです。

社長:それはそうと、全英女子オープンの開催の可否って6/16日に決定って聞いてたけど、どうなったんでしょうね?

基盤:イージス・アショアの配備、撤回ですって。説明会で昼寝してたおっちゃんのせいですかね?

経理:3,500億円の節約ですって。うちの経費の35万年ぶんくらいです。

基盤:その頃にはもう、さざれ石が岩男になってコケが蒸してますね。

営業:トランプが嫌がらせとかして来ないと良いですが。

開発:そんな時は接待ゴルフですよ。日本の全英女王を連れて。

基盤:桜を愛でる会に招待して日本文化に理解を深めてもらうとか。

社長:そういえば10万円のプレゼント、忘れずにもらいにいかないと。

イメージカラー

開発:それはそうと、ページの最後にあるフォームの「コメントを送信」ですが。これの背景色ってどうやって変えるんでしょう?インスペクトすると「input id=submit class=submit value=コメントを送信」ですから、subumit を定義してやれば良いのかなと思ったんですが。rgb (118, 118, 118) がどこから来ているのやら。

基盤:それを追っかけると、TwentySeventeenの本丸 style.css に行き着きますね。

https://its-more.jp/ja_jp/wp-content/themes/twentyseventeen/style.css?ver=20190507
...
input[type="submit"]:focus {
	background: #767676;
}

基盤:0x76 = 118 です。なんでインスペクタが10進で表示したがるのかさっぱりわからないですが。あなたはISOですかっつーの。で、その css では 767676 が山のようにベタ打ちされてます。

開発:CSSって定数の定義とかできないんでしたっけね。言語としてはアンビリーバブルですが・・・

基盤:まあ、grep color style.css しても同じノリです。

社長:それ、全部我が社のテーマカラーにしてしまいましょう。

基盤:それでは試しにすみれ系で。 :g/#767676/s//#8080ff/p ・・・ おっと、流石にあちこちがすみれっぽくなりました(笑)

社長:うーん、すみれ色は好きな色ですが、会社のカラーとはちょっと違うんですよね。ですが、最近はRoyalBlueもちょっと違うかなという気はしており・・・

開発:それと私が思うに、その会社やサイトをどういう色使いで見たいかという、ユーザ側の好みだって受け入れるべきだと思うんですよね。各サイトごとのclient side cssとかで。もちろん、WordPressなりでその辺の選択を可能にしておくとか。そもそも、サイトのテーマだって、TwentySeventeen 以外で見たい来訪者だって居るんじゃないかと。今のところは、サーバ側の管理者が一つを選択するしか無いわけですが。

基盤:商品だって、消費者が色を選べますからね。まあ会社のエンブレムとかは別として。BMWはやっぱりブルー。

開発:わたしは Go とか Chrome とかのサイトの脱力系の色使いが、時々こっちの気分に合わないことがあるんです。たとえばリラックスモードの時と戦闘気分の時では、色を変えたい。

社長:まあ、コンテンツ側が許可している選択肢であれば、何を選んでも構わないから良いですね。

広報:会社のイメージカラーですが、青系ですと、ラピスラズリが一つの選択肢かなと思います。幸運を呼びそうです。

社長:それ、私も昨日そう思ったんですよ。

基盤:でも、ラピスっても色々な色があるよね?しかも模様を含んでるというか。

社長:これはぜひその線で検討しましょう。

* * *

社長:ところでさっきスタイルを変えた時、どっかにキャッシュされてて変更が反映されないというようなことがありました。各種リロードしてもだめで。

基盤:サーバ側のキャッシュかもしれませんね。

開発:私は「このサイトのキャッシュをクリアする」とか「このサイトのクッキーだけクリアする」とかしたいことがよくあるのですが、それって普通は無いような気がします。

基盤:このページに関連するキャッシュだけクリアする、というのもほしいですね。

社長:WordPressの件はなんとなく喉元過ぎたというか、旬を過ぎてしまいましたので、そっちの方から入ると良いかもです。

開発:キャッシュされているサイトやページのマップを作るというのも良いかもですね。で、そのマップの上でクリアを指示する。

基盤:いわゆるオフラインブラウジングと関係しますね。

社長:それはそうと、そろそろ飲みに行きましょう。

* * *

-- 2020-0617 SatoxITS

Vivaldiはよそ者に冷たいのか?

開発:さて、Macも軽くなったし extension 体験第2日目行きます。

基盤:その後、パッケージ内のHTMLやJavaScriptをURLで参照できるのがわかったということでした。

開発:そう、これです。

https://developer.chrome.com/extensions/manifest/web_accessible_resources
Manifest - Web Accessible Resources

...
These resources would then be available in a webpage via the URL chrome-extension://[PACKAGE ID]/[PATH], which can be generated with the extension.getURL method.

開発:今のところ隠したいリソースも何も無いですから、全開にします。

"web_accessible_resources": [ "*" ]

開発:それで、パッケージのURLはとりあえずこんな風に見えます。

開発:なのでこのパッケージの manifest.json は、chrome-extension://mjfadkidegblhjloojipnmeaginiambn/manifest.json というURLで見えるわけです。

基盤:いっそ、chrome-extension://パッケージ名/ でパッケージのファイル全部が見えると良いですね。

開発:.htacess とか指定したりして。まあまだファイル数も少ないので、index.html を作って参照します。というかこれも、JavaScript で生成すれば良いのですよね。

開発:それで、準備してて気づいたのですが、このURLで参照するHTMLのようなファイルは、パッケージをUpdateしなくても即反映される、というかそのまま使われるようなのです。これは実に全く便利です。

開発:さて、準備もできたし、まずはこの間作ったURLを分解してアンカーをつけるやつからやりますか。

* * *

社長:どんな感じですか。

開発:非常に不思議な現象が起きて難航しましたが、ようやく切り抜けました。

社長:どのような問題が?

開発:HTMLの中で </span> を </spam> とスペルミスしてしまったため、それ以下の表示が適切にされなかった、という問題です。

社長:うーん。それは確かに難しい問題でしたね。

開発:Vivaldi は JavaScript のエラーは指摘してくれますが、HTMLの異常はスルーですからねえ。

* * *

社長:どんな感じですか?

開発:Vivaldi に苦しめられていました。

社長:?

開発:コンテクストメニューを追加するところでエラーが出まして。具体的にはポインタがアンカー上にあった場合のコンテクストメニューを定義しようとしたのですが。これはメニューを登録する時のオプションとして単に"contexts":["link"] と書けば良いはずなのです。ですが、何か型の不整合のエラーだというので散々調べたのですが意味がわからず。それで、はっと思って、Update ではなく、一旦Removeして再ロードしたら通ってしまいました。前にもこれがありました。そういうわけで、これは鉄則だと思います。

VivaldiのextensionのUpdateで意味不明なエラーが出たら、一旦RemoveしてLoadし直すこと。

社長:そういえば、これは Vivaldi に限ったことではなく、ずっと不便だと感じてきた事ですが、右クリックで現在のページに関するメニューを出したい時、たまたまマウスポインタがリンクの上にあるとか、テキストの上にあったりすると、ページに関するメニューが出て来ない。で、ポップアップされたメニューの中に同じタイトルのものがあった場合、例えばPrintとか、ページに対して操作したつもりが、ポインタが指す要素に対する操作になってしまった、という事がしばしばあります。この不便は解消したいですね。

開発:それは、"contexts":["page", "link", "selection"] みたいに、同じメニューを複数のコンテクストに登録する事と、メニューのタイトルに対象を明示することで解消できますね。

開発:あとこれはいまだに意味不明なのですが、肝心の file scheme に対するアクセスがextension に許可されないんです。許可のチェックはしているのに。めっちゃ意味不明です。

開発:フォーラムで聞いてみようと思いますが、今日はなんだか疲れたのでもう寝ます。

社長:そうしましょう。というか、他のブラウザで試してみると良いかもですね。

-- 2020-0616 SatoxITS

Google Chromeの呪い

開発:仕事しようとしたら、Macが異様に重いというか、のろいのです。

基盤:Vivaldiに切り替えてからですかね?

開発:いや、もっと最近。昨日あたりから?

基盤:アクティビティモニタ見てみますか… おやあ、Chromeのヘルパープロセスが爆走してますが。まだChrome使ってるんですか?

開発:時々パスワードを取りに行くんですよ。まだ全部移し終えてなくて。あと昨日はchrome extensionを本家のChromeでも試すのに使いました。

開発:2プロセスが、各1テラバイト仮想メモリ、CPU全力疾走ですね。

基盤:お前ら、何者だ?とりあえずこのタブ死んでください。ぷちっ。

開発:すっかり静かになりました。なんだったんですかね。

基盤:さっき閉じたタブが何かですね。これ Chrome で開き直すのがかったるくて。はい復活しました。

開発:ああ、マウスポインタが今何を指しているか知る方法を探してた時のですね。つまり6月13日。3日前です。

基盤:月日の経つのは早いものですね。3日間肥大し続けて来たのかー。それにしてもこのシンプルなJavaScript + jQueryでどうしてそんな事が起こるんでしょうね?

開発:でかくなっちゃったのはメモリがリークしてるからじゃないかなぁ。天下のChromeが?って思うけど。Chromeはやたらメモリを食うといイメージもある。そのタブのプロセスって開いた瞬間からCPU上位に来るけど、Vivaldiで同じURL開いてもそうならないですね。タスクに対するリソースの割り当て方のポリシーの違いとかなのかな?

基盤:Vivaldiのほうはもうタグが鮨詰めだから、新参者が目立たないだけのような。

社長:あ、今気づいたんですが。Vivaldiにはいつもやられた感があるんですが、タスクマネジャーにはタスクを名前やタブで検索したりフィルタする機能が無いみたいですね。ふっふっふ。Vivaldi 破れたり。

基盤:そのへんは Chrome のものそのまんまみたいですが。Operaでも全く同じ。ああ、Edgeでも同じですね(笑)。やる気無し。

社長:うち的にはプロセスの管理機能にはすごく興味があるんですけどね。file URL にしてもだけど、ブラウザの開発者達というかユーザが好きな方面と、嗜好性が違うのが面白いです。

開発:このあたりにうちのニッチがあるのかもですね。

社長:ところで、Operaだとアプリの停止・起動で、停止時の実行状態を完全復活してくれるわけですが、ガベッジもろとも復活しちゃたりするんですかね。だとすると、再起動ですっきり爽やかという伝統的な手法が使えないことになります。

開発:どうなんでしょうね。もうちょっと上位レベルでの状態の保存・復活じゃないんですか?

社長:まあ、もうOperaに戻ることも無いからどうでもいいんですが。

-- 2020-0616 SatoxITS

◇ 私はロボットです。

開発:以前から考えていたこれですが。

社長:G社への挑戦ですね。特徴は?

開発:当社が開発した方式では、チェックを入れる手間が無く、ワンクリックで行けます。

社長:素晴らしい。

基盤:でもあれは実際にはチェックボックスでは無いですよね。どこをクリックしてもOKで、実際ワンクリックですが。まあでも、HTTPのログを見るのが楽しみです(笑)

開発:で、こいつを踏んだロボットにクッキーを食わせて、ロボット向けのコンテンツをクロールしてもらおうというわけです。

社長:ロボットがクッキーをためてくれるかが問題かもですね。

開発:まともなロボットなら。というか、悪意のある執念深いロボットとかなら絶対(笑)

社長:人間様向けのものと、検索エンジンのロボット様が喜んでくれるコンテンツはちょっと違うんでしょうね。

基盤:人間に不可視という意味では、meta description でも良い気はしますが。

開発:あれはベタテキストですから、いまひとつな気がするんですよ。

社長:人間様向けだとちょっとウザいけど、そのロボットがいつの何時何分何秒に訪問したのかわかるようにタイムスタンプとカウンターは付けたいですね。あれは検索するときに結構役に立ちます。

--
2020-0615 SatoxITS

はじめての自作Chrome Extension

社長:それではブラウザに何か機能を追加してみましょう。

開発:いわゆるプラグインですか。

基盤:Google Chrome的には「 extension 」て呼ぶようです。

社長:我が社正式ブラウザのVivaldiではどうなんでしょう?

基盤:VivaldiChromium がベースなので、共通のようです。おっと、日本語版ガイドがあるじゃないですか。

開発:「多いです」ってのがくだけけていい感じですね。

社長:Vivaldiのコミュニティっていい感じなんですかね。

基盤:いや、ブログとかボロクソ書いてる人が多いです。確かにある意味、いい感じ(笑)

開発:これ読むと、Vivaldiはユーザが拡張する必要なんて無い完璧なブラウザですからっていう気持ちが見えますね(笑)。基本的な機能についてはそうであって欲しいし、実際そうだなと感じますが。

Chromiumとextension

基盤:Chromiumベースなのは、Chrome, Edge, Opera それに Vivaldiですね。 あと Android も。EdgeがChromiumになったのは2020年1月だそうです。そういう時代なんですね。まあでも、世の中をあれだけ特殊なブラウザで苦しめた事は謝らないんでしょうけど。

開発:インターネットの普及を散々邪魔したあげく、いざ普及したら自分こそがインターネットですみたいにしれっと出てきたりする会社もいましたよね。

基盤:5大ブラウザでは Firefox と Safari が Chromeでは無いということですね。

社長:まあ、祖先をたどれば結局は Mozilla、Netscape、NCSA Mosaic に行き着くんでしょうけどね。 わたしなんてデビュー時の Mozaic から使ってますよ。英語ではモゼークって発音するらしいとか。

基盤:それで、extension てどう作るんだろう、と調べると、https://developer.chrome.com/extensions が根っこですね。

Google Chrome extensions の手引き入り口

開発:They are build on web technology such as HTML, JavaScript, and CSS。とありますから、うちの現有能力でいけますね。というか、それなら確かにポータブルだとは思われます。

社長:Apacheとかもそういうノリで作られてるといいですね。

基盤:古くはCGIで今はWordPressのプラグインでPHPとか。いずれのNode.jsとかともお付き合いするのでは。

開発:でも仕様・機能を満たしてればいいので、フロントエンド側のブラウザみたいにエンドユーザの好みで多様化っていう世界では無いですよね。

誰だって最初は Hello world

基盤:それじゃさっそく、Hello world ! 的なのを。

開発:では、このページにいきなりある Hello Extensions から。あー、この手の手引きにありがちなのですが、いきなり具体的な手順を頭から書いてますね。最初に簡単にサマリーをつけて欲しいものです。つまり、こういうことですね。

  • Chromium の extension はメタ情報と実装で構成される
  • メタ情報はマニフェストと呼ばれ、manifest.json という名前のファイルに格納する
  • manifest の中で拡張機能の外形を定義して、それを実装に対応させる
  • 実装は HTML や アイコン画像などで、そのファイル名を manifest から参照する
  • extension を組み込みには、このmanifest(を含むディレクトリ?)をブラウザに登録する
  • extension を呼び出す方法は manifest に記述する

基盤:あとはここに書いてある流れですね。

社長:これってつまり、自身に実装を持たない extension もアリエルということですよね。というか、この参照がURL一般で良いなら、data URI scheme でも行けると。

基盤:とりあえずやってみましょう。まずディレクトリを作って、このちっちゃなサンプルの json と html と png を格納します。

Last login: Mon Jun 15 01:56:30 on ttys011
MacMini% cd ~/Desktop
MacMini% mkdir ExtHello
MacMini% cd ExtHello
MacMini% cat > manifest.json
{
    "name": "Hello Extensions",
    "description" : "Base Level Extension",
    "version": "1.0",
    "manifest_version": 2,
    "browser_action": {
      "default_popup": "hello.html",
      "default_icon": "hello_extensions.png"
    },
    "commands": {
      "_execute_browser_action": {
        "suggested_key": {
          "default": "Ctrl+Shift+F",
          "mac": "MacCtrl+Shift+F"
        },
        "description": "Opens hello.html"
      }
    }
  
  }
MacMini% cat > hello.html
  <html>
    <body>
      <h1>Hello Extensions</h1>
    </body>
  </html>
MacMini% cp -p ~/Downloads/hello_extensions.png .
MacMini% ls -l
total 24
-rw-r--r--  1 xxxx  staff   74 Jun 15 13:39 hello.html
-rw-r--r--@ 1 xxxx  staff  319 Jun 15 13:41 hello_extensions.png
-rw-r--r--  1 xxxx  staff  466 Jun 15 13:39 manifest.json
MacMini% 

基盤:でブラウザに登録。登記所は Chrome では chrome://extensions だから、Vivaldi では vivaldi://extensions ですかね。

社長:まだ誰も居ませんね。

基盤:で、Load unpacked で Desktop/ExtHello を開くと・・・

基盤:追加されましたね。で、Details を見ると・・・

開発:わたしはその、「Allow access to file URLs」という設定がとても気になります。

基盤:で、manifest には「_execute_browser_action」が「"mac": "MacCtrl+Shift+F"」と定義されていましたから、その通りに押す・・・あれ、何も起こらないですね。

開発:一旦 Extension から抜けないといけないとか。

基盤:「+」で新しいタブを開いてみます・・・

基盤:あ、extension で登録たアイコンが出ましたね。あれ?でもCommand+Shift+Fで何も起こらない・・・ じゃこの「Hi」ってアイコンをクリックすると・・・

開発:出ましたね。右クリックすると?

基盤:拡張機能を直接管理できますね。でもHide Buttonて・・・ ああ、拡張機能全般のボタンの可視性制御ですかね。Vivaldi はまだよくわからないです。

はじめての自作 extension

社長:で、そこに一般のURLを直接書けるのか気になるのですが。

基盤:では、こんなふうに改変して、Update ・・・

基盤:なんか、Updating ... で固まりますね。version を変えるとアップデートできないとか?

開発:一旦 Remove して Load してみましょうか。しかしこれ、manifest に作成日付が無いっていかがなもんでしょう?

基盤:ぽち。ぽちっと。

開発:登録されましたね。で「Hi」をクリックすると・・・

基盤:出ました。窓がちっちゃいけど。

開発:これ、普通にブラウズできるのかな?

基盤:メニューをポチッと。

基盤:普通にブラウザのようです。

社長:なるほど。。。てことは、manifest だけ配って、実装は手元に置いて更新するってことができるわけですかね。

基盤:たぶん。

開発:といいますか、いっそ manifest の URL だけ配るって事はできないんですかね?

社長:それだとちょっと、ブラウザ側で何も extensions を管理できなくないですかね。まあそれはともかく、大変わかりやすいフレームワークであるという事はわかりました。一旦休憩しましょう。

* * *

jQueenアイコン作成

広報:さっそくですが、jQueen のアイコンを作成してみます。

社長:ちょっとその前に。上の画像をみて気づいたんですが、Vivaldiが右下に時刻表示をしているので、時間経過がわかってとても良いなと思います。

基盤:その時間より前には存在してなかたっという証明ができたらすごいですけどね(笑)

社長:これいっそ、タイムスタンプ付きで電子署名すると良いかなと。PNGのコメント的なチャンクに入れられますよね。

開発:できると思います。ただ、圧縮されたりした時に捨てられるかもですが。

社長:署名データ自体を画像として透かしみたいにできないですかね…

経理:証明書のモトはきっちり取らないと。まだ500回くらいしか署名してないかと。目指せ1署名1円です。

基盤:そういえば今回のAzureの課金は、ちょうど1日100円でしたね。

広報:それで、OneDrive上のロゴ集のパワポファイルを開こうとしたのですが、いつまでたってもクルクルしてて開かないのです。というか、いくつかのサイトにアクセスができなくなってます。

基盤:うーん。psするとプロセスが550ありますね。CPU負荷的には大した事ないですが、仮想メモリ4000GBを超えてます。昨日から動かしはじめたタイムマシーンが疑わしいですが・・・今は休憩中ですね。なんにしろOperaの残骸のタブとVivalidiのと100以上タブ開いてますしね・・・ うーん、topで見ると毎秒1万回くらいスワップインしてますね。ていうか、それでも割と普通に使えてるんですけどね。こないだ入れた自家製のDNSサーバ怪しくないですか?

開発:うーん、DNSのログをみると、異常は無いようなあるような。ただ、これだけヘビーにリカーシブなサーバとして動かしたことは過去に無いかもしれない。デフォの並列2プロセスというのも問題かも。そもそも内部的なRRのキャッシュがいっぱいになったとか?とりあえず delegated -r ... 。おっと、回復しましたね。どうも、しかるべき使い方をしていなかったようです(^-^;

基盤:それじゃOperaもちょっと死んでもらいます。どうせ完璧に蘇るでしょうしね。terminate。。。おおっ、固まった!すごい、load avarage 170達成です。それでも動くtopはエライなあ。。Operaプロセス全滅しました。5分くらいかかりましたね。総仮想メモリ3000GBに低下。ロードアベレージ10前後になりました。普通に使えますね。

広報:パワポ、さくっと立ち上がるようになりました。ですがさっきやりかけた編集で大事なスライドが一枚飛んでしまったようです。

基盤:そういうときはOneDriveに感謝しつつ昔のを回復ですね。

基盤:削除したわりには、いきなりサイズが大きくなってますが。しかもなんだか不自然なッジャスト800KB。。で、壊れてないらしき6月2日のを Restore 。。。復活しました。ていうか、Office 365で出来なて不便だなって思ってた、古い版を回復するんじゃなくて取り出すというのが、OneDrive ではできるんですね。これは朗報です。

開発:で中身は?

広報:ほっ。元のが回復しました。それでは、ちょっと時間がなくなってしまいましたので、適当にサクッとこんな感じで。

社長:ああ、とりあえずこれでいいんじゃないですかね。jQueern のアイコンとして表示してみましょう。

基盤:では、manifest.json のアイコン名を変えて、Update。。 やっぱり固まりますね。RemoveしてLoad。出来ました。

社長:おっと、ちゃんと jQ って読めますね。

開発:経費でハグキルーペへの野望が遠ざかりました(笑)

経理:ちょっとあれ、あり得ないです。原価数百円じゃ無いんですかね。調達請求出てたの保留中です。

基盤:それはそうと、今気づいたんですが、Vivaldi ってコンテンツの表示のズームと別にVivaldiのアイコンとかテキストとか(ユーザインタフェイスの)ズームができるですね。例えばこれ、UI 300%。

開発:うーむ。わたしらが欲しいと思ってるものの倍返ししてくるブラウザですね。そもそも離散的でなく連続的です。全部のアプリがこうなってたら、マジはゔきルーペ、いらねーな。

社長:これは本来ならMacOSで統一管理するべきところだとは思いますけどね。

基盤:お腹が空きました。

社長:飲みに行きますか。

* * *

コンテクストメニュー

社長:ひさしぶりでしたが夜に飲むのも良いものですね。

開発:事始めの〆はやはりコンテクストメニューで。

社長:context-menu.click は我が社のものですからね。

基盤:ところでこの extension のチュートリアルですが、Creative Commons (BY) だってあります。

社長:これ、なんかクールだね。うちも入れようか。

基盤:具体的には利用する時どうすればいいんですかね。引用元明示という意味ではURLを書いているからそれでいいのかなと。

開発:うちは Techno Comical Creative Commons とか標榜したいかと。

基盤:context menu のサンプルはこれですね。

基盤:これをさっきのにマージして、Remove + Load ・・・ なんかエラーが出ますね。

基盤:sample.js の最後の部分ですね。なんかテスト用にわざとやってる感じ。

基盤:じゃ、これを外して再ロード。

基盤:OK。

開発:では早速クリックをば。ワクワク。

基盤:右クリック!

社長:おー、出た出た。

開発:なるほど。でもこのサンプル、最初の一歩向けにしてはちょっと複雑ですね。あと、manifest.json にも sample.js にも「右」クリックだということは書いてない。コンテクストメニューを右クリックで出すというのはブラウザが決めることなんでしょうね。

社長:他と同居するとメニューが複雑になるから、Shift+右クリックとかにして景色をさっぱりできると良いかもですね。

開発:ともかく、とりあえず気になるコンテクストは現在のページのURLですから、これをメニューに出すには。。こんな感じですかね?

var jqueen = chrome.contextMenus.create(
  {"title": "Go upper layer"});
var uee = chrome.contextMenus.create(
  {"title": document.URL, "parentId":jqueen});

開発:で、extension reload して右クリック...

基盤:コンテクストが違いましたね、残念 (^-^)/

開発:うーん、とりあえず console log で追いたいですね… でもなんだか DevTools の console に出てこないような …

* * *

開発:んー?何だコリア。inspect views ? ・・・ おお!コンソール出た。こいつは便利。

開発:それでは早速、ページ移動して右クリック。

基盤:出ましたね。あとはこれを昨日の関数で分解してどっかに表示すると。

開発:ふー。ログさえ見れれば千人力。extension もちょといじって Updateで速反映できることがわかったし。素晴らしいです。ちょっとコーヒーブレイク。

* * *

経理:そういえば年金機構とけんぽ協会から封書がきてました。年金機構からは「報酬月額算定基礎届」を提出しろと。7月10日締め切りです。健保協会からは健診補助のお知らせ。

社長:リアル社員約1名、昇給、賞与無し。業績悪化により6月分は役員報酬ずばっとカット。そういう感じ(笑)

経理:最近設備投資で支出が増えましたしね。

* * *

開発:で、昨日の版の URL 分解はいきなり document.write してたから、今度は文字列を作って返す関数にしましょう。こんな感じ。

/*-- UrlEx HTML --*/
function surl2ahtml(surl,action){
  var pathv = surl.split('/');
  var aurl = "";
  var purl = "";
  var pi;
  var ahtml = ""; 
  for( pi = 0; pi < pathv.length; pi++ ){
    aurl += pathv[pi] + "/";
    purl += pathv[pi] + "/";
    if( pi < 2 ) continue; /* skip scheme:// part */
    ahtml += 
      "<a "+"href=" +aurl+ " " +action+ ">" +purl+ "</a>";
    purl = "";
  }
  return ahtml;
}

開発:でもってこれを jQueen にいれて。右クリック。

基盤:OKですね。

開発:さて、これをどうやってユーザに見せるかなのですが。今回は客人なのでユーザのHTMLの中に埋め込むわけにはいかない。

基礎:基本中の基本を知らないというこの面白さ(笑)

開発:もとのページにポップアップを定義しておいてその可視性を制御するという方法が使えないですからね。ウィンドを定義して開くのかな。ああ、多分この window.open() てやつだ。

function jpop(ahtml){
  window.open('https://its-more.jp', "_blank", 
    "menubar=0,width=300,height=200,top=100,lef=100");
}

開発:OK。とりあえずポップしました。もう刹那的に、 data URI で開いちゃってはどうかな?

基盤:怒られましたね(笑)

開発:うーむ。テンポラリなコンテンツを作ってその仮想的な?URLで開くか、開いているウィンドウにコンテンツを流し込むか…

基盤:blank っていうページがありましたよね。about:blank 。あれとかそのためにあったりして?

開発:about:blank 開きますね。で、これの document をどう参照するかですが…

開発:おっと、JavaScript って関数の定義は後で書いても良いのか!便利じゃのお。

開発:ん?いつも使ってるdocument て、window.document の略じゃ無いんだろうか?て事は、新しく開いた window のドキュメントに普通に write すれば良いような気がする。自分で作った window なんだから人に咎められるようなことでは無いよね。つまり、これでイケるのではなかろうか?

function jpop(ahtml){
  jwin = window.open("about:blank", "jpop","menubar=0,width=200,height=100,top=100,lef=100");
  jwin.document.write(ahtml);
}
function uee(info, tab){
  jpop("Jump to ancestors in " + surl2ahtml(info.pageUrl,""));
} 

開発:これでいかがでしょうか?Go!

基盤:大当たり。

開発:うーんしかし、開くのが遅いね。1秒くらいかかってる?

基盤:まあ、テスト用の突破口だと思えば。それに、これをずっとjQueen用のミニブラウザだと思えば。

開発:そうですね。原理的にはできた。では、残りのぶぶんもくっつけてと。

* * *

開発:生成したウィンドウに送り込んだHTMLにはマウスイベントに対する反応が含まれているのですが、残念ながら、おそらくセキュリティ上の制約で、何かのオプションを付けないと inline event は動かないよ、ということを言っていますね。この方法は無理な感じ。やはり、何か存在するURLを指定して開くのが良さそうな気はします。今日はこれにて撤収。

基盤:まあ、1日目にしてはだいぶ進みましたよね。

--
2020-0615 SatoxITS

2020-0616 追記:この件は、extension のディレクトリの下にあるリソースを可視化する設定("web_accessible_resources")があり、このディレクトリにHTMLやJavaScriptを置いて参照できることがわかったため、解決しました。