閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

ペットのソフトウェア化

最近はAIものの小説をよく読むけど、擬人化より先にペットのAI化がきそう。というかnintendogsとかとっくの昔からあるけど、スマホやARグラスの中で生きるAIを飼う方が倫理的にも良い気がする。物理的な実体がほしければaiboもあるし。

愛玩動物の売買は禁止した法がいいんじゃないの派なのでそういう発想になるのかなぁ*1

ただ、AIに人権を認めるべきかみたいな話はSFではお約束だけど、そうなると動物愛護法をペットAIにも適用すべきか、みたいな話も出てきそうではある。AIに権利を認めるなら、人がそれを物として所有するのは倫理的に認められない方向に行くのだろうか。

そういえば息吹というSFに、AIにストレスを与えて進化するか試すのが結構グロテスクな実験に見えた話があったなぁ。人が同情する余地は十分ありそう。いま思えば先日の「タイタン」もこの作品の影響を受けていたりするんだろうか。

息吹

息吹

全然関係無いけど最近は自分の子供の写真であっても許可を得ずにインターネットにアップロードするのを避ける人が出てきて、個人的にはとてもいいことだと思っていますが、同様にペットの画像を許可無く上げるのはどうなのか、という話も出てこないのかなーと思ったり。今のところ観測したことはなく、許可なんて取れないんだからそもそも不毛すぎる話ではあるんですけど。

*1:と言いつつ、別にヴィーガンとかでもないのですけれど

Obsidianでブログの下書きを書いてみている

Obsidianでブログの下書きを書くのが、今までのどのツールよりも快適。

Markdownで書けるのでここで書いたものをそのままコピペできるし、ローカルアプリだから新規作成時に待たされることもないので、何か浮かんだらCtrl+Nでシュッとファイル作って書ける。…まぁ、コピペとかしている時点でかつてのxyzzy+nDiary-mode+ftp-modeには叶わないんですけど…そのうちプラグイン作れるようになるかな?

普通のテキストエディタ(VS Codeとか)と操作感は大して変わらないけど、作ったファイルの保存先を指定しなくていいとか、余計な事を考えなくて良いのも楽。WebアプリだとScrapboxでも同じことができると思うけど、やっぱり通信が挟まらないのは快適さに影響してそう。

他にOneNoteもあるけど、これは何か書く前にセクションを移動したりする必要があるし、WYSIWYGなのははてなブログとは相性が悪かったりして。普通のメモとかにはいいんですけどね。

Obsidianの弱点としてはタイトル=ファイル名なので考えることは減るけど、ファイル名に使えない文字(スラッシュやコロン)が見出しに入れられないくらいでしょうか。

www.little-cuckoo.jp

扇風機も買った

数年前に買った扇風機がいつの間にか壊れて電源が入らなくなったので、除湿機に続いて新しいのを通販で買いました。2-3000円くらいのでもよかったのですが、10万円もらえるしということでそこそこのスペックのを買ってみました。さすがに一番いいのは何万もするので、やりすぎかなと日和った次第(PCとかはわりと「一番いいのを頼む」をやってしまうんですけど)。

リモコンもついているので面倒くさがりにも良さそうですね(無くしそうですが)。

早速付けてみましたが、部屋の中に風があるだけで体感温度が1度以上下がるみたいで一気に快適になりました。まだエアコンなくてもやっていけそう。

なんとかの剃刀 もしくは ATOKのナントカ変換

「○○の剃刀」という言葉が2つあって、どっちがどっちだっけ?となってしまう。左右盲みたいなものだろうか…(単に記憶力がないだけ)。

剃刀の種類(?) 意味
オッカムの剃刀 「ある事柄を説明するためには、必要以上に多くを仮定するべきでない」
ハンロンの剃刀 「愚かさによって十分に説明できるものを悪意のせいにしてはならない」

自分の場合ハンロンの剃刀の方が脳内での出番が多いんだけど(みんな陰謀論が好きすぎてインターネットに溢れていますからね)、シュッと出てこないんですよね。

で、そういえばATOKに数年前にナントカ変換実装されてたなーと思って試してみた。

f:id:wata_d:20200612112038p:plain

「なんとかのかみそり」と打ってTABで両方出てきて、オッカムの剃刀は辞書にも登録されているようで注釈も出てくる。これでググらなくても使えそう?

往復するパラダイム - Web日記の変遷

スマートフォンが出た頃、同時にWeb周りの技術も進化して「もう全部ブラウザの上で動かすのでいいんじゃないか?」となったと思ったら「いやゲームはネイティブの方がいい!」と戻ってきたり、をここ十数年繰り返している。

トレンド、ブームというのも繰り返すので(ファッションとかタピオカとか)、歴史を学ぶと先が読めるみたいな話も耳にすることがありますが、技術周りはそのサイクルがとても速い気がしますね。

ブログというのも静的なサイトで提供するのがいいのか、管理画面含めて動的にやっていく方がいいのかも定期的に行ったり来たり、もしくは同時に存在しているようです。

自分もあっちこっち、ふらふらしています。Web日記は以下のような遍歴を辿っています。

