スキップしてメイン コンテンツに移動

多分週刊チラシの裏 (Sep 14-20, 2020)

自分にとってのニュースは自らまとめるしかないと思い至ったので興味深かったものをまとめる。

Moment.js 開発終了

JavaScript における日時処理の定番であった Moment.js の開発がメンテナンスモードへの移行を宣言した。

歴史のあるライブラリであり、オブジェクトが可変で flux アーキテクチャと相性が悪いとか、自前の国際化リソースが全部バンドルされているので昨今の Dead Code Elimination (a.k.a. Tree-Shaking) を伴うバンドラでもサイズが縮まらないといった問題が指摘されていた。 互換性を保ったまま問題を解決できる見込みがなく、非互換な新バージョンをリリースして移行の混乱を生むよりは設計段階で問題を解決している別ライブラリに移行せよとのこと。

参考に個人的な見解を述べると、代替候補として挙げられている dayjs はお勧めしない。タイムゾーンのサポートなど多くの場合に必要な機能がプラグインで実現されており、それらプラグインは dayjs オブジェクトにメソッドを実行時に追加したり差し替えたりするので TypeScript や flow の型定義と一致しなくなるためである。結局利用するプラグインを適用したバージョンの型定義ファイルを自分で作る羽目になるのだ。

dayjs に限らず TypeScript や flow はプラグイン機構を持った JavaScript ライブラリと相性が悪いので、オールインワンなモジュールを採用する方が良い。代替候補の中では最初に挙がっている Luxon が無難である。

20年来の銀英伝ファンからみた今回の揉め事

「銀河英雄伝説」という古いスペースオペラ小説を原作とするアニメについて以下のツイートが炎上した件:

どう読んでもただの感想だが、話題がジェンダーかつ発言者の津田正太郎教授の所属が「社会学部」ということで表現の自由戦士の標的にされたもの。

「社会学者1が『作品を書き換えろ』2と製作者にクレームしている3」という曲解が拡散され誹謗中傷に疲弊した発言者は謝罪の表明に追い込まれた。扇動者の中には「ヘルシング」の平野耕太も混じっているなど病巣の根は深い。

Free Speech Warrior

上の話題に関連して、そういえば表現の自由戦士って英語圏だとどう呼ばれているのだろうと思ったらそのまま「表現の自由戦士 (Free Speech Warrior)」であるらしい。

Bill Gates Sr. が逝去

Bill & Melinda Gates 財団の代表であり Microsoft 創業者の一人でもある Bill Gates の父が亡くなった。94 歳だった。

Microsoft の二年にわたる水中データセンター実験が終了し引き揚げ

「データセンターごと海に沈めればタダで冷却できるんじゃね?」という一見馬鹿の発想を Microsoft が大真面目に実証実験したら案外上手くいったという話。

Project Natick と呼ばれるその実験で、大型シリンダーにサーバーを詰め込んでスコットランド北部はオークニー (Orkney) の海底に沈めたのが 2018 年の 5 月。 二年と数ヶ月の運用中に故障したサーバは 855 台中 8 台で、これは通常の 1/8 の割合であったとのこと。これにはシリンダー内に充填された窒素によって部品の劣化が抑えられたことと、デリケートな機械の周りを動き回るヒトの不在が寄与していると推測されている。 オークニーの電力はすべて再生可能エネルギー (風力と太陽光) で賄われているが、実験期間中エネルギー供給に問題は一切発生しなかったという。

自然災害やテロへの対策としても水中データセンターは魅力的な構想であり、さらに環境負荷や信頼性の面でも有望な結果が得られたということで、期待がもてる話である。

Nintendo 3DS が生産終了

Nintendo がおおよそ十年にわたる Nintendo 3DS シリーズの生産を終了した。

全バリエーションを総合した通算販売実績は 2020 年 6 月まででおよそ 7,600 万台とのこと。同世代の据置機は Wii U で、こちらは 1,400 万台にも届かなかったので、当時の Nintendo を文字通り支えたゲーム機である。

発売当初は過去のコンソールより高価であったことや 3D 酔いが特に小児に多発したことで売上が伸びず、ハードウェアの改良と大幅な値下げ、老眼にも助かる XL (日本では “LL”) モデルや目玉機能の裸眼立体視を省いた 2DS の投入などなりふり構わぬテコ入れが行われた。 特筆すべき点としては Nintendo コンソールの中で最初にダウンロード版ゲームのオンラインストアが提供されたことが挙げられる。

