Windows 10に向けた企業の準備

Windows10が発表され、話題はそれ一色になってますね。私は戦々恐々としてます。社内のITシステムの運用開発体制を刷新する事が求められようとしているからです。

ラピッドリリースという用語を知ってますか?最近はラピッドリリースで開発されてるソフトウェアが非常に増えてます。Google Chromeとか、Facebookとか、数えたらきりがないほど。従来のソフトウェアは何年か事にメジャーバージョンアップが行われ、その時に機能追加などが大きく発表されました。もちろんバージョンアップしない選択肢も用意され、古いバージョンをサポート修了まで古いバージョンを使い続ける事も出来ました。ラピッドリリースではメジャーバージョンアップを待たずに頻繁に機能の追加や変更がなされます。そして、最新のバージョン以外ではアップデートが提供されず、古いバージョンで固定することが出来なくなります。

現在の国内企業の多くは社内のIT部署を縮小し、開発や運用にかかわる機能をアウトソースしてきました。そしてクライアントのバージョンを固定し、特定のバージョンで問題なく動作する事が確認されればアウトソース先の加発チームも解散し、次回の大規模更新まではバージョンを固定してきたわけです。

今回の発表でWindows 10以降はラピッドリリースになることが確実になってきました。となると今後はMicrosoftの発表する新機能や、旧機能との互換性廃止の情報をつねに収集して、社内システムが問題なく動作するか直ちにテストし、動作しなければ直ちに修正を行える開発体制が必要になるということです。今後は頻繁に行われるアップデートに備えて、最低限の開発体制を常時維持することが必要になってくるはずです。

これは容易なことではありません。自社内のIT部門を強化するにしても、すでに失われた開発体制を再構築するというのは、多くの時間とコストがかかります。アウトソースするにしても、アウトソース先が本当に開発体制を維持しているか確認するのは容易ではありませんし、保守のために外部に支払う費用は確実に増大することでしょう。

Brandoo WordPressで¥を入力できない。

Brandoo WordPressにてコンテンツに/(半角バックスラッシュ)や¥(半角円マーク)を入力していると、更新ボタンを押しても変更内容が保存されずに、元に戻ってしまう。

暫定的な対策としては、テキスト編集画面で¥と入力すればBlog上は半角の¥マークを表示することが出来る。だが一度ビジュアルエディタの編集画面に戻ってしまうと、¥から¥に変換されてしまうので、あまり現実的な解決方法ではない。

この現象は既に公式にもバグと認識されており、GitHubのCannot add post containing a % characterでも次のリリースにて修正される予定になっている。ただ実は、ちょっと困ったことにGitHubのサイトは放置気味になっている。Text Replacerのプラグインを使ってみたが、プラグインの設定を保存する部分でも¥が失われてしまうため、ちょっと一朝一夕にはいきそうもない。

自作を試みてみるかな・・・

二段階認証に使用しているスマホをなくすと・・・

セキュリティ向上のために様々なサービスでスマホなどを活用した二段階認証を利用できるようになっている。セキュリティは向上するが、もちろんスマホが失われればログイン出来なくなるリスクが存在している。特に専用のアプリをインストールする、ワンタイムパスワードなどはロック解除の手続が必須となるため注意が必要だ。スマホの水没によりログイン出来ない経験をした自戒の意味も含めて纏めておこうと思う。

AWS(Amazon Web Service)

ログインID(メールアドレス)とパスワードでログインすると、ワンタイムパスワードを求められる。ここからワンタイムパスワード解除のための、受け付けページに行き理由や連絡先電話番号を入力して申請する。5分ほどでAmazonから先ほど入力した電話番号に電話がかかってくる。もちろんオペレーターは英語しか話すことが出来ない。本人確認のために名前と登録メールアドレスを求められるので回答する。そうすると登録メールアドレスに解除コードが送られてくるので、解除コードをオペレーターに回答する。以上でロックが解除されワンタイムパスワード無しでログインできるようになる。

Windows Live アカウント

ログインIDとパスワードを入力するとスマホからの認証待ちになる。当然認証できないので、エラー画面に移動し、ここから解除のためのリンクへと進む。ロックの解除には氏名、メールアドレス、電話番号等の個人情報を入力する。本人確認の審査が完了するまで最大48時間かかる旨の受付完了メールが送られてくる。私の場合はきっちり二日後にロック解除の認証コードが書かれたメールが送られてきた。Windows Liveアカウントはメールアドレスなどの個人情報が任意入力項目なので、本人確認をどのように進めるかはケースバイケースになる物とおもわれる。

