新型コロナウイルス関連

COVID-19新規感染者1万人超(東京)

東京の1日の新規感染者数が今日1万人を超えて11,227人となりました。病床使用率は34.3%で小池知事が緊急事態宣言発出要請の基準としてあげた50%には至っていませんが,このペースで増え続ければ今月末には緊急事態宣言発出に至ると予想されます。

第5波の際の緊急事態宣言発出時(2021年7月12日)の入院者数1947人,第4波の緊急事態宣言発出時(2021年4月25日)の入院者数は1812人,第3波の緊急事態宣言発出時(2021年1月8日)は年末年始を挟んだためか入院者数3178人です。入院者数が2000人が緊急事態宣言の目安と言えそうです。昨年秋以降の小康期にどれだけ病床を増やせたかによって今後の病床逼迫状況が変わりますが,医療スタッフを短期間に増員することは不可能であることから,大きく変わることは考えにくく,近く緊急事態宣言発出となろうかと予想しています。

東京都のCOVID-19新規感染者数と入院者数の推移
東京都のCOVID-19新規感染者数と入院者数の推移
新型コロナウイルス関連

COVID第6波

東京都の新規感染者数とその7日移動平均,入院者数をグラフ化してみました。第6波はかなりの急なカーブとなっています。

政治的な要因で多少の前後はあるにせよ,これまでは入院者数が2千人を超えたあたりで緊急事態宣言の発出となっています。第6波の場合は,1月末には二千人に達してしまうスピードです。覚悟しておいた方がよいでしょう。

データは東京都福祉保健局のオープンデータを使用しました。

雑記

産業廃棄物処理

10年ほど使ったレーザー複合機をリプレースしたので,古いものを処分しました。「産業廃棄物」に該当するため,自治体では改修してくれず,産廃業者に依頼しました。モノクロレーザ複合機を家庭用して使っていたと主張するのは無理がありますから仕方がありません。産業廃棄物処理はルールが厳しく,厳格に管理されています。マニフェストという書類を業者間で受け渡していくようです。

雑記

NTTドコモ通信障害の思わぬ影響

先日,NTTドコモで通信障害がありましたが,スマホもタブレットもNTTドコモは使っていなかったので,「他人事」と思っていました。ところが,今朝,警備会社から何度も警備開始/警備終了の操作が行われたことを伝えるメールが大量に届いたのです。誰かが侵入したのかと思い,警備会社に問い合わせてみました。すると,警備会社との通信にNTTドコモの回線が使われており,通信障害中に発生したイベント情報が,通信が回復した時にまとめて飛んだということでした。

JDK

Java 17 新機能(4)

JEP 412: 外部メモリと外部関数 (Incubator)

Javaランタイム外部のメモリにアクセスしたり,ネイティブ関数を呼び出すためのAPIを提供します。以前からJNIなどの方法でアクセスすることは可能でしたが,実装が大変である上にパフォーマンスにも課題がありました。より洗練されたAPIを提供しようという意図で開発されています。

  • 外部メモリの割り当て
  • 構造化された外部メモリの操作とアクセス
  • 外部リソース(リソーススコープ)のライフサイクル管理と外部関数の呼び出し

以下のプログラムではC言語の文字列の長さを返すsize_t strlen(const char *s)を呼び出します。コンパイル時には,–add-modules jdk.incubator.foreignオプションをつける必要があります。また,実行には–add-modules jdk.incubator.foreign オプションに加えて,–enable-native-access=ALL-UNNAMEDオプションもつける必要があります。

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodType;
import jdk.incubator.foreign.CLinker;
import jdk.incubator.foreign.FunctionDescriptor;
import jdk.incubator.foreign.MemoryAddress;
import jdk.incubator.foreign.MemorySegment;
import jdk.incubator.foreign.ResourceScope;
import jdk.incubator.foreign.ValueLayout;
public class ForeignFunction01
{
    public static void main(String[] args) throws Throwable
    {
        strlen("Hello World!");
    }
    private static void strlen(String string) throws Throwable
    {
        MethodHandle strlen = CLinker.getInstance().downcallHandle(
            CLinker.systemLookup().lookup("strlen").get(),
            MethodType.methodType(long.class, MemoryAddress.class),
            FunctionDescriptor.of(CLinker.C_LONG_LONG, CLinker.C_POINTER)
        );
        MemorySegment str = CLinker.toCString(string, ResourceScope.newImplicitScope());
        long length = (long)strlen.invokeExact(str.address()); 
        System.out.printf("Length of string \"%s\" is %d\n", string, length);
    }
}

警告:実験的なモジュールを使用しています: jdk.incubator.foreign
警告1個
WARNING: Using incubator modules: jdk.incubator.foreign
Length of string “Hello World!” is 12

JEP 414: ベクトルAPI (Second Incubator)

ベクトル演算をサポートしているCPUに向けてベクトル演算をサポートするAPIを提供するものである。

JDK

Java 17 新機能(3)

JEP 407: RMIアクティベーションの削除

Java 15から「非推奨」とされていたRMIアクティベーション機能,具体的にはjava.rmi.activationパッケージが削除されています。

JEP 409: シールクラス

Java 15からプレビューとして含まれていたシールクラスが正式に導入されました。内容については過去の記事をご参照ください。

JEP 410: 実験的なAOTコンパイラ,JIT コンパイラの削除

実験的なコンパイラAOT(ahead-of-time)コンパイラとJIT(Just-in-time)コンパイラが削除されています。AOTコンパイラはJEP 295で導入されたものです。またJITコンパイラはJEP 317で導入されたものです。

JEP 411: 削除に向けたセキュリティマネジャーの非推奨

セキュリティマネジャーに関連するほとんどのクラスとメソッドが非推奨となっています。また実行時にセキュリティマネジャーをインストールしようとしたり,コマンドラインでセキュリティマネジャーを有効にしようとすると警告メッセージが出力されます。

SecurityManagerTest.java:5: 警告:[removal] java.langのSecurityManagerは推奨されておらず、削除用にマークされています
SecurityManager manager = new SecurityManager();