コンビニあればプリンタいらず!?

最近のコンビニ複合機はどんどん進化してますね。

以前は白黒コピーだけだったのに、カラーコピーができるようになり、L版の写真印刷にも対応し、そして今回紹介する話題である家のパソコンや自分のスマホからネットワークプリントができるように進化しているようです。


コンビニの複合機をプリンタとして利用する場合の流れは以下の通りです。

1.コンビニのネットワークプリントサービスに会員登録する。
 ↓
2.印刷したい文書ファイル(MS OfficeやPDF)や画像ファイルを用意する。
 ↓
3.ネットワークプリントサービスのサイトにログインする。
 ↓
4.印刷したい文書ファイルや画像ファイルをアップロードする。
 ↓
5.コンビニに向かう。
 ↓
6.複合機のメニューから登録した会員IDとパスワードでログインする。
 ↓
7.アップロード済ファイルから印刷したいものを選択する。
 ↓
8.お金を入れ、印刷する。
 ↓
9.帰宅途中に野良猫をモフる。


コンビニによって会員登録が必要なネットワークプリントサービスが異なります。
代表的なものだと以下のサービスにあります。

ネットワークプリントサービス
名前がそのままって感じです。
サークルKサンクス、セイコーマート、ファミリーマート、ローソンに対応しています。
運営会社がSHARPなので、これらのコンビニはシャープ製の複合機を利用してるんですね。

ネットプリント
セブンイレブンに対応しています。
運営会社が富士ゼロックスなので、セブンイレブンは富士ゼロックス製の複合機を利用してるんですね。


ネットワークプリントサービスを利用するにあたってのメリット、デメリットをまとめてみました。

・メリット
対応している複合機があるコンビニであれば店舗や場所を選ばない。
複合機は定期的にメンテナンスされているので、インク切れ、トナー切れ、紙切れの心配がない。
専用のネットワークプリンタドライバをインストールすることで、形式に限定されずに印刷データの送信が可能。
電子写真方式なので、カラー印刷でもインクジェットプリンタより印刷が早い。
2アップ、4アップ、両面印刷の設定をして印刷可能。
年間の印刷枚数が少ない場合は、ネットワークプリントを利用する方がコストが安い。

・デメリット
近くにコンビニがあっても自宅のプリンタに素早さでは勝てない。
一度に印刷できるファイル数やファイルサイズに制限がある。
コンビニで印刷物の誤植に気付いても、直ちに印刷し直しができない。
ネットワークに繋がっているパソコンでないと印刷データを送信できない。
印刷費用だけを見ると、自宅プリンタを利用した場合の5~6倍のコストになる。


ご参考までに自宅のプリンタとネットワークプリントサービスを利用する場合のコストを試算してみました。

・自宅のインクジェットプリンタでA4印刷する場合
インクジェットプリンタ:10,000円/台
A4用紙500枚:500円/束→1円/枚
 A4白黒印刷:3円/枚→インク代含めて4円/枚
A4カラー印刷:9円/枚→インク代含めて10円/枚

・ネットワークプリントを使用する場合
 A4白黒印刷:20円/枚
A4カラー印刷:60円/枚

ここで白黒:カラーの印刷比率を2:1とし、印刷コストはおおよそ以下になります。

・A4印刷100枚の場合
インクジェットプリンタ:  600円
 ネットワークプリント: 3,333円

・A4印刷500枚の場合
インクジェットプリンタ: 3,000円
 ネットワークプリント:16,667円

インクジェットプリンタはプリンタ本体の購入費用と純正インクカートリッジの交換費用が掛かるので、500枚くらいまでならネットワークプリントの方が安価になるのではないかと思います。
どちらも利点・弱点がありますので、上手く併用するのが良さそうですね。


なお、この記事の本質から離れるので詳細には説明しませんが、ゼンリン住宅地図の印刷サービスもあるようです。
A3サイズで1枚300円の価格になりますが、特定地域の住宅地図を買うほどではないけど、特定ページの住宅地図を入手したい場合には便利なサービスだと思いました。

