年賀状印刷というのは、簡単にやっていれば簡単に済むはずなのだが、一旦トラブルになると訳が分からなくなる。今回、2通りのデザインを使って印刷しようとしたのが、それがトラブルの原因となったようだ。

そのトラブルは話がややこしいので今回はパスするが、最後に何とかなったところで、宛名の印刷に時間がかかるというので、どうなっているのか調べてみた。

今回使っているのは筆王というソフトウェアである。宛名印刷を実行すると、[印刷][スキップ][連続印刷][中止] という4つのボタンが表示されたパネルが出てくる。そこで[印刷]を押したのだが、1枚しか印刷されない、というのだ。

これは実は当たり前で、[印刷]というボタンは画面に表示されている宛名を1枚だけ印刷する、という機能なのだ。だから、続けて[印刷]を押せば、リストにある次の1枚が印刷される。もう一度押せば、次の1枚が…ということになっている。

これでは面倒というのなら、作成した住所録の宛先全てを一度に印刷するために[連続印刷]という機能が用意されているのだ。そこで、一度に印刷したいのなら[連続印刷]を押すといい、と説明したのだが、では[印刷]はどのようなときに使うのかというので、画面に出ている宛先が間違っていないか、1枚ずつ確認しながら印刷したいときに使えばいい、と説明した。

すると、やはり確認しながら印刷したいので、[印刷]で1枚ずつ確認しながら、ということになった。ここまでは大雑把にいって間違っていないのだが、それにしてもやけに時間がかかる。様子を見ていると、[印刷]を押したら、実際にプリンタからハガキが出てくるまで待ってから次に進んでいるのだ。

このソフトウェアは、画面に出た宛先が合っていたら、印刷されるのを待たずに次々と[印刷]を押していけばいいように出来ているのである。本には「1枚ずつ確認しながら印刷するには、[印刷]ボタンをクリックする」としか書かれていない。プリントを待たずに次々と[印刷]ボタンを押してもいい、ということが分からないのだ。

まあ確かに、印刷ミスを防ぐ意味では、1枚ずつ結果を確認しながら進めた方が安全ではあるが、こういう所がユーザーに分からないこともあるという事実を、ソフトウェアやマニュアルを作る側も知っておく必要がある。
AD

読者の公開処理を行いました

テーマ:
29日からがんばっていたのですが、非公開になっていた読者の公開処理がやっとできました。対応が遅くなって申し訳ありません。

先の記事と同じ原因ではないかと思われますが、未公開の読者を選択して[チェックした読者を公開・非公開する]のボタンを押したら Ameba Blog のトップページにジャンプしてしまって、公開処理されない状況になっていました。

今日になって、何十回も同じことを繰り返して、やっと公開に成功した次第です。
AD

Ameba Blog が壊れているようだ

テーマ:
「失敗したときに戻れるようにしておく」の記事を登録するのに、10回位やり直した。

最初の関門。ログインして[記事を書く]ボタンを押したら、「アメーバブログユーザーのみご利用可能です。ログインして、ご利用ください。」というログイン画面の表示になってしまう。

login

いちいちログインするのは面倒なので、[記事を書く]ボタンから別ウィンドウを開くことにした。これだと、3~4回に一度は記事の編集画面を開くことに成功する。

つまり、再ログインしなくても、記事を編集できる。これは、本当にログアウトの処理が行われているのに実行できてしまうのなら、極めて重大なセキュリティホールが存在することを意味するが、多分、実際はログアウトしていないのにログアウト状態だと誤判定してログイン画面を出してしまっているだけなのだろう。

第二の関門。記事を書いて登録しようとすると、次のようなメッセージが表示される。

auto logout

記事の編集中に自動ログアウトになりました。
下記の本文をコピーした後、再度ログインし記事を編集してください。

もちろん「下記の本文」は、段落とか全部除去された状態になっていて、コピーして編集など現実的に不可能な状態に改変されているのだが、Ameba Blog でその場で文章を書くと勝手にログアウトされることは以前から経験しているから、その場で書くようなことはあり得ない。あらかじめ文章を作成しておき、それをコピーするだけである。

つまり、文章の作成時間は、猛烈に大雑把に多めに見積もっても1分以内。多分、10秒とか、そんな程度なのだが、それでも勝手にログアウトされてしまうのだ。

