先日、USBメモリに入れたPDF17ページ分の印刷(2in1設定)をセブンイレブンとローソンでやったのだが、印刷が終わるまでの時間にだいぶ差があった。
結論からいえば、
大量印刷かつ2in1なら、ローソン一択
ということになるが、
1. なぜそのような結論にいたったか
2. システム的な違いをエンジニア目線で考察
についてまとめていきたいと思う。
結論
10枚以上の印刷を2in1でやるならローソンがおすすめ。
おそらく以下のような流れで印刷するため、ローソンの方が処理速度が早い
セブン: PDFを都度USBから読み込み、処理して印刷
ローソン: 選択したPDFをすべてメモリ内に格納し、メモリ上で結合して印刷
経緯
先日、PDF17ページ分を2度印刷する機会があった。
この17ページは、
片面印刷
2ページを1ページにする
で印刷したい。
最寄りのコンビニは、セブンイレブンとローソンなのだが、
当日は電車に乗る予定だったので、駅に近いセブンイレブンでUSBプリントを行った。
セブンイレブンに到着すると50代くらいの男性と女性がそれぞれ一人でプリンターにならんでいた。
少し待っているとそれぞれプリンターの使い方がわからなかったようで、先にプリンターを使わせてもらうことになった。
しかし、セブンイレブンは、17ページの印刷がまあ遅い。
とにかく遅い。
(多分、5分ぐらいかかった。後ろに二人待ちがいたので、なおのこと遅く感じた。)
これ以上先に使わせてくれた二人を待たせるわけにはいかないので、諦めてローソンに移動した。
ところがローソンでは、同じ分量のPDFを印刷したところ、1分もかからず終了した。
セブンイレブンで5分以上またされていたので、これにはとても感動した。
プリンターひとつとってもユーザ体験がこれほどまでに異なるのかと思ったので、
なぜここまで処理速度が異なるのか考察したいと思う。
各コンビニの印刷までの手順
まずは、印刷までの手順をまとめてみる。
セブン
- USBプリントを選択する
- USBを指す
- USBメモリ内のファイルを選択する(選択できるのは1ファイルのみ)
- 印刷設定を選ぶ(片面印刷、2in1)
- 印刷開始
印刷開始後、プリンターの画面にはn/17(1ページ目ならnは1)が表示され、nが進んで行くたびにページ処理中10%のような表示が出ていた。ページ処理中が100%になって表示が消えたあと、1枚印刷された。 - 印刷終了
- USBを取り出す
ローソン
- USBプリントを選択する
- USBを指す
- USBメモリ内のファイルを選択する(選択できるのは20ファイル)
- USBを取り外す
- 選択したファイルから印刷したいファイルを選ぶ
- 印刷設定を選ぶ(片面印刷、2in1)
- 印刷開始
印刷開始後はほぼタイムリーに1枚ずつ印刷された。 - 印刷終了
考察
注意:あくまで推測です。根拠はまるでないので、その点ご注意ください。
手順を改めて確認してみるとおそらくセブンは、USBメモリ内のPDFを読み込み、2in1するのに都度USBに接続しているように思える。
プログラムで実装するときのイメージとしては、
- USBに接続
- USB内のPDFの対象ページを読み込み、メモリに保存する
- メモリ上にあるページを2in1にする
- メモリ上に生成した2in1を印刷する
のような感じ。
一方、ローソンは、
- USBに接続
- 1つのPDFを全ページ読み込む
- USB接続を切断
- メモリに読み込んだい全ページを2in1する
- メモリ上に生成した2in1を印刷する
のようになっていると推測できる。
違いとしては、USBメモリへの接続回数。
セブンのUSBへの接続は、n/2回(n=PDFの総枚数)
一方、ローソンは、最初の接続1回のみ。
一般的にメモリ上のデータにアクセスするより、物理デバイス上のデータにアクセスするのは時間がかかる。
仮にメモリ(RAM)を2020年に主流のDDR4、USBメモリの接続規格をUSB2.0だとすると、
そのデータ転送速度は、およそ290倍近く差が出る。
そりゃ290倍のデータ転送速度に時間がかかるとすると実際に印刷するのに時間がかかるのは納得できる。
またFileI/Oの回数もきっと異なるので、よりローソンの方が高速に処理できるはず。
※・・・メモリ(RAM)とUSBメモリの詳細な違いの説明は以下の通り。
DDR4は、17GB/s(ギガバイト毎秒)という転送速度を持つとされている。
これをメガバイト単位に換算すると(1ギガバイト = 1024メガバイトなので)以下のようになる:
17 GB/s x 1024 (MB/GB) = 17408 MB/s (メガバイト毎秒)
一方、USB 2.0の最大伝送速度は480Mbps(メガビット毎秒)。これをメガバイト毎秒に換算すると:
480 Mbps ÷ 8 (bit/byte) = 60 MB/s (メガバイト毎秒)
以上から、DDR4メモリとUSB 2.0のデータ転送速度を比較すると、DDR4は理論上1秒あたり最大17408 MBを転送できるのに対し、USB 2.0は理論上1秒あたり最大60 MBを転送できることになる。
これは、DDR4メモリの方がUSB 2.0よりも約290倍高速であることを意味する。
実際には、メモリアクセスやUSBデータ転送にはプロトコルのオーバーヘッドやシステム環境による遅延があるため、これらの理論値が現実のパフォーマンスを完全に反映するわけではないが、MHz速度オーダーのメモリとMbps速度オーダーのUSBとの間には、大きなスピードの差があることは明らかである。
まとめ
ここまでセブンとローソンのプリンターの処理速度の違いについて考察してみた。
正直、10枚以上の印刷はそうそうやるもんではないので、そこまできにしなくてもいいかもしれないが、
大容量印刷をやるかたはぜひローソンがおすすめ。
エンジニア的観点で一つ気づきをあげるとすれば、
PDFファイルが印刷中に書き換わらないのだから、都度USBからデータを取得するのではなく、
最初にUSBからデータを読み込んで、処理するアーキテクチャの方が適している
(もし処理中にデータがかわるのであれば、都度読み込む方がいい)
があげられる。
もっと汎用的な気づきに昇華させるのであれば、以下としたい。
ユーザ体験としてあるべき形を考えて、実装を検討する
都度読み込むのか、一度にすべて読み込むのかは、そのデータに変更があるかどうかを基準に検討する
プリンター一つとっても実装次第でかなりユーザ体験が異なるので、
常によりよいものを作る精神でモノ作りをしていきたい。
コメント