ゼンリン住宅地図プリントサービス

合わせてご活用ください。

遺伝子検査

実は遺伝子検査をしました。
そう、あの愛しい三毛猫の子供が俺の子供じゃない可能性が浮上してorz

…じゃなくて、この記事を書こうと思って4年以上の期間が過ぎてしまいました。
ええ、2012年秋から書こう書こうと思ってやっと書き上げましたΣ

会社の福利厚生パッケージを調べてみたところ、遺伝子検査の割引プランがありました。
遺伝子検査と言っても、三毛猫の子と自分の親子鑑定ではなく、以下の2パターンの検査になります。

・肥満遺伝子検査
・アルコール代謝関連遺伝子検査

自分の体質を知りたかったので、検査をしてみることにしました。
遺伝子検査の方法は簡単です。

申込をすると、遺伝子採取キットが送付されます。
キットの採取棒で口の頬の内側を擦ります。
その後、付属のプラスチックケースに格納し、返送します。
半月から1ヶ月で検査結果が送られてきます。

それぞれについて解説します。


・肥満遺伝子検査
日本人の肥満は、りんご型(糖質で太る)、洋なし型(脂質で太る)、バナナ型(筋肉がつきにくい)、アダム・イブ型(遺伝子に変異なし)の4種類に分類できるそうです。
りんご型は男性に多いようです。一方、洋なし型は女性に多いとか。

自分の結果はりんご型でした。
内臓脂肪が付きやすく、お腹がぽっこりしやすい体型に似てることからりんご型と命名されたそうです。

りんご型の特徴は、糖分の代謝が苦手であり、ご飯や甘いものが好きな傾向があるようです。
食べる順番は野菜・海藻類→タンパク質→炭水化物が良いそうです。
効果的な運動方法は有酸素運動と腹筋で、要するにお腹がでないように筋肉をつけて下さいってことですね(笑)

その他、検査結果には分類別の特徴、効果的な食べ方、参考になるレシピの情報が含まれてました。


・アルコール代謝関連遺伝子検査
アルコールは肝臓が2つの酵素を利用して分解します。
最初の酵素はADHなどのアルコール脱水素酵素で、アルコールをアセトアルデヒドに分解します。
次の酵素はALDH2などのアセトアルデヒド脱水素酵素で、アセトアルデヒドを酢酸に分解します。
酢酸まで分解されると、筋肉や他の臓器により二酸化炭素と水に分解されます。

酔っ払うと蚊に刺されやすいのは、二酸化炭素を発生させるとは聞きましたが、この様な分解順序だからなんですね~。

話を戻しまして、お酒を飲める人と飲めない人の違いは酵素の分解能力に違いがあるようです。
今回の検査キットではALDH2に着目して結果が送られてきました。

白型、赤型、赤赤型の3つに分類される中で自分の結果は赤型(ALDH2酵素の分解能力が非常に低い体質)でした。
あれです、お酒を飲むとADHなどでアセトアルデヒドまでは分解され、顔は赤くなるけど、その後飲めない体質って奴です。
確かに、飲み会とかでもビール一杯飲み切る前に顔が赤くなるので、お酒の燃費の良さはプリウス並みだと自負しております(笑)

その他、こちらも分類別のアルコール分解時間や飲酒量の目安の情報が含まれてました。


自分の体質を調べてみたいと思う方は、申し込んでみては如何でしょうか。
もしお勤めの会社で福利厚生パッケージサービスがある方は、割引プランがあるかどうか調べてみると良いと思います。


そんな訳で、4年以上気付いてはモヤモヤ、気付いてはモヤモヤしてましたが、思い残すことはなくなりますm(_ _)m

今後は、最近行ってない猫喫茶を思い出してモヤモヤしようと思います。
猫分が不足しとる!

2012年3月にイギリスのApple StoreでSIMフリー iPhone 4Sを購入しました。
当時はSIMフリー iPhoneは日本で発売されておらず、格安SIM業者もそう多くはなかった時代でした。