こんなシステムでもランキングを集計できるというのは、「あっぱれ」としか言いようがない。
AD
ヒロシです。フィンローダの裏ご意見番を表示させようとしたら「存在しない BLOG ID です」といわれました。

冗談はおいといて、どうも今まで使っていたプリンタの調子がいまいちである。A4普通紙に出すにはあまり問題ないのだが、葉書をプリントするときに、つまったり、位置がずれたりするのだ。年賀状を出す都合もあるので、その場の勢いでプリンタを買うことにした。

たまたまプリンタ売り場で声をかけられたので、ハガキがつまりにくいプリンタはないのか、とたずねてみた。ついでに、大量にプリントすることもあるのだが、と言ってみた。すると、紙送りの機構上、上から下へスルーするようにハガキを置けるので、比較的紙詰まりが少ないのではないか、と紹介された機種があった。

これが Canon のPIXUS iP3100 という機種である。実売価格で1万5千円程度だ。既にプリンタがあるのに無駄遣いではないかという意見もあったのだが、このあたりの金額は微妙で、年賀葉書のプリントを頼むコストとか、印刷速度とか考えると、無駄にはならないような気がしたのである。金銭的には全部手書きというのが一番安いのだが、時間をコストに加えることも必要だ。ネタにもなるし。

ということで、早速ネタである。このプリンターをインストールするのは簡単だ。なにしろ「かんたんスタートガイド」というドキュメントが入っている位だから簡単に決まっている。実際、簡単だったが、一つ落とし穴があった。

※「かんたんスタートガイド」はキヤノンのサイトのPIXUS iP3100の製品マニュアルページからダウンロードできる。

その前にインストール手順について。「おまかせインストール」を選択するように書いてあるが、付属ソフトがいくつかあって、これをCドライブにインストールするとハードディスクの残りが厳しい。ということで、Dドライブにインストールするために、カスタムインストールを選択した。カスタムインストールといっても、ドライブを変更するだけなら別に難しいことはない。

トラブルは、プリントヘッドの位置調整という作業で発生した。このプリンタは、インストールのときにプリントヘッドの位置調整という手順が必要になるらしい。「かんたんスタートガイド」の11番目の項目である。

[ヘッド位置調整]の画面が表示されたら、オートシートフィーダにA4サイズの普通紙を1枚セットし、[実行]をクリックする

と書いてある。そこで、普通紙をフィーダーに入れて、[実行]をクリックしようとしたのだが、何と間違って[OK]を押してしまったのだ。すると、プリントヘッドの位置調整を行わずに次の手順に進んでしまうのである。

うっかりミスと言われたらその通りではあるが、今までの手順で[OK]を何度か押していたから、間違えるのも仕方ないと思うのだが、ここで[戻る]ボタンが押せたら何の問題もないのだ。しかし、[戻る]ボタンは存在しないのである。つまり、うっかりしたら最後、元には戻れない。これはユーザーインターフェースとしてよくない。操作ミスに対する対処法を用意しておかなければならない。[戻る]ボタンを用意するだけで済む話なのである。

もし何かの理由で[戻る]という操作を行わせることができないのなら、プリントヘッドの位置調整を行っていない場合には警告のメッセージを出してユーザーに確認するべきである。もっとも、これはあまり親切なUIではない。警告・確認のメッセージは無意識にYesと答えることがあるからだ。

この場合、あえて意図的にプリントヘッドの位置調整をパスしてインストールできるようにしたいのなら、[位置調整をしないで次へ進む] のような選択肢を用意すべきである。その場合も、[戻る]があった方がいい。また、必ず調整させたいのなら、ここで[OK]が押せるということが間違っているのである。
これまで書いたことから推測すると、PSX の残り時間表示には、次のような問題点があるのではないかと想像できる。なお、PSX の中のプログラムを見たわけではないから、あくまで想像に過ぎないということはあらかじめご了承いただきたい。

まず、最初の1~2%あたりの誤差が非常に大きいことから、「残りの処理時間を予測するときには最初のデータは無視する」という大原則を守っていない可能性が高い。もしかすると、初期処理の時間までデータ転送時間に入れて計算しているのではないかと思われる。

次に、1%、2%、3%…というように、時間が進むにつれて、予測時間の誤差が少なくなっていく。ということは、「最近の処理速度」ではなく、「今まで処理した全データに対する速度」を元にして全処理時間を予測しているのではないかと思われる。