通信プログラムを送信スレッドと受信スレッドに別けては駄目

TCP/IPやシリアル通信において、データの受信と送信を別々のスレッドでおこなえば、アプリケーションを単純化し、パフォーマンスも向上するように感じるかもしれない。これは初級から中級のプログラマがやりがちなことだが、多くの場合は徒労に終わる。

一つ目の問題として、実はOSは送信と受信を同時に実行することが出来ない。アプリケーションからドライバに対する要求はFIFOキューに格納される。デバイスドライバはFIFOキューに格納された命令を順番に処理していく。してがってAスレッドの受信命令と、Bスレッドの送信命令がキューに格納されている場合、Aスレッドの受信命令の処理が終わらない限り、Bスレッドの送信命令も待機することになる。アプリケーション側のスレッドを単純に分けただけでは、送信と受信を非同期におこなう事は出来ない。

送信と受信をほぼ同時に処理するにはノンブロッキングモードを使う必要がある。ノンブロッキングモードなら、ドライバはデータの有無に拘わらず直ちに応答を返して次の処理に進むので、受信と送信をほぼ同時に実行することが出来る。

二つ目の問題として、殆どのプロトコルにおいて、送信が正常に行われたか判断するためには受信データが必要になることにある。送信処理と受信処理は互いに深く関係した密結合となる。そのため送信処理と受信処理との間で情報を交換するためにフラグや排他制御が必要になる。正常処理だけなら良いか、これに異常時のリカバリ処理まで含むと状態遷移が複雑になり、余程慎重に設計しないとスパゲティのように絡み合ったソースコードになってしまうはずだ。

通信プロトコルが送信とその応答を非同期的に処理することを前提に設計されていたり、あるいは非同期的に処理することでパフォーマンスの向上を臨んでいるなら、送信と受信を分離する価値はあるだろう。そうでないなら、止めた方が無難だ。

ではどのような設計なら良いのだろうか。私見だが「他スレッドからFifo Queue等で要求を受付け、コマンドの送信、応答の受信、必要に応じてエラーリカバリ処理を行って、要求元スレッドに応答を返すようなスレッド」を作るのが良いと思う。この方法だと通信に伴って発生する状態遷移を単一スレッドの中に閉じ込めることが出来るので、複雑さが増す事を避けて実装する事が出来る。

OneDriveをWebDAVでマウントする

OneDrive(旧SkyDrive)にて提供されているアプリケーションは、パソコン上のドライブに保管されているファイルと、SkyDrive上の指定したフォルダとが同一の状態になるように、ファイルをコピーするだけの物でしか無い。いわゆるミラーリングする機能でしかない。この方法ではOneDrive上の全てのデータをファイルをパソコン上のファイルと同じように扱えるようにしようとすると、OneDriveと同一のストレージ容量が必要になる。ストレージ容量が数十GB程度のうちは良いが、Office365を契約した場合は数TBとなり、あまり現実的ではない。

実はOneDrive上のファイルを、コンピューター上にインストールしたMicrosoft Officeから扱う場合、背後ではWebDAVにてアクセスしている。従ってWindowsのファイルシステムとして、OneDrive上のフォルダをWebDAVとしてマウントし、エクスプローラーや普通のアプリケーションからアクセスすることが出来る。

  1. Internet ExplorerからOneDriveに接続する。その後適当にWORDのファイルを作成する。
  2. Word Onlineのページが表示され、先ほど作成したWORDファイルが編集状態になっているはずです。ここでWord Onlineのメニューにある「WORDで開く」を選択します。
  3. コンピューターにインストールしてあるMS-Wordが起動して、先ほどOneDrive上で新規に作成したファイルが編集可能な状態になります。この操作によりOneDrive上にWevDAVでマウントするためのURLが作成されます。
  4. MS-Wordのメニューから「名前を付けて保存」を選択すると、保存先が「http://d.docs.live.net/[英数16文字]」となっている。このURLが貴方のOneDriveをWevDAVで操作するためのURLとなる。
  5. エクスプローラーのコンピューターから「ネットワークドライブの割り当て」を選択する。フォルダーに先のURL「http://d.docs.live.net/[英数16文字]」を指定して完了をクリックすれば良い。
  6. マウントしたドライブにアクセスを試みるとユーザーIDとパスワードを要求される。ここでOneDriveに接続するときに使っている、LiveIDのユーザーIDとパスワードを入力するとエクスプローラーからOneDriveにアクセス出来る。