あれから4年が過ぎ、iOS 7.1.3で騙し騙し使用していましたが、ハードやソフトの性能的にもそろそろ厳しいかなと思うようになってきました。
その間、新iPhoneの発売を何度も経験しましたが、2012年以降のスマホの流行は大画面化だった為、なかなか買い換えられずにいました。

そんな中、やっと買いたいと思えるiPhoneが発売されました(≧∇≦)
…と思いきや、iPhone SEが品薄になっているようで、今から購入を希望しても入手まで1ヶ月待ちとかになる勢いです。

iPhone Mania - 「iPhone SE」品薄でau、予約者に対しお詫びメール配信

しかし、iPhone SEの品薄って、人気がありすぎて入手できないように見えないのも確かです。
iPhone発売初日恒例の名物となっているApple Storeの行列もなく、予約も初日にあって以降は低調だったという話も聞きました。

それにも関わらず品薄というのは、AppleがiPhone 6sよりかは売れないと思って生産を抑えていたにも関わらず、思いのほか購入希望者がいたということでしょうか?
もしくは何らかの理由で製造の際に歩留まりが発生しているとかでしょうか?

さて、iPhone SEの需要があると思った理由は以下の通りです。

1. 片手で操作できる。
2. iPhoneなのに小型サイズ
3. ポケットに入れられる
4. メイン機よりサブ機に良い?

大画面スマホで困るのが、混雑した電車内で画面を操作するときとのこと。左上の端っこと操作できない為、イライラすることもあります(笑)
iPhone SEは片手で操作したいと思う人にちょうど良いサイズかなと思います。
メーカーを選ばなければAndroidの小型スマホはありますが、特に日本では利用者が多いiPhoneのラインナップとして、iPhone 6sの機能をほぼ落とすこと無くiPhone SEをリリースしたのは流石だと感じました。
自分の場合、メインはXperia(Android端末)がある為、iPhoneはワイシャツの胸ポケットに入れて運用しています。
iPhone 5sくらいまでなら胸ポケットやズボンのポケットにすっぱり入るサイズなのですが、iPhone 6sともなると、ポケットからはみ出てしまい、落とさないか心配でした。

iPhone 4Sのりようはそろそろ限界かなと思っていたときだったので、iPhone SEの発売はかなり助かりました。
早く製品が潤沢になって、米国Sprint版のSIMフリー iPhone SEを入手したいものです。

SIMフリー iPhoneについては、iPhone SE入手後に、iPhone 4S購入の経緯を含めて、記事にできればと思っています( ̄∇ ̄)ノ♪ 

電気風呂

自宅に風呂の設備があっても銭湯や温泉に行きたい。
何故か?
それは電気風呂があるからです(≧∇≦)

初めて体験したときは、「何じゃこの痛いだけの感電風呂は~!」って思いました。
しかし、疲れた体に効くことに気付いてからは、修行と称して、痛みと格闘しながら色々な場所をほぐせるよう色々な角度で電気風呂に入ってます。
電気風呂の効能について調べてみると、電気風呂の原理は低周波治療器なんですね。

Helthil - 怖い?本当にビリビリくるの?一度は試したい!噂の健康電気風呂!

低周波により、筋肉を強制的に動かすことで血行を良くするということでしょうか?
「痛いところがビリビリした。」という話も聞きますが、凝り固まっている箇所も含めて筋肉を強制的に動かす仕組みであることを考えると正しい表現だと思います。
そして、自分も凝り固まっている箇所を電極に近づけると痛みを感じたので、激しく同意できます(笑)

日曜日に電気風呂に入って全身をマッサージしたら、自宅に戻っても冷え性の手がポカポカの状態だったのでビックリしました。
そして、普段、手や腕の血行が如何に悪いのか実感した次第ですorz

ちなみに、低周波、中周波、高周波って相対的なもので全ての場合でこの周波数という定義はないみたいですね。
Healthil - 電気風呂で血流促進!目的別に改善効果のある食べ方を紹介します!曰く、電気治療器業界では大体以下のような周波数で分類されているようです。

