布団が俺を呼んでいる

丘山大一のぶろぐ

VRでB規格サイズの紙が無くなるのではないかと想像する

想像というか妄想シリーズ。
kindle unlimitedも開始されました。

VR上で、「紙」の規格が統一されるのではないか?

先に「本」の規格が統一されるのではないか? というエントリを書きましたが、当然その前に「紙」の規格ができるはずです。
なぜなら、複数の紙が重なった本を表現するよりも、単一の紙を表現する方が簡単だからです。
フツーに考えて、簡単な規格から模索・策定されるでしょう。
さて、その時どの紙から規格化されるのか、と考えたとき、もっともA規格だと思われます。
国際標準規格らしいですし、実物の紙をトレースするならまずこれをベースにするでしょう。
で、おそらく、拡大・縮小表示するにしても、「A規格サイズをベースに」拡大・縮小するようになるのではないかと想像するわけです。
そうすると、「現物の紙を取り込んでVRで見る」あるいは「VRのデータを紙で出力する」ということをすることになった場合、「A規格サイズ」とくにA4をベースにアプリケーションが開発されるのではないでしょうか。
そうなってくると、データのやり取りが「A4サイズデータでくれ」みたいになる気がします。
逆に、なんぼ日本人になじみがあろうとも、世界的にマイナーな「B5」なんてサイズをベースにするメリットは小さいです。いや、むしろネックになりかねません。
VRによって駆逐された最初のものは、まさかの紙の規格であった……なーんてことになるかと想像しました。


そして最終的には

さらに、「VR上ではA4サイズで表示する」みたいな規格が世界なんちゃら組織とかで決定し、
さらにその後、さながらWeb業界のXMLとJSONのごとく全く別の規格がデファクトスタンダードになっちゃうことまで想像した。



コクヨ PPC用紙 共用紙 FSC認証 64G B5 500枚 KB-35N

新品価格
¥402から
(2016/4/20 22:45時点)

コメントを書く

布団が俺を呼んでいる | Delphi プロジェクトファイルのコードの中で無名メソッドを使うとメモリリークが発生する

布団が俺を呼んでいる

丘山大一のぶろぐ

Delphi プロジェクトファイルのコードの中で無名メソッドを使うとメモリリークが発生する

なんか Delphi 話多いなー。
無名メソッド、anonymous methods とか言われるヤツです。
正直、可読性が落ちると思っているのですが、サクッと書くときに便利なのでちょいちょい使います。

現象

下記のようなコードを書くと、メモリリークが発生します。
program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
  b :Boolean;
begin
  ReportMemoryLeaksOnShutdown := True; // メモリリークを検出
  b :=
    (function : Boolean
    begin
      Result := True;
    end
  )();
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

対応

無名メソッドを使わないようにするしか思いつきませんでした……
program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
function hoge : Boolean;
begin
  Result := True;
end;
var
  b :Boolean;
begin
  ReportMemoryLeaksOnShutdown := True; //メモリリークを検出
  b := hoge;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

原因予想

全然分かりません。
・Delphiの無名メソッドはインターフェースでどうたかこうだか、
・インターフェースは参照カウントがどうたかこうだか、
・でもってインターフェースの破棄のタイミングはEnd 節の実行時でどうたかこうだか、
・でもプロジェクトファイルにあるのは「end.」(ピリオド)であって「end;」(セミコロン)じゃないなー
とか妄想してみた。

似たような事例はStackoverflow で見かけるので、きちんと探せば原因が分かると思うのですが。
探すのめんどい(ぇ)

若干ですが仕様という名のバグじゃないか疑惑もあったりなかったり。

え、無名メソッドを使うなって?

だって楽なんだもん。
特にメソッド名を考えなくて済むあたりが楽。
……命名苦手なんよ……


コメントを書く