もしこれらの想像が当たっているのなら、修正するのは割と簡単なはずだから、今後のバージョンアップで改善されることも期待できるかもしれない。

ただ、PSXの残り予想時間には、これ以外にもおかしな所がある。例えば、処理0%のときにも予想時間が表示される。このとき、確か、残り0分0秒と表示されていたはずだ。

残りが0分0秒というのは「もう処理が終わっている」という意味だから、これは意味のない表示というよりも、明らかに間違った表示である。もしデータが不足しているために処理時間を予測できないのなら、このような表示を行ってはいけない。そういう意味では、これはプログラムの欠陥だと言ってもいい。もっとも、実害がないという意味で、欠陥のレベルが非常に低いことも確かなのだが。

もう一つおかしいのは、ファイナライズの残り予測時間である。ファイナライズというのは、DVDにデータを書いた後に、いろいろ後始末をする必要があって、その種のことを意味する。この件は他のブログにも書いたような気がするが、PSX の場合、残り0分1秒と予測を表示してからがやけに長いのだ。

実際に時間を測定したことがないので数値を紹介できないのだが、数秒以上というのはまず間違いない。もしかすると十数秒以上かかっているかもしれない。ということは、数百~千%以上の誤差があることになる。これはもう予測に使う速度云々という問題ではなく、根本的に何かロジックが間違っているか、あるいは、ファイナライズが終了してから、さらに後始末のための処理があって、それに時間がかかっているのではないかと思われる。

結局、ユーザーは残り1秒という表示をみて、「あーやっとダビングが終わった」と思って、さあ取り出そうと、eject のボタンに指をかけて、その状態で数秒以上待たされる、という滑稽な状況になるというのが現実である。

こんな製品を出していると評判を落とさないかと他人事ながら心配なのだが、とりあえず、こういう場合は「残り1秒です」で表示を止める位なら、数字を出さずに「後処理をしています」のように表示した方がいい。もっとも、ファイナライズというのは後処理という意味にもとれるから、これも表現としておかしいのだが。あるいは、思い切って、残り予想時間を1秒、0秒、-1秒、-2秒…のようにカウントしてしまうと面白いのではないかと思う。

蛇足しておくが、わざわざカウントダウンする理由は、動きが止まってしまうと、プログラムに異常が発生して停止しているのか、それとも動作に時間がかかっているだけなのか、見ても判断できないからである。数値に意味がないのなら、せめて「動いている」ということを表現するという意味だけでも持たせた方がいい。もちろん、正確に時間を予想して表示するのがよいことは言うまでもない。
落とし穴といっても常識の範囲内なのだが、データ転送の処理は、始まるときに、特に時間がかかることが多い。準備のために余計な処理が必要になるからである。だから、転送速度を計算するときには、最初のデータは無視して、途中から速度を計算しなければならない。

データを転送する場合は、ある程度の量をまとめて送るような仕組みになっている。この「まとめた」データの塊のことをパケットと呼ぶ。携帯電話でパケット通信という言葉が出てくるが、それのことである。

ということで、常識的な話だが、予測のために通信速度を求める場合は、最初の数パケットを無視して、残りのパケットと経過した時間を使う、という方法がまず考えられる。しかし、ここでもう一つの落とし穴がある。データ通信速度は、最初から最後まで一定だと考えてよいのだろうか?

経験的に、たいていそう仮定しても構わない。ただ、実際にやってみると、数十分も転送を続けるような場合は、多少は変化することもないわけではない。

昔は今のようにブロードバンドの環境が家庭レベルで普及していなかった。家庭で回線を常時接続にするなんてことは、現実的に不可能だった。そこで、使った時間だけ電話代を支払うことになるのだが、即ち、いかにして電話代を節約するか、ということが重要なテーマになる。この電話代が深夜に安くなるため、ある時刻になった瞬間に通信を始めるユーザーが結構いた。ということは、その時間にいきなりサーバーにアクセスが殺到して、急に通信速度が低下することになる。

通信速度が変化することも想定して、残りの処理時間を正確に予測するためには、例えば、現在の通信速度と残りのデータ量を使って、残りの処理時間を計算すればいい。将来の速度変化まで推測することも考えられるが、実際、そこまでするのは難しいと思われる。

ではその「現在の通信速度」はどうすれば求めることができるか。直前に処理したパケットだけを用いて速度を計算すればどうか。この場合、逆に速度がうまく求められずに誤差の原因になることがある。データ通信にはエラーがつき物だからだ。