低周波:0~1,000Hz
中周波:1,000~10,000Hz
高周波:10,000Hz以上

最近、疲れ気味な状態なので、時間を見つけて銭湯に通いたいと思います( ̄∇ ̄)ノ♪

開発環境の都合上、クロスドメインに対応しなければ行けませんでした。
Google Chromeの設定で「--disable-web-security」オプションを利用していましたが、2016年3月になってから利用できなくなりました。
これが利用できないと開発が進まないので調査したところ、Chrome 49に更新されたことが原因というオチでした…

Stack Overflow - cors - Disable-web-security in Chrome 48 and 49 beta
Issue 575690 - chromium - `--disable-web-security` works with an empty value for `--user-data-dir` - Monorail

上記サイトを確認する限り、--disable-web-security」を使用する場合、「--user-data-dir」オプションを併用する必要があるようです。
「--user-data-dir」はChromeのキャッシュやブックマーク等、ユーザデータフォルダを指定するオプションです。
仕事用Chromeとプライベート用Chromeを使い分けたい場合等に便利です。

ITmediaエンタープライズ - 3分LifeHacking:“遊び用ちょろめ”と“仕事用Chrome”を使い分ける

それで実際の設定ですが、Windows 7、8、8.1等であれば以下のような設定にすれば以前と同じ動きになります。
chrome.exe --user-data-dir="%UserProfile%\AppData\Local\Google\Chrome\User Data" --disable-web-security
※「%UserProfile%\AppData\Local\Google\Chrome\User Data」が元々のユーザデータディレクトリです。

Chrome 49以降で--disable-web-security」を利用する場合に、「--user-data-dir」オプションの指定を必須にしたのがバグなのか仕様なのかは定かではありませんが、セキュリティ強化の一環と考えると仕方ないのかなと説明が付きそうです。。

--disable-web-security」オプションはクロスドメイン対策の機能を無効にするので、本来ならば発生しないクロスサイトスクリプティングやクロスサイトリクエストフォージェリが発生する穴を空けることになります。
--disable-web-security」オプションを付ける場合、「--user-data-dir」オプションによりユーザデータディレクトリを別の場所に指定することで、悪意のあるユーザの仕掛けにより情報を窃取される可能性が減るのではないかなと思いました。

しかしながら、突然のセキュリティ対策オプションの予告ない変更は困りますね。
開発が大詰めになってるときに、今回の事象が発生し、大慌てでした。
そんなときリアルタイムでつぶやきがされ、情報が展開されるTwitterは便利だと思った次第です。

他の慌ててる人たちのご参考になれば幸いです。

Oracleを使用するシステムを開発していますが、自分が開発しているシステムと同じDBを使用する他システムのユーザ名が一致しないことに気付きました。
違いは、ユーザ名の大文字小文字の違いだけ。
調べてみたところ、Oracleのユーザ名について、デフォルトでは大文字小文字を区別しないんですねΣ

Archive Redo Blog - [Oracle] 11gではデフォルトでパスワードの大文字小文字を区別する
【Oracle FAQ】 - Oracle 11gにおける、ユーザ名の大文字小文字に関して

厳密にはデフォルトの設定では小文字で入力されたユーザ名も大文字として判断するってことのようで。
パスワードについてはOracle 11g以降は大文字小文字を区別するようになったようです。

確かに、SQL文も大文字小文字区別しないので、それでも特段の問題はなかったのかもですね。
そして、最近のセキュリティ事情からパスワードだけは大文字小文字を区別するようにしたということでしょうか?

前の記事の続きとして。

iPhoneとAndroidのスマホ2台持ちで悩むのが、電話帳の同期です。
以前は、auデータお預かりアプリを利用して、Googleコンタクト→Android本体連絡先→Androidデータお預かりアプリバックアップ→iPhoneデータお預かりアプリリストアの順でデータを移行させてました。
しかし、auデータお預かりアプリの仕様の為、メールアドレスが5件以上存在する連絡先は最初の5件のみに限定されて移行される為、その条件の連絡先は個別にデータ移行(QRコードやvCard)が必要でした。
もっと簡単な方法がないか調べてみると、すぐに情報が見つかりました。