mixiとか日記才人とかも一瞬触っていたかな?

最近は阿部寛さんのファンサイトが超速いと話題になったりしますが、実際日記みたいな変化のないコンテンツを動的サイトで提供する意味ってあまりなくて、ビルドしたHTMLを置いておくだけでいいんじゃないかという気が最近またしてきていますね。

ブログの場合アクセスカウンタとかコメント、検索のような仕組みもあるっちゃあるので、そこ作り込むと面倒になってくることはありますが。このブログはもう年単位で独り言化しているしなぁ(笑) nDiary自体はSSIとかでミニBBSみたいなの入れ込んでたっけかな?

静的サイトでやっていくとしても、サーバ自体は今でも自分で持ったりはせず、Github PagesとかNetlifyを使うのがトレンドみたいですね。ブログの生成はGatsbyなのかな? 使うかどうかは別として、流行り物は触るくらいはしてみてもいいかもしれないなぁ。

しかし静的コンテンツにReactは必要なんだろうか…Javascript自体ないピュアなHTMLで済ませたい気もするな?

任意の要素の下でスワイプしたときだけスクロールを無効にしたい

スマホで動くお絵かきツールみたいなのを書いている時に、Canvasの上をスワイプでなぞった箇所に線を引くようにしたら、線を引きながらページがスクロールしてしまう現象にはまりました。

f:id:wata_d:20200609093236g:plain

これでは使い物にならないので、Canvasの上でスワイプしたときはスクロールさせないようにしたい。という時はCSStouch-action: none;を指定してあげると良いようです。最初試しもせずに、これを設定するとonTouchMoveイベントも発生しなくなるのでは…と思って無駄に遠回りしてしまいました。


せっかくなので以下遠回りした記録。onTouchMoveでpreventDefault()を呼べばスクロールを無効化できるよね、と思って、当初以下のように書きました。React使ってます。

function App() {
  const handleTouchMove = (event: React.TouchEvent) => {
    event.preventDefault(); // これは効かない
    // => [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive.
  }

  return (
    <div className="App">
      <div className="scroll-off" onTouchMove={handleTouchMove}>
        {/* この要素の中だけスクロールを無効にしたい */}
      </div>
    </div>
  );
}

しかし、コメントにあるとおりこれは動作しません。

Reactの要素にはonTouchMoveCaptureというイベントも別にありますが、これを使っても挙動は変わらないので、どうしてもpreventDefaultを使いたい場合は以下のようにする必要がありそうです。

function App() {
  const divRef = React.useRef<HTMLDivElement>(null);
  React.useEffect(() => {
    const elem = divRef.current!
    elem.addEventListener('touchmove', (e: any) => handleTouchMove(e), { passive: false });
    return () => elem.removeEventListener('touchmove', (e: any) => handleTouchMove(e));
  }, []);

  const handleTouchMove = (event: React.TouchEvent) => {
    event.preventDefault();
  }

  return (
    <div className="App">
      <div className="scroll-off" ref={divRef}>
        {/* この要素の中だけスクロールを無効にしたい */}
      </div>
    </div>
  );
}

さすがにこれはいまいちですよねぇ。というわけで最初に戻って

function App() {
  const handleTouchMove = (event: React.TouchEvent) => {
    // ...
  }

  return (
    <div className="App">
      <div className="scroll-off" style={{ touchAction: 'none' }} onTouchMove={handleTouchMove}>
        {/* この要素の中だけスクロールを無効にしたい */}
      </div>
    </div>
  );
}

でいいかなということに。

アウトプットする人の凄みを感じる

COVID-19の流行に伴い、多くの情報がネットに流れているけど、仕事しながら大量のアウトプットをする人を見ていてすごいなあと。まぁ、論文を書くことが仕事という人もいらっしゃるとは思いますが。

2011年も同じだったのかな。当時はネットでトンデモ書いてる人ばかり観測されていたけど(そして今も同じ人達が3密は嘘だの言っている)。

よく読んでいるのは中澤先生のWebサイトで、時系列のメモは今年の1月6日というごく初期からの流れが追えてとても参考になります。

西浦先生などもどれだけ早くから動かれていたかがわかります。

忽那先生のブログも量が多くて、1つのテーマからこんなによく書けるなと驚きます。3/8時点の知見をまとめた総説 新型コロナウイルス感染症(COVID-19)もすごいボリュームです。

クラスター対策班のCOVID-19への対策の概念(PDF)というスライドもボリュームもさることながら2ページ目の図のわかりやすさとか、これだけやれば、政府の動きが比較的マシだったのもこのおかげなのかなと。

自分の専門外のこと(=地球上のほとんどのこと)について、自分の頭で考えることも必須だけど同時に専門家の知見も頼るべきと思いますが、専門資格を持っていてもトンデモなことを言ってしまう人が多い世の中、誰に頼るか自体が難問になっている気がします。COVID-19については、概ね以下のnoteに書かれている人は信頼できるのかな、というのが今時点の感想です。

私家版コロナ情報源デッキ