「エラーが発生したために、ダウンロードしたファイルがおかしかった」という経験をした人はあまりいないと思う。これは、データ通信のプログラムが常にエラーをチェックしていて、エラーが発生したパケットをもう一度送りなおす、という処理を自動的に行なうからである。この処理をリトライと呼んでいる。

リトライにより、最終的にgetしたデータは、全て問題のないデータになるはずだ。ただ、リトライが発生すると、同じパケットを2度以上送ることになるから、その間の通信速度が一時的に低下する。つまり、あまりにもその瞬間のパケットだけを元にして計算すると、リトライが発生したときに速度が倍以上変化してしまい、極端に外した予測時間が出てしまうことがある。

そこで、前回紹介したプログラムでは、直近の10パケットを使って速度を求め、終了時間を予測するようにしてあった。なお、これは工夫でも何でもなくて、プロトコルの解説書に書いてある程度の、ごく当たり前の処理なのである。

(つづく)
今から十数年前に、ニフティサーブというパソコン通信サービスがあった。というか、実はまだあるのだが、R25で紹介されているように、来年3月でパソコン通信サービスは終了することになっている。

当時のデータ通信速度は 2400bps である。実測値で、最大で毎秒200バイト程度の速度だ。今使っているBフレッツだと、実測値で毎秒2Mバイト以上出ることがあるから、今の約1万分の1の速度ということになる。

当時、プログラムや音楽、画像などのデータを転送するのに、B Plus という通信プロトコルを使っていた。その機能を組み込んだパソコン通信ソフトもあったが、どうも使いにくかったり、有料だったりしたので、フリーの通信ソフトと組み合わせて使うために、B Plus プロトコルを追加処理として使うためのプログラムを自分で書いたことがある。

このプログラムを書くときに、基本的なデータ転送ができることは当然として、もう一つ欲しかったのが、残り時間をできるだけ正確に予測する機能だった。

処理時間を予測することは簡単である。小学生でもできる。処理速度を求めて、残りのデータの量に対して処理に必要な時間を計算するだけだ。既に処理したデータに対する処理速度は、今まで処理したデータ量をかかった時間で割れば求めることができる。

例えば、60,000バイトを1分で処理したら、1,000バイト/秒の処理速度となる。この状態で さらに100,000バイトを処理するには、100秒、すなわち1分40秒かかると予測できる。単純な話だ。

ところが、処理速度を求めるところで、落とし穴がいくつかある。

(つづく)
PSX というハードディスクレコーダーを使っている。ちょうど PlayStation2 が故障したときに発表されたので、ゲームもできるし便利だろ、程度の安易な気持ちで買ったのだが、いきなり時刻が1分以上狂って番組の頭を録画し損なったり、編集中に暴走したり、ある意味楽しいマシンではある。

余談はおいといて、PSX にはダビング機能がある。ハードディスクに録画した番組を DVD に焼くのである。DVD に約2時間の番組を焼くのに、20~30分程度かかる。この間、じっと待っている程暇ではないから、何か別のことをしているのだが、終わったときに携帯にメールを送ってくれるとか、チャイムで知らせてくれるとか、そういう機能はない。単に「終わった」という趣旨の画面になるだけだ。

メールはともかく、なぜ処理の終了時にチャイムを鳴らす程度の処理ができないのか、よく分からない。電子レンジや洗濯機が処理完了したときにチャイムを鳴らすという機能は、前世紀から実用化されているのである。もしかしたら、本当は鳴らしているのに私が気付いていないのかもしれない。あるいは、設定すれば鳴らせるのかもしれない。

ちなみに先ほどメールと書いたのは、私のPSXはLANに接続してあるので、その気があればメールを出すことは可能に違いないのだ。ハードディスクレコーダーが SPAM の送信サーバーになるという指摘もあるような時代だから、多分間違いないと思う。もっとも、私は携帯電話を家の中では携帯していないから、それはあまり意味のある処理ではないのだが。

しかし、私の場合、、ダビング中に「何か別のことをしている」というのは、まず間違いなくパソコンに向かって何かしているのである。ということは、パソコンから状態がチェックできれば非常に便利なのだ。家電がネットワークで繋がるのが当たり前になるには、まだ数年かかると思うが、AV機器だけでもという条件を付ければ、来年あたりには何とかして欲しいものだと思う。