それマグで! - Gmailの連絡先とiPhoneを同期する(cardDAV)

iCloudの連絡先を無効にし、GoogleコンタクトにCardDAVで接続すれば問題なし(≧∇≦)…っとそうは問屋が卸してくれませんでしたorz
CardDAVで接続してみても、全然アドレス帳が同期されませんでした。
原因を調査したところ、意外に厄介なものでした…

週刊アスキー - AndroidとWindowsのGoogle連絡先をiPhoneとMacでも完全同期

GoogleコンタクトからCardDAVで同期されるのは「Myコンタクト」に設定されている連絡先レコードのみだそうです。
しかも、「Myコンタクト」に登録されている連絡先は同期されても、Googleコンタクトで分類したグループの情報は連携されないとな…
見つけやすくする為に家族、学校別、店、メルマガ等で連絡先を分類しているのに、「Myコンタクト」でごちゃまぜになって同期されたら何の意味もないですよね。
どうにかしてGoogleコンタクトの連絡先とグループを同期する方法がないか調べてみましたが、情報が見つからず…
結局、以下の有料アプリを利用し、iCloud連絡先を利用しつつ、Googleコンタクトの情報を同期するしか方法がないとの結論に至りました。

Apple App Store - Google Gmail用コンタクト・シンク (Contacts Sync for Google Gmail with Auto Sync)

日本語には対応しているものの機械翻訳なのであやしい日本語になっていますが、使用に困るほどの文面ではありません。
このアプリを使用することで、GoogleコンタクトからiCloud連絡先、iCloud連絡先からGoogleコンタクト、または双方向の同期を実現してくれます。
また、GoogleコンタクトとiCloud連絡先の差分から同期の可否を決めることも可能です。
アプリを落とした時点では、最大40件までの同期に限定されていますが、動作確認で問題がなければ、アプリ内課金をし、同期件数を無制限にしましょう。
アプリ内課金のメニューは以下の通りでした。

1. 無制限の同期を:¥360
2. 自動同期:¥120
3. より大きな貢献をする:¥600
4. 貢献する:¥360

何気なくは分かるものの…いや、ここまで来ると何が何だか分からない(笑)
Contacts Sync for Google Gmail with Auto Sync(英文)を見たら意味が推測できました。

1. Unlimited Syncs:$2.99
2. Automatic Contact Syncing:$0.99
3. Make Larger Contribution:$4.99
4. Make Contribution:$2.99

ハイカラな訳し方をすると以下の様な文面でしょうか?

1. 無制限同期:¥360
2. 連絡先自動同期:¥120
3. 寄付(大):¥600
4. 寄付(小):¥360

最低限必要となるアプリ内課金は「1.無制限同期」です。
私は利用してませんが、GoogleコンタクトとiCloud連絡先を定期的に同期させたい場合には「2.連絡先自動同期」も購入しましょう。
このアプリは非常に便利だと感動された方は、「3.寄付(大)」、「4.寄付(小)」、またはその両方も購入してあげましょう。

そんなわけで、若干面倒な作業が残ったものの、Googleコンタクトを主たる電話帳としてiPhoneもAndroidも利用する方法に変更することができました。
いつか、CardDAVでグループも同期される日が来ることを願いつつ、自分への備忘録として、そして皆様のご参考情報としてこの記事を書き残したい思います( ̄∇ ̄)ノ♪

先日、スマホをXperia Z5に機種変しました。
以前からアドレス帳はGoogleを使用しているので、スマホの初期登録時にそのGoogleアカウントを設定したのですが、アドレス帳の表示が変になりました。

・Googleアドレス帳のみを使用しているつもりだが、Googleアドレス帳の内容が本体連絡先で表示される。
・その為、グループやアドレス帳が二重に表示される。
・Googleアドレス帳ではグループやアドレス帳が二重に表示されてはいない。
・本体連絡先のグループを非表示にしてもアドレス帳アプリで電話番号やメールアドレスの欄が二重表示される。(※以下を参照)