直接的な後継ではないものの、2017 年に発売された携帯・据置両用の Nintendo Switch は既に 6,000 万台以上の売上を記録している。

ランサムウェアが病院の急患受付を停止させ患者が死亡

史上初かも知れないサイバー攻撃による直接的な死者が出たやも、という話。

デュッセルドルフ大学病院がランサムウェア攻撃を受けたために急患に対応できず、30 km 以上離れた別の医療施設に搬送される途中で患者の女性が死亡した。 本来この攻撃は病院を標的にしたものではなく身代金の要求は近隣の大学宛だったとのこと。誤りを知らされた攻撃者は攻撃を停止したが遅かった。

捜査は依然途上だが、犠牲者の死の原因が遠隔地への搬送であったと結論づけられればこのサイバー攻撃は殺人事件として扱われるとのこと。

Mozilla Thunderbird が PGP 暗号化とデジタル署名を実装

Mozilla のメールアプリケーションである Thunderbird のバージョン 78 に OpenPGP ベースの暗号化とデジタル署名機能が含まれる。 最初にこの機能が要望されたのは 21 年前のことである (当時は Firefox / Thunderbird の前身である Mozilla Application Suite)。当時は合衆国の暗号輸出規制への懸念や PGP 自体の妥当性の論争があったために実装が見送られたとのこと。

Twitter の肖像トリミング機能に人種バイアスがある

Twitter の画像付ツイートは画像が大きい場合トリミングされたものを表示するが、単に画像の中央ではなく重要そうな部分を切り抜くようになっている。 おそらく機械学習で生成されたであろうこのトリミング範囲決定モデルに人種バイアスがありそうだという報告。

白人 (Mitch McConnell) と黒人 (Barack Obama) を載せた画像に対して両者の位置を入れ替えても常に白人である前者がトリミングされている。

Scientific American 誌が 175 年の伝統を破り大統領選の Joe Biden 支持を表明

二世紀近い歴史を持つ合衆国の一般向け科学雑誌である Scientific American が民主党の大統領候補である Joe Biden への支持を表明した。

伝統的に政治的な意見表明を行って来なかった同誌も COVID-19 パンデミックへの対応をはじめ科学的知見を無視した Trump 陣営の失政は看過できなかったとのこと。

フランスでは GPL 違反は著作権侵害ではないらしい

GPL が著作権 (Copyright) に基いた著作者の (合法的な) コピー所有者に対する利用許諾であるという見方は万国に普遍的なものではない、という話。

フランスのソフトウェア開発会社 Entr’ouvert が通信事業者 Orange (旧称 France Télécom) の GPL 違反をソフトウェアの不正コピーであるとして知財法廷に訴えたが昨年棄却され、裁判費用の負担を命じられた。 フランスは大陸法の国である。英米法の著作権に相当するものは「著作者の権利 (Author’s Rights)」 であり、許諾は契約の一種という扱いになる。

フランスでは訴訟の種別毎に対応する法廷が違い、著作権や知的財産に関わる訴訟には Tribunal de grande、契約に関する訴訟は Tribunal de Commerce が対応するらしい。 原告が訴え出たのは前者だったが、作成に数年を要した法廷報告によって「GPL に基く原告と被告両者の関係は契約であるから本件は知財法廷の管轄ではない」という判断が下された。


  1. 社会学者ではない。↩︎

  2. 言っていない。「変更せざるをえない気がする」という感想を恣意的に曲解したものか。↩︎

  3. していないし、する気もないとのこと。↩︎

コメント

このブログの人気の投稿

多分週刊チラシの裏 (Sep 28 - Oct 04, 2020)