もちろん、ドライブレターを与えているので、エクスプローラー以外の殆どのWindowsアプリケーションからもローカルのファイルと同様にアクセスすることが出来ます。

通信販売に関する法律

ネタがないので、IT系の法律の話とか。

まず、特定の法律に関係なく、一般的な話をしておく。良く法律だけ読んで分かった気になって話す人が居るが、これはやめた法がよい。法文には明記されてない行間があったり、用語の使い方が日常の文書と異なったり、別の法律と補完相克関係にあったり、行政判断に委ねてる部分があったりする。だから必ず行政の通達や、裁判の判例もあわせて見ないと、とんでもない誤解をする事になる。

 Ⅰ.売買契約

通信販売に関する法律には特定商取引法がある。もともとは訪問販売法として、いわゆる押し売りを規制するための法律としてあったのが、電話勧誘完売とか、通信販売とか、いくつかの特定の方法を用いた販売方法について規制する法律として焼き直されたものだ。

通信販売に関して法律で規定されていることは大きく3つになる。

 1.商品や売買契約に関する情報の表示だ。

通信販売では、商品表示(広告)の内容についての規定があり、価格(送料など取引において発生する金額すべて)、住所氏名(メールアドレスも含む)、支払方法、商品の瑕疵、返品などに関する特約事項、その他の販売条件などの表示が義務づけられる。また商品広告の内容は客観的な事実に基づくものでなくてはなりません。

 2.返品(契約解除)への応諾義務

通信販売での返品について、多い誤解にクーリングオフがある。実は通信販売にクーリングオフという制度はない。クーリングオフは売り手側からコンタクトをとる訪問販売や電話勧誘に対する規制で、買い手側からコンタクトを取る通信販売では、対象にならない。

では、通信販売は返品に応ずる必要が無いかというと、そうではない。返品に関する特約事項を買い手に伝えていない場合は、商品到着後8日以内なら無制限に返品に応じる義務が発生する。この時に消費者が負担しなければならない金額は、商品の返送にかかる送料のみとなる。
返品に関する契約を規定しないと、食品を既に全部食べ終わって、包装紙だけになっていても返品に応じる事になる。逆に返品出来ない事を明確にしていれば、返品に応じる必要は無い。
返品に近い事柄にとして、民法上の錯誤による無効がある。商品説明の重要事項や契約事項が分かりにくいところに書いてあったりした場合には、勘違いで購入したとして、契約を無効にする事が出来る。特定商取引法上の契約解除は、民法上の錯誤無効と異なり、契約を解除にしたことによって発生した損害について、賠償する必要がない点で異なる。

 3.わかりやすく表示する義務

購入の申し込みなのか、有償なのかということがわかりやすい表示を義務付けている。購入ページで規約のチェックボックスをつけたり、ボタンを購入としてるのは、錯誤が発生しないことをUIレベルで担保するために行われている。「ほしい人はここをクリック」などのボタンを押したとしても売買契約とは認められない。
過去に通信販売事業者で摘発を受けた業者の多くは広告表示の不備によるものです。商品の広告内容に虚偽があったため、多くの開運グッズの通信販売事業者が摘発を受けています。~大師のような架空の人物の紹介文を載せたりしていたことが原因です。
また、契約解除にあたって特約として明記していない賠償を請求したことにより、摘発を受けた事業者もあります。

Windows XPサポート終了におけるIT業界の責任

