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

投稿

9月, 2020の投稿を表示しています

多分週刊チラシの裏 (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年来の銀英伝ファンからみた今回の揉め事 「銀河英雄伝説」という古いスペースオペラ小説を原作とするアニメについて以下のツイートが炎上した件: 銀河英雄伝説のリメイク。3期以降も続くのかな。もしそうなら、男女役割分業の描き方は変更せざるをえない気がする。旧アニメのままだと、さすがに時代にそぐわない。作品として大変に面白いのは踏まえたうえで。…なんてことを書いたら炎上するかな。 — Shotaro TSUDA ( @brighthelmer ) September 11, 2020 どう読んでもただの感想だが、話題がジェンダーかつ発言者の津田正太郎教授の所属が「社会学部」ということで表現の

私家版 TypeScript 抽象データ型表現

TL, DR; 読んだ: TypeScriptの異常系表現のいい感じの落とし所 | Developers.IO 方向性はとても同意できるがデータがオブジェクトである積極的な理由がないのが分かる。今日び new Success(...) もあるまい。 構造的型付が原則なんだから Namespace Import する前提で型定義と関数を公開してしまった方が単純な FP スタイルで書けて勝手が良い。 そういうわけで僕なら こう書く。 使い方 import * as Result from './result' ; function doSomethingFailable () : Result . T < number , Error > { const r = Math . random () ; return r < 0.5 ? Result . success (r) : Result . failure ( new Error( 'Something failed.' )) } function orDefault < V > (result : Result . T < V , unknown >, defaultValue : V) : V { return Result . match (result , { failure() { return defaultValue ; } , success(value) { return value ; } , }) ; } const result = doSomethingFailable() ; console . log (orDefault(result , NaN)) ; // Prints a number < 0.5, or NaN. 自明な flatMap / map がないのでより低水準な変換として match を提供しているが、もちろん型の利用者が合意できるなら Optional に類する定義を採っても良い: function map < V , U

購読ニュースフィードの整理

ほとんど Web のメディアにしか触れない情報弱者なのでニュースフィードの選択は大事である。 社会不安が増大している時分にタブロイド的な話題で怒りを転がすのは生産的でないので整理した。 削除したもの Engadget Japanese 技術系ニュースサイトの筆頭格である Engadet の日本語版、のはずのもの。 原語版の翻訳は少なく抄訳であることも多いが問題はむしろ転載元にないライターの編集で、意図的に地名が除かれた COVID-19 という名称を無視して 「中国武漢を震源地とする新型コロナウィルス」と書き連ねる (ものによっては COVID-19 と無関係な記事にも捩じ込む) 1 / 2 / 3 / 4 / 5 だとか、The Verge が 「YouTube が中国共産党への 中傷 を含むコメントを削除」 と報じた見出しを 「 批判 のコメントを自動削除」 に書き換えるだとか印象操作が露骨になってきたので読むのを止めた。 ガジェットのレビューを別にすればほぼ転載であり、どうしても日本語で読みたいなら同じ Verison Media でも TechCrunch Japan のライター陣の方が理性的である。 はてなブックマーク 自身をソーシャルブックマークサービスと思い込んでいる炎上ニュース一言掲示板。 インセルとゲーマーゲーターの炎上会場に成り下がった感がある。技術系の話題はまず上位に来ず、稀に上がってきたときには二日遅れである。要するにスラドの轍を踏んでいる。 追加したもの The Register 日本語の技術ニュースサイトの転載ソースその1。 Meltdown / Spectre 脆弱性のリーク報道 で知った人も多いと思う。 英国拠点だからか知らないが見出しが駄洒落だったりふざけていることが多い。 The Verge 日本語の技術ニュースサイトの転載ソースその2。 Vox Media の技術系ニュースサイト。BLM 運動や多様性など業界の社会的な関心事についても記事がある。 Hacker News ド定番だが最近まで購読していなかった。Slashdot に規律とユーザの節度を加えるとこうなる、といった体。

BuckleScript が ReScript に改称し独自言語を導入した

Via: BuckleScript Good and Bad News - Psellos OCaml / ReasonML 文法と標準ライブラリを採用した JavaScript トランスパイラである BuckleScript が ReScript に改称した。 公式サイトによると改称の理由は、 Unifying the tools in one coherent platform and core team allows us to build features that wouldn’t be possible in the original BuckleScript + Reason setup. (単一のプラットフォームとコアチームにツールを統合することで従来の BuckleScript + Reason 体制では不可能であった機能開発が可能になる) とのこと。要は Facebook が主導する外部プロジェクトである ReasonML に依存せずに開発を進めていくためにフォークするという話で、Chromium のレンダリングエンジンが Apple の WebKit から Google 主導の Blink に切り替わったのと似た動機である (プログラミング言語の分野でも Object Pascal が Pascal を逸脱して Delphi Language になったとか PLT Scheme (の第一言語) が RnRS とは別路線に舵を切って Racket になったとか、割とよくある話である。) 公式ブログの Q&A によると OCaml / ReasonML 文法のサポートは継続され、既存の BuckleScript プロジェクトは問題なくビルドできるとのこと。ただし現時点で公式ドキュメントは ReScript 文法のみに言及しているなど、サポート水準のティアを分けて ReScript 文法を優遇することで移行を推進していく方針である。 上流である OCaml の更新は取り込み、AST の互換性も維持される。将来 ReScript から言語機能が削除されることは有り得るが、OCaml / ReasonML からは今日の BuckleScript が提供する機能すべてにアクセスできる。 現時点における ReScript の

Ruby 3.0 は2020年内リリース

via: Hacket News プログラミング言語 Ruby のリポジトリに バージョン番号を 3.0 に上げる変更 がコミットされた。 Ruby の新版は例年クリスマスにリリースされており (cf.  Ruby Releases )、このままいくと2020年12月25日にリリースされるはずだ。 Ruby 3.0 は Ruby 2.0 比で三倍の高速化を果たす “Ruby 3x3” として、マイナーバージョンアップ毎に GC の改良をはじめとした種々の性能向上策が導入されてきた。 2018年の 2.6 に至って JIT コンパイラが試験的に導入されたこともあり、現時点は Ruby 2.0 と比較して 二倍の性能は得られている とのこと。主要なベンチマーク対象である SNES エミュレータの optcarrot も同程度。年末までどれだけ目標に漸近できるかが楽しみである。 なお Ruby 3.0 では キーワード引数に非互換な変更 がある。2.7 時点で警告が出るようになっているので移行には注意のこと。