Chrome Web Store が有料 Chrome 拡張の取扱を終了 Chrome Web Store で提供されている有料 Chrome 拡張及びアプリ内課金 API の両方が 2021 年 1 月いっぱいで廃止される。 開発者はそれまでに代替となるサードパーティの課金 API に移行し、購入済ライセンスの移行手段も用意する必要がある。 この決定の発表時点で新規の有料ないしアプリ内課金のある Chrome 拡張の新規登録は終了している。実際のところ 2020 年 3 月時点で既に「一時的に」停止されており、その措置が恒久化されただけとの由。 シェルスクリプティングには長いオプションを使え 「短いオプション (e.g., -x ) はコマンドライン上での略記である。スクリプトにおいては自分や将来の同僚のためにも長いオプション (e.g., ---do-something ) を与える方が理解が容易だろう」という主張。 異論の余地なく正論である。 CobWeb - COBOL to WebAssembly Compiler COBOL から WebAssembly へのコンパイラ。いやマジで。 Cloudflare が何を思ったか同社のサーバレス環境である Workers に COBOL 対応を追加した際 の成果物である。 COBOL から C へのトランスレータである GNU COBOL と C コードをコンパイルして WebAssembly を出力する Emscripten から成っており、他の言語に比べて軽量なバイナリを生成するとのこと。 「ウチではそんな風にはやらないんだ (“We don’t do that here”)」 昨今ソフトウェア開発のコミュニティでも Code of Conduct を用意するところが増えてきたが、コミュニティの文化を明文化するのは難しい。 長大な「べからず集」は息苦しいし、肯定的なガイドラインは時に抽象的で実効的に使えない。問題となるようなふるまいの動機が善意であった場合は特にそうだ。 仮に優れたガイドラインがあっても、それに基いて人を実際に咎めるのは骨が折れることである。初中やればコミュニティ内でも疎まれる。 話の分かる相手ならそれでもまだ説得する意義もあるが、Web 上の対話で当事者双方が納得し合っ...

OCaml で Web フロントエンドを書く

要旨 フロントエンド開発に Elm は堅くて速くてとても良いと思う。昨今の Flux 系アーキテクチャは代数的データ型と相性が良い。ところで工数を減らすためにはバックエンドも同じ言語で書いてあわよくば isomorphic にしてしまいたいところだが、Elm はバックエンドを書くには現状適していない。 OCaml なら js_of_ocaml でエコシステムを丸ごとブラウザに持って来れるのでフロントエンドもバックエンドも無理なく書けるはずである。まず The Elm Architecture を OCaml で実践できるようにするため Caelm というライブラリを書いている。俺の野望はまだまだこれからだ (未完) Elm と TEA について Elm というプログラミング言語がある。いわゆる AltJS の一つである。 ミニマリスティクな ML 系の関数言語で、型推論を持ち、型クラスを持たず、例外機構を持たず、変数の再代入を許さず、正格評価され、代数的データ型を持つ。 言語も小綺麗で良いのだが、何より付属のコアライブラリが体現する The Elm Architecture (TEA) が重要である。 TEA は端的に言えば Flux フロントエンド・アーキテクチャの変種である。同じく Flux の派生である Redux の README に TEA の影響を受けたと書いてあるので知っている人もいるだろう。 ビューなどから非同期に送信される Message (Redux だと Action) を受けて状態 (Model; Redux だと State) を更新すると、それに対応して Virtual DOM が再構築されビューがよしなに再描画され人生を書き換える者もいた——という一方向の流れはいずれにせよ同じである。 差異はオブジェクトではなく関数で構成されていることと、アプリケーション外部との入出力は非同期メッセージである Cmd / Sub を返す規約になっていることくらいだろうか。 後者は面白い特徴で、副作用のある処理はアプリケーションの外で起きて結果だけが Message として非同期に飛んでくるので、内部は純粋に保たれる。つまり Elm アプリケーションが相手にしないといけない入力は今現在のアプリケーションの完全な状態である Model と、時系列イベ...

Mac から iPhone のカメラを起動して写真を直接取り込める

Via: The Verge ID セルフィーや (物理) 書籍のページスキャンなど携帯電話のカメラを使って写真を取り込むことは日常的な所作になっているが、写真の使い途が何かの申し込み用 Web フォームなどで iPhone より Mac の方が操作し易いときなどは億劫だ。Mac 組込の FaceTime カメラは 720p とか 1080p しかなくて非力すぎ、かといって iPhone で一旦撮影したものを Photos から探して AirDrop するのも面倒である。 実は macOS Mojave / iOS 12 以降には Continuity Camera という機能がある。これを使うと Apple 製の Mac アプリケーションから iPhone / iPad のカメラを起動して、余計な中間コピーを残すことなく写真を Mac に転送できる。 使い方は簡単で、対応している Mac アプリケーションのコンテキストメニューに “Import (or Insert) from iPhone (or iPad)” という項目がある。“Take Photo” だと一枚、“Scan Documents” だと複数の写真を (歪み補正しつつ) 連続で撮影して転送できる。 対応 Mac アプリケーションは Finder のほか iWork (Keynote, Numbers, Pages), Mail, Messages, Notes, TextEdit となっている、のだが実は Preview でも使える。同様にコンテキストメニューあるいは “File” メニューから起動できる。