電車 猫三郎(でんしゃ ねこさぶろう)
電話(携帯):080-XXXX-YYYY
電話(携帯):080-XXXX-YYYY
メール(携帯):train@example.com
メール(携帯):train@example.com

このようなGoogleアドレス帳を選択してるにも関わらず本体連絡先が邪魔をする(?)事象はXperia acro HD IS12Sの故障時スマホ交換、Xperia Z SOL23の機種変時にも発生していた記憶があるんですよ。
その都度、色々調べて解決していた記憶があるんですが、今回も発生したとなると今後もあり得る事象ということで、対処方法を書き残したいと思います。
この状態でアドレス帳に追加・修正・削除の操作をして、データの二重登録や想定外の削除が発生したら嫌ですしね…

参考になったのは以下のサイトです。

物置っぽい何か - Androidで連絡先の同期が取れない問題の解決策

  1. Googleコンタクトにログインし、連絡先を連絡先をエクスポートする。(万が一のバックアップ)
  2. Android端末の[設定]アプリ→[ユーザ設定]→[アカウント]→[Google]→(対象のGoogleアカウント)より[連絡先を同期]をオフにする。
  3. Google Playより、[連絡先を削除]アプリをダウンロードする。
  4. [連絡先を削除]アプリの[Delete All]ボタンをタップし、Android本体内に残る連絡先/グループを全て削除する。
  5. Android端末の[設定]アプリ→[ユーザ設定]→[アカウント]→[Google]→(対象のGoogleアカウント)より[連絡先を同期]をオンにする。

この方法で無事に復元でき、めでたしめでたし…っとそうは問屋が卸さないみたいでorz
上記方法のサイトで[連絡先を同期]オンにしたもの、数分待っても同期が完了せず、[現在同期で問題が発生しています。しばらくお待ちください。]とメッセージが表示されます。
当然、この状態でAndroid端末からアドレス帳アプリを開いてもGoogleアドレス帳の情報は見られない…
この事象について調べると、以下のサイトを見つけました。

スマホetc. - 「現在同期で問題が発生しています。しばらくお待ちください。」?!

  1. Android端末の[設定]アプリ→[ユーザ設定]→[アカウント]→[Google]→(対象のGoogleアカウント)→画面右上の[…]より[アカウントを削除]をタップする。
  2. [バックアップアカウントが必要です]と表示されるので、[アカウントを追加]をタップする。
  3. 先ほど削除したGoogleアカウントの情報を入力し、再設定する。
  4. Googleアカウント設定後、Android端末の[設定]アプリ→[ユーザ設定]→[アカウント]→[Google]→(対象のGoogleアカウント)をタップし、[連絡先を同期]がエラーならず、同期完了時刻が正しいことを確認する。

数分経っても同期されなかったのが、Googleアカウント情報を端末から削除→再設定でほぼ待ち時間なく同期されるようになりました。
この2段階の操作をしない不具合を解消できないというのは凄く面倒ですね…

今回、au Xperia Z5 SOV32を使用している私の環境における対処方法を記載しましたが、おそらく他のAndroid端末や他のキャリア(docomo、SoftBank)でも本件事象は発生し、上記の方法で解消されるのではないかと考えています。
ただ、連絡先やグループを削除するという作業が発生しますので、実施予定の方はバックアップの取得を忘れず、くれぐれも細心の注意を払うようお願いしますm(_ _)m

おそらく機種変するであろう2年後にはこの記事が役に立たないことを祈って…(-人-)

職業柄、仕事でないのに市販のものが何か気になる、何かしたくなるってことありますよね。
皆様は職業柄どんなことが気になりますか、そしてしたくなりますか?

そんな自分はシステムエンジニア(SE)。
SEという職業柄、市販のシステムでバグを見つけると報告したくなるんですよ。
そんなこと言いつつも、市販のシステムは検証を済ませ、それなりの期間が経過しているものが多いので、よほどのことがない限りバグを見つけることはありません。

