午前7時半起床,曇り.エッジの天気予報のボックスに「埼玉県深谷市」を出すようにしたので間違いないだろう.デスクに座ってお天気がはっきりしないときはドアのところまで行って「空」をチェックしていたが,それも不要になった.「初期不良」のパソコンは荷造りして発送するばかりになっているが,今年中に配送できるかどうか微妙になってきた.仮に発送できたとしても送り返してくるのは来年になってしまうのはもはや避けられない.⇒※発送した.午後,日通航空が集荷に来た.
だいぶ態勢が整ってきた.すでに「ルーズスクラム」のまま仕事に突入してゆくという形勢だ.ある意味ですでに「デバッグモード」に入っているが,まだ従来開発環境と同等の状態になっていないので今のところはまだ「移行期間」だとしても出口は見えてきた.遅くとも年内には片が付くだろう.すでにVS 2017 はインストール済なのであとこれに追加するものがあるとすれば,スマホを手に入れるということくらいだ.
主画面右下の通知ボックスに「Outlook アカウントの設定が最新ではありません」が頻繁に出てくるのでうるさくて仕方ないが,これを止めるにはケータイ番号がどうしても必要だ.多重認証ないし2段階認証というのが普通になってきているので,普通のネット市民として暮らしてゆくためにはケータイないしスマホの所有は不可避のものとなっている.
まだ使用開始していないが,無償の Visual Studio 2017 Community で開発を進めることができる可能性がでてきたので,その分の予算をスマホに回すことができる.しかし,あの「ケチ」なマイクロソフトがよくここまで思い切ったことをしたものだ!
なんと言っても「免責事項(PL法に関わりなく製造者責任を免れるという主張)」と「使用許諾(購買した製品の所有権は発売元にあって使用者はそれを借りているだけという主張)」という概念をこの世界に持ち込んだのはマイクロソフトだからね.いや,もしこれが使えれば,ほんとにマイクロソフトには感謝だよ!
スマホはいま申し込めば年内に入手できる可能性があるので早速試してみることにしよう.いや,その前に昨日確認された不具合/問題点を整理しておこう.以下の項目がある.⇒※スマホは楽天モバイル,申し込みは完了した.本人確認資料もアップロードした.
- SQL サーバー 2005 は Windows 8 以降ではサポートされない ⇒ アンインストール
- コンパイル時エラー:「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。」が発生する ⇒ 解決
- リリース版のビルドで「warning MSB3287: タイプ ライブラリ参照 “AxZelkovaZ3Lib” を読み込めません。ライブラリは登録されていません。 (HRESULT からの例外: 0x8002801D」が出る ⇒ 解決
- ゼルコバの木起動時 LoadNameProperty でエラーが発生する ⇒ 後で,これは「デバッグ」になるので,開発環境が落ち着いてから
- ファイル:開くでデータファイルを開こうとすると「OSローダーロック内でマネージ実行を試行しました」の警告が出る ⇒ 警告を出さないように設定
- 開発環境を立ち上げようとすると「Visual Studio 2005 SP1を実行するには,Windows Vista 用の更新プログラムが必要です」が出る ⇒ この警告は Windows を更新することによって解消したが,今度は「Visual Studio 2005 SP1 を実行する場合,管理者権限が推奨されます」が出るようになった ⇒ パネルが出るのを止めた
- アプリを開発環境のデバッグモードで走らせると「ZelkovaTree2018.exe のデバッグ環境が見つからないか,または一致しません.シンボルファイルにネイティブシンボルがありません」の警告が出る ⇒ なぜか分からないが警告が出ないようになった
- 「Microsoft 誤変換記録」の通知が頻繁に出る.誤変換していない場合にも出てくる ⇒ 放置
項目1に関しては SQL サーバー 2005 をアンインストールすることで対処した.これで特に問題はないように思われる.項目2に関してはネット上には「警告を無視するように設定する」という解決法が散見されるが,あまりよい解決とは思われない.「悪意の不可視コード」が埋め込まれている可能性もゼロではないからだ.これに関しては次のような方法でエラーの発生する箇所を突き止めて,対処した.
コンパイルエラーの発生個所がソースファイル上で特定できないときは,ソースコードの一部をコメントアウトして再コンパイルする方法で特定できる.このとき2分探索の手法で探せば比較的短時間で問題個所を見つけることができる.大きいブロックをコメントアウトするときには /* ~ */ で止めるのではなく,#ifdef NOTHING ~ #endif で止める.エラーの発生する箇所が特定できたら,その行ないしブロック全体を Ctrl+X でカットしてから再度 Ctrl+P で再挿入してやると上記のエラーはほとんど止まる.もしこれでも止まらないときは打ち直しする.
項目3は配布パッケージに含まれ ZelkovaZ3.OCX が自己登録できない場合に発生する.OCX が自己登録できるか否かはコマンドプロンプトで >regsvr32 ZelkovaZ3.OCX を実行してみれば分かるが,自己登録はできるようになっていても上記のエラーが発生する場合は VB から OCX を参照できるようにする必要がある.
参照登録の方法はプロジェクト→参照メニューから実行する方法とプロパティの参照プロパティから追加する方法があるが,どちらをやっても効果がないときの「奥の手」がある.まず,ツール→ツールアイテムの選択でツールボックスに該OCXを追加しておく.次に空のダミーフォームを作ってそのウィンドウ枠にOCXを貼り込むという方法だ.これはほとんどの場合に通用する裏技だ.
項目4は標準画面設定のテーマが所定の場所にないために起きている.これはまだこのマシーンに一度もゼルコバの木をインストールしたことがないためだが,既定のテーマファイルが存在しない場合には「既定の標準画面設定」でエラーなしに動作しなくてはならないので修正する必要がある.この修正は落ち着いてから掛かることにしよう.項目5はちょっと厄介なので飛ばして先に項目6を見てみよう.
項目6は Windows の更新で Visual Studio SP1 がインストールされているのですでに問題としては解決済なのだが,2番目の警告パネルはアプリアイコンの右クリックで出る「管理者権限で実行」で起動しても毎回出てくるので,「常にこのメッセージを表示する」のチェックを外して回避することにした.「管理者権限で実行する」とシステムを書き換えることもあり得るので,むしろ,「管理者権限で実行しない」という操作の方が正しいような気もする.
項目7もかなり厄介だ.lenovo ではこのような警告は発生していない.デバッグには特に支障なさそうに思われるので保留しておこう.
項目8は頻繁に出るとは言っても連続的に出るという訳でもないので放置することにする.このことにこだわるのは「誤変換の記録を取る」と言いながら実際はすべてのキーストロークを盗もうとしているのではないか?という懸念があるからだ.
盗む気があるのなら「黙って盗めばよい」と思うのだが,その点マイクロソフトは怪盗ルパンのように「紳士」なのだろうか?そもそも何を指して「誤変換」としているのか?打ち間違えもなく一発で変換できているときにもこのパネルは出てくる.そもそも「誤変換」と「打鍵ミス」を区別することができるのか?
さて,問題は項目4の LoaderLock の警告パネルだ.このパネルはファイルを開こうとするたびに出てくるので何とかして止めなくてはならない.ネットでは「Visual Studio のメニューから、デバッグ-例外-Managed Debugging Assistans-LoaderLockのチェックをはずす。」というのが唯一の解決となっているようだが,あまり感心しない.これ以外の方法はないのだろうか?
というか,従来の開発環境ではこのような警告は発生していないので,何がどう変わったのかを調べてみよう.現在使っている開発環境は Visual Studio 2005 であり,エラーを出しているのはこの IDE なのだから本来なら同じ動作にならなくてはならないはずだ.ただし,上記の「コードページ」の問題にしても,従来環境では起きていないものなので下位 API のバージョンが異なるということなのだろう.LoaderLock に関しては loaderLock MDA に解説がある.それによれば,
マネージ デバッグ アシスタントは、Microsoft Windows オペレーティング システムのローダー ロックを保持しているスレッド上でマネージ コードを実行する試行を検出します。 このような実行は、デッドロックの原因になる可能性があり、オペレーティング システムのローダーが初期化する前に DLL が使用される可能性があるため、不適切です。
ということなのだが.意味不明だ.
混在アセンブリの初期化 にはもう少し詳しい説明がある.それによると,.NET のバージョンにも関わりがあるようなのでまず,それを見ておこう.必須コンポーネントは .NET 2.0 になっているので .NET が古いという問題ではなさそうだ.
ゼルコバの木は4つのコンポーネントから構成されるが,うち,DLLとOCXはネイティブ,VBはマネージドでGCだけがネイティブとマネージドの混在だ.とすればエラーが起きているのはGCということが考えられるのだが,コールシーケンスを見ても状況がつかめない.⇒上記の記述は誤り,OCXは/CLRでビルドされているのでマネージドだ.
mmm… 昨日のデバッグではタモリんちを開くところまで進んでいるが,エラーなしでそこまで進んでしまった.つまり,項目4のエラーが発生しない状態になっている.いや,大丈夫だ.「新規ファイル」を選択すれば再現できる.これはあとから見ることにしているので再現できないと不都合だ.LoaderLock が掛かったときの状態を呼び出し履歴で見ると,下図のようになっている.
トップは ntdll.dll でその下は KernelBase.dll だ.mscorwks.dll が再帰的に反復呼び出されている.このリストに出てくる関数は限られているので拾い出してみよう.
- ntdll.dll
- KernelBase.dll
- mscorwks.dll
- user32.dll
- combase.dll
- windows.storage.dll
- ucrtbase.dll
- rpcrt4.dll
- ZelkovaZ3.ocx
- mscoree.dll
- mscoreei.dll
- oleaut32.dll
- SHCore.dll
- Kernel32.dll
これで見ると関係しているのはOCXだ.ファイルのオープンは確かOCXのCZelkovaCtrl3::Openでやっているはずだ.多分この関数の冒頭でやっている AFX_MANAGE_STATE(AfxGetStaticModuleState() マクロではないかと思うのだが,違うだろうか?⇒いや,違う.まだファイルを選択するパネルを開く前だから,ここまでは届いていない.ファイルオープンダイアローグはVBで出しているのだから,それ以前のコードで何かやっていることになる.とすればVBの動作になってしまうのだが,その間に何かOCXでやることがあるだろうか?
おそらくそのようなコードは存在しないのではないかと思われる.何かシステムが水面下で実施しているインタフェースなのではないだろうか?かなりおかしい.障害は ShowDialog 関数の中で起きている.これはVBの関数で完全にマネージドになっているはずだ.少なくともOCXとはまったく関係ない.考えられるのは何か余分な(ネイティブ)スレッドが走っているということくらいだが…
この1点を除けばほとんどの操作は問題なく動いている.このダイアローグはカードボックスが持っているのだが,それが影響しているのだろうか?カードボックスはこの他にも3つダイアローグを持っている.①記録ページフォント,②カード保存,③画像オープン,④カードオープンだ.③ではエラーは発生しないが,それ以外の3つではすべて同じエラーが起きる.キャンセルで閉じるときにも同じエラーが起きる.
OCXとダイアローグは結び付かない…そもそもOCXのスレッドが走っているということがおかしいのだが…パネルの中断ボタンで表示されているコールシーケンスはおそらく loaderLock のコードと思われる.つまり,OCXから LoaderLock が呼び出されていると考えられる.loaderLock はクリティカルセクションでしか実行されないはずだから,何か完了していない処理があるのではないだろうか?
「LoaderLock の警告を止める」という以外の対策はないのだろうか?とりあえず,VS 2005のデバッグ→例外→Managed Debugging Assistants で LoadLock のチェックを外す以外なさそうだ.残念だが,仕方ない.従来環境でこの設定がどうなっていたのかを見ておこう.
オンになっている…ということはプログラムの挙動が新しい環境で変化したということだろうか?LoaderLock が掛かるということはOCXのロードが完了していないことを意味すると考えられる.もし,そのようなことが起きているとしたら,明らかに変則動作であり対策が必要と考えられるのだが…とりあえずここではこれ以上追及しないということにして,先に進むことにする.
これまでわたしは Alt + 全角/半角で「英数」と「かな」の切り替えを行ってきたが,今の機械では Alt キーを押す必要がなくなっている.まだこの打ち方に慣れていないが,この方が速いことは確かだ.この2つの入力方法がコントロールパネル→表示方法→キーボードまたは入力方法の変更→キーボードと言語→キーボードの変更→全般→既定の言語で切り替えできるということを知らなかった.
既定の言語を「日本語(日本)-日本語」から「日本語(日本)-Microsoft IME」に切り替えることで「Alt」キーが不要になる.ところが,最新情報によればマイクロソフトは全角/半角キーの仕様を変えて「IME 切り替え方式を Mac 方式に変える方針」だという.「変換」⇔「無変換」で切り替えができるようになる.ったくもー!
[半角/全角]キー不要に? WindowsのIME切り替えがMac方式に
ざっと見た限りでは Windows 10 に移植された Visual Studio 2005 上でビルドしたバージョンは Windows 10 上で(上記の問題を除き)問題なく動作しているように見える.一応念のため,Windows 10 でビルドしたパッケージを Windows 7 にインストールして動作確認しておくことにしよう.混乱を避けるためバージョンを一つ上げておく.いや,この際なのでライセンスコードも切り替えることにしよう.
Version 2.0.2.260 Release 2018-12-27 とした.lenovo にインストールしようとして,「別のバージョンの製品がすでにインストールされています」になった.プロダクトコードを変えていなかったのだろうか?確かにそのようだ.バージョンアップするときにはいくつかの場所を同時に変更しなくてはならない.今度は問題なく立ち上がってきた.
これで少なくとも Windows 10 上で従来バージョンのビルドができることになった.次はいよいよ Visual Studio 2017 への移行だ.これはかなりの難関と覚悟しなくてはならないが,それに掛かる前に懸案のスマホの注文を片付けてしまうことにしよう.
端末は mineo の格安SIMと決めているのだが,問題はBroad WIMAX につながるかどうか?だ.mineo を選択する理由は格安SIMの回線業者でクレジットカードなしで使えるところが他に見当たらないためだ.何とかデビッドカードだけは手に入れることができたので,支払いがクレジットカード限定でも使える可能性はあるが,一度決めたことだから…
ルーターとスマホの接続には①テザリングと②WiFiがある.テザリングはスマホ→PC,WiFi はルーター→スマホという流れだが,できればどちらも使えるようにしておきたい.ルーターは周辺機器とWiFiでつながるのでスマホがこの方向で接続できることはまず間違いない.普通のスマホはWiFiスポットで使えるはずだ.経済的にはルーター→スマホの方が安くつくはずだが,その逆ができると便利なこともある.
ともかく mineo のサイトを訪問して少し調べてみよう.端末は SIM フリーの格安端末でなくてはならない.月額料金1,450円~という謳い文句だ.契約には月当たり500MB, 6GB, 20GBという3つのタイプがある.接続はルーターを使うつもりなので最小の500MBとしてみよう.「家にはWi-Fiがあるから,データ容量は少なくてOK?」とすると,500MB+音声通話あり(デュアルタイプ)で1,310円~というプランがある.これに決めることにしよう.+200円で3GBという選択もある.月額1,510円なら悪くない.
6GBで2,190円~というのは「これまで通り使いたい」という人向けだ.これまで使ったことがないのだから,3GBで十分だろう.というか,おそらくスマホでブラウジングということはほとんどやらないと思う.いや,もしかすると,スマホからタブレットという使い方になる可能性もある.mmm…ルーターはポケットに入るサイズなのだからあえて部屋に置いてゆくということもないのでは?多分,タブレットを持って外に出るということはあまりないと思う.持って出るとしても,ルーターを一緒に持ち出せばよいというだけだ.
一応ここでは3GB+音声=1,510円~としておこう.ケータイがauだったのでスマホもauを使うことにしよう.値段もauが一番安い.Broad WIMAXもau回線を使っているはずだ.mmm…通話料というのはこれと別途に掛かるらしい.国内通話で20円/30秒だ.「おトクな通話サービス」というのもある.mineo電話サービスで10円/30秒,月額650円で10分かけ放題,定額で月額840円.
テザリングは使用端末によって可否がある.iPhone, iPadは使えるが,auの場合はVoLTE対応SIMでのみテザリング可能となっている.SIMフリー端末は(一部)可能ということのようだ.一つ問題があるかもしれない.格安スマホではメールアドレスが持てないという問題がある.いや,「ワンタイムパスワード」ではメールアドレスだけでなく電話番号でもよいというのが普通だ.多分通ると思う.スマホでプロバイダーメールを受信するということは可能なのだろうか?熊谷にmineoの販売店PC DEPOT というのがある.「月々の通信料金見直し総合相談」などのサービスもやっている.
いや,格安SIMを申し込むためには「クレジットカード」が全員必要とある.メールアドレスと電話番号も必須だ.mineo電話というのは専用アプリを使う必要がある.まぁ,電話はあまり掛けないので問題ないだろう.申し込みに進むと「10分かけ放題」はいつの間にか918円/月に変わっている…もっとも安い端末は買い取りでZenFoneの18,144円だ.HUAWEI P20 liteが31,752円,この端末はテザリング可能と出た.端末紹介で見ると,この端末の値段は29,400円.これは税抜き価格だろうか?OSはAndroid.解像度は2,280×1080もある.この画面以上だ!1600万画素というカメラが2つ付いている.
無料WiFiに接続するためには別に390円/月掛かる.ウィルスソフトはカスペルスキーが使えるので不要だ.初期費用が契約事務手数料+SIMカード発行料で3,488円掛かる.おかしい.月額使用料の欄でmineoでんわがゼロ,端末安心保障サービス399円となっている.「戻る」ボタンを何度も押して戻ってみた.mineoでんわは選択しているが,無料だった.端末安心保障サービスがチェックされていた.これは「落下や水没などで端末が故障したときの無料交換サービス」だ.これで月額使用料は1,632円になった.!ダメだ!デビッドカードでは通らない.
mineo はクレジットカードなしで申し込める稀有なプロバイダーだったのだが…楽天モバイルというのがあった.UQ mobile というのもあるが,月額料金がかなり高い.1000円以上違う.楽天モバイルはmineoとほぼ同等だ.BIGLOBEモバイルが安い.6GB/月でauを使って1570円だ.ただし,これは音声が付いていない可能性がある.確かにそのようだ.音声SIMはクレジットカードがないと使えない.このサイトではmineoは「デビッドカードでクレジットカード不要の格安SIM」とあり,3GB/月でauを使って1510円と表記している.「デビッドカードを支払い方法として登録できることがあります.必ず登録できるとは限りませんが…」ともあり,拒否される場合もあることまで確認している.
ロケットモバイルはデビッドカードがつねに使える.基本料金はかなり安い.このデビッドカードはJCBだが,多分取り扱い銀行に制限があるのだろう.通常の都市銀行はほとんどパスできるが,ネットバンクは弾かれているようだ.可能なプロバイダを追及するとすれば,楽天モバイルかロケットモバイルしかない.ロケットモバイルというのはあまり聞いたことがないがチェックしてみよう.
ロケットモバイルでは音声通話はdocomoに限られているが,他社から乗り換えのみで「新規契約」はできない.となると残りは楽天しかなくなる.⇒申し込みしてみた.端末代金は税込みで35,186円,使用料月額1,700円,事務手数料3,400円.音声SIMを選択しているが,050データSIMというのがあった.これはデータSIMで050発信を行うというサービスだ.料金は格安だが,発信しかできないのではないだろうか?いや,そんなこともないかな?⇒もちろん,双方向で発着信できる.
携帯電話への発信が16円/分という格安料金になる.050で問題ないのではないだろうか?050の欠点として110,119,0120に掛けられないという点がある.これは結構致命的であるような気がする.いざというとき110番できないというのはまずいかもしれない.そばに誰かがいればよいが…すでに銀行引き落としの手続きまで進んでいるので戻るというのも大変だ.今回はこの設定でまとめることにしよう.
楽天モバイルではJアラートは受けられない.緊急地震速報も入らないようだ.まぁこれは差支えないだろう.通話料金は楽天でんわを使って10円/30秒,3分では60円になる.⇒申し込みが確定した.ただし,まだ本人確認資料のアップロードが残っている.⇒完了した.あとは審査を待つだけだ.仮に審査が年内に通ったとしても端末を受け取るのは松明けということになりそうだ.
さて,いよいよクライマックスの Visual Studio 2017 へ移行というステージに掛かることにしよう.Windows 10 上でビルドしたバージョンをスタートセットとすることにする.操作になれていないので,「最初のアプリを5分で作成しましょう」というチュートリアルを受けてみる.何やら聞いたことのないコトバばかり出てくる.ここでは Razor Pages Web アプリを作るのだという.ブラウザで動くアプリということだろうか?「モデル」を追加して「スキャフォールディング」するのだそうだ.データベースを使用し,最後に検索と検証を追加する.
これは映画タイトル項目を管理・表示するアプリだ.連れてゆかれたのは GitHub というところだ.まず,「Why GitHub?」から入らなくてはならない.動画を見せてもらった.mmm…確かにこれはわたしのイメージにもっとも近い開発スタイルかもしれない.しかし,こういうので一度懲りてるからね~例のすさまじいスパムの嵐を食らったMantis事件だよ.Mantis は一種のバグ管理ソフトだがユーザ登録できたりなど一種のチームウェアと言える.この意味では GitHub や Azure などの先駆けだ.GitHub や Azure はクラウドベースであるところに特長がある.
ダメだ.このチュートリアルには付いてゆけない.ウェブ上にある解説画面と実際の IDE の画面が一致しない.無償の Community 版には搭載されていない機能/項目が使われている.一番簡単な「最初のアプリ」が作れないのでは先が思いやられる.まず,これを読んでみよう.Visual Studio Code という無料のエディタがあるのでダウンロードしてみる.プレーンテキストを編集する必要がある場面というのは結構あるが,NotePad では少し物足りない.
いや,すごい.最強のエディタだ.これまでは NonEditor というのを使っていたが,これですべて間に合う.このプログラムは GitHub と同様オープンソースで開発されている.この中でデバッグまでできるようだ.つまり,無料の IDE と考えてよいのではないか?すぐに GitHub に飛んでゆこうとするので,GitHub にサインインする必要がある.シフトJISで開けるようになった.多分このエディタは Visual Studio と並行して使えるのではないかと思う.⇒いや,違う.Visual Studio Code は Visual Studio と並列する独立の IDE を志向している.
VS Dev Essentialsを調べておこう.VS Dev Essentials とは「アプリを開発して、好きなプラットフォームにデプロイするために必要なもの全て」ということなのだが…これにはすでにインストール済の VS Community と VS Code が含まれるが,その他に①Parallels, Parallels などのソフトウェアと②Azure, Visual Studio Team Services などのクラウドサービス,Pluralsight, Microsoft Virtual Academy などのトレーニング/サポートが含まれる..NET Core 2.2 SDK をインストールした..NET Core は Windows だけではなく,MacOS, Linux その他のクロスプラットフォームコードを作成できる.
Visual Studio 2017 IDE の比較
驚くべきことに,無償で配布されている Visual Studio Comunity は機能的には有償の Visual Studio Profesional とまったく同じものだ!
VS Comunity と Professional の相違点はただ1点しかない.それはCommunity 版が学校や研究機関,オープンソースプロジェクトなどを除き,個人しか使えないのに対し,PRO版が「1ライセンスで最大5ユーザー」まで使えるという点だけだ.PC250台以上ないし年間売上高百万ドル以上の会社は Enterprise 版を使わなくてはならないことになっているが,マイクロソフトはこのような大企業以外からはもはやお金を取ることを考えていないのではないだろうか?
楽天はすごいね!いま,午前4時半だよ.今日の午前2時49分発信で楽天からメールが入っている.「本人確認書類お手続き完了のご連絡」だ.本人確認書類は昨日のうちにPDFでアップロードしていたが,「書類不備」でやり直しになった.PDFで送ったのがまずかったようだ.スキャナで取り直してJPGで送ったのは0時を過ぎていたと思うが,これは機械の自動応答ではなく,人間が目視で確認して処理しているはずだ.