また余談が長くなったが本題に戻ると、このPSXのダビング処理の実行中に、面白いことが起こる。常に発生するとは限らないのだが、最初に残り時間が60分とか100分とか、そういう表示になることがあるのだ。

1%

20分でダビングできるはずのものが60分というのは不可解だが、もっと不可解なのは、処理が1%ずつ進んだときに、残り時間が30分といった感じで半減するのである。

2%

2%

その間、30分待ったかというと、1分も経過していない。これはどういうことか?

(つづく)
先日、郵便を出そうとして「アッ」と思った。ポストが年賀郵便モードになっていたのである。いつもは一般の郵便物を左に入れるのだが、このモードになっている期間は、左には年賀郵便、それ以外を右に入れるというルールらしい。そのときは一瞬の判断で何とか間に合った。



出したかったのは一般郵便だったから、元日に配達されては困る。このあたりのルールはよく分からないのだが、常識として、年賀と書いたら元日に配達してくれることは分かる。しかし、年賀と書いてあるポストに普通郵便を入れたらどうなるのか、というのは分からない。

一瞬で判断できないと、間違って普通の郵便物を年賀の方に入れてしまう人もいると思う。このような郵便物の入れ間違いを防ぐには、どうすればいいか?

1. 年賀郵便は別のポストにいれるようにする。

今までの郵便を出す習慣を崩さずに投函できる。しかし、年賀郵便を通常のポストに入れてしまうというミスは発生するかもしれない。

2. ポストが通常の仕様ではないことを、無意識においても判別できるような工夫をする。

年賀郵便というラベルは、ポストの入れ口の上に表示してあった。ここは郵便を出すことに慣れてしまったらいちいち見ていない。これが今回危なかった原因になっている。ポストの口には、雨などが入り込むのを防ぐための蓋があるから、この蓋の上に「年賀郵便」と書くとどうだろうか。

3. 入れ間違いは仕方ないから、投函された内容を郵便局員がチェックする。

年賀郵便のポストの時点での分別はあくまで参考情報と割り切るのである。現状はこうなっているのかもしれない。
THE BIG ISSUE という雑誌というコラムを以前書きましたが、今回はその番外編です。

今日12/22、02:33からフジテレビの NONFIX というドキュメンタリー番組で「路上の未来~ホームレスライフ」が放送されました(今終わったところです)。この種のドキュメンタリーは過去にも何度か深夜番組で見た記憶がありますが、今回は、ホームレスの人たちが THE BIG ISSUE を売るという特集でした。

見覚えがある人もTVに出ていました。新宿西口にいた人です。一度は通り過ぎたのですが、次に前を通ったときに、疲れたのかタバコを吸っていたので妙に可笑しくなってそこで買ったのです。そりゃ一日中立っていたら疲れますね。

第6回に、「毎回1ページでも2ページでもいいから「私はこうしてホームレスになった」というような独白記事があったら」と書いたら、販売員のストーリーが毎号1ページ掲載されているというご指摘がありました。FROM THE STREETS というコーナーです。1ページのインタビュー記事です。

私は毎号買っている訳ではないので、今から書くのは19,20号の2つしか見ていません。で、率直に言いますが、申し訳ないのですが、私には全然面白くないのです。1ページにうまくまとまった記事ですが、簡単に言えば「ホームレスだけど頑張ってます」という、ただそれだけの内容です。あっそう、としか言い様がなくて、これなら現場で納期が1か月も遅れている所で担当者に逃げられてどうしようか、というSEの話の方がよほどリアルなのです。

今見たテレビの番組はそれに比べて実にリアルでした。THE BIG ISSUE の売り上げ程度でどうやって暮らせるのだとか、その前はどうやって食っていたのかとか、販売員が350人いて、その中で自立できた人はまだ20人しかいないとか、そういう話が出てくる。THE BIG ISSUE の紹介記事は「人生がおかしくなった」みたいに書いてくれるけど、どうして、どんな風におかしくなったのか、というのが分からないのです。それはインタビューというスタイルの限界ではないかと思います。

松井計さんが書いた「ホームレス作家」という本があります。この方はホームレス失格だと自称しています。確かに路上生活の話は出てきますが、ホームレスというには何か違和感があります。でもまあリアルなのです。だからそういう意味では面白い。

これが本人が自分で書くのと、インタビュアーに伝えるということの、差なのかもしれません。