しかし、1月になって2件のシステムでそれぞれ1件のバグを見つけてしまいました。
せっかくなので、それら不具合について書き残したいと思います。


◎某コンビニのID登録システム画面表示不具合
某コンビニではメールアドレスがIDとなっており、ID登録をする際にメールアドレスによる認証をしています。
メールアドレスの存在確認をする仕組みは一般的ですが、メール送信後の画面で軽微な不具合を見つけました。
メール送信完了画面に表示されたメールアドレスを見ると、半角プラス記号(+)が半角スペース( )で表示されてました。

Gmailで公開されたことで認知度が高まってきておりますが、メールアドレスのアカウント名と@の間に「+」を入れ、その後任意の文字列を指定することで、複数のメールアドレスのように見せつつ同じメールアドレスで受信できるメールエイリアス機能があります。「+」を許容するメールシステムはそれほど多くないものの、メールアドレス漏洩対策の一環として「+」を含めたメールアドレスを許容しているメールシステムには「+」を含めてメールアドレスを登録しています。

例えば、メールアドレスが「nekodaisuki@example.com」だとし、コンビニ登録用として使用する場合、「nekodaisuki+konbini@example.com」をメールアドレスの情報として利用しても、そのアドレスに送信されたメールが「nekodaisuki@example.com」に届くのですね。
しかし、そのコンビニのシステムではメール送信完了画面で「nekodaisuki+konbini@example.com」ではなく「nekodaisuki konbini@example.com」と表示されてました。

「+」がスペースになる原因はすぐに推測できた訳ですよ。
HTTPリクエストで送信されたURLエンコーディング処理をそのまま利用し、本来なら「+」をそのまま「+」と表示しなければいけない処理にしていないなと。

問合せシステムで連絡したところ、案の定そのような回答でした。
メール送信機能自体には不具合はなく、メール送信完了画面の表示不具合については近日中に改修を行うとのことでした。

・教訓
世の中で使用されているメールアドレスはRFCに記載されている通りであると思ってはいけない。
Webシステムの場合、URLエンコーディングで置換対象となる文字列は復号された場合にも問題がないか意識すること。


◎某航空会社メールアドレス変更不具合
「某」って書いてもこちらはほぼ推測されそうだわΣ

事の発端は昨年11月頃にメールアドレスを変更したことになります。
今月の誕生日に某航空会社からお誕生日おめでとうございますメールが届いたのですが、変更後のメールアドレスではなく、変更前のメールアドレスに届きました。

会員ページを見たところ、メールアドレスは変更されており、昨年のメールアドレス変更後からお誕生日おめでとうございますメールが届くまでの間に旧メールアドレスに届いたものはありませんでした。

こちらも問合せシステムで問合せましたが、変更前メールアドレスに送信した履歴が残ってないとの回答でしたΣ
そのメールを送って欲しいと言われたので、お誕生日おめでとうございますメールをメールヘッダ付きで提供しました。

気になったのが、こちらも「+」を含むメールエイリアスのメールアドレスを使用して登録していることでしょうか。
その航空会社サイトでは、RFCに合わせているのかメールアドレスに使用できる文字は半角の英数字、「@」、「-」、「_」、「.」のみと記載されてました。
しかし、メールアドレス入力画面で「+」を含むメールアドレスを入力すると登録できてしまうんですよ。その後、メールアドレス変更完了メールも届いているので、アドレス変更自体も成功してるはずなんですよね。

そんなことを考えつつ、返信を待っていたところ、とうとう回答が届きました。
原因は、メール配信システムの不具合で、昨年のお誕生日おめでとうございますメールに配信した一部の情報が残っていて、変更前のメールアドレスに配信されてたとのことでした。

詳しい仕様の回答がありませんが、今回の仕組みと原因は以下だと推測しました。

・最新顧客DBからその都度最新情報を抽出する仕組みにしない理由
航空会社レベルの会員数になると2000万人を超えている為、DBからある日が誕生日の人の情報を取得するだけでも数万名の情報を取得することになる。
その為、お誕生日おめでとうございますメールは、最新の顧客DBから対象日に一致する利用者の氏名とメールアドレスを抽出し、メール配信システムへ登録する日次処理にはできない。