多分週刊チラシの裏 (Oct 19, 2020 - Feb 26, 2021)

週刊とは言ったが毎週刊とは言ってないという言い訳。 C++ のコンパイルを高速化する小技 ビルドシステムやツールを変更せずともコーディングだけで改善できるコンパイル時間短縮テクニック。 #include を減らす インライン化を明示的に避ける 関数オーバーロードの可視性を制限する 公開シンボルを減らす の 4 本。 歯医者で歯を治したら記憶能力を失った話 歯医者で簡単な治療を受けた日から後、記憶が 90 分しか保持できなくなった英国の軍人の話。まるで「博士の愛した数式」だが実話である。 DRPK で売られていた Sim City っぽいゲームのリバースエンジニアリング 平壌市内のアプリストア (物理) で売られていた Sim City 風ゲームがインストールに失敗してライセンス認証で止まってしまったのでなんとか動かせないものかとリバースエンジニアリングしてみた話。 日本にあっては DPRK のデジタル事情というと 3G セルラーが現役とか国内 Web サイトのリストがポスター一枚に収まるとか何故かコンピュータ将棋の古豪とかの断片的な情報が伝え聞かれる程度だが、近頃は Android タブレットでゲームなどもできるらしい。 国内のインフラ及びエコシステム事情に合わせて元々フリーミアム + アプリ内課金モデルだったものが買い切り 5,000 KPW (< 1 USD) になっているなど、我々が失った自由が我々よりも不自由な (はずだと我々が信じている) 国に残存しているのは皮肉だろうか。 typosquatting は単なる typo じゃ済まない typo を狙って人気のあるドメインやソフトウェアに類似した名前をつける手法 (typosquatting) は人を辟易させるのみならずセキュリティの脅威である。 IQT が 2017 年から 2020 年にかけて Python ライブラリの中央リポジトリである PyPI において行った調査で、メジャーなライブラリに名前を似せたマルウェアが 40 個確認されたとのこと。 その内 16 個が単純なスペルミス狙い (e.g., “urlib3” vs. “urllib3”) で、26 個は正当なパッケージと混同するような名前 (e.g., “nmap-python” vs. “pytho...

開発環境の構築に asdf が便利なので anyenv から移行した

プロジェクト毎に異なるバージョンの言語処理系やツールを管理するために、pyenv や nodenv など *env の利用はほとんど必須となっている。 これらはほとんど一貫したコマンド体系を提供しており、同じ要領で様々な環境構築ができる非常に便利なソフトウェアだが、それを使うことで別の問題が出てくる: *env 自身の管理である。 無数の *env をインストールし、シェルを設定し、場合によりプラグインを導入し、アップデートに追従するのは非常に面倒な作業だ。 幸いなことにこれをワンストップで解決してくれるソリューションとして anyenv がある。これは各種 *env のパッケージマネージャというべきもので、一度 anyenv をインストールすれば複数の *env を簡単にインストールして利用できる。さらに anyenv-update プラグインを導入すればアップデートまでコマンド一発で完了する。素晴らしい。 そういうわけでもう長いこと anyenv を使ってきた。それで十分だった。 ——のだが、 ここにもう一つ、対抗馬となるツールがある。 asdf である。anyenv に対する asdf の優位性は大きく2つある: 一貫性と多様性だ。 一貫性 “Manage multiple runtime versions with a single CLI tool” という触れ込み通り、asdf は様々な言語やツールの管理について一貫したインタフェースを提供している。対して anyenv は *env をインストールするのみで、各 *env はそれぞれ個別のインタフェースを持っている。 基本的なコマンド体系は元祖である rbenv から大きく外れないにしても、例えば jenv のように単体で処理系を導入する機能を持たないものもある。それらの差異はユーザが把握し対応する必要がある。 多様性 asdf はプラグインシステムを持っている。というより asdf 本体はインタフェースを規定するだけで、環境構築の実務はすべてプラグイン任せである。 そのプラグインの数は本稿を書いている時点でおよそ 300 を数える。これは言語処理系ばかりでなく jq などのユーティリティや MySQL のようなミドルウェアも含むが、いずれにしても膨大なツールが asdf を使えば...