Windows XPサポート終了におけるIT業界の責任(http://japan.zdnet.com/cio/sp_13matsuokaopinion/35044036/)という記事について、各所で色々意見されているので、私も纏めておきたい。

多くの論調は「ユーザー責任であって、IT業界に責任を求めるのは筋違いだろう」という物だが、ある面においてIT業界にも責任はあると思う。IT業界は維持運用にかかるコストについて、説明責任を果たしていなかったと思う。

独自開発したソフトウェアの維持コスト

日本では多くの企業が基幹システムとして、パッケージソフトをそのまま使うのでは無く、大幅にカスタマイズして独自機能を盛り込んだり、あるいは全くの0から独自システムを開発してきた。

これらのソフトを数年おきに発売される最新のOS等に対応させ続けるためには、本来なら開発者を囲って開発体制を維持するコストが必要になる。システムの細部の実装までドキュメント化して残しておくことはきわめて困難だし、また半年も担当から離れれば詳細な実装部分について忘却してしまうことは、開発者なら経験的に知っているはずだ。もし新しいOSや問題に迅速に対処しようとするなら、一定人数の開発者を開発完了後も独自開発したシステムに携わり開発体制を維持し続ける必要がある。

独自システムというのは作って稼働したからといって、そこで開発を終了してはならないものだった。昨今言う継続的インテグレーションを行ない、一定のコストを払い、常に改善や新機能の追加をし続ける必要がある。そうしなければ開発体制を維持する事は出来ない。

今多くの企業では、必要になってから技術者を集め、リバースエンジニアリングを行ないつつ、新たに開発体制を作り直すと言う方法を取っている。既存のシステムを解きほぐし、結果から過程を再現していくのは、相当に有能な人材を集めないと出来ないし、時間もかかる。また、古い開発環境と、新しい開発環境の両方に精通した人材を集める必要もあるので、構成人員のキャリアは高くなりがちになる。そのための予算も事前に考えてないし、コストも高く、人材も確保できず、時間も足りず、移行できない状況に陥っているのだろう。

 

ソフトウェアを売切りにしてしまったこと

二つ目のIT業界の責任は、パッケージソフトウェアを売切りにしていることだと思う。Windows XP発売当初、保守サポートの有効期限は区切られていなかった。ユーザーにとっては初期費用を払えば、追加コスト無しで使い続けられる製品だったわけで、ここに嘘がある。

安全に使い続けるためには保守が必要不可欠だというなら、売切りにすべきでは無かった。維持にコストがかかるなら、それを素直に料金体型に反映させるべきだったと思う。現在Adobeがいち早く対応したが、月額などの継続的に料金を支払い続けるシステムにすべきだったと思う。

WindowsXPだけの問題では無い

実はWindowsXPだけが大きな問題になっているが、同様の問題は他にも複数発生しつつある。

例えばAndoroidスマートフォンでは携帯電話メーカーからOSのアップデートが提供される事は殆ど無い。Andoroidの開発元であるGoogleは定期的にアップデートを提供しているにも関わらず・・・だ。セキュリティ上の問題はいくつも見つかっており、本来ならアップデートを提供すべきだが、売切りの状態のまま殆どの場合放置されている。もしセキュリティ問題の無い状態で使おうと思ったら、半年ごとに端末を買換える必要がある状況だ。でも携帯メーカーはそんな説明をしていない。

最近はTV等の家電もインターネットに接続する機能を有している。攻撃を受ける可能性もあるわけでセキュリティ上の問題が見つかればアップデートも必要なはずだが、アップデートは滅多に行なわれないし、いつまで無償でサポートするのか明示していない。

またメーカーが保守開発をひっそりと止めてしまったソフトウェアというのは沢山ある。一太郎や三四郎、ロータス123はすでに保守開発していないので、セキュリティホールは放ったままだ。Macintosh OSも最新バージョン以外は直ぐに保守を止めてしまうので、数年ごとにOSを買換えていないなら危険だ。

Windows XPに限った問題では無く、保守開発はコストがかかり、保守開発を維持していないソフトウェアを継続利用してはならないって、本質的な問題について議論する必要がある。

AMDのクラウドファーム

今回のゲームショーで楽しみにしていたものが二つある。ひとつはソニーのヘッドマウントディスプレイ。もう一つはAMDのクラウドファームを使ったシステムがどうなったかだ。PS4でも、XBOX360oneでも、PS vita TVでも無いあたり、なかなかひねくれてると思う。
AMDのクラウドファームを使ったゲームシステムは、クライアントには動画の再生機能と操作するために最小限の入力機能だけを持たせ、最も計算負荷の高い3D画像のレンダリングも含めて他のすべての処理はサーバー側で行うというものだ。
現在のネットワークゲームの多くは、ユーザーの入力をアプリケーションがサーバーに送信、サーバー側で判定された結果がクライアントに届き、クライアント側でグラフィックを作成するようになっている。このグラフィックの作成で高精細な画面を作るためには、ユーザーが相当な初期投資をおこなう必要があった。この高度がグラフィックを作成する処理もサーバー側で行なってしまえば、高機能なグラフィック処理ボードを複数のユーザーでシェアすることになるので(1日24時間ゲームを遊び続ける人は居ない)、一人当りの負担はより小さな金額で、高精細な画面を得られることになる。
ネットワークの遅延が大きくて使い物にならないのでは・・・と思うかもしれないが、ネットワークゲームではどのみちサーバーとの通信は行なわれている。より高性能なビデオチップを使えば、画面のレンダリングに必要な時間は短くなり、ミドルエンドのグラフィックを載せたPCよりも、トータルでの応答速度は速くなるというわけだ。後の問題はネットワークの帯域幅だが、モバイルでも数十Mbpsの通信速度が確保できるようなってきた。
なかなか斬新でセンセーショナルなアイデアだったのだが、とんと実際にゲームがサービスされるという話を聞かなかったのだ。でようやく最初のサービスが始まった。なんと軽量ブラウザゲームの「艦隊これくしょん」である。「え~?」と思ったでしょ?私も思ったよ。3DCGの機能なんかばっさり無視して、マルチクライアント対応ゲームを容易に作れるってところで、採用が決まったようだ。ちょっとがっかりで、微妙にうれしい、変な感じのニュースになった。
IMG_6320_DxW
だがAndoroidに、iPhoneに、PCに・・・とマルチデバイス対応ゲームの開発に向いていたのも確かにその通りだと思う。これをきっかけに広く普及してくれないかなと、新たに期待した。

PLCモデムを購入してみた

自宅の2階と1階のネットワークを繋ぐのにPLCモデムを個人輸入してみた。
最近は無線LANの高速化が進んで、条件が良ければ1Gbpsを超えるリンク速度を得られます。ですが実際、多くの無線LAN親機は横方向に電波の指向性を持つため、上下の階には電波が届きにくいのです。また無線LANが普及したこともあり、住宅地でも多数の無線LAN基地局が検出されるようになりました。そのため使用する周波数帯域が重複して干渉し合うため、親機から少し離れるとあまり速度が上がらないのです。
日本国内ではPLCモデムは殆ど着目されず、メーカーもPanasonicとBuffaloぐらいしかありませんが、それでも少しづつ高速化しています。日本国内で発売されている物はHomePlug AV準拠の物でリンク速度は240Mbpsです。海外では、HomePlug AVを拡張したPHY-rateで500Mbpsに達する速度の物も販売されています。
IMG_20130918_202651と言うわけで、Amazon.comからTP-Link TL-PA411 KIT AV500 Mini Powerline Adapterを購入しました。米国で一般的に使われているのは240V 50hzですが、実は殆どの製品は日本で使われている100V 50hzでも動作します。この製品もメーカーサイトを確認すると、動作保証範囲は100Vから240Vとなっています。
パッケージには詳細なマニュアルを記録したCDと、簡易マニュアルが1枚、30cmほどのLANケーブルが2本、そして本体二つがはいっています。
最初はマニュアルを無視して、テーブルタップを経由して接続を試みたのですが、上手くつながりませんでした。ちゃんと壁のコンセントに直接接続しましょう。
壁のコンセントに接続したらリンクボタンを1秒ほど押します。そうすると、電源ランプが点滅を始めますので、もう一台のPLCモデムの元に駆けつけ、同じようにリンクボタンを押して、電源ランプを点滅させます。1分ほどでネゴシエーションが完了しリンクランプが点灯するので気長に待ちます。接続も簡単です。
今現在は有線LANで接続するのと遜色なく使えてます。

パソコンのファイル検索どうしていますか?2

Windows Desktop Searchの代わりにFESSを使っていたのだけれど、いくつかの点で使い勝手が悪く、挫折しました。まずメモリを食う。会社のパソコンなんでそんなにメモリに余裕があるわけでも無く、1.2GBの容量を常時使われてしまうので常時立ち上げている訳にはいきません。ところがインデックスの生成に24時間以上かかるため、常時立ち上げておくほかありません。以前中断した箇所からインデックスの生成を再開する機能でもあれば良いのですが、毎回最初からスキャンを始める為途中で止めて再開という訳にはいかないのです。
そこで続いて目を付けたのがDesktopHE。実は以前にも一度使用を試みたのだが、そのときはインデックス生成の途中でエラーを起こし、検索も出来なくなったのであきらめたのでした。
DesktopHEはEstraierを検索エンジンとして使った、フロントエンドプログラムです。NGRAMに対応したインデックス生成を行なうので検索キーワードにマッチしないと言うことも殆ど起こりません。
インストールはとっても簡単。まず最初にJavaRuntimeをインストールします。その後、DesktopHEからダウンロードした実行ファイルを含むZipファイルを適当なフォルダに解凍したら、DesktopHE.exeを実行するだけです。
インデックス生成中に異常を起こし、検索データベースが壊れてしまうことがあります。その場合はコマンドプロンプトを開いて、以下のコマンドを実行してください。

estcmd.exe repair “C:\Documents and Settings\ユーザー名\Application Data\DesktopHE”

これで破損したデータベースが修復され、再度検索やインデックスの生成を行えるようになります。