・推測したシステム全体の仕組み
重たい処理にしない為には、顧客情報の各レコードにタイムスタンプの項目を用意し、レコード最終更新日時を格納できるようにする。
利用者に公開しているオンラインシステムでは、利用者が情報を変更すると、タイムスタンプの項目を操作した日時にした情報レコードを挿入する仕様とする。
他システムに連動する情報の登録・修正・削除は、タイムスタンプの最終更新日時が数日以内のレコードを対象にする。

・推測したメール配信システムの仕組み
メール配信システムは月日別に宛先情報(顧客名とメールアドレス)を格納している。
日次処理バッチが起動することにより、顧客DBから最終更新日時が数日以内のレコードを抽出し、宛先情報の登録・修正・削除の処理を進める。
宛先情報の登録、修正、削除はメール配信システムに格納している情報と、顧客DBから抽出した情報の比較により判断する。

・今回の事象が発生した原因
メール配信システムへの情報変更処理が、何らかの不具合により実行されず、古いメールアドレスのまま情報が残っていた。
RFCを満たさないメールアドレスの変更とメール配信停止を同じ日に実行したことが原因?

・教訓
メール配信システム、更に言えばSMTPログのレベルでメール配信の成功・失敗を確認できる仕組みが必要。
処理の都合上、最新DBから最新情報を取得する仕組みにできない場合、情報を追加・修正・削除するタイミングで、情報の不整合が発生しないかの観点で検証パターンを作成する。
特に削除フラグや抑止フラグにより処理の中止や削除が発生するパターンに気をつける。
顧客メールアドレスのRFC準拠は事実上無理なので、諦める。
猫は可愛い。


そんなわけで利用者にバグを見つけられると、中の人は報告書の作成やらで大変なことになっているだろうと思いつつ、この話を終わらせたいと思います( ̄∇ ̄)ノ♪

前の記事の続きでWinMergeの便利な使い方を紹介します。

WinMerge 日本語版に含まれているCompareMSExcelFiles、CompareMSWordFilesプラグインはExcelとWordの差分比較を可能にする高性能プラグインです。
一方、xdocdiff WinMerge PluginはWordやExcelだけではなく、PDF、PowerPoint、一太郎などの文書ファイルも差分比較可能にする多機能プラグインです。

ExcelとWordはCompareMS*Files、それ以外のファイルはxdocdiff WinMerge Pluginを使用したいと思ったのですが、いざ両方のプラグインをインストールした環境で使用したところ、xdocdiff WinMerge Pluginの方が優先されてしまいました。
WinMergeの[メニューバー]→[プラグイン(P)]→[プラグインの設定(L)...]を見ましたが、プラグインを読み込む順番を設定する機能はなさそうです…

ここでふと思ったのがxdocdiff WinMerge Pluginに関するプラグインが「amb_xdocdiffplugin.dll」という名前であること。
aから始まるプラグインから読み込まれるのであれば、プラグインのDLL名の先頭にアルファベット後半の文字列に変更してあげれば上手く動くのではないかと。

試しに「amb_xdocdiffplugin.dll」から「Xamb_xdocdiffplugin.dll」にリネームし、WinMergeを使用したところ、想定通りの動作になってくれました(≧∇≦)

なお、現在、こちらの環境では64bit版のWinMergeを使用している為、動作確認したxdocdiffプラグインは64bit版となっております。
両方とも「MergePlugins」ディレクトリに格納するDLLファイル名が「amb_xdocdiffPlugin.dll」だったので32bit版でも動作するかと思います。
※"P"の大文字小文字の違いで動作が変わるということはないと思いますし。
xdocdiff WinMerge Plugin32bit版のプラグインは「xdocdiff WinMerge Plugin」から、64bit版のプラグインは「xdocdiffPlugin64」からダウンロードをどうぞ。

以上、WinMerge 日本語版のTipsでした( ̄∇ ̄)ノ♪